Wednesday, November 28, 2012

Wake


http://gameproject.fullsail.com/gpgames/index.php/2012/11/wake/
Please follow the link to see gameplay videos, images, documents and even download the executable and try the game for yourself.

Thursday, September 20, 2012

Wake : The lobby system

For Wake, it was very important to us that players can create and join games easily. I spent some time this month laying the foundation of our lobby system. At the moment, the game only supports local play, but I'll be making an effort to get online play working this month.
Creating a game right now is simple. All the user needs to do is select "Create Game", name the server if they wish, and select start game. When they do this, the game runs a what is called a listen server. Basically, the user that created the game is running as a server and client at the same time and uses the network to transmit data the same as other clients will. The user also has the option of running a dedicated server, which will not allow them to play the game, but simply run the server so that other clients can join the game and play.
Soon, I'll be finishing up the master server. The master server is a simple program that keeps a list of all the servers running games, so clients can get access to their address and attempt to join the game is there is space available. It's a bit trickier than that as many computers are usually behind a NAT device that gives the computer a different IP than the one that is seen globally. This will require some researching into NAT traversal to figure out how to connect users. When this is up and running, when a server starts, it will attempt to register with the master server so that other clients can join it.
When a player chooses to "Join Game", they will be brought to a simple server list. The client will broadcast for servers on its local network and display any local games. The client will also attempt to connect to the master server a retrieve the server list. The player can than choose from any games with space available to join and start playing. So far, I'm pleased with how easy it is to set up and start playing a local game. Creating and joining games on separate networks is the next challenge I look to face and I can't wait to get that working. Check back soon for more updates on Wake and some in-depth discussion about the facets of the game I'm working on.

Wake : Alpha Gameplay Video

We've completed the alpha month of final game project at Full Sail University and here's a look at the progress we've made over the past few weeks. We now have the three weapons we planned on having from the original design in the game a functioning properly and they're using some spiffy weapon models. We now have a lobby system that allows clients to pick the game they want to join. We also have a new level that was built with our level editor, as player models and animations. Check out the video!


Thursday, August 23, 2012

Wake : Core Gameplay Video


Here's an early look at Wake, the fast paced, multiplayer, first-person shooter that I am working on. The game currently only allows two players to connect and compete, but we're looking to expand that number very shortly.  Right now all of the visual and audio assets are temporary. Still have plenty of work to do, but we're off to a pretty good start.

Wake : Introduction

So, I'm in the final stretch of the Game Development program at Full Sail University. For the last 5 months of the program we're teamed up with fellow Game Development students and tasked with creating a well-polished game. It started in July when we had a week to develop a game idea, pitch it and see if we get the green light to start designing and developing the game. While nearly every game made during final project is a single player game, our team wanted to push for something that hasn't been done. Multiplayer first-person shooters have been one of my favorite types of games for as long as I can remember and much of the team was equally interested in the idea of creating our own multiplayer experience.

We nailed our pitch and got the go ahead to start developing Wake, a fast-paced, networked, multiplayer, first-person shooter. We spent the rest of the July writing a design document that would detail many things from gameplay, level design, art assets, animations, HUD elements and so on. By the end of July, we had a solid starting point for developing the tech that would be able to run the game.

Throughout the month of August we've been tasked with writing out technical document, which explains all of the various systems that we will use to run the game. For example, we needed to detail the entire networking system, which systems communicate with networking, how each user will start and connect to games, and so on for every system in the game.

Once we were finished the technical document we could begin programming! For the past few weeks we have been hard at work trying to meet the deadline for the core of our game. For core, we were required to meet a list of requirements that were necessary for our game to work. We basically needed to have two players, connected over a local network, be able to run around and shoot each other and compete to be the first to five kills. While not without our struggles, we were able to pull through and reach our goal.

While we met our goal for core gameplay, it is still a very small representation of what the final game is intended to be. We still have the months left to add features like weapons and powerups, as well as integrate models, effects and animations we receive from the guys in the art department, and work to better balance and polish the game with each iteration. This is just a brief introduction to the process of creating Wake, I'll be back shortly with more detailed explanations of how many of the cool features found in Wake are being implemented.

Check out www.wakegame.com for more information.

Wednesday, March 21, 2012

Recording input experiment

I've had this idea in my head to make a game where recording the input of the player is one of the key mechanics of the game. I haven't decided where I'm going to go elsewhere as far as gameplay, but I've seen a few games that have used this idea and they were all puzzle games. I think I'm going to try an implement it in some type of action game, but I haven't quite figured it out yet.

Anyways, the first thing I wanted to do was get started on figuring out how I would accomplish recording the players movements. I thought about it for some time (probably longer than I took to program it) and came up with the solution shown above. While there was a few ideas I came up with, I felt the best would be to just record the players input and re-simulate all of the actions. While this means that more processing power is going to be spent calculating collision and such when I start adding other elements to the game, I felt that since I'm going for a 2D game it wouldn't be too big of an issue. Doing it this way saves me from having to record the players position every frame, which will be a hefty memory savings in the long run. When I start adding in running, jumping, shooting, or whatever else, the way I set the system up is pretty flexible, so that process shouldn't be too painful. Check back soon for more updates as I continue to experiment with this idea.

Friday, March 2, 2012

Some More Medusa

Check out our development blog during the creation of the game HERE.
Check out the game for yourself HERE.

Remaking an old classic

