Devlogs
Devlog #1
Posted September 27, 2023 by arano
Week 1 Progress Update:
Accomplishments:
- Basic movement mechanics for the player:
- Able to move freely on the ground.
- Can switch between the wall and the ground.
- Can move along the wall and is affected by gravity.
- Can switch between two walls.
- Core shadow mechanic
- Objects cast shadows that have their own colliders.
- The shape and size of the shadow transforms realistically based on its position relative to the light source.
- Core puzzle mechanic:
- Player can move objects when they shape-shift into “floor ghost” mode.
- This movement of objects is dynamically reflected on the shadows such objects cast.
- Created a basic tutorial level design that showcases the core mechanics of the game
- The player is required to manipulate the shadows of two boxes in order to reach a door that is high up.
Next Steps:
- Have the camera follow the player when switching between walls.
- Integrate more art assets into the game.
- Auto-movement through walls without need of player input.
- Decide upon the object movement mechanic.
- Should the player be able to push/pull the objects in the environment?
- Plan and brainstorm level designs.
- Add more variety of shapes/objects that can be interacted with.
- Moving light sources (controlled by the game rather than by the player).
- Stealth mechanic
- Make it so that the player can transform into the “floor ghost” for a certain amount of time before being detected, which would result in a game over.
- Enhance shadow mechanics
- Experiment with Unity’s light system, and make the shadow pop more (draw the shadow ourselves?).
- Add the ability to cast two shadows on one object.
- Add the ability to create simpler shadow meshes for complex models, preferably auto-generated.
Important Discoveries:
- The shadow during game jam 2 is a black slab, and the position and rotation are synced with the object itself.
- After the game jam, we experimented with generating the shadow mesh by raycasting from the light source to all the vertices in the mesh to generate the shadow mesh dynamically.
- This approach might be expensive for complex shapes with many curved surfaces.
- One optimization idea is to have another simpler object mesh separate from the rendering mesh. The simple mesh can be generated by resampling the rendering mesh so that close-up vertices are included once.