Saturday, May 25, 2013

This week, I managed to overhaul the way the game saves and loads tilesheets for the editor and the game. I have made it so that new tilesheets can be loaded in to the editor and saved on a per map basis. This allows for separate development of the art side of the game from the programming side and allows the user to see changes to the tilesheets pretty much immediately. Unfortunately, this programming change means that the old maps I had saved no longer function, so I had to rebuild some new ones. That means in the build that I am publishing tonight, only the first few maps of the Earth level are functional.

Also, I created and implemented a new AI type this week, called the AITurret. This AI type is stationary and fires projectiles in a specific direction. Also, I linked in the switch - activator system into the AI turret, so I can now make it so that the death of the AI turret triggers an activator elsewhere in the level. This allows for new puzzle mechanics based on this premise. I am considering adding this functionality to the AIBase class, which all enemies are based on, so that any enemy can trigger the system, but at this time I haven't.

I am still working on the physics for mobile platforms. They have collision correctly, but for some reason, standing on top of one doesn't always trigger for the player to allow them to jump again and to shoot and use the shield.

I also discovered this past week that I don't have to compile to one_click applications to publish my game, I can just build it and upload the debug folder. So, any build from here on out shouldn't need any installs, just unzip to a folder and play. I'll edit once the sync is complete with google docs :)

Edit: And the link is up :)

Tuesday, May 14, 2013

Last week, I read an article about tools for game related purposes and it really inspired me to work on my level editor some.

As my game has been getting more complex, so has been working with the editor. Some of the new entities I have made, such as mobile platforms, require as many as 5 arguments in their constructors for determining their properties. Previously to make those in my level editor, you would have to select the base entity, platform, and then type each individual argument with a space between each one, with the argument order memorized.

So the first thing I have done is simplify the entity creation portion of the editor. I change it from requiring manual entry to a small system of drop boxes and input parameters.

This should make it much easier to make levels, since you won't have to memorize the parameter order. You still have to have some knowledge of the game though. For instance, in this case, the destination is two coordinates with a space separating them. In this case, the platform would move 10 tiles down. Also, the platform type is a simple enum, in this case with 2 being fully automatic.

Later this week, I hope to add new options for the tile map, such as being able to load one in dynamically, instead of having to hard code each one. However, I have a feeling that won't be as easy as adding a "load tilemap" button with the tools at the top. I am considering something along the lines of a C# Dictionary that it uses during a loading phase, which the tile engine can then copy a specific entry from each time it loads a new map.

However I do it, it isn't something that is covered in the book I have on XNA game development so I am going to have to do some research. It might be a good time to change the way level files are saved and loaded, since currently it is the only thing that keeps it from completely compatible with Xbox Indie Games.

Thursday, May 9, 2013

Tonight, I was able to get a ton done on my game, thanks to beginning my new class at DeVry, a cup of coffee, and some good planning. I implemented the previously mentioned unblocking entity, which allows me the change the shape of the levels based on which game type is selected. I also created a switch and activator system, which allows me to begin some very basic puzzle elements in my game. I also added, finally, Mike's special ability, the double jump.

I am publishing a new build, which I am uploading as I write this. I will update this post once it gets done. I have also fleshed out the game's opening level, Earth. The Earth level now consists of 4 small maps and one boss encounter. I left myself plenty of room in the editor, however, to go back and add more maps to the Earth level as I add more game play elements, such as moving platforms, levers, and enemy types.

I'll finish with a couple of screenshots of my switch - activator system in action.

EDIT: Here is a link to the latest version of the game

Sunday, May 5, 2013

Well, today I pulled one over on myself by not working at all on the entities I had told myself I would work on this week, and instead I added a new function to my level editor and game to implement different tile sheets for the game to run off of. Before I had been limited to a single tile sheet, which I had hard coded. Now, users can select which tile map to use for each level that is created. This opens up an easy method for loading in different tile sets without having to change one big one with all the different levels in it.

The loader is flexible and can load up whatever size sets that are input, as long as it can be divided neatly into 48x48 pixel squares.