Originally published on my blog
While Super Heli Land
is by no means complete, here is some bits I've learned from it so far.
Plan ahead and do it right
While I've planned engine out before actually write it which reduced WTFPCL (WTFs Per Code Line) greatly, I didn't do it right
. You see, I've planned everything - how sprites, animations and world generation would work, heck I even made my-freaking-own design of State Machine
since I didn't like other solutions. Unfortunately I didn't anticipate all things that I'd face while making engine. Because of this last few days I've spent on implementing GameObject base class, so I'll avoid mess I'd surely make if I'd try to use pure sprites for player character and other things.
Procedural generation isn't so hard
Seriously. Sometimes making few circles with random positions and radiuses can make entire cave system. Making ground and other objects on right positions isn't hard either and is pretty fun to implement! Of course 3D generation is probably another story...
Use source control from day one
While I didn't use it from start, now I'm regretting this. No, I didn't loose any stuff, but in case of big projects, late "initial commit" can weight several hundred of MB and it will upload slowly. Also, I cannot even start to imagine how I'd feel if there would be some sort of HDD failure before I've uploaded SHL to Github
You should always make some debug game state to avoid "test stuff" all over the place
Yes, experimentation with code to find out what works best is important, but you should reserve some debug state for that. Because when you test stuff all over the place, sometimes you get leftovers from these tests which makes your game unstable with weird bugs.
At dark beginnings of Super Heli Land, when it wasn't Super Heli Land but instead Hello Allegro.pas program I've tested engine stuff like world generation, sprites, etc. directly in main code. That was bad, but then again it is my first game written without any game making program or "real" engine (while Allegro takes many things out of my head as developer, it is still just graphics/audio framework and not an engine) so it is also learning experience.
Coding is fun!
Seriously, even if you don't consider yourself a programmer, you should give it a go! Maybe you'll like it too?