Wednesday, July 24, 2013

Game Porting in Progress

I just wanted to give everyone a heads up. Yes, this game is still in progress, but a different kind of progress. I am in the process of porting this game from XNA to Unity. Unfortunately, XNA has just too small of a target audience for it to be realistic for me to use. PC is good to make games for, but XBLIG, not so much. With Unity, a whole new set of options for publishing opens up.

That being said, I am essentially remaking everything in Unity. There are a few options for shortcuts, but ultimately it is going to take some time, and I will try and post what I can as I go.

Thursday, July 11, 2013

Demo Polish

Hello everyone, today I am uploading version 0.03a of Dual Core. No new content with this one, but it does add a new feature and polish existing game areas. I have started a new set of classes so I have been very busy lately without as much time to work on this, but I am still dedicated to finishing it, it just might take a while.

The first thing I would like to note is the inclusion of camera zoom in this version. Right now it only activates when there are 2 players and zooms out when the two players are far enough away from each other. Unfortunately, this zooming has exposed tearing in my tile engine, and while I have done a lot of research on what is going on and how to fix it, at this point in time I haven't been able to.

So, I decided to go ahead and include the camera zoom in this build because I feel it is an essential feature to the game going forward, because sometimes the players just get too far apart from each other, so please be aware that the tearing in between the tiles of the game levels is a known issue and I am working to fix it.

Created new AI subtype: AISpiker
Based on AI Chaser, the Spiker chases the player regardless of the direction they are facing
Has no shield
One health point
Causes 2 damage on collision with the player

Fixed bug that caused players to travel through two platforms if they collided with them at the same time (mostly falling)

Added particles to missile launch from AILauncher
Added particles to AIMissile
Added camera zoom function to multi-player. This is still very much a work in progress.

Created and added several new sound effects. Including:

  • spawner creation
  • bomber diving at player
  • button pressed
  • switch tripped
  • platform moving // I'm not happy with this one but it is in for now
  • player death
  • normal boss throwing projectiles
  • windy boss throwing wave projectile
  • normal boss dash attack
  • boss jump
  • windy boss activating spawner

Friday, June 28, 2013

End of Class and other changes

Well, last night I uploaded the final version that I made of this game for my development class. It has been a long 8 weeks but I am pretty happy with all that I got done with this game.

Next up on the to do list, I am going to go through and remove all parts of the game that were added solely because of my course requirements. First thing to get the ax is the awful scoring system and high score table. While I will probably keep the code in case I feel like adding it back in later, I feel that it is unnecessary for the game and detracts from what I am going to accomplish.

Also, gathered from more player feedback, I am probably just going to ax the room in the first stage with the chaser and the elevator. When I look at the map with KISS (Keep It Simple Stupid) in mind, I realize it is just a really bad design. So I am going to make a new map design that introduces the concept of chasers hitting buttons for the player in a different way.

Next on the to do list, a small game play video. Screenshots don't really do the particle system in the game justice so I'm going to take another look at the particle system before I do that, to make sure it is working well and is being utilized where it should first.

Last, I'm going to work on a dedicated game demo. I think there is a way I can do it as a copy of my project in VS so that the game continues to get updated, but the content does not. That way any bug fixes or game play changes I made down the line will get reflected in the demo.

For anyone interested, my game is now on Steam Greenlight and IndieDB! I'm adding the links to them on the side of the blog, please stop by the pages and show support for the game!

Thursday, June 27, 2013

Game Update

Today I am releasing an update to Dual Core. This update features:

  • Finished High Winds level and boss fight
  • Updated menus
  • Game play tweaks
  • Placeholder Audio (Testing the audio engine I created for this game)
A ton of work went into this update. Please don't forget to leave feedback and thanks for checking out my game. :)

Version Update 0.02a

Small visual update to opening menus
Added placeholder background music
 - Note - This audio is placeholder only. I did not create this audio and it is pretty much only there to satisfy the requirements of the class I am taking

Increased platform velocity to decrease wait times
Fixed platforms moving horizontally causing players to bug out and not know which direction to face
Fixed several platform physics bugs
Balanced some individual maps in the Normal level
 - Note - There are atleast 2 bugs remaining involving platforms:

 Bug #1: If you are standing off the edge of a platform while it is traveling up, you will continue traveling up through level geometry. If you try to jump while inside level geometry, your character will glitch

 BUg #2: If you are standing off the edge of a platform while it is traveling down, you will also glitch into any level gemotry. This also applies to AI using normal physics (chasers, bosses).

