Project Dusk #7 - Hot code reloads and more
As by tradition of old, here's first the latest version - use arrow keys and ctrl/space to fly and shoot. Or touch / double touch for doing the same on touch devices:
There's not much new, but the explosions look a little nicer, because I finally fixed the trail rendering code. At least parts. There's also now a bunch of enemies randomly spawned by code - I am dropping my attempt to set up the levels via JSON. It involves too much boilerplate code and I spend too much time on figuring out how to do "scripting" via json.
Instead I did what I wanted to do for quite a while now: Hot code reloading. It works on desktop builds by unloading the current game DLL, triggering a recompile and loading the new DLL. I don't do cleanups on unload, so it leaks a lot of stuff right now. The textures and models are however retained to reduce the reload time - which right now is about 2 seconds on my machine. That's a great deal worse than what I had with my Lua based approach (a few hundred ms), but it's ok. I have ideas how to retain the scene state, so that'll become more useful because of being able to tweak specific situations. Would be nice to be able to do quick saves so replaying a situation is easier, but that's just another point for my todo list 🫠.
In between I did some more 3d modelling for future in game models:
And yes, that's a 🦊 fox head in its seat 😅. I have some weird ideas there... but hear me out: FTL. I really like that game. It's a rogue like game in space in which the crew is hunted by a rebel fleet. My thinking is: Could this be done with an arcade shooter? What would it look like?
In FTL, the action happens on the jump beacons. With my idea, the action happens on the paths between the beacons. The beacons would be air fields where you can refuel and repair. The paths would be the stages. I would replace the humans and aliens with animals: Fox, Wolf, Sparrow, etc. Each having a few different traits that influence the game play. In my head, there's much more attached to this - but I'll leave it at that for now. I try not to make big plans because of my tendency to not finish them. Let's just look ahead what I want to do the next weeks:
- Hot code reloading improvements
- More 3d models
- Score tracking
- Proper level generation
- Airfields for refueling and repairing
- Map screen for flight path selection
That's already a lot more than I will manage, so no nead to extend it.
The 3d models are btw. available on a public GitHub repository: models repo. I currently have no license, I still have to figure that out... public domain is a bit too free for my taste, but I wouldn't mind if someone uses them for their own projects. I would be fine if no one makes money with it by selling them to others.
Next week I am on vacation, so expect a pause :)