Project „l1neum“ - PostMortem uDevGames 2004

This is a document, that was created for the game-contest "uDevGames 2004" (www.udevgames.com). It describes the process of creating a game in the game-contest "uDevGames 2004"


The game you can find at: http://www.la1n.ch/l1neum/
The game source can be found also at: http://www.la1n.ch/l1neum/

Version: 0.5b of the document
Contact: info@la1n.ch

Intro

First there was the idea to make a game like sharkshark! (intellivsion). The plan was to develop an office game, a game which works with rendezvous.

Time passed by, but the framework had a problem with connecting and sending objects. After two months I said: “Ok let’s make a simple game – not really innovative but codable in 1 Month”. We decided to make a port of a classic game which was portedrarely before. I don't think thery were any native remakes of this game. There was as reconception of the game in “Barrack”. Ambrosia generates a concept for mouse-control and it worked. http://www.ambrosiasw.com/games/barrack/) ported game to MacOS (X) of the 80ies. Qix and Volfied is one of our favourites in classic arcade games. The game concepts allows also to make new graphical experiments.

Team: la1n

The team is – in this case - two persons, the functions are one for design & code and one for effects & music. Both people live in Switzerland, in the same area, the communcation about the game was: ichat, mail and of course a workgroup platform (www.textmachina.unizh.ch [you can mark source-code and comment it ]).

t00cg: René Bauer

Function: code & design

René Bauer is a application designer in Zurich (Switzerland) and developed in the past also games for MacOS 7.x+, like “grotic”, “bonYx” or “blown eye”. Then followed a lot of work in java-gamedevelopment. Besides he works on a autopoietic knowledge and collaborative tool called nic-las (www.nic-las.com) and he co-developed also the groupware/collaborative platform: www.textmachina.unizh.ch

Imagine: Fehr Markus

Function: music & soundeffects

Age unknown. He makes musics since there are midi-keyboards and trackers on the Amiga. Or he made also music on the c64? I had to ichat it.

History of the project „l1neum“

