The story of arcticum
A good week-end that was. I am pretty satisfied with what I came up with.
Here comes a (rather long) reflexion about the process of creation.
![]() Ice Cold Killer Trophy Awarded by noonat on April 24, 2009 | ![]() The "Pollution is a good thing" club badge Awarded by nilsf on April 22, 2009 | ![]() The Rocketeer's Golden Jetpack Award Awarded by Codexus on August 12, 2008 |
![]() Best Character Name Based On Owls Awarded by GBGames on August 11, 2008 |
A good week-end that was. I am pretty satisfied with what I came up with.
Here comes a (rather long) reflexion about the process of creation.
22:43
Continuing sprites.
01:25
All boni have sprites. The ice and the sea are colored too. The bullets now have trails of smoke.
02:15
There is an island and a bunker on it. How come that took me 50 minutes??
Here stops the log because I clearly had something else to do than write a log… But this is what happened:
I drew the sprites for the collectible boni, which took a while. Then I made the seal sprite. I realised it was so small that I could cheat and rotate/flip it to make 3 other directions. Then I made the sprite used for the last two direction, and the code to take care of the drawing depending on the angle.
At that point I was supposed to do the same for the bears, but I realised it would take me took long, so I delayed indefinitely. Instead I made the opening screen.
Then some sounds, really fast with sfxr. I decided not to lose too much time with that. Actually I *was* fast. In maybe 20 minutes it was done.
Came the terrifying moment of parameters tuning and play testing. I must confess I didn’t do too much of this, so there is a chance the game is too easy, or too hard.
Then I had one hour left, and thought it would be awesome to make music while checking nervously the clock and all the people on IRC saying that they were done already. It went pretty well too.
Now five minutes before deadline, it was time for packaging. Which, with Löve, is supposed to be as simple as zipping stuff up and posting it proudly on the dev blog. Heh, something *had* to go wrong. The “compiled” game didn’t run. Cause: I used Lua modules to divide the game in several files. Worked OK as long as the running directory actually contains these files. Once inside the .love file, you can access them only with Löve’s special require function. So OK, I changed that. But then something else broke. The game half worked. Some stuff was there, some was not. The biggest weirdest Heisenbug I had ever produced. After half an hour of not finding the problem I still posted the game, instructing to run it unzipped (which forces people to install Löve, which I knew for sure would discourage 90% of them).
When I still didn’t find anything, I went to bed, at about 8:30.
A good day’s sleep later, I tried again to beat the beast. And it took a while. Finally, the problem was as follows (non Lua people, you may skip). At first, I used modules to separate my app states (menu and game), so every variable created inside of them was stored in the corresponding table. When I had to switch to non module separate files, almost nothing changed: instead of being table members, all new variables were simply global. Since I did happen to have no variable collision, it didn’t change anything. Except that one variable did collide, “debug”. debug is a standard Lua table, and overloading it with my debug boolean switch did screw everything up. I suppose that Löve uses these debug functions.
So all this time I just had to rename debug to debugmode and tadaa.
Packaging followed.
Now I have to play the 122 other games.
If you know what Löve is, and have it installed already, just grab arcticum.love and run it.
If you don’t know what Löve is*, then take the all included ready to roll super dooper binaries for you favorite OS:
Each package contains instructions on how to run the game, and the following Readme. Enjoy!
EDIT:
17:46
Ice drawing is almost complete. The ear-clipping algo had mega bugs. Now optimisation (dropped to 5 fps…)
18:11
Ice drawing is *really* done. Or at least I hope, because it’s starting to piss me off.
19:56
Bullets have sprite and particules. So cool.
22:11
Eating. Have starting producing sprites and arranging the interface of the game. It is taking too long. TOO. LONG.

