Tuesday, June 19, 2007

Modding, Scripting, and the Undead Engine

After giving it much thought, I've decided to rewrite the Undead Engine. I have a bunch of new ideas for it, like making it mod friendly, giving it an all new scripting language, and developing a level editor so that I won't have to hard code the levels in an array.

Though I think it's fairly uncommon for indie games to be mod friendly, I think that it's a good way to let the gamers know that I actually do want them to have fun with the game. Not only that, but it will make it easier for me to make and distribute updates and patches. The new scripting language that I mentioned has a BASIC-like syntax and the way it functions isn't much different either. Hopefully, that will make it easier for non-programmers to make mods too. Because BASIC is, without a doubt, the easiest language to learn, I'm confident that even the layman will be able to program a good mod in a matter of days. The new level editor will be similar to the Action Cyborg editor. I originally had plans to make the editor more like Mappy, but I scrapped that idea due to the fact that it's features are too generic and most don't really apply to my game. I also want it to be easy to use for modders and amateur level designers. If I could combine a script editor and a level editor into one SDK, I think that would be the ideal editor for the game. All of those ideas are still works-in-progress, but one thing that I am making a lot of progress towards is my new engine.

After getting extremely frustrated with my old engine and it's ugly, unorganized code, I decided to completely rewrite it from scratch. All of the levels were hard coded into a single header file, making the source bloated and hard to work with. Interactivity was a major issue when the levels were hard coded. It was almost impossible to make something work properly when the whole level is stored in an array. To change or move something, the computer would have to find the tile in the array, remove it, replace it with a different tile, and then redraw the screen. That's can slow the game down to an unplayable speed. The levels are now stored in a separate file and are loaded only when needed. Interactivity is no longer an issue since the level isn't stored in an array, and be customized to my liking.

Okay, so that was it for my daily thoughts on code... I guess it's time to go back to work on the game :)

No comments: