tag:blogger.com,1999:blog-72871064895061314682024-03-05T14:20:45.990+02:00Space Debris the gameSpace Debris is the name of an iPhone game started as a project in late May 2010 and initiated in middle June the same year. Hope you like it and buy it at end! In the meantime read the journey to completion here :-) and everything about the game of-course!Rotten Fishhttp://www.blogger.com/profile/03540724081959367530noreply@blogger.comBlogger13125tag:blogger.com,1999:blog-7287106489506131468.post-35537185804472960172012-03-31T21:48:00.001+03:002012-05-20T21:23:37.487+03:00At The Philosophy of Computer Games 2011After almost six months, since the last year's 2 days Hellenic Game Developers Conference that was held during the Athens Digital Week, Space Debris appeared to this year's The Philosophy of Computer Games event at Athens, Greece in April. <br />
<br />
This time, Kostas Anagnostou, Game developer and Adjunct Lecturer in Videogame Technologies spoke about the "Data driven game development - Empowering the artist". This time the presentation was more technical and described the concepts behind the development of Space Debris.<br />
<br />
The main idea is that the programmers instead of concentrating on the game mechanics themselves they develop a kind of player that is able to reproduce whatever is feeded more like a music or video player but this time data is the game itself.<br />
<br />
The speach can be found <a href="http://www.rottenfishgames.com/Media/Anagnostou-DataDrivenGameDev.pdf">here</a>.Rotten Fishhttp://www.blogger.com/profile/03540724081959367530noreply@blogger.com0tag:blogger.com,1999:blog-7287106489506131468.post-60493884775006286652012-03-31T21:12:00.000+03:002012-03-31T21:12:07.922+03:00Development diaries - February-March 2011 archive27/03/2011<br />
Restored asteroid field functionality. It didn’t work because its spritesheet was not registered with the SpriteSheetManager. It took me all morning to track this down. We really need more Assert mechanisms in the code... Took an update from the repository, we now have definitions for almost everything in the game! The game crashes though because some sprites are missing from the spritesheets, flimsy content pipeline... I’ll have to use Nick’s tool to recreate the spritesheets.<br />
<br />
22/03/2011<br />
Fixed a game crash bug, it was due to wrong memory allocations. I also closed some old bugs which had long been fixed.<br />
<br />
25/02/2011<br />
Added a temporary menu to the game with background music. I also fixed some graphics glitches at the screen boundaries.<br />
<br />
09/02/2011<br />
I tried running space debris on the iPad. The whole process required nothing more than setting the iPad as target and building the game! Everything worked normally, even the UI! on the scaled output. Onay the graphics looked a bit blurry due to the filtering. I wonder if there is a way to do the scaling manually and turn off filtering.<br />
<br />
<br />
08/02/2011<br />
After setting up my new apple account and license and my new MacBook, I am ready to pickup space debris development from where we left it. I have set up Xcode and svn as well, did a test build of the game and all work fine. We are ready to roll again. :-)<br />
<br />
<a href="http://videogameslab.wordpress.com/about/" target="_blank">Kostas Anagnostou</a>Rotten Fishhttp://www.blogger.com/profile/03540724081959367530noreply@blogger.com0tag:blogger.com,1999:blog-7287106489506131468.post-66971943947342311862011-02-05T12:45:00.000+02:002011-02-05T12:45:05.782+02:00Development diaries - December 2010 archive<b>01/12/2010</b><br />
Had a talk with Nick and we agreed on a scheme to create the spritesheets and define each sprite animation and coordinates correctly. He will revise his spritesheet creation tool accordingly.<br />
<br />
I also started working on a level manager that will load level definitions from an xml file. <br />
<br />
No commit yet <br />
<br />
<b>03/12/2010</b><br />
Finished the level manager, now the game can support many stages and levels. For performance reasons I chose to define enemies, spawners, explosions, effects etc per stage, and load them upfront. Also per stage takes place tilemap loading to avoid delays between levels. Every time a new level is about to begin the GameLayer is cleared and corresponding sprites/spritesheets are attached to it again. Since nothing is really created between frames the whole thing should be quite fast.<br />
<br />
Nick delivered a really good tool for spritesheet creation which exports, apart from a png spritesheet, an xml file with all sprite definitions as well. It even supports animated sprites in the same xml file. I will have to alter the way we define and load enemies and stuff but it is well worth it. <br />
<br />
No commit yet.<br />
<br />
<b>06/12/2010</b><br />
Nick created two spritesheets that contain all game sprites (one for normal blending and one for additive), and I modified the game to use those to define the game entities. Spritesheets and sprite frames are now defined in xml files and are dead easy to alter and customize. To facilitate spritesheet management I added a Spritesheet manager which we can use to register and attach spritesheets to the game layer. The spritesheets are created per stage and reused by all the stage’s levels.<br />
<br />
I also added stage and level definition externally through xml files. Committed everything back to repository. Additive blending on laser bullet sprites make them seem a bit faint, I will have to talk to Nick about that. Do we really need additive blending there? Also the sprite textures probably need a small padding in the spritesheet, I see artifacts on the borders of the sprite.<br />
<br />
We have all that wonderful game technology in place, lets hope we will also have a game...<br />
<br />
<b>07/12/2010</b><br />
Explored the additive blending issue a bit more, it seems that a {GL_ONE,GL_ONE} blending function works ok after all, it was me not interpreting the visual results correctly. In the process I found out that xcode apparently premultiplies alpha to color before sending the a PNG texture to iphone. It does that because there is no space in VRAM to store the alpha value. This is something to keep in mind. I also added the functionality to specify flipping of sprites in the xml files. We need this because some laser bullets (from player weapons to be more specific) point upwards in the texture and this conflicts with the general mechanism to create and orient bullets. Probably easier to fix that in code than re-create the spritesheets.<br />
<br />
<b>09/12/2010</b><br />
Talked to George about level design, we should have the first levels any time now. In the meantime we had to change plan with our source repository provider. I did a test commit, it still works fine. By the way of the test commit I added support for horizontally flipping of sprites, specially needed for flipping the bullet sprites. I also tried using nearest neighbour sampling on the sprites as suggested by Nick some time ago. I can’t say that I like the visual impact it has, I can clearly see the aliasing along the sprite edges as well as texture “waves” on the sprites. Deactivated for now.<br />
<br />
<b>10/12/2010</b><br />
With the new spritesheets we needed a uniform way of handling sprites and animations so I added a new SpriteAnimation class that does just that. So now game entities do not have to deal with sprite animation at all, it all happens automagically!<br />
<br />
I also started implementing weapons effects (the weapon fire). I used the existing Explosion class for that and it works perfectly. Committed changes to the repository.<br />
<br />
Still waiting Nick’s new Spritesheeter with padding around sprites. Now there seem to be artifacts at the edges of each sprite.<br />
<br />
<b>14/12/2010</b><br />
While waiting for the new spritesheets, I trimmed one pixel along the perimeter of each sprite frame, in code, and the artifacts went away. Maybe we can go with that solution after all? I also noticed that the explosions in the mockup where larger, so I added the functionality to set the explosion scale in the xml file. Explosions are now much more impressive. Finally, I implemented a few other weapon effects, it is really a breeze now with the specification-through-xml system in place! No commit at this time.<br />
<br />
<b>15/12/2010</b><br />
Added player definition through xml files to make it comply with the data-driven scheme we are using. I also added a few more effects. It seems that making GameEntity derive from CCSprite wasn’t such a good idea after all. I should have decoupled entity visualisation from the entity itself. As it is now it is a bit restrictive and it doesn’t easily allow me to combine multiple sprites per entity, as in the case of bonus items. We have gradually shifted towards a component-based approach in the game anyway, the only cacophony is the inheritance from CCSprite. The Sprite should be just another component of the entity (like animation etc). Committed all recent changes.<br />
<br />
<a href="http://videogameslab.wordpress.com/about/" target="_blank">Kostas Anagnostou</a>Rotten Fishhttp://www.blogger.com/profile/03540724081959367530noreply@blogger.com2tag:blogger.com,1999:blog-7287106489506131468.post-80974312225375554032010-12-31T12:13:00.000+02:002010-12-31T12:13:57.921+02:00Season greetings<span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"><b>Have a Happy and Prosperous New Year!</b></span><br />
<span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"><br />
</span><br />
<span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;">Let the 2011 be the next best thing in our lives :-)</span><br />
<span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"><br />
</span><br />
<span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;">The Rotten Fish Games team.</span>Rotten Fishhttp://www.blogger.com/profile/03540724081959367530noreply@blogger.com0tag:blogger.com,1999:blog-7287106489506131468.post-76570701013571363982010-12-06T09:11:00.004+02:002011-01-19T04:41:19.709+02:00Development diaries - November 2010 archive<strong>02/11/2010</strong><br />
Started implementing Nick’s effects. I also found a promising XML library (<a href="http://www.tbxml.co.uk/TBXML/TBXML_Free.html">http://www.tbxml.co.uk/TBXML/TBXML_Free.html</a> ) to try with the game. We need some way to specify weapons and other stuff externally to the game and Tiled does not seem like the best option to me. I also asked Nick to create spritesheets of all related textures to reduce loading and rendering times. <br />
<br />
<strong>03/11/2010</strong><br />
Extracted all enemies/weapons/animations/explosions/spawners definitions from Tiled to separate xml files which will be referenced from Tiled. This will make creation of next levels much easier and also level designing with Tiled is much easier as well.<br />
<br />
I had a brief discussion with Nick about what information we need in the xml files, from a designer/artist perspective, so we are doing good. Next I started integrating TBXML to the game to load the xml files, this will keep me occupied for tomorrow as well. No commit yet.<br />
<br />
<strong>05/11/2010</strong><br />
Large commit today, I added support for entity definition (currently enemies, spawners and weapons) through xml files. I did a quick test with an armed enemy and several spawners and it works fine. The purpose of Tiled is now to spatially place the enemies on the level and not define them which makes level design more flexible. I also added support for animated sprites and arbitrary directions for enemy bullets. Added Vicky’s music to the game, it sounds fine! Finally I added Virtual Joystick UI for visualisation purposes only, it is not fully functional yet. Actually one can use the menu to select between touch and virtual joystick UI.<br />
<br />
I have asked Nick to create the spritesheets of all game sprites. Next I will start implementing weapon and other effects. Explosions will also be defined with xml files. Animation definition through xml files is still pending as well.<br />
<br />
<strong>08/11/2010</strong><br />
Worked towards making animations data driven, they can now be defined in xml files and used by reference when creating the spawners. The system is really flexible, one can build any combination of enemy/enemy spawner and animations just be changing the xml files! Currently only simple “straight” and “hunt” animations are supported, but support for any number of bezier curves is almost complete as well. To implement the animations I created an Animation class and Manager which are responsible for entity motion. Any Game Entity can conceivably be driven by the Animation system. It follows a “component”-like approach where an entity that does not have an Animation object is static. In order to bind the method that calculates the entity motion, according to animation type, to each entity I used callbacks (or ObjC’s version of them).<br />
<br />
ObjC’s support for callbacks seems a bit lacking and cumbersome, I had to use selectors that require all arguments to be NSObjects (or derive from it). So I had to convert even primitives types to objects to work with this approach. I wonder whether I should stick with good old C-style function pointers, although I believe they do not work with class methods. Anyway this works more or less. Another idea to avoid converting primitives to objects and back is to create a context which all selectors will use. I make a mental note to try that is the future.<br />
<br />
No commit yet.<br />
<br />
<strong>09/11/2010</strong><br />
Added support for cubic bezier curve animations which can now be specified through xml files. The game can now combine any number of curves to create animation paths of any shape. Cocos2D already supports bezier animations through CCActions (i.e. the update is out of my control), but I wanted more control and a unified way of updating all kinds of animations, so I rolled out my own bezier curve solution. The system is very flexible, the only problem is that we have to use that Java tool for curve creation which is not the most friendly way.<br />
<br />
Committed everything back to the repository.<br />
<br />
<strong>10/11/2010</strong><br />
Implemented “Invade” and “Storm” modes of enemy spawning. The spawning mode is now specified through a parameter in the spawner definition xml file and is a property of the EnemySpawner class. I also created the “Spiral” animation mode using bezier curves. Not an easy task with the available java tool. Aren’t there any better bezier curves editor I wonder? Finally I added 3 additional modes to sprite rotation while animating, the “Curve” which specifies that the enemy ship faces the direction of the animation curve, the “Player” which specifies that the enemyship will always face and (shoot) the player, and the “None” which makes the enemyship to point downwards at all times (while changing its position). This mode is a property of the Animation class. No commit at this time.<br />
<br />
<strong>11/11/2010</strong><br />
Changed the enemy definition system so as to support multi-part enemies. Each part can be destroyed separately and can have its individual animation (for example Rotation). The part animation is different to the wave animation which is referenced in the spawner. Also the part animation passes through the Animation system as normal, so I can conceivably use any animation defined in the animations.xml file to animate a part. The new enemy definition system can be used to create turrets and other enemies with many components. <br />
<br />
Committed all changes to SVN.<br />
<br />
<strong>15/11/2010</strong><br />
Altered the bonus system a bit so as to conform with the game design requirements. Each weapon will have three levels of damage which are specified in the xml definition file. Every time the player grabs a weapon upgrade bonus a check is made whether the player already uses this weapon. If yes, the game will increase the weapon level (ie bullet damage), else it will create and attach a new weapon to the playership. The designer can create and add a bonus item to the game in two ways, by defining it in the bonus definition xml file and then either reference it in Tiled (placing it anywhere on the level directly), or adding it as part of an enemy spawner definition. In such a case, when the player kills all enemies in the specific wave, the bonus item becomes available and can be collected.<br />
<br />
The way the bonus system is implemented is by creating a base Bonus class which inherits from GameEntity and specifies position and animation, and then for each type of Bonus I create a subclass which only specifies how the bonus item affects the playership. The Bonus clone method when called, will return a specific Bonus item, according to the Bonus type specified in the xml file. The system is similar to the way different Animations are applied to each entity, only it does not use callbacks.<br />
<br />
I also tried nick’s spritesheets, they work ok. We had a discussion with nick on the need to specify the rectangles for each game entity in a separate file and not in the main entity xml definition to allow for rapid iteration of the spritesheets. I will implement this at some point when time allows.<br />
<br />
Committed everything back to the repository. There are a few minor things what I have to add to the bonus system, will do this tomorrow.<br />
<br />
<strong>16/11/2010</strong><br />
Finished bonus system, it is now functional. Only the various bonuses as defined in the design document remain to be implemented. I also refactored the weapon system a bit to make it more abstract between the two generic types of Weapons we support (laser and grabber). Finally I restored player laser functionality and collision with enemy ships. We are on a roll now, almost all main functionality is in place. We are still missing the new explosion effects created by nick and some other eye candy. We also need a simple audiomanager to assist sfx playback.<br />
<br />
No commit today.<br />
<br />
<strong>19/11/2010</strong><br />
Implemented the various bonus types as per gdd. As a shortcut, each captured Bonus object returns a bonus type (and data if needed) to the playerShip which is responsible to apply the bonus to self. It is much easier to handle bonuses that what (easier to implement, that is).<br />
<br />
<strong>22/11/2010</strong><br />
Seeing that CCLabel is too slow for rendering text to the screen (dynamic text that is, apparently it is ok for static text), I tried CCBitmapFonts which loads a bitmap font from disk and uses that. To create the font image I used the Hiero java tool <a href="http://slick.cokeandcode.com/demos/hiero.jnlp">http://slick.cokeandcode.com/demos/hiero.jnlp</a> The tool works ok and can build character sets for the game (it even allows you to specify which characters to include in the charset) and is supported by cocos2d natively. The only problem is that the font bitmap seems flipped horizontally and needs adjustment before using it in the game.<br />
<br />
I also worked on the Virtual Joystick UI a bit, it seems that the actual Virtual Joystick is a bit large, I will have to talk to George and Nick about that.<br />
<br />
Committed everything, quite a large commit!<br />
<br />
<strong>23/11/2010</strong><br />
Worked on the Virtual Joystick UI also adding icons for lives and shield bar. Committed changes for game designer to approve!<br />
<br />
<strong>25/11/2010</strong><br />
Implemented all 4 combination of player type-UI mode, that is collector-touch, collector-virtual joystick, laser-touch, laser-virtual joystick. I used a quick and dirty solution of subclassing the main UILayer class in to 4 classes, one for each combination. Each subclass differs mainly in the way it handles the “touch begin” and “touch end” events. There is probably a neater way to implement this but I am running out of time!<br />
<br />
I also implemented the title-screen animation as specified by Nick and a basic 2-level menu to select ship and UI mode. Cocos2D Actions are very handy in such cases since they allow building of fairly complex animations easily. Cocos2D Menu System is also pretty good, it even allows for images for menu buttons.<br />
Also implemented a game context singleton class to store all user selections and make it easy to share them with various game classes.<br />
<br />
Committed everything and awaiting George’s feedback on usability.<br />
<br />
<strong>29/11/2010</strong><br />
Added support for Nick’s flickbook explosions and an explosion manager to make spawning them easier. Since explosions is something that will be used a lot, I preallocated 50 of them (maybe 50 is too many, I will have to adjust their number later), set them them as inactive and when it comes to creating one I run through the list and reuse the first inactive at a new position. Explosions derive from Game Entity and go through the game’s entity system as normal. Currently only one type of explosion is supported.<br />
<br />
I have to talk to Nick about how we will define the sprite coordinates in spritesheets so as to finalize sprite animations.<br />
<br />
Committed latest changes.<br />
<br />
<a href="http://videogameslab.wordpress.com/about/" target="_blank">Kostas Anagnostou</a>Rotten Fishhttp://www.blogger.com/profile/03540724081959367530noreply@blogger.com0tag:blogger.com,1999:blog-7287106489506131468.post-66182221240229941922010-11-19T14:45:00.001+02:002010-11-19T14:46:00.799+02:00Development Diaries - Designer's cut<b><span style="font-family: "Trebuchet MS", sans-serif;">27/7/2010</span></b><br />
<span style="font-family: "Trebuchet MS", sans-serif;">Two months after the project initial start (28/5) and almost one and a half after the actual kick-off (19/6) the things go smoothly but somehow late. It is not a full-time project nor it could be because all the members should work for a living and fun cannot feed a family.</span><br />
<br />
<span style="font-family: "Trebuchet MS", sans-serif;">At least we have a clear plan now, some concepts to start with, a game engine (thanks to Kostas work) and some people to contact for the graphics and sound. I had left the site behind in order to finish the design.</span><br />
<br />
<span style="font-family: "Trebuchet MS", sans-serif;">Today, I will rebuild the latest code commit from Kostas since he found the issue that caused troubles to me and finish the latest design documents before I start the level design.</span><br />
<br />
<span style="font-family: "Trebuchet MS", sans-serif;">The target is to have some the first levels delivered by the middle August for the artists to start working with and deliver level by level till the middle of September in order to have something playable in October.</span><br />
<br />
<span style="font-family: "Trebuchet MS", sans-serif;">Though the first month spent on discussions and organisation issues, the second month can be called the design month (for me) since the game design takes some form at last.</span><br />
<br />
<span style="font-family: "Trebuchet MS", sans-serif;">That’s for now, let’s finish some task or Kostas will start crying out loud once again ;-P</span><br />
<br />
<b><span style="font-family: "Trebuchet MS", sans-serif;">3/8/2010</span></b><br />
<span style="font-family: "Trebuchet MS", sans-serif;">The previous weekend (31/7-1/8) I managed to upload a series of files regarding shoot-em-up games including: a. the available smups for iPhone and retro smup games features to consider, b. a document with various internet sources about this kind of games and c. a couple of documents with images from articles and posters of smup games.</span><br />
<br />
<span style="font-family: "Trebuchet MS", sans-serif;">Based on the above mentioned research, I finalised the Design overview document and the first Game Levels Design (backbone layout and draft content). I uploaded both documents today and I continue to finish the latter the soonest possible in order artists have something to work with.</span><br />
<br />
<span style="font-family: "Trebuchet MS", sans-serif;">Following the given deadlines in Pivotal Tracker it seems I'm somehow behind on schedule but I'm optimistic about that and I will catch-up the artists. Only artists for music and sfx are needed to complete the team.</span><br />
<br />
<span style="font-family: "Trebuchet MS", sans-serif;">The following days, I also start uploading some scanned drawings (only those I feel confident with) that cannot be considered as concept art but they give the general notion of the levels. </span><span style="font-family: "Trebuchet MS", sans-serif;">I try hard to put my hand on TileMap editor, too, but I know artists find it more relevant to work with...</span><br />
<br />
<b><span style="font-family: "Trebuchet MS", sans-serif;">4/8/2010</span></b><br />
<span style="font-family: "Trebuchet MS", sans-serif;">I downloaded the latest repository version and build it. Also, I did a 10 minutes sketch based on the game and some more organisation of docs and updates to some of them. That’s all for today ;-)</span><br />
<br />
<span style="font-family: "Trebuchet MS", sans-serif;">Hopefully, several issues will be discussed with Kostas tomorrow in person through Skype of-course.</span><br />
<br />
<b><span style="font-family: "Trebuchet MS", sans-serif;">6/8/2010</span></b><br />
<span style="font-family: "Trebuchet MS", sans-serif;">Another full-time job for Space Debris design resulted to the final Design Guide document for artists and designers to start building the game levels, a project that should finish near the middle of September leaving almost a month for putting all together and for tuning.</span><br />
<br />
<span style="font-family: "Trebuchet MS", sans-serif;">Nevertheless, I built the latest commit (#16) from Kostas to get an idea of the cocos2d engine limits and have a conversation with Nikos the following we as we agreed. We managed to arrange a Skype conference for Monday night, so, we will see how it will go.</span><br />
<br />
<span style="font-family: "Trebuchet MS", sans-serif;">Mike and I had a thorough discussion regarding the game design, too.</span><br />
<br />
<b><span style="font-family: "Trebuchet MS", sans-serif;">13-15/8/2010</span></b><br />
<span style="font-family: "Trebuchet MS", sans-serif;">Although Kostas criticises publicly my lack of commitment to the project ;-) and still I get no offense on that ;-) I did the following:</span><br />
<br />
<span style="font-family: "Trebuchet MS", sans-serif;">First of all I added some more docs like the Common/Sites one for links reference, then I prepared the blog site to start writing about the game. Then, I created a Facebook page and set a twitter account/page, something not difficult but time consuming. Also, I made some extra to Rotten Fish Games site like Facebook “like” button and a “twitter-follow” link icon.</span><br />
<br />
<span style="font-family: "Trebuchet MS", sans-serif;">I left the Game Guide and SVN for the second day 14/8 (Saturday morning) whatever time I wake up. I will update the PivotalTracker stories accordingly. Also, a new technical document uploaded in GoogleDocs to offer a more comprehensive view of the iPhone development capabilities and limitations. Finally, I will post something in the blog to start communicating the project.</span><br />
<br />
<b><span style="font-family: "Trebuchet MS", sans-serif;">24/8/2010</span></b><br />
<span style="font-family: "Trebuchet MS", sans-serif;">Yesterday, after a Skype call with Kostas, I started describing weapons and movements to complete the Game Guide in that extend. I bought an iPod Touch 32 for 2 players tests of related code.</span><br />
<br />
<span style="font-family: "Trebuchet MS", sans-serif;">I started downloading SDK 4.02 since I updated my iPhone OS and now XCode does not build the project.</span><br />
<br />
<b><span style="font-family: "Trebuchet MS", sans-serif;">1/9/2010</span></b><br />
<span style="font-family: "Trebuchet MS", sans-serif;">I just finished some additional design for weapons and ships including weapons and movements. Now, there seem to be everything to go ahead development. It took me a couple of days among with some TiledMap levels for testing and some code for Facebook and 2-players that I’m going to upload shortly.</span><br />
<br />
<span style="font-family: "Trebuchet MS", sans-serif;">I am on vacations mode but I intend to have everything done by tomorrow before I meet with Kostas in-person for a thorough issues discussion for the game. I am also going to build the new commit #31 as Kostas informed me about.</span><br />
<br />
<b><span style="font-family: "Trebuchet MS", sans-serif;">3/9/2010</span></b><br />
<span style="font-family: "Trebuchet MS", sans-serif;">After a short trip to Kerkira[Corfu island] I have some changes to apply to the game design and concept that does not affect the overall effort, though.</span><br />
<br />
<b><span style="font-family: "Trebuchet MS", sans-serif;">6/9/2010</span></b><br />
<span style="font-family: "Trebuchet MS", sans-serif;">I got some keys for FB app and I integrate the FB post code with Graphs API to a single project with a button in order to be inserted in the game. Also, I test a small portion of GameKit p2p code with the two devices. Finally, I apply the agreed chagnes with Kostas the other day about the game.</span><br />
<br />
<b><span style="font-family: "Trebuchet MS", sans-serif;">25-28/9/2010</span></b><br />
<span style="font-family: "Trebuchet MS", sans-serif;">First of all I tried to catch-up the development I had missed the last few weeks. I had a discussion with Nikos, some documents update, Pivotal Tracker and a new post in the blog site to keep the hype on.</span><br />
<br />
<span style="font-family: "Trebuchet MS", sans-serif;">I also submitted game in the GamesCon just in case. IGF will follow shortly and finally IndieFund (so-so). Finally, I will try to upload FB code (already got an AppID) and GameKit implementation.</span><br />
<br />
<span style="font-family: "Trebuchet MS", sans-serif;">Because of the latest iOS update I had to download 2.64GB of XCode the we (25-26) and since I use Forthnet as internet provider I had to try more than three times to get a verified and valid package to install... it took me till Monday morning (27/9).</span><br />
<br />
<span style="font-family: "Trebuchet MS", sans-serif;">Who said iPhone development is a piece of cake? It reminds me the Java moto: “write once play everywhere” - God saves us!</span><br />
<br />
<b><span style="font-family: "Trebuchet MS", sans-serif;">1-31/10/2010</span></b><br />
<span style="font-family: "Trebuchet MS", sans-serif;">The whole month was spent discussing issues with Kostas and Nick about the game. No real work by my side except the preparation for the 3rd Hellenic Game Developers Conference (HGDC) and some organisation with the team.</span><br />
<br />
<span style="font-family: Trebuchet MS;"><a href="http://www.gc-soft.gr/" target="_blank">Georgios Chiotis</a></span>Rotten Fishhttp://www.blogger.com/profile/03540724081959367530noreply@blogger.com0tag:blogger.com,1999:blog-7287106489506131468.post-31330245144277390562010-11-15T13:25:00.000+02:002010-11-15T13:25:42.518+02:00Development diaries - October 2010 archive<div style="font-family: "Trebuchet MS",sans-serif;"><b>06/10/2010</b> </div><div style="font-family: "Trebuchet MS",sans-serif;">Still haven’t found a satisfactory tool for curve creation. Fooled around with cocos2d bezier curve functionality a bit. It seems ok and it allows you to combine many curves to make a long, complex motion. The only trouble is, it is not very intuitive to create bezier curves in code. I found a java applet on the Internet that allows parametrization of cubic bezier curves using 4 control points. http://www.doc.ic.ac.uk/~dfg/AndysSplineTutorial/Beziers.html</div><div style="font-family: "Trebuchet MS",sans-serif;"><br />
</div><div style="font-family: "Trebuchet MS",sans-serif;">Maybe we could use this tool to create a series of bezier curves which would then concatenate in the runtime for complex ship animation?<b> </b></div><div style="font-family: "Trebuchet MS",sans-serif;"><br />
</div><div style="font-family: "Trebuchet MS",sans-serif;"><b>07/10/2010</b> </div><div style="font-family: "Trebuchet MS",sans-serif;">Added support for bezier curves for animations. Using this framework along with the java tool below we can work out an animation solution which is data driven. I am still not convinced how intuitive the whole thing is though.</div><div style="font-family: "Trebuchet MS",sans-serif;"><br />
</div><div style="font-family: "Trebuchet MS",sans-serif;">Committed latest build with non-linear animations<b> </b></div><div style="font-family: "Trebuchet MS",sans-serif;"><br />
</div><div style="font-family: "Trebuchet MS",sans-serif;"><b>13/10/2010</b> </div><div style="font-family: "Trebuchet MS",sans-serif;">Used Nick’s tilemap, after some formatting to make it adhere to the game’s rules, and it works fine. Just uncomment the related code line in GameLayer.m (method initMapAndEntities). I also implemented the “get me out of here” mechanic, now the player can quickly move her ship out of a tight spot by tapping at the desired target locations. I also added some padding in order for the player’s ship not to touch the screen borders. Does not work perfectly for some boundary conditions must look into this.</div><div style="font-family: "Trebuchet MS",sans-serif;"><br />
</div><div style="font-family: "Trebuchet MS",sans-serif;">I also noticed that CCLabels absolutely kill performance (minus 15-20 fps)! I disabled them for the moment, must look at an alternative to render text to screen. Committed changes with commit #40.<b> </b></div><div style="font-family: "Trebuchet MS",sans-serif;"><br />
</div><div style="font-family: "Trebuchet MS",sans-serif;"><b>15/10/2010</b> </div><div style="font-family: "Trebuchet MS",sans-serif;">I had a discussion with Nick concerning how to create the tilemap/game backgrounds. He pointed out that the current implementation (one large image background and a layer for parallax) is not sufficient to create a real “depth” effect. He suggested that the background layer should be completely static, on top of that we could have a set of large sprites for planets and other large objects and finally just a single tileset for structures on planets. </div><div style="font-family: "Trebuchet MS",sans-serif;"><br />
</div><div style="font-family: "Trebuchet MS",sans-serif;">On top of all these we can add a particle effect to convey the feeling of motion. I can see his point, the mockup he has created with GameMaker (which does exactly what I described above) has a much better feeling of depth than the current implementation. Additionally, we will lose a tilemap layer which is always good performance-wise!</div><div style="font-family: "Trebuchet MS",sans-serif;"><br />
</div><div style="font-family: "Trebuchet MS",sans-serif;">I will make some modifications to the code and to the way the game understands the tilemap description. In the meantime I have replaced the placeholder spaceship art with Nick’s spaceships and committed the changes. They look good, although a bit small.<b> </b></div><div style="font-family: "Trebuchet MS",sans-serif;"><br />
</div><div style="font-family: "Trebuchet MS",sans-serif;"><b>19/10/2010</b> </div><div style="font-family: "Trebuchet MS",sans-serif;">I have started implementing the changes we discussed with Nick. This entailed a few changes to the way the level is designed in Tiled as we will only have one tileset layer and the rest will be simple object layers for celestial bodies. Almost finished, no commit yet.</div><div style="font-family: "Trebuchet MS",sans-serif;"><br />
</div><div style="font-family: "Trebuchet MS",sans-serif;">On a side note, Tiled is not very good as a level design tool... I would like to be able to see the textures of the objects I add, it is very hard to design a level with empty squares of undefined sizes... Also cocos2d seems to adjust objects positions as it loads them from the Tiled file to account for the change in origin (Tiled is top-left, iPhone is bottom-left), which threw me off for a few moments.<b> </b></div><div style="font-family: "Trebuchet MS",sans-serif;"><br />
</div><div style="font-family: "Trebuchet MS",sans-serif;"><b>20/10/2010</b> </div><div style="font-family: "Trebuchet MS",sans-serif;">Finished implementing new background/layer design. Now the parallax and depth effect is much improved and “realistic”. The way we design a level in Tiled has changed as well, see tilemap_test.tmx as an example of how it is done now. Must update Tiled document as well.</div><div style="font-family: "Trebuchet MS",sans-serif;"><br />
</div><div style="font-family: "Trebuchet MS",sans-serif;">Nick suggested we turned off antialiasing (bi-linear interpolation) for as many textures as we can because hand-painted graphics are very detailed and many of the details get lost during filtering. I used nearest neighbour filtering for the player ship and it makes a noticable difference, so I will check other textures as well. Committed everything with commit #42 (i think)<b> </b></div><div style="font-family: "Trebuchet MS",sans-serif;"><br />
</div><div style="font-family: "Trebuchet MS",sans-serif;"><b>24/10/2010</b> </div><div style="font-family: "Trebuchet MS",sans-serif;">Started working towards restoring Tiled-game connection after the major changes we did to the way the level is designed. “tilemap_test.tmx” now is quite close to the way the level is specified, although it is missing some definitions for bonuses etc. Currently I have restored weapon, spawner and enemy definitions. Also the speed of the layers and horizontal motion range is specified in Tiled as well.</div><div style="font-family: "Trebuchet MS",sans-serif;"><br />
</div><div style="font-family: "Trebuchet MS",sans-serif;">Committed changes, lost track of the commit no. I must update Tiled-howto to document those changes. Monday I will be off all day, I will continue work on Tuesday.<b> </b></div><div style="font-family: "Trebuchet MS",sans-serif;"><br />
</div><div style="font-family: "Trebuchet MS",sans-serif;"><b>29/10/2010</b> </div><div style="font-family: "Trebuchet MS",sans-serif;">Did a few changes to the game including changing the way the camera is handled and improved the grabber game mechanic. The camera is now fixed while the “world” moves beneath it in the Y direction. It is probably easier to understand and specify layer motion this way. The alternative way to create the parallax effect would be to specify each layer’s speed as a percentage of the camera speed (the closer to the camera the layer the larger the percentage). </div><div style="font-family: "Trebuchet MS",sans-serif;"><br />
</div><div style="font-family: "Trebuchet MS",sans-serif;">Also changed the way the grabber mechanic behaves near the screen borders, now the camera moves along the captured debris to allow for more space. When debris are release the camera returns to its original position. Saw the effects Nick created to the grabber effect, they are pretty good! I think the game will be impressive at least graphics-wise when complete.</div><div style="font-family: "Trebuchet MS",sans-serif;"><br />
</div><div style="font-family: "Trebuchet MS",sans-serif;">No commit yet, I have to iron a few things first. Next major update will include the ability to set up entities in XML files external to the Tiled file. And I must start implemented Nick’s effects.</div><div style="font-family: "Trebuchet MS",sans-serif;"><br />
</div><br />
<br />
<span style="font-family: Trebuchet MS;"><a href="http://videogameslab.wordpress.com/about/" target="_blank">Kostas Anagnostou</a></span>Rotten Fishhttp://www.blogger.com/profile/03540724081959367530noreply@blogger.com0tag:blogger.com,1999:blog-7287106489506131468.post-24247695713761333792010-11-12T11:44:00.002+02:002010-11-12T11:46:49.331+02:00Development diaries - September 2010 archive<b><span style="font-family: "Trebuchet MS", sans-serif;">01/09/2010</span></b><br />
<span style="font-family: "Trebuchet MS", sans-serif;">I restored bullet collisions with enemy ships. In the process, I simplified the way BulletManager manages bullets, now a new bullet entity is created when needed. When the bullet expires, it is removed from the bullet array. This method is simpler and hopefully the fact that I create new CCNodes in the runtime won’t tax the game too much... George will have to test on the 3Gs and report on that. I also tried 40x40 as the player ship size and it looks better. We should probably go with this size.</span><br />
<br />
<span style="font-family: "Trebuchet MS", sans-serif;">Committed everything with commit #31.</span><br />
<br />
<b><span style="font-family: "Trebuchet MS", sans-serif;">14/09/2010</span></b><br />
<span style="font-family: "Trebuchet MS", sans-serif;">Working towards introducing touch UI to the game. Now UI layer logic is completely separate to the game layer and it is very easy to switch UI layers in the runtime. I also introduced a separate Camera class to handle camera logic more easily. The camera object can be attached to any game entity and will follow its motion (left-right that is, it always moves upwards). Once touch UI works, I will implements the asteroid grabber game mechanic.</span><br />
<br />
<b><span style="font-family: "Trebuchet MS", sans-serif;">15/09/2010</span></b><br />
<span style="font-family: "Trebuchet MS", sans-serif;">Implemented a first version of touch control. Player ship motion was bit shaky, so I added a filter to smooth out sudden movements. It is not good enough though because it takes into consideration the previous position only. Must revise this method later.</span><br />
<br />
<span style="font-family: "Trebuchet MS", sans-serif;">I also started work on the debris grabber weapon. The weapon will grab any specified game entity, even enemy spaceships. The grabber weapon has to be a new class, its logic and use is completely different to the regular laser weapon. Still it will be data driven and customised by level designer in Tiled map editor.</span><br />
<br />
<b><span style="font-family: "Trebuchet MS", sans-serif;">16/09/2010</span></b><br />
<span style="font-family: "Trebuchet MS", sans-serif;">Finished the first version of grabber weapon. Not tested it yet though! </span><br />
<br />
<b><span style="font-family: "Trebuchet MS", sans-serif;">18/09/2010</span></b><br />
<span style="font-family: "Trebuchet MS", sans-serif;">My tendency to decouple everything and eliminate dependencies between code modules did not pay off as expected this time. My initial idea was to abstract the UI into different layers and provide a set of methods to communicate user actions (swipe, tap ect) to the game layer as numerical values and displacement vectors. This made UI very abstract, the game layer would handle the player ship and weapon logic and ideally should make UI switching (between touch and virtual joystick) easy. </span><br />
<br />
<span style="font-family: "Trebuchet MS", sans-serif;">On the other hand it made communication between UI layer more complicated than it should be. Considering this, I gave player ship and weapon control to the UI layer, increasing the dependency but making weapon usage much easier. UI layer switching is still possible, it is just that the weapon logic is contained in the UI layer than the game player.</span><br />
<br />
<b><span style="font-family: "Trebuchet MS", sans-serif;">21/09/2010</span></b><br />
<span style="font-family: "Trebuchet MS", sans-serif;">Did a massive commit of all the changes of the past 2 weeks (Commit #31). It includes the collector weapon mechanics, separate layers for UI logic (touch and virtual joystick) and the and new improved Camera class. The Grabber weapon is now usable (although not yet data driven). Single tap triggers asteroid grabbing, dragging on screen and releasing finger releases the grabbed asteroids causing mayhem. Grabber triggering is a bit inexact for the moment, will fix on next iteration. Also missing is some better feedback of grabbing the asteroids (currently they just change color...).</span><br />
<br />
<span style="font-family: "Trebuchet MS", sans-serif;">Some UI testing will now show if this mechanic is any good. George?</span><br />
<br />
<b><span style="font-family: "Trebuchet MS", sans-serif;">23/09/2010</span></b><br />
<span style="font-family: "Trebuchet MS", sans-serif;">Had a discussion with Nick on tilemap sizes, he believes the smaller the tile size the better (more detailed) the backgrounds will look. During the discussion an idea came up that we could potentially use very small tile sizes to design the background, but eventually “bake” them into larger tiles and pass them to the game. The baked tilemap tile size would have to be 128x128 to fit current game world dimensions. </span><br />
<br />
<span style="font-family: "Trebuchet MS", sans-serif;">Following this I made 3 separate tilemaps, one with 16x16 tile, one with 32x32 and one with 128x128. The total world size was the same. The tilemap contained nothing else (except for the parallax layer), no enemy definitions etc.</span><br />
<br />
<span style="font-family: "Trebuchet MS", sans-serif;">With a 16x16 tile size, the game achieved about 10fps. With a 32x32 tile the game achieved about 35fps. With a 128x128 “baked” tilemap, the game whizzed by at 60fps on iPhone 3G! It seems that the game, due to the tile size, is vertex bound and reducing the number of tiles helps a lot! It seems that baked tilemaps is something worth considering. In this case, we would need two layers for the background (excluding the parallax layer), each having a 1024x1024 “backed” tileset. The first background layer would cover the bottom half of the game world and the other the top half. Will have to discuss with Nick wether it is preferable (or possible) to do the baking offline or during level loading.</span><br />
<br />
<span style="font-family: "Trebuchet MS", sans-serif;">I also improved the touch detection for the collector ship. Committed everything (including the test tilemaps and some changes I had to make to the code to cope with missing entity definitions) with commit #33.</span><br />
<br />
<b><span style="font-family: "Trebuchet MS", sans-serif;">28/09/2010</span></b><br />
<span style="font-family: "Trebuchet MS", sans-serif;">I implemented the baked tilemap idea. The game can now take a tilemap of any tilesize and convert it to a tilemap of 128x128 tilesize. This gives a huge speed boost as the actual tilesize becomes smaller. I managed increase the original 10fps for a 16x16 tileset to 60fps with the baked tiles! This allows Nick to create the tilemap using any tile size (in theory down to 2x2).</span><br />
<br />
<span style="font-family: "Trebuchet MS", sans-serif;">It takes some time to create the baked tilemap during level loading, hopefully it won’t be too bad in the end. Also I still haven’t implemented the baking of the parallax layer. </span><br />
<br />
<span style="font-family: "Trebuchet MS", sans-serif;">Tip: The CCNode camera position refers to the bottom-left corner of the screen. I lost a couple of hours trying to solve a silly bug caused by this...</span><br />
<br />
<b><span style="font-family: "Trebuchet MS", sans-serif;">30/09/2010</span></b><br />
<span style="font-family: "Trebuchet MS", sans-serif;">I tried baking the Parallax layer which we specify in the Tiled file as well and the framerate took a hit from 60 to 35 fps. Nothing a simple visibility culling can’t fix. To implement all that functionality (as well any number of tile map layers in the original Tiled file) I created a new tilemap class SDTileMap which is responsible of baking the tilemaps, updating (scrolling them), doing the visibility checking. The framerate raised again close to 60fps. </span><br />
<br />
<span style="font-family: "Trebuchet MS", sans-serif;">I additionally implemented the reverse grabber mechanic as discussed with George. Now the player taps the playship which in turn grabs any asteroids in the neighbourhood and “freezes”. Then, by dragging, the player can slingshot the asteroid to the direction she chooses. I also added better feedback to all that grabbin and draggin (not pretty but it works for now).</span><br />
<br />
<span style="font-family: "Trebuchet MS", sans-serif;">Committed everything with commit #35 and am awaiting George to try the new version of the grabber mechanic as well as report on the framerate on his 3Gs (although it can’t be less than the previous commit).</span><br />
<br />
<span style="font-family: Trebuchet MS;"><a href="http://videogameslab.wordpress.com/about/" target="_blank">Kostas Anagnostou</a></span>Rotten Fishhttp://www.blogger.com/profile/03540724081959367530noreply@blogger.com0tag:blogger.com,1999:blog-7287106489506131468.post-73179467625587666332010-11-10T09:41:00.003+02:002010-11-10T09:47:31.493+02:00Development diaries - August 2010 archive<b><span style="font-family: "Trebuchet MS", sans-serif;">02/08/2010</span></b> <br />
<span style="font-family: "Trebuchet MS", sans-serif;">Still working towards loading a complete level for Tiled into the game. It is almost there, it needs a bit of ironing... Additionally we need to determine what properties will be specified for each object in the Tiled editor, as well as create some predefined animations for the enemy ships. Looking good so far.</span><br />
<br />
<span style="font-family: "Trebuchet MS", sans-serif;">Still haven’t looked into texture specifications and other stuff for the artists. Hopefully I’ll do this tomorrow.</span><br />
<br />
<b><span style="font-family: "Trebuchet MS", sans-serif;">03/08/2010</span></b><br />
<span style="font-family: "Trebuchet MS", sans-serif;">The game is now data driven! Enemy (spawner) objects are positioned and customized with data loaded from the Tiled Editor map file. Committed changes and new files (Commit #13). It still needs some testing but the main functionality is there. Have to discuss with George what parameters the designer needs to set for each object.</span><br />
<br />
<span style="font-family: "Trebuchet MS", sans-serif;">I also added some texture specifications to the Cocos2D engine doc. We still need to determine the actual texture/sprite sizes for the game.</span><br />
<br />
<b><span style="font-family: "Trebuchet MS", sans-serif;">04/08/2010</span></b><br />
<span style="font-family: "Trebuchet MS", sans-serif;">Changed EnemySpawner and tilemap import to take number of Enemy Ships in each wave and not time-to-live. I feel that this is a more intuitive way to set the wave, must check with George at the next Skype Meeting.</span><br />
<br />
<span style="font-family: "Trebuchet MS", sans-serif;">I also did some game code profiling today, I’ve already caught a silly bug. According to Shark (profiling tool provided by MacOS) the tilemap is very expensive, since it takes about 50% of the game time (updating and rendering), if I am reading it correctly. To be more specific rendering costs ~30% of the total time. An the rest 20% is CPU tilemap update and draw call overheads. </span><br />
<br />
<span style="font-family: "Trebuchet MS", sans-serif;">Currently the tilemap is 1500, 32x32, sprites which use minimal OpenGL state change and a SpriteSheet for texturing purposes. So rendering should be quite cheap one would think. I have read in forums that it is beneficial to break the tilemap up into smaller tilemaps during loading and use them instead of a single large tilemap. Maybe I will have to look into this.</span><br />
<br />
<b><span style="font-family: "Trebuchet MS", sans-serif;">06/08/2010</span></b><br />
<span style="font-family: "Trebuchet MS", sans-serif;">As requested by our game designer I added a “heavy” level to the game. The tilemap had 90x20 tiles (32x32 pixels) each, which meant double-width screen. In order to accommodate this I had to add a camera to the layer in order to allow the player to “scan” the whole level. Apart from the background tilemap I added an additional (parallax) one with some planets. </span><br />
<br />
<span style="font-family: "Trebuchet MS", sans-serif;">It should move at different speed to the background one but it does not at the moment. Finally I added an Enemy Layer with 24 spawners generating enemies at various rates. Also, I made all enemies shoot the player (although not kill it) creating a bullet rain almost throughout the level. Particles explosions (fire+sparks) remained as they were. To top it up, I added background music to the game.</span><br />
<br />
<span style="font-family: "Trebuchet MS", sans-serif;">Although this set -up is not realistic, it nevertheless stressed cocos2d quite a lot. There are times, when the screen is full of enemy sprites, bullet rain and explosions that the frame rate can drop as low as 20 fps. A final note, the new camera stuff broke the UI sprites, although one can still navigate and shoot lasers using the same areas (bottom-right and left). I committed everything back to SVN with commit #16.</span><br />
<br />
<span style="font-family: "Trebuchet MS", sans-serif;">There are a bunch of optimisations I have in mind to speed things up in terms of raw rendering power. First I will batch enemyship rendering at least per enemyspawner, or more. Particle explosions can be sped up as well using fewer draw calls to render them. Finally the tilemap should be split up into smaller ones, to allow for visibility culling. This should send smaller drawlists to the GPU and hopefully make the expensive tilemap a bit faster.</span><br />
<br />
<b><span style="font-family: "Trebuchet MS", sans-serif;">10/08/2010</span></b><br />
<span style="font-family: "Trebuchet MS", sans-serif;">Converted enemy ships to use a SpriteSheet (one for each enemy type) instead of individual textures, in order to make them render all in one draw call (batch rendering). Benchmarked the 30 first seconds of the “heavy” level, it seems that total scenegraph update time goes down from 1940ms to 1340ms and total rendering time goes down from 7350ms to 5390ms. It does make a difference, although this level is not representative of a real level as it has way too many enemy ships. Every little helps though. Eventually I will do the same for the bullets as well. The tilemap will be trickier though.</span><br />
<br />
<span style="font-family: "Trebuchet MS", sans-serif;">I also reduced the camera viewport in order to prevent the player ship to be hidden from the UI controls. Now there is space at the bottom of the screen to add the virtual joystick, life bar, weapon selectors etc. Committed everything with Commit #18.</span><br />
<br />
<b><span style="font-family: "Trebuchet MS", sans-serif;">12/08/2010</span></b><br />
<span style="font-family: "Trebuchet MS", sans-serif;">I changed the layout of the Game Design guide in order to make it more playership centric and in the process I created even more work for George. :-). We need thorough descriptions of each playership type, weapons and upgrades since we should start implementing those feature soon.</span><br />
<br />
<span style="font-family: "Trebuchet MS", sans-serif;">I also reworked scene and layer layout of the game in preparation for the implementation of the menu system. As a test, I added a simple menu with a few options (only one works). I also added a NetworkManager class for George to play with. Committed with commit #20.</span><br />
<br />
<span style="font-family: "Trebuchet MS", sans-serif;">Still haven’t worked on the TiledMap protocol document, hopefully I will do this tomorrow.</span><br />
<br />
<b><span style="font-family: "Trebuchet MS", sans-serif;">16/08/2010</span></b><br />
<span style="font-family: "Trebuchet MS", sans-serif;">Started to gradually add new classes for the game objects described in the design doc. Soon enough I got lots of similar classes. Extension through inheritance for some many similar objects seems rubbish, I am contemplating using composition, or at least some data-driven way of creating the game objects.</span><br />
<br />
<span style="font-family: "Trebuchet MS", sans-serif;">I’ve also started working on the Tiled how-to guide, in order to specify a protocol of creating the game level and reading them into the game.</span><br />
<br />
<b><span style="font-family: "Trebuchet MS", sans-serif;">18/08/2010</span></b><br />
<span style="font-family: "Trebuchet MS", sans-serif;">Updated game with George’s submission to SVN and it builds fine. So as long as he doesn’t touch the project file, it should be ok to develop code collaboratively even if we have different SDK (most of the time at least).</span><br />
<br />
<span style="font-family: "Trebuchet MS", sans-serif;">I put the Tiled how to guide on hold until I decide how to design and implement the various the game entities in code. Inheritance becomes quite inflexible ofter some subclassing since the number of classes grows a lot and it is not easy to combine object behaviour. </span><br />
<br />
<span style="font-family: "Trebuchet MS", sans-serif;">A very interesting alternative is component systems, which uses composition instead of inheritance. While very tempting and flexible, I do not know how fast this approach is, especially on the iPhone... Yet there are some games that use this architecture (Dungeon Siege, Munchee’s Oddysey) as well as game engines such as Unity. Maybe there isn’t a significant impact on performance after all.</span><br />
<br />
<span style="font-family: "Trebuchet MS", sans-serif;">Finally, I added initial functionality for debris as well as changed the code file directory structure. Committed everything with commit #23. I hope SCM picked up the folder changes...</span><br />
<br />
<b><span style="font-family: "Trebuchet MS", sans-serif;">19/08/2010</span></b><br />
<span style="font-family: "Trebuchet MS", sans-serif;">Worked on an upgradable weapon system... weapons are now individual entities that can be attached to player ship or enemy ships. I also added a separate PlayerShip class to better manage the player’s ship. No commit yet, I will refine and commit tomorrow.</span><br />
<br />
<b><span style="font-family: "Trebuchet MS", sans-serif;">20/08/2010</span></b><br />
<span style="font-family: "Trebuchet MS", sans-serif;">Added upgradable weapons as well as a bonus system to the game. The player’ ship can now upgrade the weapons according to bonus items created in Tiled Editor. Added a bunch of classes and managers to perform said functionality (Commit #25).</span><br />
<br />
<b><span style="font-family: "Trebuchet MS", sans-serif;">23-24/08/2010</span></b><br />
<span style="font-family: "Trebuchet MS", sans-serif;">Worked towards making the game data driven. Now, enemyTypes and spawners are defined in Tiled. I also removed any extra classes for Enemies, all enemies will now be of type EnemyShip. As a test I added a new tilemap which defines a new enemyType named SlowFighter and it works fine. </span><br />
<br />
<span style="font-family: "Trebuchet MS", sans-serif;">In terms of triggering enemy spawners, I removed the need to define a trigger since it was not very intuitive to understand how large it should be. Instead, I now only use the spawner location to specify when the enemyspawner should start spawning. In order to keep the spawning process invisible to the player, I slightly move the spawner upwards along with the viewport in order to always remain just out of sight. It works fine this way and is much easier to place enemyspawners in the world</span><br />
<br />
<span style="font-family: "Trebuchet MS", sans-serif;">Also, speed in now measured in pixels per second. Finally I made the game use a “real” camera, in the sense that now the camera moves relative to the background which remains static. Committed everything with commit #27. Next I will work towards making weapons definition data-driven as well as enemyship animations which are now fixed.</span><br />
<br />
<b><span style="font-family: "Trebuchet MS", sans-serif;">25-27/08/2010</span></b><br />
<span style="font-family: "Trebuchet MS", sans-serif;">Data-driven bliss! Enemies, enemyspawners and weapons/bullets are now defined in Tiled and subsequently created in code. Weapons are now game entities that can be assigned to any space ship (enemy or player). The only thing that is not data-defined yet is enemy animations since we haven’t decided how they will be implemented.</span><br />
<br />
<span style="font-family: "Trebuchet MS", sans-serif;">Also camera scroll speed can now be set in Tiled as well, as a property (CameraSpeed) to the background layer. With the latest commit (#29) i have broken bullet collision and bonus items, will fix with next one.Finally I have added the interceptor ship created by Nick to the game, it is not that bad, although it feels a bit small!</span><br />
<br />
<span style="font-family: "Trebuchet MS", sans-serif;">I have second thoughts about the way I have implemented the various managers of the game entities... Fearing that creating new cocos2d nodes every time I need a new enemyship or bullet etc I have created pools of entities that I never delete but reuse each time I need a new object... This now seems unnecessarily complex... </span><br />
<br />
<span style="font-family: "Trebuchet MS", sans-serif;">According to cocos2d best practices, creating new nodes every frame is possibly expensive, but we hardly create new enemy ships or bullets every frame... maybe a simpler solution of keeping an array of “live” entities and releasing them when not need is preferable. The problem is that I don’t have the time to test this...</span><br />
<br />
<span style="font-family: "Trebuchet MS", sans-serif;">Anyhow, the need for programmers becomes less! Long live designers!</span><br />
<br />
<span style="font-family: Trebuchet MS;"><a href="http://videogameslab.wordpress.com/about/" target="_blank">Kostas Anagnostou</a></span>Rotten Fishhttp://www.blogger.com/profile/03540724081959367530noreply@blogger.com0tag:blogger.com,1999:blog-7287106489506131468.post-37737506917986416162010-11-08T17:42:00.009+02:002010-11-10T09:44:53.811+02:00Development diaries - July 2010 archive<span style="font-family: "Trebuchet MS", sans-serif;">As soon as the coding environment was set up and both programmers started working the necessary version control application found in the </span><a href="http://beanstalkapp.com/" target="_blank"><span style="font-family: "Trebuchet MS", sans-serif;">Beanstalk</span></a><span style="font-family: "Trebuchet MS", sans-serif;"> on-line SVN(+Git) hosting. That was the correct time to start writing development diaries (a habbit followed by the programmers only of-course) which we believe is good to share with you people. Hope you find them interesting and helpful.</span><br />
<br />
<span style="font-family: "Trebuchet MS", sans-serif;">Let's start with Kosta's development diary for </span><a href="http://spacedebristhegame.blogspot.com/" target="_blank"><span style="font-family: "Trebuchet MS", sans-serif;">Space Debris</span></a><span style="font-family: "Trebuchet MS", sans-serif;">. At the end, ask any question you want in the form of comments and we reply shortly.</span><br />
<br />
<b><span style="font-family: "Trebuchet MS", sans-serif;">27/07/2010</span></b><br />
<span style="font-family: "Trebuchet MS", sans-serif;">Today I realised that Xcode has sometimes trouble in finding and committing changes to project.pbxproj which leads to incorrect checkout for other team members. I committed this file by hand, hopefully the other end will manage to build the code now.</span><br />
<span style="font-family: Trebuchet MS;"></span><span style="font-family: "Trebuchet MS", sans-serif;"><br />
</span><span style="font-family: "Trebuchet MS", sans-serif;">I also experimented a bit with Cocos2D particles, I added a particle manager to allow for easy manipulation of explosions. I refrained from creating emitter objects during runtime, I created a pool of emitters which I can easily reuse to add a new explosion effect on screen. The only problem is that particle rendering is a bit taxing, it more than halves framerate for only 3-4 explosions on-screen. Must find the best balance (larger but fewer particles?). It is a bit hard to customize particle systems by hand, should we look for an editor?</span><br />
<br />
<span style="font-family: "Trebuchet MS", sans-serif;">Did not commit the particle manager yet. </span><br />
<br />
<b><span style="font-family: "Trebuchet MS", sans-serif;">28/07/2010</span></b><br />
<span style="font-family: "Trebuchet MS", sans-serif;">Still working on particle system and optimisation. It seems really hard to measure particle performance since it depends on many many factors. Looks like we will have to adjust the particle effects in the end in order to get acceptable performance, according to the context.</span><br />
<br />
<span style="font-family: "Trebuchet MS", sans-serif;">I ran an experiment of adding 20 explosions per second (10 spinning particles per explosion, png texture, size varying between 80-220, and some other tweaks ) and in Release Cocos2D can do about ~40 frames per second (in game environment, with enemies and background). Sounds capable enough. </span><br />
<br />
<span style="font-family: "Trebuchet MS", sans-serif;">I am also preallocating the emitters (50 of them) and adding them to the layer during init. I have read about another method of using one emitter for each explosion type which should be faster, when we run out of fps I will dig it up (requires a few changes to the cocos engine which I would like to avoid if possible).</span><br />
<br />
<span style="font-family: "Trebuchet MS", sans-serif;">I am now working on a system that will allow combining of particle systems in order to produce more complex particle effects for explosions.</span><br />
<br />
<b><span style="font-family: "Trebuchet MS", sans-serif;">29/07/2010</span></b><br />
<span style="font-family: "Trebuchet MS", sans-serif;">Completed work on particles, I added a ParticleEffect class that allows the combination of any type of ParticeSystems to create complex effects. As a test I created a complex explosion of fire and sparks, it works fine. There are some fps issues when many effects are rendered on screen simultaneously, will have to look upon them in the near future (see yesterday diary entry). I also added a ParticleManager class to make managing of particle effects easier.</span><br />
<br />
<span style="font-family: "Trebuchet MS", sans-serif;">I also did a quick hack to try pointer-finger control instead of virtual joysticks. For the moment the player ship autofires anytime the player touches screen. Seems that touch sampling on iPhone is much lower than 60Hz which produces a jerky motion of the player’s ship. I had to add interpolation between old and new positions to make ship motion a bit smoother. To switch between the old and new control system one must comment out/in the #define FINGER_CONTROL on top of file PlayerGameScene.</span><br />
<br />
<span style="font-family: "Trebuchet MS", sans-serif;">Committed the new features back into svn (commit No 11).Next I will create a complete level (with enemies at predefined positions) with TiledMap and attempt to load it in game.</span><br />
<br />
<b><span style="font-family: "Trebuchet MS", sans-serif;">30/07/2010</span></b><br />
<span style="font-family: "Trebuchet MS", sans-serif;">Today I worked towards loading a complete level from Tiled Editor to the game. First I created an EnemyManager class to manage the different EnemySpawners that will be placed throughout the level. Next I created a level in Tiled Editor, adding and customizing various EnemySpawner objects using the two enemy types currently supported (Cargo and Fighter). Using named parameters one can add any information to the spawner object in Tiled. Its copy and past functionality is useful for fast object creation - copy and tweak it. Also it seems that objects placed on the map can have dimensions apart from position. </span><br />
<br />
<span style="font-family: "Trebuchet MS", sans-serif;">This can be useful when creating triggers. Looking good, the only thing that troubles me is how to preallocate and add the enemy objects to the game. There will eventually be quite a few EnemySpawners on the map, each one having 10-20 enemy objects (maybe more). This can amount to more than 300 sprites. Which is faster, preallocating them and adding them to the Cocos2D scene during level initialisation or preallocating them and adding them to the scene as needed? On the other hand, how many sprites will be on screen at the same time, 20, 30, 40 at most? Maybe I could create a pool of sprites and reuse them for different enemyspawners. My next task will be to perform tests to find out which solution is more efficient and flexible.</span><br />
<br />
<span style="font-family: "Trebuchet MS", sans-serif;">George, since I know you’re reading this, how did you find the pointer-finger player ship control?</span><br />
<br />
<span style="font-family: Trebuchet MS;"><a href="http://videogameslab.wordpress.com/about/" target="_blank">Kostas Anagnostou</a></span>Rotten Fishhttp://www.blogger.com/profile/03540724081959367530noreply@blogger.com0tag:blogger.com,1999:blog-7287106489506131468.post-55361956826225843292010-11-05T21:16:00.042+02:002010-11-10T09:44:09.799+02:00What the game is about!<span class="Apple-style-span" style="font-family: "Trebuchet MS", sans-serif; font-size: small;">Since we have said a lot about how we build the game let's take a break and discuss what is the game about among with some screenshots of the beta version. Have fun!</span><br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHQU2XWyzjLGJschIymxXlSsqW027lLD7gR5HYpnFYKHgA9eGm9-nphdtP_MgvTjZn3cRIoVg7yuEA1RbCaWD8dm0oT6Tto0rFFwGjtG0YzgiPNQfdQByWqoSKc6z9ir9luFjM6BK0ZFgk/s1600/title_screen2.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHQU2XWyzjLGJschIymxXlSsqW027lLD7gR5HYpnFYKHgA9eGm9-nphdtP_MgvTjZn3cRIoVg7yuEA1RbCaWD8dm0oT6Tto0rFFwGjtG0YzgiPNQfdQByWqoSKc6z9ir9luFjM6BK0ZFgk/s320/title_screen2.png" width="213" /></a></div><span class="Apple-style-span" style="font-family: "Trebuchet MS", sans-serif;"><b>Game Story</b></span><br />
<span class="Apple-style-span" style="font-family: "Trebuchet MS", sans-serif;"><span class="Apple-style-span" style="font-size: small;">It’s 2052AD and the Global financial crisis remains unresolved. Poorer countries made futile attempts to revive their economy by selling islands and other parts of the land to richer countries. Richer countries had nowhere to turn to for help. The situation was critical, with a Third World War looming.</span></span><br />
<br />
<span class="Apple-style-span" style="font-family: "Trebuchet MS", sans-serif;"><span class="Apple-style-span" style="font-size: small;">That’s why when an Alien Federal Bank offered to buy Earth for a massive amount of gold and solve everyone’s economic problem for ever, Humanity jumped at the opportunity without paying any real attention to the fine print of the deal. And the deal was that the Aliens can use the Earth for garbage disposal.</span></span><br />
<br />
<span class="Apple-style-span" style="font-family: "Trebuchet MS", sans-serif;"><span class="Apple-style-span" style="font-size: small;">50 years later Earth is brimming with alien garbage. Garbage is everywhere, on land, sea, air and even space making life on Earth impossible. People tried several times to escape this hell but the thick layer of space debris that orbit the planet makes any attempt to escape futile.</span></span><br />
<br />
<span class="Apple-style-span" style="font-family: "Trebuchet MS", sans-serif;"><span class="Apple-style-span" style="font-size: small;">Time is running out for Humanity and people have to make one last effort to resist the Alien invasion by forming small teams to penetrate the thick layer of space debris and fight the Aliens off our Solar System. You are the leader of such team.</span></span><br />
<br />
<span class="Apple-style-span" style="font-family: "Trebuchet MS", sans-serif;"><span class="Apple-style-span" style="font-size: small;">Desperate times call for unlikely heroes. Cleaning garbage has never been so honorable!</span></span><br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhiJHbbcQVzM0a1NNQtKg_rlh2h528q7XXHX4zkLcpBxeZ_AD1Bfkk0pocV6c_ciTdMOKUwzNH67_Lm4GstEFozpN68joUvEpEjAqY9bhlHCpaIVhdic3cp5plyjF10nH3FVac4P6PJiNvY/s1600/test_screen3.png" imageanchor="1" style="clear: right; cssfloat: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="320" px="true" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhiJHbbcQVzM0a1NNQtKg_rlh2h528q7XXHX4zkLcpBxeZ_AD1Bfkk0pocV6c_ciTdMOKUwzNH67_Lm4GstEFozpN68joUvEpEjAqY9bhlHCpaIVhdic3cp5plyjF10nH3FVac4P6PJiNvY/s320/test_screen3.png" width="213" /></a></div><span class="Apple-style-span" style="font-family: "Trebuchet MS", sans-serif;"><b>The Game</b></span><br />
<span class="Apple-style-span" style="font-family: "Trebuchet MS", sans-serif;"><span class="Apple-style-span" style="font-size: small;">Space Debris will look and feel like a retro arcade game. A “scrolling shooter” has some traditional elements that characterise the genre like top-down viewed vertical scrolling action, specific levels and “Bosses” that are enormous in size and difficult to win.</span></span><br />
<br />
<span class="Apple-style-span" style="font-family: "Trebuchet MS", sans-serif;"><span class="Apple-style-span" style="font-size: small;">Space Debris is both a game with classic favor and a wholly new and addictive game in its own right. The concept is simple: playing alone or with a partner survive and clean the mess (space debris). </span></span><br />
<br />
<span class="Apple-style-span" style="font-family: "Trebuchet MS", sans-serif;"><span class="Apple-style-span" style="font-size: small;">The pace is fast and furious and the tone anything but serious. The focus here is on a fast-paced action/arcade game that is all about immediate and engrossing gameplay for mass-market and hardcore gamers alike. </span></span><br />
<br />
<span class="Apple-style-span" style="font-family: "Trebuchet MS", sans-serif;"><span class="Apple-style-span" style="font-size: small;">The full game will offer 3 Stages with 5 Levels each which combined with difficulty levels available will lead to a total of more than 3h gameplay if the game-over message does not appear in between. 8 types of weapons, 4 levels of weapon upgrades, 2 destructive powers, 15 bosses to fight with in each difficulty option and much more are in this game.</span></span><br />
<br />
<span class="Apple-style-span" style="font-family: "Trebuchet MS", sans-serif;"><span class="Apple-style-span" style="font-size: small;">Let's have a brief overview:</span></span><br />
<br />
<span class="Apple-style-span" style="font-family: "Trebuchet MS", sans-serif;"><b>Game Modes</b></span><br />
<br />
<span class="Apple-style-span" style="font-family: "Trebuchet MS", sans-serif;"><span class="Apple-style-span" style="font-size: small;"><b><i>Challenge</i></b></span></span><br />
<span class="Apple-style-span" style="font-family: "Trebuchet MS", sans-serif;"><span class="Apple-style-span" style="font-size: small;">In this selection of Challenge mode you get the collector vessel and using the debris manipulation mechanism provided you have to survive the alien attacks. Having to play with collector vessel this mode is considered more difficult than the other available modes since you are not able to use the combined weapons but only the suitable for that ship.</span></span><br />
<br />
<span class="Apple-style-span" style="font-family: "Trebuchet MS", sans-serif;"><span class="Apple-style-span" style="font-size: small;"><b><i>Co-operative</i></b></span></span><br />
<span class="Apple-style-span" style="font-family: "Trebuchet MS", sans-serif;"><span class="Apple-style-span" style="font-size: small;">With each player having independent view of each level map, one gets the interceptor and the other the collector ship to play with. Each player can use each vessel’s unique weaponry to send alien hordes back home. Driven by two minds instead of one players benefit from both fighter vessel firepower and debris manipulation technique to achieve maximum score results.</span></span><br />
<span class="Apple-style-span" style="font-family: "Trebuchet MS", sans-serif;"><span class="Apple-style-span" style="font-size: small;"><br />
</span></span><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiuWoDnTxfrWx53LHD32H6KUlrCKBjRC13MsHDqQ2SOjOP9yfIhvuZJi2pssevFIOIqEBv_HVOtgL6W68VUZ9LbGdEcxtpYNAv2sGnSsUHsglQLXARjnd0QwThvCBllSaNtCbRP3G-1XV2I/s1600/bg1_test3.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiuWoDnTxfrWx53LHD32H6KUlrCKBjRC13MsHDqQ2SOjOP9yfIhvuZJi2pssevFIOIqEBv_HVOtgL6W68VUZ9LbGdEcxtpYNAv2sGnSsUHsglQLXARjnd0QwThvCBllSaNtCbRP3G-1XV2I/s320/bg1_test3.png" width="213" /></a></div><span class="Apple-style-span" style="font-family: "Trebuchet MS", sans-serif;"><span class="Apple-style-span" style="font-size: small;"><b><i>Classic</i></b></span></span><br />
<span class="Apple-style-span" style="font-family: "Trebuchet MS", sans-serif;"><span class="Apple-style-span" style="font-size: small;">It is game’s single player mode using the combined interceptor fighter and collector vessel to one ship. Player can choose from all available weapons from both craft types to fight back the enemies or clear the path from space debris or do both things at the same time. Although, player is free to explore all the level areas it is impossible to get the maximum score with this play mode. </span></span><br />
<br />
<span class="Apple-style-span" style="font-family: "Trebuchet MS", sans-serif;"><span class="Apple-style-span" style="font-size: small;"><b><i>Difficulty</i></b></span></span><br />
<span class="Apple-style-span" style="font-family: "Trebuchet MS", sans-serif;"><span class="Apple-style-span" style="font-size: small;">Each mode can be altered more by a number of factors like difficulty settings. The first option limits the available weapons to the bare minimum, the second one removes also any power-up from levels and the third increases the speed additionally for Hard, Alien and Impossible settings respectively.</span></span><br />
<br />
<span class="Apple-style-span" style="font-family: "Trebuchet MS", sans-serif;"><b>Ships</b></span><br />
<span class="Apple-style-span" style="font-family: "Trebuchet MS", sans-serif;"><span class="Apple-style-span" style="font-size: small;">The ships in Space Debris are near future crafts with advanced alloys and integrated ethereal/organic elements. The different types of ships also allow the implementation of different gameplay for each type of ship which uses different weapons leading to extra fun for players. </span></span><br />
<br />
<span class="Apple-style-span" style="font-family: "Trebuchet MS", sans-serif;"><b>Weapons</b></span><br />
<span class="Apple-style-span" style="font-family: "Trebuchet MS", sans-serif;"><span class="Apple-style-span" style="font-size: small;">A variety of weapons are available to chose from but the most interesting are the Collector type ones since Grabber, Freezer and Blaster are able to manipulate asteroids and other debris to send aliens back home.</span></span><br />
<br />
<span class="Apple-style-span" style="font-family: "Trebuchet MS", sans-serif;"><span class="Apple-style-span" style="font-size: small;"><a href="http://www.gc-soft.gr/">Georgios Chiotis</a></span></span>Rotten Fishhttp://www.blogger.com/profile/03540724081959367530noreply@blogger.com0tag:blogger.com,1999:blog-7287106489506131468.post-8227431773711808142010-11-03T15:12:00.003+02:002010-11-10T09:45:34.459+02:00Stage 1 out of 3<span class="Apple-style-span" style="font-family: "Trebuchet MS", sans-serif;">Since the first days of September two professional artists, </span><span class="Apple-style-span" style="font-family: "Trebuchet MS", sans-serif;"><a href="http://www.pixelprospector.com/indev/2010/04/darkverse/" target="_blank">Nikolaos Larin</a> (<i>Graphics/SFX</i>) and Vicky Fysika (Music) joined the team along with three more expert advisors namely Michael Fragos (<i>Game Design</i>), Dimitris Fragkos (<i>Graphics</i>) and <a href="http://www.01fantasy.com/">Christos Arapis</a> <em>(Promotion and Video production)</em>. The following months since the last post were somehow bussy to catch-up the deadlines, so, this post took a little more to be written. </span><br />
<br />
<span class="Apple-style-span" style="font-family: "Trebuchet MS", sans-serif;">Regarding the game, it is near the beta version release nowadays and ready to be given to beta testers ready to play it in various Apple's devices from iPhone(1) to iPhone 4 and iPod touch. The iPad version of the game will follow shortly the other devices submission to Apple's AppStore.</span><br />
<br />
<span class="Apple-style-span" style="font-family: "Trebuchet MS", sans-serif;">Among other time consuming activities, the team participated in the 3rd Hellenic Game Developers Conference (HGDC), 9-10 October during the Athens Digital Week event in Athens, Greece. The majority of the team members not only were among the organisation commitee but gave individual speeched during the two days of the HGDC. Also, Rotten Fish Games collectively made a <a href="https://docs.google.com/present/view?id=dc6hvfc7_64f438zgk4">presentation</a> of the indie-business model that follows for building a game from concept to market the second day of the Conference.</span><br />
<br />
<span class="Apple-style-span" style="font-family: "Trebuchet MS", sans-serif;">So, being in a productive rush, the last two months were spent creating the necessary artwork like ships, bad-asses, mini-bosses, bosses, weapons, special effects, backgrounds, logos, UI, sound effects, music scores and whatever else is needed for this game. The design took a decisive turn early in September but the overall concept remained intact: the game still introduces two kind of ships but instead of the all-time classic shoot'em up mode with lasers, beams and plasma charges the main mode introduces the asteroid-management mechanics gameplay in the single player option.</span><br />
<br />
<span style="font-family: Trebuchet MS;">Nevertheless, the late introduction of the artists in the team, caused some code implementation changes to support unexpected artwork challenges but the work pipeline suffered the least. The ideas introduced especially for the graphics lead to overall improvements of the game but especially to the frame rate in older devices that suffered low fps some times. This result supports greatly the necessity to work in a team of professionals that exchange common field knowledge. However, we went our tools usage a step further introducing <a href="http://www.dropbox.com/">Dropbox</a> in our collection.</span><br />
<br />
<span style="font-family: Trebuchet MS;">More about the game will be reveiled during the beta phase starting in a few days and the developers' diaries will follow shortly to offer an idea of the challenges met during the development of the game. In between, the Rotten Fish Games <a href="https://docs.google.com/present/view?id=dc6hvfc7_64f438zgk4">presentation</a> for the 3rd HGDC will be explained as well in more details in the team's official site.</span><br />
<br />
<span style="font-family: Trebuchet MS;"><a href="http://www.gc-soft.gr/">Georgios Chiotis</a></span>Rotten Fishhttp://www.blogger.com/profile/03540724081959367530noreply@blogger.com0tag:blogger.com,1999:blog-7287106489506131468.post-67073512429195084772010-08-14T18:08:00.005+03:002010-11-10T09:56:51.038+02:00Space Debris, the beginning...<span class="Apple-style-span" style="font-family: "Trebuchet MS", sans-serif;">During an e-mail discussion in late May with </span><a href="http://videogameslab.wordpress.com/about/"><span class="Apple-style-span" style="font-family: "Trebuchet MS", sans-serif;">Kostas Anagnostou</span></a><span class="Apple-style-span" style="font-family: "Trebuchet MS", sans-serif;">, who is an active video-games blogger and book-writer among others, he came up with an idea: </span><i><span class="Apple-style-span" style="font-family: "Trebuchet MS", sans-serif;">What about developing a game together</span></i><span class="Apple-style-span" style="font-family: "Trebuchet MS", sans-serif;">. That's all it took to start working together for this iPhone game. Kostas has a deep knowledge but </span><a href="http://www.apple.com/"><span class="Apple-style-span" style="font-family: "Trebuchet MS", sans-serif;">Apple's iPhone(tm)</span></a><span class="Apple-style-span" style="font-family: "Trebuchet MS", sans-serif;"> platform was something new to him and I had almost a year of sporadic development in that platform but nothing published yet. So, it was just the right opportunity something nice to be made and for me something to finish at last.</span><br />
<div><span class="Apple-style-span" style="font-family: "Trebuchet MS", sans-serif;"><br />
</span></div><div><span class="Apple-style-span" style="font-family: "Trebuchet MS", sans-serif;">We started from the basics studying a series of game ideas we both had and soon we decided where we wanted to go as a concept. Then we organised the matter further in regards to documentation (</span><a href="http://docs.google.com/"><span class="Apple-style-span" style="font-family: "Trebuchet MS", sans-serif;">GoogleDocs</span></a><span class="Apple-style-span" style="font-family: "Trebuchet MS", sans-serif;">), tasks management (</span><a href="http://www.pivotaltracker.com/"><span class="Apple-style-span" style="font-family: "Trebuchet MS", sans-serif;">Pivotal Tracker</span></a><span class="Apple-style-span" style="font-family: "Trebuchet MS", sans-serif;">), code synchronisation (</span><a href="http://beanstalkapp.com/"><span class="Apple-style-span" style="font-family: "Trebuchet MS", sans-serif;">Beanstalk</span></a><span class="Apple-style-span" style="font-family: "Trebuchet MS", sans-serif;">), meeting arrangements (</span><a href="http://www.timebridge.com/"><span class="Apple-style-span" style="font-family: "Trebuchet MS", sans-serif;">TimeBridge</span></a><span class="Apple-style-span" style="font-family: "Trebuchet MS", sans-serif;">) and communication (</span><a href="http://www.skype.com/"><span class="Apple-style-span" style="font-family: "Trebuchet MS", sans-serif;">Skype</span></a><span class="Apple-style-span" style="font-family: "Trebuchet MS", sans-serif;"> & IMs). In 2010, with all this technology in our disposal and all those great applications (and more others we simply do not know that exist - sorry guys!) the distance is not a problem, though, Kostas and I live in different places some hundred Km away each other. </span></div><div><span class="Apple-style-span" style="font-family: "Trebuchet MS", sans-serif;"><br />
</span></div><div><span class="Apple-style-span" style="font-family: "Trebuchet MS", sans-serif;">The only drawback with the selected platform was the initial investment in new hardware like MacOS PCs and a couple of iPhone devices. Programming SDK comes free to download and it's pretty sure we could avoid considerable expenses using a variety of graphics & sound software being available out there like GIMP, GraphicsGale, Audacity to name a few. It was something the other team members would have to worry about and we went further with the heart of our development a month later.</span></div><div><span class="Apple-style-span" style="font-family: "Trebuchet MS", sans-serif;"><br />
</span></div><div><span class="Apple-style-span" style="font-family: "Trebuchet MS", sans-serif;">After a thoughtful consideration </span><a href="http://www.cocos2d-iphone.org/"><span class="Apple-style-span" style="font-family: "Trebuchet MS", sans-serif;">cocos2d</span></a><span class="Apple-style-span" style="font-family: "Trebuchet MS", sans-serif;"> selected as the game's engine and </span><a href="http://www.mapeditor.org/"><span class="Apple-style-span" style="font-family: "Trebuchet MS", sans-serif;">Tiled Map editor</span></a><span class="Apple-style-span" style="font-family: "Trebuchet MS", sans-serif;"> seemed ideal for the level design and all that. Surprising enough, both the engine and the editor matched like a charm. Nevertheless, It took another whole month to finish the design, have some technical specifications to go with and conclude the idea and the gameplay. In the mean time, we get experienced with the platform and made some more phone calls and contact friends. It looks like a small, easy to develop game but when it is appropriate to publish some more info you are going to find out a whole new experience of shoot-em-up kind.</span></div><div><span class="Apple-style-span" style="font-family: "Trebuchet MS", sans-serif;"><br />
</span></div><div><span class="Apple-style-span" style="font-family: "Trebuchet MS", sans-serif;">Allow me a short paragraph before describe the last two weeks of this project. People of my age have in mind game-development stars and glorious moments of great developers that were able to write excellent code and at the same time produce marvelous graphics for their games. Nowadays, even in small & limited devices like mobiles and smartphones few people are capable of producing whatever it takes for a great game. That's only what I believe and I cannot name any of them because this era ended a decade or so ago. One-man-show is not sufficient anymore for game development, so, a team formation is the best choice. That's what we did! Not a huge team for multimillion AAA game title but small enough to be flexible and deliverables oriented. Professionalism is all about after all.</span></div><div><span class="Apple-style-span" style="font-family: "Trebuchet MS", sans-serif;"><br />
</span></div><div><span class="Apple-style-span" style="font-family: "Trebuchet MS", sans-serif;">But, Kostas and I are basically coders and no matter how confident we are for our graphics and sound skills we decided to go partner with professionals ;-) Two months were more than enough to set the whole thing working and now, two weeks later, the team is full and we go for the first real game graphics and what else is missing to have something playable to showcase. There is a plan to have a version in the first couple weeks of September. Be patient since only few days are left to release this game's alpha ;-)</span></div><div><span class="Apple-style-span" style="font-family: "Trebuchet MS", sans-serif;"><br />
</span></div><div><span class="Apple-style-span" style="font-family: "Trebuchet MS", sans-serif;">Stay tuned for the game's progress and support us in Facebook and Twitter (or wherever you want)!</span></div><div><span class="Apple-style-span" style="font-family: "Trebuchet MS", sans-serif;"><br />
</span></div><div><a href="http://www.gc-soft.gr/"><span class="Apple-style-span" style="font-family: "Trebuchet MS", sans-serif;">Georgios Chiotis</span></a></div>Rotten Fishhttp://www.blogger.com/profile/03540724081959367530noreply@blogger.com0