Making GLaDOS speak

From Valve Developer Community
Jump to navigation Jump to search
Underlinked - Logo.png
This article needs more Wikipedia icon links to other articles to help Wikipedia icon integrate it into the encyclopedia. Please help improve this article by adding links Wikipedia icon that are relevant to the context within the existing text.
January 2024
English (en)Русский (ru)Translate (Translate)
Portal Level Design

Using preset sounds

It's actually very easy to make GLaDOS talk, but which method to use may not be immediately obvious. You can play one of her lines using an ambient_generic, but this has an unfortunate downside: ambient_generic entities continue to play even when the game is paused (hence the "ambient" part of the entity name).

In Valve's maps, a logic_choreographed_scene is used instead. Here's how to make GLaDOS speak in your own maps with a logic_choreographed_scene entity:

  1. Create a small room outside of your regular play area. Cover the walls with the "nodraw" texture.
    Note.pngNote:For better performance, instead of creating an empty room (thus increasing file size, compilation size and creating more visleafs), place the entity in an inaccessible place like an observation room.
  2. Inside the room, create a generic_actor entity. Set the entity's model to models/props/metal_box.mdl or something similar. Set its render mode to "Don't Render". The model doesn't really matter, but Valve uses metal_box in their maps because the map already uses that model in most cases (thus saving memory).
  3. Set the generic_actor's Name property to Aperture_AI (the name cannot be anything other than Aperture_AI, otherwise the scenes will not function).
    Note.pngNote:In Portal 2, the name property will need to be @glados to properly function.
  4. Create a logic_choreographed_scene in your play area and set the Scene property to whatever scene you want to play.
    Note.pngNote:If you are making a scene for cameras, you might want to try the following scenes out.

There are also many scenes that can be made for special use, including things like weighted storage cubes, and cameras.

Cameras

Note.pngNote:As soon as you put an Aperture_AI (Doesn't work with @glados !), GLaDOS will automatically play one of the following scenes when a camera gets detached.
Note.pngNote:After all five scenes have been played, GLaDOS will cease to randomly play the scenes and only play the fifth one.
* scenes\general\generic_security_camera_destroyed-1.vcd
* scenes\general\generic_security_camera_destroyed-2.vcd
* scenes\general\generic_security_camera_destroyed-3.vcd
* scenes\general\generic_security_camera_destroyed-4.vcd
* scenes\general\generic_security_camera_destroyed-5.vcd

Storage Cubes

* general\ai_box_fried.vcd
* general\ai_box_lost.vcd

Now, trigger the logic_choreographed_scene entity and listen to GLaDOS speak!

Custom sounds

Note.pngNote:The Tutorials in this section are only known to work for Portal 1. They may however also work in Portal 2.

You can put in your own sounds for GLaDOS's voice if you like - just follow these steps:

Note.pngNote:This method uses ambient_generic instead of logic_choreographed_scene, which has some downsides, including having to time the voice lines manually, using the delay feature on the outputs, which can be a tedious process. Also, if the player pauses their game during a voice line, the voice line will continue to play, but the delay will not be timed, which means the voice lines may de-synchronize. This page may be updated to include a tutorial on creating logic_choreographed_scene files for Portal and using them in your level.
Note.pngNote:You should know about making triggers, inputs and outputs already before trying this!
  1. Create your sound and place it in "~/USERNAME/portal/portal/sound/MAPNAME/"
  2. Place an ambient_generic anywhere in your map - preferably near the trigger that will activate it.
  3. Open the "Sound Name" field in the ambient_generic's properties and browse for your sound name.
  4. Make a name for your ambient_generic, trigger it with a PlaySound input from somewhere, and it should work.

Important notes

  • Your audio file needs to be a .wav file, preferably 44100 Hz Sample Rate and Playback Rate. Using other values may cause the audio to not play.
  • When distributing the map, you will need to either package the sound with the map or use bspzip to add the files to your .bsp if you want the sounds to be heard by recipients of your map.
    • If you use bspzip, make sure to use all lowercase letters on everything and to use the .bsp internal sound folder of "/sound/MAPNAME/sound.wav"
  • If things don't work correctly, try to trigger the sound in-game, then look at the developer's console and see if it gives you an error; this can be a valuable troubleshooting tool.
  • escape_02 (and possibly other maps) use a generic_actor named tim_larkin. It is presumed to be an inside joke from the developers, but if you want to use escape_02 scenes, you may have to create a generic_actor named tim_larkin instead of Aperture_AI to play escape_02 scenes (This has not been tested, but will be tested soon and deleted if this is not the case).