portal64-still-alive/documentation/levels/level_objects
2024-04-13 17:03:54 -04:00
..
ambient.md Document ambient and point light sources 2024-02-19 20:07:31 -05:00
anim.md Add sound to chamber 14 stair animations 2024-03-11 21:25:49 -04:00
ball_catcher.md Document more cutscene steps 2024-04-13 01:13:07 -04:00
ball_launcher.md Document ball launcher and catcher level objects 2024-02-12 20:52:25 -05:00
box_dropper.md Document level objects relating to decor and triggers 2024-02-17 15:47:22 -05:00
button.md Avoid unnecessary signal definition 2024-03-02 22:03:13 -05:00
clock.md More clear level object argument capitalization 2024-02-04 21:30:33 -05:00
collision.md Finish cutscene step documentation 2024-04-13 17:03:54 -04:00
decor.md Document level objects relating to decor and triggers 2024-02-17 15:47:22 -05:00
door.md Add descriptions to level object summary page and clarify room/door behavior 2024-02-21 20:44:29 -05:00
doorway.md Add descriptions to level object summary page and clarify room/door behavior 2024-02-21 20:44:29 -05:00
dynamic_box.md Close portals touched by moving dynamic collision 2024-03-12 22:18:41 -04:00
elevator.md Document more cutscene steps 2024-04-13 01:13:07 -04:00
fizzler.md Finish cutscene step documentation 2024-04-13 17:03:54 -04:00
location.md Document delay and open/close portal cutscene steps 2024-02-26 22:30:57 -05:00
pedestal.md Start documenting cutscenes 2024-02-21 18:33:02 -05:00
point_light.md Document ambient and point light sources 2024-02-19 20:07:31 -05:00
README.md Add descriptions to level object summary page and clarify room/door behavior 2024-02-21 20:44:29 -05:00
room.md Add descriptions to level object summary page and clarify room/door behavior 2024-02-21 20:44:29 -05:00
security_camera.md Document level objects relating to decor and triggers 2024-02-17 15:47:22 -05:00
signage.md Finish cutscene step documentation 2024-04-13 17:03:54 -04:00
static.md Add material for water hazard wall 2024-04-11 19:55:34 -04:00
switch.md More clear level object argument capitalization 2024-02-04 21:30:33 -05:00
trigger.md Update fizzler docs, and consistent spacing 2024-03-02 16:06:26 -05:00

Level Objects

Objects can be placed in a level via their associated .blend and .yaml files, causing them to be rendered and animated properly by the game at the correct position/orientation and with the correct materials applied.

However, the game needs to be able to give each object the proper behavior. Buttons activate specific doors, triggers start relevant cutscenes, the floor stops the player from falling through, and so on.

Naming convention

At level export time, level definition C source files are generated using the Lua scripts in tools/level_scripts/, initiated by export_level.lua. The way the level exporter knows how to properly populate these definitions with objects is by using their names. Every object in a level's .blend file has a name of the form:

@TYPE [ARG]...

That is, an @-prefixed type name followed by 0 or more space-separated arguments. The number and type of the arguments is object type specific.

This could have been done with Blender's custom object properties feature, but one nice benefit of this approach is that it makes searching for related objects easy.

Object types

See the linked pages below for details on specific level objects.

Type Description
@ambient Ambient light source for baked lighting
@anim Animatable armature bone
@ball_catcher High energy pellet receptacle
@ball_launcher High energy pellet spawner
@box_dropper Cube spawner
@button Flat, circular button
@clock Countdown clock
@collision Static collision
@decor Generic dynamic object
@door Sliding door
@doorway Level segment connection for rendering and collision
@dynamic_box Dynamic collision
@elevator Level transition elevator
@fizzler Emancipation grill
@location Referenceable point in the world
@pedestal Portal gun holder
@point_light Omnidirectional light source for baked lighting
@room Discrete level segment for rendering and collision
@security_camera Wall-mounted camera
@signage Start of level informational sign
@static Static geometry
@switch Button on pedestal
@trigger Signal and cutscene activating volume