Posted February 26, 2025 by FilmGamerJ
#game engine #fps #pixelart #wolfenstein #3d
After much deliberation and back-and-forth consideration of the pros and cons, I have officially decided to take "Maximus and the 7 Course Meals" to a full-featured game engine.
This is in stark contrast to the original intent of the project, which was to be a final punctuation on the end of my "Definitive Guide to the Raycasting Game Maker." After I published that guide, I felt it was important for me to take all that I had learned and all that I had collected in the guide and use it to take this little game engine to its absolute limits. Unfortunately, those limitations have led to months of discouragement due to one key fact: you cannot save your development progress and reload your levels to pick up where you left off.
Because of how the engine was conceived, which I suspect was limited by database and coding knowledge, the Raycasting Game Engine uses a single local folder to store the majority of in-game graphics. The UI will give you a few locations where you "import" your artwork, and a few places where artwork has to be imported separately. But in all cases, the artwork you import goes into those same local folders and overwrites the defaults that are in there when you first load the program. If you then start on a new level map, any new artwork you import will overwrite the last artwork you put in there. So if you want to change out artwork between levels (which is possible with a special workaround), you can't save your progress and reload the last levels artwork without re-importing everything exactly as you did before. Sound effects are the same way. Any sounds you import into a sound effect slot is overwritten if it's changed later. Project files do not save assets in a separate project-specific folder that can then be recalled by project dependencies.
This unique limitation of the engine then put me in the mindset that the only real way to build the Maximus game was to prepare all of the assets ahead of time, make sure they're all ready to go, and only then start building the game level-by-level, making sure each level was perfect before moving onto the next. However, after about a year working on-and-off with the enemy animations and level maps, this lengthy period of working on just assets gradually became discouraging: for the simple fact that I was not able to build out the game in prototypes as I went along. Slowly adding textures to early map builds, testing out enemies and enemy placements, hopping back and forth between levels making sure details match up: None of that is possible in RGM. And something slightly more concerning is the music. I had been debating whether to track down music that would fit that mid-90s Soundblaster or Adlib sound that I'd really want, or taking a stab at composing my own music. But in either case, I'd have to get all the right tracks together and add them level by level if I stuck with the Raycasting Game Maker.
Ultimately, it's my own fault for coming up with an idea too ambitious for the Raycasting Game Maker engine, even though it is all completely possible to pull off. It would just take more patience and determination then I'm willing to put into it at this point. I'm extremely proud I was able to provide a service to those who still want to play around with the engine and use it for some of their early game development ideas. The guide was extremely fun to make and well worth the 2 months I put into it. But for me, the engine is simply too limiting and frustrating to actually make my own game in it. Tends to make me a little paranoid about losing development progress or data, if I'm being honest.
So now for the good news: I've decided to start development in earnest using GODOT 4.3.
I've been meaning to start learning Godot for some time. And because I am still very fond of and passionate about the Maximus idea, I think I should leverage that passion as a way to finally learn the ins-and-outs of the software. Technically speaking, the final game will still feature many of the limitations that the Raycasting Game Maker had.
However, one of the limitations of the Raycasting Game Maker was the fact that you couldn't place sprites off-grid, or in quarter-grid locations. So if you wanted to build a path in a level using something other than walls, you can use impassable sprites, but they will always occupy the exact center of a grid space. This makes it less visually clear what is a fence or a barrier, and what you can pass through unless the sprite is big enough. And some of the levels in Maximus I wanted to have guided paths lined by sprite decoration instead of full block walls: like fencing, or rope railing, or skinny shrubbery: that sort of thing. So now, moving to Godot, I have the freedom to make those fences or railings much more clear and defined.
Curves and soft edges are now possible with level design. Sprites in RGM did not have the ability to have looping animations, even though wall textures could. So in Godot, I can now make my collectible coins rotate with a real shadow beneath, and purple chests can now spring open when they're picked up.
Another key feature I can now implement is the use of secondary keys. In RGM, there was only ever 1 key that allowed you to unlock the final door that lets you exit the level and move to the next level. But in Godot, I can add additional keys with additional context for side doors or hidden paths. And by extension, I can also improve on and expand the functionality of the HUD.
Ultimately, the game will still feel like a Wolfenstein 3D clone, as all retro Raycasting games do. But now I'll have the ability to build the game in stages, and see the progress build piece-by-piece. It will give me the chance to see the project grow so I can more easily see the end as it comes into view.
Thank you all for your interest and support.
I expect to have a new DevLog out with some prototype screenshots by the 2nd week of March.