AquaWars Development Diary – Week 5

5 weeks in. I don’t like starting out like this, but I had yet another real life set back this week. My dad was having chest pains and ended up in the ER. Turns out he had a minor heart attack and had to have a stent put in. He is doing ok now, thank God. Turns out he went to the ER just in time. But anyways, I still made some decent progress on the game.

A lot of time this week was spent making things that appear to work actually work. The main menu now exists and allows you to either select a level or play survival mode. The menus look alright I think, but at this point they are mainly for placeholder functionality. I will probably end up redesigning them before launch. I feel they are a bit too static at this point.

As far as actual gameplay goes I added two new enemy types. So that means there are already more enemy types in the game than the original AquaWars. Content-wise this game is going to be my grandest endeavor yet. Levels are actually working now. I added some new features that will allow character dialogue whenever I want during a level, and it allows for it to wait until the player clears all enemies on screen.

Speaking of levels, I guess I will go into how I store my levels. I use JSON to store the levels just for its simple parsing and human readability, while not being quite as “dense” as XML files. The format allows for me to specify character dialogue and enemy spawn positions. The strings are separate, so I could possibly add some other localizations later. Each item is set to launch at a specific time (“t”) and has an action type (“a”). Currently there are only two actions, spawn and display text. Here is an example of the level format (Not an actual level, but it gets the idea across):

{ "levels":
    [
     {
     "name" : "Level 3",
     "level-strings": [
                       {"name" : "SYSTEM", "string" : "Welcome to Level 3! This text is shown right away."},
                       ],
     "level-data": [
                    { "t" : 0, "a" : 1, "d" : 0},
                    { "t" : 0, "a" : 0, "d" : 1, "s" : 0, "y" : -60 },
                    { "t" : 0, "a" : 0, "d" : 1, "s" : 1, "y" : -60 },
                    { "t" : 0.5, "a" : 0, "d" : 1, "s" : 0, "y" : -100 },
                    { "t" : 0.5, "a" : 0, "d" : 2, "s" : 1, "y" : -100 },
                    { "t" : 1.5, "a" : 0, "d" : 2, "s" : 0, "y" : -60 },

                    { "t" : 1.5, "a" : 0, "d" : 1, "s" : 1, "y" : -60 },
                    { "t" : 2, "a" : 0, "d" : 1, "s" : 1, "y" : -140 },
                    { "t" : 2, "a" : 0, "d" : 4, "s" : 0, "y" : -140 },
                    ]
     },
    ]
}

As you can see, it is readable, but not very fun to edit. I may end up creating some kind of simple level editor to aid in level creation, but I’ll see how it goes to see if it is worth the time investment.

The rest of this week was spent fixing scaling issues so now everything works on both iPhone and iPad.

So the original plan was to submit on the 18th but that is obviously not happening. I will hopefully be finishing up my other web project this week so that will free up more time to dedicate to the game. I’ll probably end up creating a new timetable later this week but it still has a lot of work and testing to be done so I’ll have to keep that in mind.