I knew more or less the problems of programming a game like Volfied, because I once programmed a prototyp as an applet. This time the programming langugage had to be objective-c (OpenGL and java : - ( ).  

Design decisions

The decisions was: in one month programming a game, so we had to decide fast: Objectif-C and OpenGL. The tools used: XCode and MP3 and .wav as audio-formats. 

At work & development-history

We played the old versions of the game on mame or on the mac and newer versions on windows. We decided to work with the concepts of “Volfied”, which brought really nice ‘bonus’ features to the game-concept of “qix”.

First we programmed a small game engine. The engine just displayed the content of our two-dimensional-array (int), which is the playfield. The objects like enemy were represented as objects (class) in an NSMutableArray. Then we wrote a visualising routine which generates 3D walls for the plain array. The problem here was the complexity of the shape of the playfield (the cutted out edges). This routine was very slow, so we had to fix it several times (look at source code). The code for filling the actual gamefield was several times rewritten.

 In this phase we have experimented a lot with graphics and how to display the whole 3D scene. We decided to extrude the older playfield-walls into a 3D-sculpture.

 After this we inserted the title-music as game-background sound. Then we inherit the enemy class and generated the class for the bonus. We made bonus 3D-boxes out of the plain.

 We dedicated a lot of time to finding a name for our game. First, we would name it: “linepattern”, “patteroid”, “skyline” and at the end we named it “l1neum” because we liked this name best and there were no other applications with this name.

Then we generated levels with different bonus and other enemies and things like “dying” and “game over”.

Then we included the audio-effects. We saw that our first routine has a strange leak of memory and decided to integrate an own pool for effects (NSMutableArray). Then we made the whole intro and game menu around this. We made the different settings. This took a lot of time. 

After this we made bug-fixes and deep testings. This was version 0.75. We generated our website: http://www.la1n.ch and the whole description about the game.

Once the contest started, we found out, however, that you have to choose a name that begins with an A or something like Z. Otherwise your game appears in the middle of the entries' list and will not be seen, because a lot of people just look at the first and at the last entries. Maybe, a random list of the game entries woul be a good idea for the next contest. If there is a next time, we decided to make a game which is more popular, e.g. a 3D shooter, or a completely differnet game such as a “think”-game. We asked us, if the game concept as Volfied and Qix, could be as successful as as others. 


We had to decide for a opensource license and took the CCL (common creative license) with some restrictions.

The public voting started and we were lazy for a week. 

We began to find other channels for distribution like www.versiontracker.com, www.macgamefiles.com or www.macupdate.ch. There, we looked for votings and remarks, to see what people are missing. They wanted mostly a fullscreen mode. I did not provide fullscreen mode till now, because I personally like to play in small windows nowadays, so I am able to follow what is going on in iChat etc while gaming.

During this time, we were also improving the levels, making them easier or harder, as needed. We implemented also “animations” for the enemies.

We developed an animation for the floor, but deactivated it, because the style did not match the other graphics. 

We made the whole game smaller (converted all textures from .bmp to .jpg) So it is easier to download. This is an important factor in downloading over the net and the whole distribution works over the net. 

After this we created a new possibility to resize window in settings and we programmed the highscores. We had problems with storing the highscores into the prefs of the users. This was version 1.0 – our last update till now. 

We followed the comments of the users on the internt. Perhaps it would be good, to have such a controlling and feedback-mechanism in the contest. 

About the code

In the game-code there is a “lot” of comment. The game-development concept is descripted in the file “about the source code”. I will therefore make a few comment here.

You can get the source code here: http://www.la1n.ch/l1neum/source.zip

The code is not completely object orientated. There war not enough time to make it 100% oop. We had to programm very fast, so we decided to put all from the controller (l1neumController) into the view (l1neumView). The l1neumController-Class has two timers, which calls the two methods of the view: drawRect and doGameCircle. The keystrokes will also be transported to the l1neumview.

[drawRect] makes the same thing as always, it draws the scene.

[doGameCircle] is the heart of the game. It’s the endless routine, that controls the menu and while playing: it controls the enemies, makes the movements, makes “sprite collisions”, makes “sprite-background” collisions. The objects (like enemies, bonus and vessel) are objects in a NSMutableArray. The walls and the floor will be generated in this method and will be displayed in the [drawRect]-method. 

The biggest problem of programming “qix” or “volfied” or “l1neum” is the representation of the playfield and the routine to handle the complex structure of the cutted out terrain. We solved this problem with a graphical routine.  The fill-algorithm was the problem, because it had to be really fast, so that you don’t have an interruption while playing. So we had to program this algorithm several times.

What went good

-       We made it in one month.

-       Communication between the two developers was easy and constructive

-       The code is not as bad as it could be in such a express-development.

-       The sound-results are very good (my personal opinion)

-       The graphical-results are more or less ok

-       The games makes fun

-       The 3D sculpture is a nice add-on. 

-      The comments of the users were helpful.

What went wrong

 - The Music was made on a Windows platform, which did not allow us to generate the sound directly – so the musician would like to have a better solution for the next time.

- The enemies have no own behavior at the moment. This behavior is an important part of the gameconcept (in Volfied)

- Fullscreen is not yet implemented

- Time management. Start earlier next time, so our social environment does not need to suffer as much as this time.

Future problems

The problems for the future could be that it is difficult to make out of the objectif-c project a c++ windows version. But do we need this? For the musician it would be better to play and develop on the same platform. The opengl commands are the same but the rest must be ported – perhaps one day there will be a java version, so we could develop macos with java and port it easily. 

Conclusion/plans for the future

 The first version is ready now (Version 1.o). It’s a full version of the game. We don’t see bugs (or let’s say big bugs) at the moment. Bugs will probably be reported soon, because there are always bugs.

 We will make more levels and we will import different behaviours for different enemy-types. We consider designing a 3D version of Qix (cutting out of a 3D cube). Would this be nice? – The future will show it.

What we learned from the uDevGames-Contest

 We learned, that we had to split the big project into a lot of mini-projects. We defined a minimal game or milestone, we wanted to reach the moment, when the public polls starts.

 It’s important to have good advertising, to find good texts, good screenshots and good channels to distribute it. And then you sit in front of your computer and wait what happens – what are the reactions, who gives you a 1 or 5 and why. The distribution-channels are also important, because there you have concrete feedback from the end-users.

The contest pushed the development and we had to make till the deadline.

So that’s it.

t00cg (la1n)