Added right trigger on XInput controllers for players to attack
Added left trigger on Xinput controllers for Tom to block
Added coding hooks for zooming the camera in and out
Finished outline for High Winds level
 - Note: There may be some missing connections and some glitches -
Added High Winds boss fight

Changed firing timer. Mike can now fire while holding the button down, as before, but can also fire up to twice as fast while tapping the button.

Tom can block while in the air
Tom can now change directions while blocking
Tom can now block immediately after firing

Download Link:

Sunday, June 23, 2013

Epic Blog Post

Tonight I am going to post about some of the feedback I have received about my game and the changes that I have decided to make to it.

Level Changes

First, there was one room in particular that has received criticism as being awkward and difficult by play testers. It is room 6 in the first level of the game. This map begins with the player falling from the room above it into a center area surrounded with enemies. Originally the map was designed with a turret on each top corner that players had to ride a platform to and kill in order to advance to the next area. However, this was very confusing, because there wasn't a clear link from the turrets to the doors, so players had trouble navigating the room.

To fix this, I initially put buttons in place of the turrets. This gave players a clear location for where they should be going and trying to get to. However, the number of enemies in the area was still too high, so I reduced the total number of enemies in the room, and added an enemy spawner, so that there is a steady stream of enemies in the room, providing a more consistent challenge. The current version of this map area is shown below.

Art Changes

This change is a work in progress and is not in the current beta build for this game. In the feedback, I often see that players are unsure of what button, switch, or level activates what. I have decided to add a new art function that will visually link a switch and an activator.

In the game Portal, there are very similar puzzle elements that use a similar mechanic. In this game, they solved the same problem by adding a line connecting the two. 

Below is a screenshot of one such room, which contains a confusing switch activator system.

I have included below a sketch of how a line connection system in the game could look, as it is currently planned to be implemented.

The second version makes it much more clear what the player needs to do in order to proceed.

Character Changes

The last change that I plan on implementing, deals with complaints about the characters themselves. In general, players felt that the two playable characters were too similar, and that Mike (blue) was clearly superior to Tom (Red).

The main complaint I got with Tom, was that his shield didn’t feel responsive enough. In order to use it, your character must be still, and there is a delay associated with the player attack that can sometimes keep players from deploying the shield when they want.

I have decided to make the following changes to Tom, although they have not yet been implemented:
  •        Remove delay in deploying the shield after firing.
  •          Allow the player to shift the direction they are facing while blocking
  •         Allow the player to block while in the air, but not while accelerating upward (jumping)

I am also considering allowing the player to move while blocking at half speed, and possibly to fire at a slower rate while block and stationary. These changes will be considered after the above changes are implemented and more feedback is gathered.

In addition, I want to make gameplay as Mike feel more unique. So, I have decided to change the way that mike attacks his enemies.

First, I am going to change the condition on when Mike attacks. Currently, players can hold the attack button down to attack at full speed. However, this will be changed, so that players can still hold the attack button to attack a specific speed, but also have the option of tapping the attack button to attack even faster. This will give Mike the more agile, attack focused gameplay in contrast to Tom’s more defensive focused gameplay.

Friday, June 21, 2013

Well, it is kinda playable

Today, I am distributing a rough playable build. This build includes one playable level (Normal) and half of another (High Winds). I have been working on this game for a class of mine so I have been able to get a lot of work done on it, but with the move to Austin I have been very busy.

In this build I have a completely original art style, except for the sprite used for the main characters. I got this sprite from a Google search and I have reached out to the owner for permission to use it. Here is a link to the animation panel.

All credit to the animation goes to the creator, @GregPXL

In this build are several new concepts and bug fixes. Mobile platforms now almost work perfectly, with few enough bugs that I'm taking a break on them for now. I have also introduced some new puzzle elements and I have all the level elements fully functional, like high winds, acid rain, and high gravity.