Mmm, pizza ham-pineapple, an apple, and some of the best chocolate in the world. I am now ready for the last 7 hours. With Queen as musical background I can win this compo. Definitely.
02:44
Have a menu, and more importantly a working “game state” thingy to switch cleanly from menu to game and back, and possibly a help screen or prefs. Not always obvious since Löve don’t let you control the game loop (you overload functions like draw(), update(), mousepressed(), etc, and they are called by the engine). Also, it’s late and I should sleep a bit. Game mechanics are almost complete.
02:51
Yeah, going to bed. I’m affraid I’m now useless.
09:40
Allright, it’s a nice morning to make a winning entry. *Back to work, lazy ass!*
10:38
Now with a goal, a winning condition, and two game modes.
12:16
Added the critters. They just walk around and wait to be blasted away. Oh yeah
14:05
Face sorting is working. Took three different algorithms… And I’m pretty sure this one doesn’t cover every case either. But it seems to be quite OK anyway.
16:26
Just lost two hours researching and implementing an ear-clipping algorithm. Cause: opengl (and thus Löve) can’t draw non convex polygons. And I really need to draw one. I must admit I had fun coding that. But still, two hours…

16:50
Bullets! With gravity and terrifying blast damage!
17:51
Going to a dampling making/eating party at a friend. I guess I can use a break, my mind is starting to show me weird stuff.
(Too bad I didn’t take my camera, it would have made a nice food photo…)
22:00
Back to work.
23:34
I have boni/powerups on the game, and the effects of the boni are applied with timers that have callback functions. It may be the usual stuff for most people, but I had never used these before, and it feels really cool. “oah it works”
In my original plan, I was supposed to have finished coding game mechanics by day one, to have all the time in the world for graphics and sound. Technically, my day one ends 14 minutes ago… I’ll try to have at least 5 hours of sleep, though.
08:12
Decided to go with some kind of destroyable wall of doom. Throw stuff at it to detach pieces, and thus slow the progression. For now I’ll try to work on the geometry bit.
10:03
Stupidely made my own vector library in Lua. Didn’t like the others I found, but inspired from those. Now the fun begins.
11:35
I can has destroyable geometry. Just a line and you dig holes in it.
12:03
Corrected lots of bugs and made the computations more general: more case are covered, includind when you “cut” a bit by drilling all around it. Hungry now. Food now.
06:45
Back from a refreshing walk. The morning air and the surrounding environment gave me some ideas. Now back to mind mapping and brainstorming.
Took a few pictures too:


Journal:
05:40
Waking up after about 5 hours of sleep. I’m feeling peachy. Can’t wait to go o__O at the theme and lose a few hours wondering why the hell I did even bother going up at such an ungodly hour. LD, you gotta love it. Also, breakfast.


Go go go LDers!
Notice how I skillfully include both a desk photo and a food photo at the same time! And notice the tinyness of my EeePC 901 under Ubuntu. And the mouse. The touch-thingy just drives me mad.
‘nough said.
What would LD be without the motivational posters?

