Archive for the ‘Game Development’ Category
Ok, so it has been a while since I’ve posted. It has been a busy last couple of years! I’ve been working at NetApp but just gave notice to start working somewhere new. I had a few abandoned side projects and I am now embarking on a brand new one. I’ve learned a ton. Mostly, I’ve learned what might make a project successful and what makes it fall apart. Today I am going to talk about a little game project we are putting on hold.
There was a project a few of my friends were working on where we decided merge music and gaming together. We had this epic plotline, with awesome episodic content in mind, and various other great concepts. We even had a working prototype of the game engine with some programmer art and some actual artist content. We had plenty of concepts, but when it came time to tying things together and defining deadlines everything would fall apart. We ended up in endless development time for various animations. Promises of “it will take 4 hours” turned magically into 4 months later. When it came down to it was too hard for a half committed team to execute, and definitely too hard for some of the team’s first game.
I stepped back. I know we had a talented team, but I really wanted to make a big impact at a smaller scope so I went back to the drawing board. We needed to get our little team to start thinking smaller/simpler so I threw out the idea of putting our current project off in favor of something more easy to execute. I proposed a standard shoot’em with a few twists.
The other thing I realized is that our team was missing a dedicated game designer. Someone who would really drive the game mechanics and be a champion for awesome level/game design. I reached out to one of my old friends from the Game Development Club at SJSU. He grilled me initially (mostly about how I didn’t think the iPhone was all that special when it came out to which he scoffed), but I think he liked the new premise for the game. I proposed a simple shoot’em up targeted at the OUYA with timed music elements for combos and such. The convo took a life of its own. We both proposed extremely stupid things and expanded on them to make them great. We thought making this a purely cooperative type game. We instantly considered latency issues and how that might impact the gameplay mechanics. We decided to go back and do some research and mock some things up. I immediately opt’d to get an early developer OUYA, which should be coming in by the end of the year some time and in the meantime start developing a simple engine to get us started!
Starting over is somewhat disheartening, but I think it can be refreshing and freeing as well. I am not considering anything a failure. They were all good ideas and could all potentially become something with the right direction. They all taught me a little something though and aided in focusing and explicitly defining my intentions. There is a concept in software development called “coding by coincidence”, it occurs when you achieve your desired outcome but aren’t quite sure why it occurred. I now think that this rule could by altered for the business world as well. You should always be deliberate when designing a product. Magical spurts of popularity do occur, but you should know exactly why and how they occurred. It is possible to “get” lucky, but I believe intent will deliver more guaranteed results.
About a week ago I participated in this one competition know as Glorious Trainwrecks. This competition was about creating at least 351 games in a matter of 48 hours. You may ask… “why 351 games” and apparently the reason is because another competition known as Global Game Jam made 350 in the same time period with many more people participating. Rather than try to create the most amazing, massive, epic games possible this competition was more about creating quick, dirty and basically horrible games that are entertaining for about 30 seconds . Our team at SJSU (from the game development club) made 30 games of the total 520 that were submitted. Of those 30 games, I made sound for 2 games. I had also created a game using Scratch that was rather stupid and hilarious but I couldn’t figure out how to get it to run without going through the Scratch website in time.
The first game I worked on was called “Partisan Politics“. It essentially describes how the US is split in to two parties and you (mega man) are getting pulled from one side to the other into the spikes. The second game was known as “A Normal RPG” (although I prefer the name Revenge of the Something, but whatever ). Click on the links to download them (you need flash).
You guys should also check out the full list of games the Game Dev Club made at http://www.glorioustrainwrecks.com/taxonomy/term/514 . Many of which are pretty hilarious a few of my favorites include Noby Noby Lol and Skittles: the Aftermath (make sure to play the first version briefly).
In other news I am going to GDC this weekend. I will take pics and report back! Also I am going to socialize at GibHub’s headquarters tonight, I will make sure to take many many pics and report back!
I modified my platformer engine in a few ways. First I killed off the fisix engine. It was really a physics engine, but the lack of support kind of killed progress for me. I switched to APE and I couldn’t be happier. Next I made it more generic. I removed the idea that this was going to simply be a platformer, and I started to think about what the difference was between 2D games in different genres. The only thing I could think of that truly separated them was the action that occurred while walking or attacking and the perspective of the game. In other words an RPG is top down or at an angle (essentially the same just with different art) and a platformer is side scrolling. The only other game type not accounted for is a SHMUP (Raiden and other top down flying shooter types). So I took my level reader and stepped it up a notch. I now have 2 xml files. One to characterize the level and the other to characterize the player. I allow for many built in “actions” such as walking up, up-right, right, down-right, etc, and I am hoping to also include a way to add custom actions. These actions are tied into 1 swf file with multiple movie clips. Not only that you could also specify whether a certain movie clip should be flipped for a certain action which cuts down on the amount of animations or duplicates one needs to make.
Simply stated I could specify in xml that the right action is using the left movie clip and is flipped horizontally but not vertically.
Not only that a person could specify a game mode. Right now it supports walk (RPG style) or jump (platformer style, side scroller).
So the code doesn’t look to bad either. I’d say the messiest part is deciding what happens when these actions are selected. In specific when to flip and clip, when to flip it back, modifying velocity while jumping etc.
Once I get more work done with it I may post the source code, or I may just give out tools for making levels , but for now imagine a world where making a game was this simple:
Level:<?xml version="1.0" encoding="utf-8" ?> <level> <name>Platformer Demo</name> <description>testing</description> <walkMode>false</walkMode> <playerSpecs>players/platformer.xml</playerSpecs> <surfaces> <surface x="5" y="600" width="7000" height="20" bounce="0.3" friction=".1" rotation="0"/> <surface x="5" y="5" width="200" height="10" bounce="0.3" friction=".1" rotation="2"/> <surface x="700" y="400" width="500" height="10" bounce="0.3" friction=".1" rotation="3"/> </surfaces> </level>
Player Profile:<?xml version="1.0" encoding="utf-8" ?> <playerSpecs> <bounds type="circle" x="450" y="100" radius="45" elasticity="0" friction=".1" visible="false" /> <speed horizontal="15" verticle="15" maxH="30" maxJumps="2" /> <sprite> <file>assets/platformerNinja.swf</file> <movieClips> <clip name="walk_up" action="up" flipHorizontally="0" flipVertically="0" /> <clip name="walk_down" action="down" flipHorizontally="0" flipVertically="0" /> <clip name="walk_right" action="right" flipHorizontally="0" flipVertically="0" /> <clip name="walk_right" action="left" flipHorizontally="1" flipVertically="0" /> <clip name="walk_up" action="upRight" flipHorizontally="0" flipVertically="0" /> <clip name="walk_up" action="upLeft" flipHorizontally="1" flipVertically="0" /> <clip name="walk_down" action="downRight" flipHorizontally="0" flipVertically="0" /> <clip name="walk_down" action="downleft" flipHorizontally="1" flipVertically="0" /> <clip name="stand_right" action="stillRight" flipHorizontally="0" flipVertically="0" /> <clip name="stand_right" action="stillLeft" flipHorizontally="1" flipVertically="0" /> </movieClips> </sprite> </playerSpecs>
Then imagine a world that had a drag and drop interface that could generate the XML files above with all the art specified as pngs with supported transparencies!
The implications also include that one game could have several level “types” per game with no extra development needed. Perhaps at some point people would be creating plug ins to support additional game types as well! Ahhh now we are just dreaming .
So a few months ago I made this game on facebook with Edgar called Grid[z]. It is a simple little board game, but we have a ranking and score system that is based off ELO. ELO is the ranking system that is used for Top Coder and Chess Leagues among other things.
We have some planned modifications also including a public lobby that would allow players to invite each other. Also more stringent security policies are also needed. I don’t see this game becoming popular or making tons of money so I am considering it my first foray into the facebook api + cakephp. I may eventually post my cakephp library for making games; however, trying to validate player interactions with the server in a way to cover all cases seems to be a hurdle. It may be a nice starting point though.
Check it out: http://apps.facebook.com/gridzzz/
So as some of you know I work for NetApp right now! One of my charters is to create tons of game prototypes. Yes yes i know NetApp has nothing to do with creating games. They are primarily a storage company; however, I work for NetApp University. So I was basically told to research and pitch ideas about gaming mixed with learning. To show them that it does not need to take FOREVER to make games or require tons of resources I spent 2 days creating this AS3 based flash platformer. It reads an XML file and then places platforms (and in the future other objects). They idea I pitched was akin to the Little Big Planet 2008 E3 presentation (below). Everyone seemed to like it.
Here is the source code. It is short and sweet (200 lines)! There is not enough source code using the Fisix Engine out there. Also platformers are the first thing everyone wants to do when they start making flash games. I hope this helps…
I used Flash Develop with the Flex SDK to compile. If you want to mess with it and add just add more platforms just open bin>levels>testlevel.xml and just follow the format for the platforms… I think there is artificial barrier set for the level at some point. Linux and Mac users need to edit the path before compiling.