There is still a couple pieces of placeholder art in there, such as the level icons, and the menu system needs an artistic overhaul. However, I am pretty sure I won't be able to get to those by the end of my class, and to be honest I'm not sure I am going to continue this project after that. It has been a ton of fun working on this and I have learned a ton, but I also don't want to get bogged down into a single project for my entire academic career. The more I have to show as my work the better.

Anyway, below is the current build of the game. Like I said before, there is one full level, Normal, and one half level, High Winds. The others are testing areas that don't take you anywhere.

Saturday, June 8, 2013

Pardon the Dust

Sorry for the lack of posts, I have been very busy getting prepared for a move to Austin, Texas. I have been very busy preparing for it, and I haven't had as much time as usual to work on my game.

That being said, this week I am working on overhauling the artwork. I decided to change the game to a much simpler art design, looking at things like old Atari games and Geometry Wars for inspiration. Artwork is something I have pretty much no talent at whatsoever, so it is unlikely that I would ever get far enough doing pixel art in any reasonable amount of time to have for this game, so I opted for something similar.

In addition to new, simpler sprites for everything, I am going to add particle effects to more objects to give everything a better sense of cohesion and action. So far I have completely some of the very basic enemies and projectiles, but I am having a very difficult time with the player characters and bosses. At first, my original thinking was making Tron like entities, but I haven't been able to make anything worthwhile so far, so I may have to look at simpler options.

Below is a screenshot of a testing level, showing what I have done so far with the new art style.

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.

Tuesday, April 30, 2013

Level Design

One thing any great, or even just good game requires is excellent level design. It doesn't matter how sound the technical and programming details are in your game if you don't have good level design to capitalize on it. It also an area that I am beginning to spend more and more time planning as I get further into the development process. This time a month or so ago, the plan was simple. Make two player characters, with unique single player campaigns for each and a combined co-op campaign that utilizes their unique abilities to challenge players. The question now is, HOW?

I spent some of this morning replaying a couple of the games that my game is using placeholder art from, Mega Man and Mega Man II. I was surprised how difficult they were after all this time, and I resolved to make sure that challenge is a more central part of my level design in the future.

The problem I am facing, though, is how to make a platformer with two player co-op elements. I have played a few other similar games that had co-op, but never in a way that required cooperation between players. In Rayman Origins, it seemed to be a simple skill check that one player had to get through and the others could then follow, and was almost more competitive in nature while I want to make something that requires communication and cooperation between both players. If anyone has ever played a game similar to this, it'd be awesome to see it in the comments or in the email.

With that considered, I decided today to limit my game to an introductory level for learning the ropes of the game, with four "flavored" levels after that can be done in any order. Since there will be a relatively small number of levels, I hope to make each individual area more compelling and difficult, and with more memorable boss fights.

Today I finished a couple of the introductory areas, including two co-op puzzles. They are not yet in the available build but I hope to update it in the next couple of days with a playable introductory level, but I still have a couple of back end systems to create for the puzzles. Namely, I need a matched switch-activator system, such as a remote controlled door, as well as an unblocker entity, which I can use for specific game scenarios to open up paths only under specific game types.

I'll post a quick screencap. Below is the start of one of the puzzles in the intro area, with the top path accessible to Mike, the character with higher jumps. In the final game, this area will force the players to split up and hit switches on the way, opening up the path for the other player as they go along.

Saturday, April 27, 2013

Well, tonight I finished the level editor hooks and game manager implementation for a couple new level ideas. One new level will involved high winds that cause players and objects to slowly drift in a particular direction. The second is a level with a constant health degen, with safe areas that will refill the player's health. There will be particle effects that act like an "acid rain", but I don't yet have that implemented.

Saturday, April 20, 2013

Hello everyone. My name is Nathan Birt and I am a student at DeVry University taking Game and Simulation Design courses. I am just finishing up GSP 321: Programming 3D Math and Physics for Games. Tonight I decided to make a blog for my side-project I am working on for my work portfolio call Platform Revival, an old school 8-bit styled platform game. Right now, I am still using placeholder artwork, so you will probably recognize the sprites, but everything else in the game is original!

Tonight, I am putting the finishing touches on the particle system, such as the pieces coming off the player's projectile, shown below, as well as immediately after landing.

I have a slightly earlier version of my game demo available. It is still very basic, but has a lot of the framework done for the game, such as an input manager, game manager, message system, and some basic game play.