It's live now - play it!
The full Devlog with progress videos of each day now on my blog 🥳
Day 1 - 29.07.2024
- Objects kept dropping through the physics body, so I enabled
Continuous CD
on theFlash
.
Day 2 - 30.07.2024
- CSG does not work with Raycasts, so I can’t use them for gray boxing.
- Raycasts with normal Static Bodies are now working.
- Enemies and the player now register if they are flashed or if the flash is blocked by geometry.
- Added Level Selection with teleporters.
- Did some data management by adding
LevelData
and organizingGlobal
so I can store thestart_position
andlevel_name
in one place and pass it around wherever I need it, for example, to the porter. - Created a Base Level Template that the other levels can inherit from.
Day 3 - 31.07.2024
- Added a second test level.
- Added a quick flash sound effect after figuring out how to download the SFX library I bought on Humble Bundle a while ago.
- Fiddled around with Reaper for a while to get some plugins for sound modulation to work.
- Added particles to the flash.
- Changed the World Environment to look darker and added fog.
- Added a custom flash model.
- Added a level complete state and level unlock.
- Added right-click to throw the flash.
Day 4 - 01.08.2024
- Disabling the depth test doesn’t work with transparent objects because transparent objects skip the depth test. https://forum.godotengine.org/t/depth-test-fails-on-multimesh-rendering/46046
- I changed the dissolve shader to discard the pixel instead of using the ALPHA channel.
- Dabbled around with some shaders, looking for a good way to transition in a level.
- Added the X-Ray shader and dissolve shader.
- Also did some tests with noise normal maps on the walls for some reason.
Day 5 - 02.08.2024
-
Fixed Test Level 1 and 2.
-
I changed the parent node of all structures in the parent scene of the levels and destroyed them in the process. 😅
-
I created a new Wall Scene that incorporates everything I need from a structure in a level. I exported width, height, and depth and updated the size of the mesh and collision boxes with those values. (I should be able to use this even if I get a custom wall model.)
-
-
Added Phantom Camera for fancy camera transitions.
-
Added “Player Area Walls” that block the player.
-
Spent way too long fiddling with the shader for those walls 😄 I had a shield shader lying around that reacts to nearby objects, so I adapted it “real quick” to react to the flash.
Day 6 - 03.08.2024
-
Reworked the enemy.
- Replaced the basic capsule with prisms that fall apart if the enemy is flashed.
-
Levels are now added and removed from the scene based on the currently active one.
## level_data.gd ## True if currently the active level @export var is_active := false : set(new_value): is_active = new_value if ref and not level_id == 0: if new_value == true: Global.level_container.add_child(ref) else: Global.level_container.remove_child.call_deferred(ref)
## global.gd var current_arena: LevelData : set(new_value): previous_arena = current_arena current_arena = new_value current_arena.is_active = true var current_arena_index := 0 : set(new_value): current_arena_index = new_value current_arena = arenas[new_value] var previous_arena: LevelData = null : set(new_value): previous_arena = new_value if previous_arena: previous_arena.is_active = false
-
Added better camera transitions to Test Levels 2 and 3.
Day 7 - 8 - 9 - 04.08 - 06.08.2024
Day 7
- Had a good run on Sunday.
- Added flash cooking 🧑🍳 - the flash is now thrown once the button is released, so the player can “cook” the flash, allowing the detonation timer to increase and providing more flexibility in level design (I hope).
- Added a customizable flash limit for each level.
- Disabled player input during camera transitions.
- Added HUD with:
- Remaining flash count
- Remaining enemies
- Level time
- Game time
- Added a settings menu (feels a bit out of scope, but anyway 😅).
- Added a skip camera transition action.
My plan was to enter feature freeze on Sunday so I would have a week to concentrate on content, sound, and polish. However, I didn’t manage to add scoring on Sunday, so I had to postpone that.
Day 8
It's Monday 🙃 After a long day at the office, I didn't have much energy left to work on stuff, so all I did was set up the scaffolding for the scoring system.
- Added all required variables to hold the score data:
- Score for enemies flashed
- Score for level time
- Score for flashes used
- Added a global
Resource
to hold the points rewarded for each of these types.
Day 9
A little bit more energy on Tuesday allowed me to complete the scoring system.
- Wired up the scoring system and fixed all bugs I created in the process (hopefully).
- Also added a setting for displaying the Level and Game Time on the HUD.
Day 10 - 07.08.2024
Not quite as planned, it looks like I worked all day on displaying the scores on screen 😶🌫️
- Score is now displayed when an enemy is flashed.
- Currently, a lot of points are still given at the end of a level, so I have to figure out how to display them without cluttering the screen. However, I think I will keep it as is for now, as sound, visuals, and levels are a higher priority at the moment.