Howdy!
My second real LD (did a mini LD and a half too). I’m not sure I’ll have time this week end, but I’ll sure try. Will be using:
Comp:
My tiny EeePC 901 under Ubuntu. And now I got myself a mouse for increased productivity.
Dev:
Either evöL, my own tiny Lua+SDL library (https://gna.org/projects/evol/), or Löve, a way cooler Lua game engine (http://love2d.org/). If the theme makes me feel like it, I might use glöwve, a simple script I wrote yesterday to make glowy vector graphics in Löve (here).
Löve is now available for Linux, Windows, and MacOS X, so (almost) everyone’s happy.
Graphics:
Inkscape, Gimp, and no talent. I do also have a camera.
Sound:
I’m tempted to make music as a module, in which case I’ll use MilkyTracker (http://www.milkytracker.net/). Possible sound synthesis with ZynAddSubFX and DrPetter’s sfxr. And my microphone.
Can’t wait for Evolution to make it the final round and not win, as usual. Oh and I wonder what will be the running joke this time.
See you all on the other side!
Hey!
I apparently managed to set up cross compilation on my Ubuntu machine, so now comes my mini LD 5 entry, for you Windows users.
Grab it here.
Double click “run.bat” to play the game.
See my previous post for more information about the game.
(Note: this is my first experience with cross compilation and pretty much with Windows binaries in general. I may not have done it right or optimaly, but it seems to work. If anyone comes up with a better way to do it, please let me know.)
Enjoy!
This is a cover of BenW’s Chain reaction:
http://www.ludumdare.com/compo/2007/12/16/finally-finished/
Since I met Ludum Dare only at the last compo, I don’t really have a “favorite entry” yet, so I picked one that seemed nice, and changed the gameplay, added personal things, etc.

Here is the thing: revenge.zip
EDIT: see here about a Windows version
The goal is to blow the tiles marked by the pulsating squares. If there is only one, fine, but later there will be more, and the tiles marked have to be blown at the same time! To do this you take advantage of the chain reactions provoqued by the terrible Invisible Walker!
It just runs around the world, on the outside tiles, clockwise, and starts explosions as it goes.
To bring these explosions to the marked tiles, you can first move yourself, with arrow keys. You can also move some tiles: with X and V you rotate the 8 tiles around you. And with arrow keys while pressing C, you shift whole rows or columns. Beware: rows, columns and “ring around you” have to be full before they can be moved! No holes!
About holes… Just don’t walk in them, or your life counter (right side of the screen) will decrease.
The similar counter on the left is the level counter. Of course, difficulty increases with levels…
Technical sadness:
The game is written in Lua and uses a personal lib that itself uses SDL and co. I included a compiled version of the library, made on Ubuntu. I have no idea if it’s going to work on another Linux machine, or even another Ubuntu, so be sure to read the README if you need to compile it yourself.
I unfortunately have no Windows machine available, nor Mac OS X, so no binaries for those. However, it is supposed to be portable, so if anyone manages to make it work, don’t hesitate to send me your binaries, so I can share them.
More details about the compo later.
I spent the last few weeks coding evöL, a very small game engine in Lua.
It contains all the basic stuff I usually do with SDL, but in a light Lua API, which means super fast game prototyping. At least that’s what I found when I tried Löve, a game engine in Lua based also on SDL, last LD. Problem is that Löve uses hardware accelerated graphics, and on my Eee PC, I get terrible performance.
So I made my personal lib, inspired by Löve, and with a lot less feature. You can get it here.
The SVN version is really more recent and has a lot of new features.
EDIT: I just packaged and uploaded version 1.0 to the Gna project page. It is the latest snapshot of the SVN. Yay for evöL!
It runs on GNU/Linux, but it should run on Mac OS and Windows, since SDL and Lua are both portable. You just have to get your IDE/compiler/whatever to compile and link the lib correctly.
Here is my timelapse video.
A few epic moments: the big ABBA chat (0:38), the epic failure of creating the level graphics in Blender, then Inkscape (2:48), the time when my friends came over to play Armaggetron and Jump’n'Bump while I was drawing the levels (4:34)…
Soundtrack: ingame music + surprise song from a band that enlightened the IRC channel with all its splendor…
About the submission:
The owliver.love file is really a renamed zip. If you unzip it, you’ll find inside:
- the Lua sources
- the images
- the sounds
- the three musics
So: archive, check; source code, check.
Custom library code: none. Everything is either the Löve engine, or code written during the compo.
List of tools and libraries:
- As stated before, the Löve game engine (a Lua wrapper for SDL). Awesome stuff. Never coded things that fast. In fact, it’s almost magical. Idea -> code -> working feature. Of course, there are always a few bugs you have to correct, but the power you feel in your hands is really amazing. Lua is amazing anyway. When you need something, just make a table. It always works ;°)
- Text editor: gEdit, with autocompletion and symbol browser plugins. Plus, of course, built-in syntax coloring.
- Compilator: none, this is Lua! (ah!) Save your Lua file, and rerun the game from the closest console. In fact, when Löve detects a crash, it doesn’t quit, but instead goes in crash mode. A “restart” button is available so you don’t even have to do “up arrow + enter” in the terminal, once the bug corrected. You gotta love Löve.
- Graphics. For the levels: pencil, paper, sharp marker pen to increase contrast, scanner, Inkscape to vectorize, resize, re-bitmapize, GIMP to colorize. And for the ingame thingies and text, Inkscape. For the intro screen text, made a screenshot of text in Abiword, then included with the guy in Inkscape.
- Level making: hand coded in the source. But made extensive use of Inkscape to get coordinates of stuff. I drew rectangles and dots in Inkscape, read their coordinates there, copied them in the level files. Them during level loading, the coordinates are converted into game coordinates. I supposed it could have been even better to parse the SVG files, but no time to explore this.
- Sound… I made all audio during the last hour… Sounds are all randomly generated with the great sfxr, in about 7 minutes. Music is made with ZynSubAddFX, a marvelous synthetisor for Linux, and QSynth, a soundfont player. Both apps controlled with my MIDI keyboard. Drums are from Hydrogen (awesome drums app for Linux), and the “mixing” is done in Audacity.
Additionnal things:
- IRC with X-Chat
- Timelapse video capture with two shell scripts:
while true; do scrot -e ‘convert $f -resize 50% $f.jpg; rm -f $f’ & sleep 20; done
and
mencoder “mf://*.jpg” -mf fps=10 -o timelapse.avi -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=900
- Far too many motivational posters with http://wigflip.com/automotivator/
- Photos with my Kodak EasyShare C713 (stupid battery charger that I can’t find…)
- Everything done on a GNU/Linux machine running Ubuntu 8.04, except scanning the levels, since the scanner is plugged to the family’s MacMini.
- The pizza! I’ve been asked several times what kind of pizza it is. I sure looks good, but well… Just a pizza
So, it’s a Buitoni “Four à pierre” Royale. I don’t know if the name is the same outside France, though.
I don’t see anything else to add yet. I’ll work on the postmortem now.
20:37
Back from dinner. No photo, batteries dead.
22:22
Colorized three levels. I hope I can make it…
23:02
One level to go. IRC log:
<Tenoch> Codexus> only 6 hours left ._. PANIC! PANIC!!!!!! –> me too buddy, me too…
<Dragowlene> what say you
<Deepflame> It’s 40mb and xvid encoded
<Dragowlene> with 7 levels
<Dragowlene> can I call my game final?
<Tenoch> !D
<Dragowlene> somebody who’s tried it
<Tenoch> my levels are empty…
<Tenoch> like… empty
<lexaloffle> Edwardowlka - I had trouble getting anything to work too. That’s not haXe’s fault though — I really don’t understand Flash. Or OOP for that matter @_@
<Tenoch> Are there logs of the chat during the compo time?
<Tenoch> that’s something I’d want to show my children.
<Tenoch> when I have some.
23:43
All levels colorized. Made a clouds background, with multi parallax. Oh yeah.
05:41
Yeah right. Finished. Now a bit of sleep before completing blog, journal and postmortem.
In the 23:43 -> 05:41 hole, I made a loooot of things. That is, all the gimmicks inside the game, the trooper, the winning conditions, texts, interlevels barriers, some gameplay, difficulty ajustments (too much adjusted, apparently), etc.
Then in the last hour or so, sounds and three musics. Oh my gawd.
I don’t have photos for this last part, since I had other things to do, and also, because the batteries are dead and I don’t have a charger.
See you soon for the postmortem :°)
(edited for repackaging)
Here it is… Description comes later. I’m already late because I couldn’t upload the stupid file.
All in one Windows binaries:
Get it here. Unzip. To run, drag owliver.love on love.exe
Game and engine separated (required for Linux users):
Get the game file (OS-neutral) here: http://noe.falzon.free.fr/static/owliver.love
And get the Löve engine:
Post deadline update:
I have been told that the game was too difficult to play some levels. I checked, and yes, a bug due to last minute savage editing made the lightnings very difficult to repair. Here is a post deadline version with this bug corrected, plus cosmetic details (level names, global offset for “correct” transition between levels).
I post it so you can enjoy the game anyway, and reach the last level, which was quasi unreachable in the other version.
You can get the Windows all in one binaries, or the Löve game file. Installation/running is the same as above, where stuff is named “owliver-postLD” instead of “owliver”.
13:31
Drawn three levels. But they are not in the game yet!
20:02
OK, long afternoon. Friends were there. I made 4 more levels for the game. Hand drawn, scanned, vectorised, re-bitmapised, made floor detection aware. They don’t have colors yet, though. They don’t have content either. Had to code all the level transition stuff. Not that easy.
Next step: draw some gimmicks to throw in. Or go to eat…
All posts, images, and comments are owned by their creators.