Try to make full game from MadeWithDefold Jam 2022 entry.
POST JAM
WEB
PLAY MARKET
SOURCES
1)Test optimization for voxel model. Vox Cleaner V2 worked good.
Have bleeding issue with models but export using blender-to-defold-sync fixed it.
2)Add more optimization.Do not draw objects if distance is big:)
3)First iteration on camera. I do not like how camera worked in jam entry.
Camera was a go that attached to player.And when player move left and right there are some jitter.
Now camera is always in center + offset.
Yay! Perfect The second link is not working (yet hopefully) But I’m keeping my fingers crossed for this!
Fixed) Forgot to make game public
Lose animation + camera movement on lose
Continue my slow game development:)
1)A lot of small fixes,optimization and refactoring:)
2)Restart without proxy collection reload
-jam version reload proxy collection on restart.
-in release version i want to always show tunnel. But reloading collection not very fast.(0.1-0.2 second in web. It will show black screen)
-so instead of reload game.collection i remove all game entities, and reset game state.(1 frame)
Curious what approach you took to this? I did this for Apple Spider as well, to keep the background parts of the game persistent. In my game, I created a big collision rectangle that would “kill” all of the spider game objects in their scripts, then just had some code reset the game state variables.
I use ecs patter. So i create entities(lua tables). Every entity can create a go from factory if need it. When i remove entity from ecs world i call go.delete.
Game state is also lua table so it easy to reset it.
The main problem with that way not forget to delete or reset something:))
function GameWorld:reset_state()
self.actions = ACTIONS.Parallel()
self.actions.drop_empty = false
self.state = {
gems = 0,
time = 0,
start_timer = 0,
state = ENUMS.GAME_STATE.MENU,
lose = false,
}
end
---@param e EntityGame
function Entities:on_entity_removed(e)
DEBUG_INFO.game_entities = DEBUG_INFO.game_entities - 1
e._in_world = false
if (e.input_info) then
TABLE_INSERT(self.pool_input, e)
end
if (e.tunnel) then
e.tunnel:Destroy()
e.tunnel = nil
end
if (e.gem_go) then
go.delete(e.gem_go.root, true)
e.gem_go = nil
end
if (e.box_go) then
go.delete(e.box_go.root, true)
e.box_go = nil
end
if (e.vagon_go) then
go.delete(e.vagon_go.root, true)
e.vagon_go = nil
end
if (e.player_go and e.player_go.model.root) then
go.delete(e.player_go.model.root, true)
e.player_go.model.root = nil
end
end
Very interesting. Are you setting the entity properties to nil because they are pooled and will be re-used?
Entities not pooled now but later if i need i can make pool for them(now only input_info is pooled)
I set to nil, because that references not valid after i call go.delete.
If i not set nil, nothing happened because entities already removed, but for me it looks better when i remove not valid values:)
Adding model in gui scene?
Some 3d math and it worked
Thats really cool!
Add Powerups
-x2 score
-magnet
-run(immortal, can destroy obstacles)
Make 12 characters in MagicaVoxel
Nice!
Typo: “ugrades” → “upgrades”
A lot of small fixes and improvements
Main features:
-Added sound and new music
-Increased fov from 50 to 85. It increase feeling of speed
-Main menu gui
It’s great to see it evolving!
Great that you are highlighting the powerups - I wonder if something to visually distinguish obstacles from the tunnel would be also possible? It’s a little dark in the cave and the response time between noticing the obstacle and being able to run left or right is very small, especially because the characters seems to move to the sides rather slowly - but bear in mind, this is just an impression after watching the latest video
Thanks for feedback)
I will think what I can do.
Mb if i make fog for obstacles less powerfull,it will help)
Looks great!
You could maybe increase the fov dynamically base on the increasing speed to make the gradual speedup feel much faster without making gameplay itself harder than it is.