Voice over production pipeline for games: scripts, actors, takes and Unreal import
For narrative leads, audio directors, localization leads and producers who need to know the state of every dialogue line. You will learn how game teams keep scripts, recording sessions, pickups and translations in step, and how to run that pipeline in the Voice Acting area of Gameheim, from the first draft to the asset in your Unreal Engine project.
Why managing game dialogue and voice actors gets out of hand
A film has one script. A game has thousands of short lines, each one a separate audio file that the engine plays in response to something the player did. Every line has a speaker, a text, direction for the actor, a recording, and a place in the build. Multiply that by every language you ship, and dialogue becomes one of the largest asset lists in the project.
The trouble is rarely the recording itself. It is keeping track of which version of the text each file matches. A few problems show up on almost every project:
- Script versions drift. A writer fixes a line after it was recorded, and nobody notices that the audio no longer matches the text or the subtitle.
- Line IDs are informal. Files are named by hand, so the same line ends up as
hero_03_final.wav,hero_03_final2.wavandhero_03_USE_THIS.wav. - Pickups get lost. The audio director asks for a re-read of three lines, and the request lives in an email thread instead of next to the line.
- Translations go stale. The source language changes after translators have finished, and the localized lines keep the old meaning.
- Nobody knows what is in the build. The approved take exists somewhere, but it is unclear whether it was imported into the engine and submitted.
Many studios manage this with general-purpose tools that were never built for game production. They can hold a list of lines, but they do not know that a line has to be approved before it is recorded, or that editing the source text should put every translation back under review.
What a working voice over pipeline needs
- A stable identity for each line: scene, line number, character and language.
- A status per line, with clear gates: text approved before recording, audio approved before import.
- Every take kept next to the line it belongs to, with one take marked as the chosen one.
- A written reason for every pickup.
- An automatic flag on translations when the source text changes.
- A link from the line to the final asset in the game project.
How Gameheim manages the voice over pipeline
The Voice Acting area (in the Creative section of the sidebar) organizes dialogue per project in three tabs: Scenes, Characters and Voice Actors. Scenes hold the lines, characters give each line a speaker, and the actor roster records who voices whom.
Scenes, chapters and lines
Scenes are grouped under a project-wide label that defaults to Chapters. You can rename it to Episodes, Acts or whatever your story uses. A scene has a number (for example 1.1), a name, an optional cover image, and metadata for the actors and the director: Description, Emotional tone, Setting and Direction notes. Scenes can be dragged between chapters and reordered.
Inside a scene, each line gets a line number, a Character (required), an optional Voice actor, the Text, Direction notes and a Pronunciation field for tricky words. The combination of scene, line number and locale is the line identity that the rest of the pipeline refers to.
A status workflow with gates
Every line moves through eight statuses, from To write to Imported in UE. The order is fixed, and each step is gated by a permission, so the person who writes a line is not necessarily the person who approves its audio. The full table is in the reference section below.
Takes, selection and pickups
Once the text is approved, recording technicians upload takes to the line: .wav, .mp3 or .flac, up to 100 MB each. Gameheim numbers the takes, shows duration, sample rate and file size, and plays them in the browser. The first take is marked as the selected one (a star), and anyone who can upload takes can move the star. During review, the audio director can send a line back with Request pickup and a written reason that stays visible on the line until the audio is approved.
Locales and drift detection
A project can have several locales. The first one you add is the master locale, marked with a star in the locale selector. When you add a line in the master locale, Gameheim creates the same line in every other locale with status To write, so translators see immediately what is missing. When someone edits the text of a master line, every translation that had reached Narrative approved or later is moved to a drift review status. The translation lead then decides whether the translation is still valid or has to be redone.
Closing the loop with Unreal Engine
The last step records the Perforce depot path of the .uasset that the approved take became in your project. That is how you can tell, per line, what is actually in the build. Every change to lines, takes and statuses is written to the organization audit log.
How to run a voice over pipeline in Gameheim
These steps take one scene from an empty project to lines imported in Unreal Engine. In a real production, different people perform different steps, according to their permissions.
- A Gameheim project you are a member of. If you are new, start with getting started.
- A LEAD account, or a role that grants the Voice Acting permissions for the steps you perform (see the permissions table below).
- Audio files in
.wav,.mp3or.flac, each up to 100 MB. - For the last step: Unreal Engine with the game project, and a Perforce client, on the machine of whoever imports the audio.
Add the master locale
Open Voice Acting and click Locale (the button next to the locale selector, shown to people whose role can manage voice acting). Enter a Locale code (for example
en-US) and a Display name (for example English (US)), then click Add. The first locale is automatically the master; later you can make another locale the master from Locales (Make master), and the old master becomes a translation. Add your other languages the same way; tick Clone all lines from the master locale to copy existing lines into the new locale with status To write.Create characters and the actor roster
In the Characters tab, click New character and fill in Name, Description, an optional Default voice actor and an optional Cover image URL. In the Voice Actors tab, click New voice actor and record Name, Email, Agency, Contact info and Notes (voice range, languages, availability).
Important:Every line must have a character. A scene will not let you add lines until at least one character exists.Create a chapter and a scene
Back in the Scenes tab, click the button named after your group label (Chapters by default) to create a group, then click Scene. Enter a Scene number and a Name, and choose the chapter. Open the scene and click Edit to add the description, emotional tone, setting and direction notes.
Write the lines
In the scene, choose the master locale in the locale selector and click New. Choose a Character, write the Text, and save. Select the line to add a Voice actor, Direction notes and Pronunciation, then click Save changes. New lines start in To write; when the text is ready, click Mark as Written.
Approve the text
The narrative lead reviews the line and clicks Approve narrative. The line is now Narrative approved and can be recorded.
Upload takes
Select the line and click Upload take, or click Bulk upload (or drop several audio files onto the line list) and map each file to a line. Files left on Skip are ignored; the upload button sends only the mapped ones. The first upload on a Narrative approved line moves it to In recording automatically.
Send the line to review
When the takes are in, click Send to Review. The line is now In audio review. Play the takes and use the star to mark the chosen one.
Approve the audio or request a pickup
The audio director clicks Approve audio, or Request pickup and writes a Reason (for example "needs more anger"). A pickup sends the line back to In recording and shows the reason on the line until the audio is approved.
Queue the line for Unreal Engine
On an approved line, click Mark as Ready for UE. The line moves to Ready for UE import, which tells the audio engineer it is ready to go into the project.
Bind the .uasset and mark it imported
The audio engineer imports the selected take into Unreal Engine, submits the resulting
A valid depot path.uassetto Perforce, and copies its depot path (in P4V: right-click the file, then Copy, Path, Depot Path). In the UE Binding section of the line, click Set path, paste the path and click Mark as imported. The line moves to Imported in UE. The Instructions button in the same section repeats this procedure.//depot/MyGame/Content/Audio/VO/Hero/Scene_12_Line_3.uasset
Voice line status workflow: the full reference
The statuses in order, the button that moves a line into each one, and the permission it needs. LEAD and ADMIN accounts of the organization can perform every step. Permissions appear in the role editor under the Voice Acting resource.
| Status | Meaning | Reached with | Permission |
|---|---|---|---|
| To write | The line exists, the text is not written yet. | Creating the line | line_edit |
| Written | Text drafted, awaiting narrative approval. | Mark as Written | line_edit |
| Narrative approved | The text is approved and ready for recording. | Approve narrative | manage |
| In recording | The actor is recording, or has recorded, takes. | Send to Recording, or the first take upload | take_upload |
| In audio review | Takes are being reviewed by the audio lead. | Send to Review | take_upload |
| Approved | Audio review passed. | Approve audio | manage |
| Ready for UE import | Queued for import into Unreal Engine. | Mark as Ready for UE | manage |
| Imported in UE | The line is in the build, bound to its .uasset. | Set path, then Mark as imported | ue_bind |
Two moves sit outside the straight line. Request pickup goes from In audio review back to In recording and needs manage. The drift review status (its badge reads Master changed, with a note that a review is needed) is set by Gameheim itself when master text changes, and is resolved with the two buttons described below, which need both manage and translation_review.
Creating scenes, chapters, characters, actors and lines, and editing lines, needs line_edit. Deleting lines, scenes, characters, actors and takes, adding locales and renaming the chapter label need manage. New organizations get a Voice Director role template that grants manage; the default team member role can view Voice Acting but not change it.
Localizing game dialogue without stale translations
Treat the master locale as the source of truth and every other locale as a copy that has to follow it. In Gameheim, a translated line points to its master line (same scene, same line number). When the master text changes, translations in Narrative approved or any later status move to drift review, and a banner explains that the master text was updated after the translation was approved. Lines still in To write or Written are left alone, because nobody has signed off on them yet.
- Translation still valid returns the line to the status it had before the drift.
- Re-do translation moves the line back to Written. Existing takes are kept, but none of them is selected any more.
While a line is in drift review, you cannot change its status or upload takes to it. This keeps anyone from recording over a translation that may no longer match the source.
In Unreal Engine, the built-in dialogue system has its own assets for this: a Dialogue Voice describes a speaker, and a Dialogue Wave represents a single line of dialogue, connecting the audio to the speaker and listeners and carrying the spoken text used for subtitles and localization. Epic documents them in Using Dialogue Voices and Waves. Whether you use Dialogue Waves or plain Sound Waves, keep one engine asset per line and locale, so the depot path you bind in Gameheim identifies exactly one recording.
Troubleshooting
| What you see | Why | What to do |
|---|---|---|
| No Upload take button on a line | Takes can only be uploaded from Narrative approved onward, and not during drift review. You also need take_upload. | Approve the text first, or resolve the drift. |
| "Use a .wav, .mp3 or .flac file" | Only these three formats are accepted, and the file contents must match the extension. | Export the take again in one of the three formats. |
| "File exceeds the 100 MB limit" | Each take is capped at 100 MB. | Export a shorter file or a more compact format. |
| Mark as Imported in UE is greyed out | The line has no .uasset path yet. | Use Set path in the UE Binding section; saving the path marks the line imported. |
| "Path must start with // and end with .uasset" | The field expects a Perforce depot path, not a local path or an audio file. | Copy the depot path from P4V after submitting the asset. |
| You see Path hidden instead of the path | Depot paths are shown only to people with ue_bind. | Ask the audio engineer, or a LEAD, if you need the path. |
| A character cannot be deleted | Lines still reference it. | Reassign those lines to another character first. |
Frequently asked questions
What is a voice over pipeline in game development?
It is the sequence every dialogue line follows: writing, narrative approval, casting, recording, audio review, pickups, localization and import into the engine. Because a game has thousands of short lines, each with its own file, the pipeline depends on tracking every line individually, with a status, a speaker, the chosen take and its final asset in the project.
How do you name voice lines in a game?
Give each line an identity that never changes, such as scene, line number, character and locale, and derive file and asset names from it. Avoid names like "final" or "v2", which say nothing about which text the recording matches. In Gameheim the scene and line number identify a line in every locale, and takes are numbered automatically under it.
What is a pickup session in voice acting?
A pickup is a follow-up recording of specific lines after the main session, because a read was wrong, the text changed or a line is missing. Keep the reason with the line so the actor and director know what to change. In Gameheim, Request pickup sends the line back to recording and shows the written reason until the audio is approved.
How do you keep translated dialogue in sync with the source script?
Link every translated line to its source line and flag translations whenever the source text changes after they were approved. In Gameheim, editing master text moves affected translations to a drift review status. The localization lead then confirms the translation is still valid or sends it back to be redone, and no takes can be uploaded until that decision is made.
Which audio formats can I upload as voice takes in Gameheim?
Gameheim accepts .wav, .mp3 and .flac files up to 100 MB each, for single uploads and bulk uploads alike. The server checks that the file contents really match the declared format, so a renamed file of another type is rejected. Duration and sample rate are read from the file header and shown next to each take.
Does Gameheim import the audio into Unreal Engine for me?
No. The import happens in Unreal Engine, and the resulting .uasset is submitted to Perforce as usual. Gameheim records the depot path of that asset against the line and marks it Imported in UE, so the team can see which lines are actually in the build and which are still waiting for the audio engineer.