This project is from very early on during my time at Full Sail University. I worked on this during Windows Programming I, which is basically the first time we rendered anything to the screen. Prior to that, we had done nothing but console programming. The object of this project was to make our own version of one of the world's oldest video games: Pong. So, I combined my love of hockey, hockey video games (Blades of Steel FTW!), and Pong to create Hockey Pong. Basically, each player skates around the rink and takes a turn trying to shoot the puck into the opposing players net. Good ol' fashion fun!

Medusa's Level Editor

During the creation of Medusa, I was also responsible for creating a level editor, so we could easily make levels for the game. The editor was developed using C# and managed DirectX. The editor needed to be fairly robust to accomplish the needs of the game. The map for the game was tile based and the editor can handle grabbing tiles from various images and various sized images and placing them on the map. After some research, I was able to create a fill, or "paintbucket", algorithm that allows for filling an area with the selected tile. This was very useful for large areas.

Docks level
The editor is capable of placing objects like environmental objects (boxes, submarines, etc), enemies, and powerups. This made it easy to fill areas with objects and enemies to keep the environments changing and posing a threat to the player. Various triggers can also be placed and sized around the map quickly with the editor. Placing collision boxes to keep the player from walking through the walls, triggers that spawn enemies when a player enters a room, and triggers that cause the lights to flicker can be added in no time flat.

Lab level
With some help from Luis Lairet, we were able to add lights and see their effects in real-time in the editor. This helped with level creation immensely, since we could see exactly how the lights would look in the levels as we were working on them. Making this tool allowed for rapid development of the levels in the game.

Medusa Video

Enjoy some gameplay from Medusa!

Medusa

Medusa is a game created by Luis Lairet, Brian Pike, Jim Casale, and myself during Structures of Game Production at Full Sail University. Medusa is the name of an underwater facility that has been infested with mutated sea creatures. It's up to the player to eliminate the threat and escape the facility. Over the course of two months, we developed the tools and the engine that run this network capable 4 player co-op shooter. The game was created with the use of C++ and DirectX.

Navigating the dark passaegways

Responsibilities
I worked on the level editor for the game. More on that in this post. Since I worked on the level editor and was familiar with it, I handled loading the levels that were created in the editor into the game engine. This involved loading the various tile images used to create the level, the spawn points for the players, the triggers for the enemies to be created, the position and color of the lights, as well as numerous other triggers and objects. During the optimization phase, I also implemented culling on the map, so the tiles that weren't currently on screen wouldn't be rendered.

Dropping a turret for some backup

I was in charge of creating two of the characters in the game. The scout, who has a sprinting ability and a shotgun that sprays in a spread pattern, and the engineer, who only has a pistol as a weapon, but can drop down a turret for some added support. During the creation of the characters, I also implemented the shooting, so the bullets come from the tip of the gun towards the crosshair. I also came up with a method to randomize the shotgun spray so it behaved like a real shotgun, spreading shrapnel in a random pattern, and implemented the targeting for the turrets.

Getting mauled

As I mentioned before, I handled some of the triggers in the game. With some help from Luis, we were able to create triggers that could change some of the lighting effects. At times in the game, the lights will flicker, go dim and into various other modes, adding some suspense to the game. The enemies are also triggered when players enter a certain area and removed at certain points to keep the enemy count down.

Priming a grenade
I also helped find and create many of the assets in the game. I helped out in adding some of the sound effects, like the shotgun blast and footsteps. My main contribution as far as assets go was creating the HUD and the level artwork. While I'm not much of an artist with pen and paper, I can work my way around Photoshop pretty well. For the HUD and the level artwork, I mixed and matched countless textures, colors and patterns together to create levels that looked unique, as well as infested. Since I created the level editor and was very familiar with it, I also created three of the four levels in the game.

Showing off some cool lighting

This project was, by far, my favorite experience at Full Sail thus far. I got to work with three awesome guys and we were able to learn and create a ton of cool stuff during the two month class. I'd like to give some thanks to our associate producer Robert Martinez, as well as the extra guidance we had from Sean Hathaway, Shawn Paris, John O'Leske, Darryl Malcomb, Garry Miller, Lari Norri and anyone else I may be forgetting.

Mars Attacks Video

Enjoy some gameplay from Mars Attacks!

Mars Attacks

Mars Attacks is a game that I created during the Structures of Game Development course at Full Sail University. Since this is basically the first time we made our own game from scratch, using C++ and DirectX, and we only had a few weeks to work on it, I tried to take a relatively simple game idea and put my own twist on it. The basic premise is that aliens are attacking the Earth and the only thing that can stop them is a massive turret that shoots bullets, missiles and bombs.

During this project, I learned many different techniques that are helpful to know in 2D game development. I used vector mathematics so the projectiles would look appropriate when fired from the gun. I did some frame-based animations to create explosions and sparks that indicate that the ships have been hit or destroyed.

Rocket
I also learned how effective loading information from a file can be for game development. Each level is loaded in from an XML document which tells the game which song it should play, what time the enemies should attack, which type of enemy should attack and what file contains the information for the next level, if one exists. Rather than just having enemies attacking at random intervals, I was easily able to sync the attack to the song, which makes much more of an impact on the player.

Guided Missile
 
Music was also an important consideration for this project. When I first thought of the idea for the game I knew I wanted to incorporate some of my favorite music. I clipped some sections from songs by The Contortionist, Animals As Leaders, Substructure and Irepress, because I felt like their occasionally "spacey" styles would fit the game perfectly.

Bomb
This project was an excellent learning experience. With the help of my course director, David Brown, and the lab assistants, Robert Martinez, Sean Hathaway, and Shawn Paris, I was able to learn quite a few useful techniques and make something pretty cool for the level of experience I had at the time.