Games and more at http://noe.falzon.free.fr/dev/
About Tenoch
Entries
Ludum Dare 17 | MiniLD #16 | MiniLD 14 | MiniLD 12 |
Ludum Dare 15 |
Tenoch's Trophies
![]() The "Waaay Over My Head" Award Awarded by madk on May 2, 2010 | ![]() 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 |
Tenoch's Archive
October Challenge: week-end progress
http://www.youtube.com/watch?v=H5L_2wfs8xs
So apparently I’m in
… and my intro video is here:
http://www.youtube.com/watch?v=IFY6-IsPs-Q
Rock’n'roll
So it seems that the LD week-end is my first free week-end in two months. Fatally, I’m in!
My toolset is the same as usual: Lua, plus my own SDL based lib, or alternatively LÖVE. Inkscape, GIMP, LMMS, plus any other free software tool I can find in Ubuntu repositories. This time I’ll try to focus on original gameplay more that anything else, so that my final product is indeed a game, rather than my usual toys or new technology tries. Graphic art is always a problem, but I’ll try to keep it simple. I usually take some time for music, because that’s one of the parts I prefer. Will see.
I plan to enter the compo, but if random external events come and trouble my nerd week-end, I might take another day for the jam. Good luck everybody, and remember, vote Evolution, it never wins but has to be damn close!
Declaration of… wait, wut?
Theme. The Force is strong with this one. Although you can probably just make any single game with a tool and say, oooh wait, it’s dangerous to go alone, take this <insert random tool>. Be it weapon, magic staff, vehicle, football, companion, etc. But hey why not, we had more generic themes before, turned out fine.
This is a declaration of maybe, maybe not, since tomorrow (and by extension today) is national day of awesome here in Finland, and I may succumb to peer pressure and actually go outside with people for fresh air and social reinforcement (it’s dangerous to go alone, here take this friend/beer). But I guess the main festivities start later in the afternoon so I may hack up together a small joke game or something until then.
Tools. Lua for sure, maybe with LÖVE or my own lib evöL. Other tools will be according to random inspiration.
Seems there’s a lot of people in, which is good because more games, and bad, because the chatter on the IRC channel and compo blog will be hard to decipher. Also each individual gets a lot less attention, especially newcomers. It’s a harsh world. Dangerous out there. Ha. Anyhoo. Good luck all, kudos for the keynote, and remember to keep hydrated.
Vegetation
≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦≈≈≈≈≈≈≈≈≈
≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈ttttttttttttt♦♦♦♦♦♦♦♦tttt≈≈≈≈≈≈≈≈
≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈tt≈≈ttttttttttttttt♦♦ttttttttt≈≈≈≈≈≈≈
≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈ttttttttttttttttttttttttttttttt≈≈≈≈≈≈
ttt T ♦ttttttttttttttttttttttttttttttttt
TTT ♦♦ ttttttttttttttttttttttTttttttt♦♦♦t♦
♦♦ ♦♦♦T♦TTT♦TtttttttttttttttttttttTTTTttt♦♦♦♦t♦
♦♦♦♦♦♦♦ TTTTTTTTTttttttttttttttttttTTttTTT♦♦♦♦♦t♦♦♦♦
.♦♦♦♦♦♦T ⌠⌠TTTTTTTTtt♦ttttttttttttttttTTT♦T♦♦♦♦♦♦♦t♦♦♦♦
.♦♦.♦♦♦♦⌠⌠⌠⌠TTT⌠TTTTTTTTTttttttttttttttttTT⌠.♦♦♦♦♦♦♦♦♦♦♦♦♦
....♦...T⌠⌠⌠⌠TTT⌠TTTTTTTTTTtttttttttttttttTTT⌠....♦♦♦♦..♦♦♦♦.. .
♦.... ..⌠⌠⌠⌠⌠⌠TT⌠⌠T⌠T⌠⌠⌠TTTtttttttttttttttTTT...♦♦♦♦t♦....♦♦♦...
♦... ..⌠⌠⌠⌠TTT⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠TTttttttttttttttTTT♦..♦.♦♦♦♦♦♦♦..♦♦♦..♦
♦..... ⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠TTTtttttttttTTTTTT♦♦..♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦
..⌠..⌠ ⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠TTTTttttttttTTTT⌠T♦.....♦♦♦♦♦TTTTTTTTT♦⌠
⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠TTTTttttttTTTT⌠⌠⌠....♦♦♦♦♦♦TTTTTTTTTTT⌠
T⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠T⌠⌠TTTttttTT⌠T⌠⌠⌠......♦♦♦♦♦TTTTtttTTT⌠⌠
⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠√⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠TTTttTTT⌠⌠⌠⌠⌠..........♦TTTTTTTTTT⌠⌠
⌠⌠⌠⌠⌠⌠ ⌠⌠⌠⌠⌠√√√√⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠TTTTTT⌠⌠⌠⌠⌠f⌠........♦♦♦TTT⌠TTTTTT⌠
⌠⌠⌠⌠⌠⌠⌠ ⌠⌠⌠√√ √⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠TTTTT⌠⌠⌠⌠⌠⌠f.........♦♦♦♦⌠⌠⌠TTT⌠⌠⌠
⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠√√ √ √√⌠⌠√⌠⌠√⌠⌠⌠⌠⌠⌠⌠⌠⌠T⌠⌠⌠⌠⌠⌠⌠⌠⌠f.f......♦♦♦..⌠⌠TTT⌠.⌠
⌠⌠⌠⌠⌠⌠⌠⌠ ⌠√√√√√√√√√√⌠⌠⌠√⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠...............♦TT.⌠..
.⌠f⌠⌠⌠ ⌠ √√√√√⌠⌠√√√√√√√⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠................T...⌠.
fff⌠⌠⌠ √⌠√√√√√⌠√⌠⌠⌠⌠√⌠⌠√⌠⌠√⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠..............♦.......
ff ⌠ √√√√√√√⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠√√√√√⌠⌠⌠⌠⌠⌠⌠⌠.........~.............ff
f ⌠ ⌠⌠ √√√√√⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠√√√√⌠⌠⌠⌠⌠⌠⌠⌠.f.......f~~..........fff
⌠ ⌠√ √√√⌠⌠⌠+⌠ ⌠ √√√√√√⌠⌠⌠⌠⌠ffff......~.~.......ffffff
⌠√ff√√√⌠⌠⌠++ ⌠√√√√√⌠⌠⌠⌠⌠⌠ffffffff...f.....fffff⌠fff
√√f ffff + f⌠⌠⌠⌠⌠⌠⌠ffffffffff~.ff...f...f⌠⌠⌠⌠ ff⌠
+ +++f√f ff+⌠⌠⌠⌠⌠⌠ffffffffff.f...ffffff⌠⌠⌠ +
++ff√ff +⌠+⌠⌠f++ffffffff....fffffff+f+++ +
+++fffff +++++f+ffffffff....fffff++ +++
++fffff +++++fffffff....~~~ff++ +
+++⌠⌠⌠⌠⌠fff +++ffffffffff....~~~~fff+ + +
++⌠⌠⌠⌠⌠⌠√√f + fffffffff~f..f..~fff~~+f +++++
⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠++ ++++ +ffffffffff....f.~fff~~f++f f++⌠
⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠+++f⌠⌠ + +ffffffffff.....f.f~fff~~ fff+ff⌠
⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠ fffffffffffff...ff.~ffff~~~fffffff
f⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠ ~~~~ffffffff..f.f.ff.ff~~~~~ fffff
⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠f ~~~~~~~fffffff......fffff~~~fffffff
⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠ f~~~~~~..fff⌠........ff~f~ff~~~f fff
..⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠ ~~~~~.~.~fff.........~ff~~~~~ffffff.
....⌠⌠⌠⌠.⌠⌠⌠⌠⌠⌠⌠⌠⌠ ~~~~....ffffff.......~~.~.....ff....
.....⌠⌠..⌠⌠⌠⌠⌠⌠⌠ ~~~~......f..f......................
........f⌠ ⌠⌠ ~~~~.......f.......................
.........⌠ ~~~.................................
........f ~..................♦♦........♦.....
........ ..............♦..♦♦♦♦♦♦♦♦♦♦♦♦♦...♦
♦..... ~........♦....♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦
♦.... .......♦♦.♦♦♦♦.♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦
..... .......♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦t♦♦♦♦♦♦♦♦♦♦.
...... ......♦♦♦♦♦♦♦♦♦♦♦♦♦♦ttt♦♦♦♦♦...♦.♦
. .. .....♦♦♦♦..♦♦♦♦♦♦♦♦ttt♦♦♦♦♦♦♦....♦.
. ...♦.♦♦♦♦♦.♦♦♦♦♦♦♦tttt♦♦♦♦♦♦♦♦♦.♦..
...♦♦♦♦♦♦♦♦♦♦♦♦♦♦tttttt♦♦♦♦♦♦♦♦♦♦♦..
.♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦tttttt♦♦♦♦♦♦♦♦♦♦♦.
.♦♦♦♦♦♦♦♦♦♦ ♦♦♦tttttt♦♦♦♦♦ ♦♦♦♦
♦♦♦♦♦♦♦♦♦♦ ♦♦♦ttttttttt♦♦ ♦♦♦♦
♦♦♦♦♦♦♦♦♦ ♦tttttttttttt♦ ♦♦
♦♦♦♦♦♦♦ ttttttttttttt♦♦
ttttttt≈≈ ≈tttttttttttttttt≈≈
≈≈≈≈≈≈≈≈≈≈≈≈ ≈≈≈≈≈≈ ≈≈≈≈≈≈≈ttttttttttttttttt♦tttttttt≈≈≈≈≈≈≈
≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈ttttttttttttttt♦♦♦ttttt≈≈≈≈≈≈≈≈
≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈t≈tttttttt♦♦♦♦♦♦♦♦♦♦tt≈≈≈≈≈≈≈≈≈
So hmm yeah, now I generate temperature maps (with altitude, distance from equator and noise), and precipitation map (just noise), and from those I deduce the type of vegetation in each cell. This is extremely non scientific and not accurate, but the result is ok-ish and I lost far too much time on these damn rivers that still don’t work properly. Damn, when will I have any kind of gameplay anyway?
Somewhat broken river system
..xxxoo*********?────────
..xxxooo?******?**ooxx..
────────┘─?****│**ooxx..
..xooo*********│*ooxxx..
..xo***********│*ooxxx.
..xxo*********?*└──┐xx...
──┐o**z******│*ooo└────
.xx└───?z*****└────────┐.
.xxxoo**zzzzz**ooooooxx.└
..xxoo***zzzz*****ooxxxx..
...xxoo***zz┌─────────┐xx..
..xxxoo*****?*****ooox└─┐.
.xxxooo***┌─?*****ooox..└
... ..xx?oo*o*│*******ooxx....
....... ─────┘oooo*│******oooxx.....
........ ....xxoooo**└──┐***oox┌── ..
...xx.... .....xoooo*****│o*oo┌─┘x.
.. .....xx..... .....xxxxxooo****└─┐o┌┘oxx....
.... ...xx.xx...........xxxxooooo*****└─┘oooxx...
..... ......xxx..........xxxxxoooooo*oooo┌?oooxx... .
........x.....xx........xxxxxooxoooooooo┌┘ooo┌──── . .....
..............x......xxxxxxxxoxxoooooo*o└┐ooo│oxx.... ........
xxxx................xxxoxooxxxxxooooooooo└───┘oxxxx.. ......xx
xxxxxxxxxx.xx......xxxxooooxxxoooooooooo***ooooxxxx.┌┘. .....xxx
oxxxxxxxxx..x.....xxxxxoooxxxxoooooooo*****oooxooxx.│. ......xxx
oxoxxxxxxx........xxxxxxxxxxxxooooooooo*****oooooxx┌┘....x...xxo
ooxxxxxxxx........xxxxxxxxxxxxxoooooooooo****ooooxx│....xxxxxxxx
oxxxxxxxx.........xxxxxx.xxxxxxxxxooooo*******oooxx│x..xxxxxxxxo
ooxxxxxx.xx..... .xxxxx...xxxxxxxxooo*****zz***ooox└─┐.xxxxxxxxo
ooooxxxxxxx........xxxx...x.xxxxxxoo***********oooo│.└──┐xxxxxoo
ooooxxxxxxxxx.........xx....x...xxoo****zzzzz**oooo│...x└┐xxxxoo
*oooxxxxxxxxxxx.............x.xxxxoo***zzz*z***o┌──┘xxxxx│xxooo*
*ooxxxoxxx.xxxx............xxx.xxxoo****zz*zz**o│oooxxx┌─┘xoooo*
**ooooxxxxxxx..............xxx.xxxo********z?───┘ooooo?│x└┐oooo*
**ooooxxxxx.... ... ...x......xxoo******zz*****ooooooo│oo│oo***
ooooooooxxx..... ......x........xxoo******zz******o**oo│o*│***o*
oooooooooxxx.. ................xxo******zzz**********│**?***oo
ooxooooooxx......................xxooo***zzzz*z*z*****?┘******oo
ooxxxxoooxx.............. . ...xxoo**┌┐*zzz*zzz***z********oo
oxxxxxoxoxx........... ...xx┌───┘│*zzzzzzzzzzzzz******oo
xxxxxxxxoxx....xx.... ─────┘oo**└┐*zzzzzzzzzzzzz*****ox
xxxxxxxxxx............ ...xxxooo**│*zzzzzzzzzzz******oox
xx.xxxxxxx. . . ....xxooo**│***zzzzz***z*ooooooox
xx.xxxxx... . ....xxxoo**│****zzz*****o?oooooxx
.....xx... ....x.xxoo*│****zzzz***oo└─┐oxxox
x........ ...xxxxxo**?*****zz**ooooxx│xxxxx
xxx...... ....xxxo***********ooooxxx│xxxxx
xxx.... ....xxooooo******oooxxxxx│xxxxx
oxx.. ...xxo**ooo**o*ooooxx.┌─┘xxxxx
xxx... ...xxooooo***ooooxxxx.└┐.xxxxx
xx... .x.xxooo****oooxxxxx..│..x.xx
..... ..xxxxoooo****ooxxx....│......
. ...xxxxooo*****oox.... ..
...xxxxoo***?──────
...xxxxxooo***oxx..
..xxxxxooooooooxx..
..xxxxooo*oooooxx...
..xooooooooooooxx..
..xxoooooo**oooxxx.
..xxxooo****oooxxxx.
..xxxoo*******oox...
..xooooo******ooxx...
..xooooo********oxxx.
....xooo**********oooxx..
It simply follows the steepest slope, and erodes the land when there is no lower point around. Kinda works.
I can has random heightfield generation
......oooxxxxooooo....o..o.ooooooooxoooxooo.ooo.o.ooo.....
......ooooxxxxxoooooo...o.oooooooooooooxxoooooooooooooo.....
........ooooxxxx*xxxxooooooooo.oooooooooxoooooxoooooooooooo.....
....oooooxxxxx*xxxxxxxooooooooooooooxxxxxooooooooooooooo.. ..
...ooooooxxxx**xxxxxxxxoooooooooooxxxxxxxxxoxxooooooooo...
..oooooooxx****xxxxx*xxxooooooooooxxxxxxxxxxxxxooooo.o.....
....oooxxxxx****x**xx**xxxxooxoxxxxxxxxxxxxxxxxxxoooo..... .
....ooooxxxx*************xxxxxxxxxxxxxxxxxxxxxxxxxxooo......
...oooxxxx***************xxxxxxxxxxxxxxxx****x*xxxoo..... ..
...oooxxxxx****************xxxxxx******x*******xxxoooo.......
...ooooxxxxxx***********************************xxxoooo.......
......oooooxxxx**********************************xxxxxoooo......
......ooxooooxxxx**************^*^^^^^************xxxxooooo.....
......oooooooxxx**************^^^^^^^^^^^^*******xxxxooooo......
....oooooooooxxx*****^^***^**^^^^^^^^^^^^^^*******xxooooooooo...
o..o.oooooooooxx*****^****^^^^^^^^^^^^^^^^^^******xxxooooooo..oo
oo..oooo.oooooxxx***^****^^^^^^^^^^^^^^^^^^^******xxoooooooo..oo
ooo..ooo.oooooxxxx******^^*^^^^^^^^^^^^^^^^^******xxxooooooooooo
ooo.....ooooooooxx*******^*^^^^^^^^^^^^^^^^^^****xxxoooooo.ooooo
oo.......oooooooxx*********^^^^^^^^^^^^^^^^^*****xxxxxoooooooooo
o.......o..oooooxxx*******^^^^^^^^^^^^^^^^^^******xxxxoooooooooo
............ooooxxx*x******^^^^^^^^^^^^^^^^^^^****xxxxoooooooooo
............oooooxxxx*******^^^^^^^^^^^^^^^^^*****xxxooooooooooo
o....... ..oooooxxxxx********^^^^^^^^^^^^^^^^****xxxooooooooooo
o....... ..ooooooxxxxxxx*****^^^^^^^^^^^^^^^****xxxxoxooooooooo
o...... ....ooooooxxxxxx****^^^^^^^^^^^^******xxooxoooooooooo.
....... ....o..oooxxxxx*x***^^^^^^^^^^^*****xxxxooooooooooo...
...... ......ooooxxxx*****^^^^^^^^^^*****xxxooooooo.o.o.....
.. .. ......ooooxxxx****^^^^^^^^^^***xxxoooooooo.o........
.....oooxxx******^^^^^^^^^**xxxoooooooo...........
..ooooxxxx*****^^^^^^^^^***xxooooooooo.......
..oooxxxx*****^^^^^******xxxooo.oooooo......
..oooxxxxx***^^^^^******xxoooo...ooo........
..oooxxxxxx****^****xx*xxoooooooooooooo.....
..ooooxxxxx********xxxxxxoooooooooooo.....
....oooooxxxx*x**xxxxxooooooooooooooooo.....
....ooooooxxxxxxxxoooooooooooooooooooooo.. ..
. .....ooooxxxxxxxxoooooooooooooooooooooo......
. ....ooooooxooxxxoooooooooooooooooooooo......
.......oooooooooooooo.oooooooooooooooooo.....
. .... .oooooo.ooooo.....oo..ooooooooooooo...
. . . .........ooo......o.oo...ooooooooooo...
.. ..........o.........o....ooooooooooo..
.... .. ...................oooooooooooo..
.... ...... .........oooooooooooo..
.... . ...... ........ooooooooooooo.o
.... .... ...........oooooooooooo..
.... ..................oooooooooooo
o... .................oooooxooooooo
o..... ...............o.oooooooooooo
ooo.... ...............o.oooooooooooo
ooo.... ............ooooooooooooooo
ooooo... . . ..........o.oooooo.ooooooo
ooooo......... ..........o.ooooooooooooooo
.ooooo........ ............o.ooooooo..ooooo
...oo...o...... .... .............o.o..ooo..ooooo
oooooo.oooo..... . . .. ...................o...oo.....ooo
o...ooooooooo........ ............................oo....ooo
oo..oooooooooo........ . ................o............ooo..oooo
......o..ooooo...........................................o......
..........oo.oooo............oo......o...o.oooo.................
..........ooooooooo.................ooooooooooooo........o......
.... .....ooooooooooo.........oooooooooooooooooo........o.......
.. .....oooooxxxooo..........ooooooooooooooooooo.....ooo......
Now of course it requires some tweaking so that my game world does not end up being Waterworld, or Dune, but there you go. Oceans, plains and mountains.
Note that it wraps around in both directions, so my world is a torus. And there is of course lots of parameters that can be changed. (Understand: I’m going to play with the parameters for a few hours, and then discard them anyway.)
Moar basecode: Lalonde 1.0-beta
Mwahaha, this LD is the occasion for me to cleanup my basecode(s) and make pretty releases for them. This one is my character based client-server network terminal thingy where all the code is executed in the server.
You can get it on the Launchpad project page, or get directly the source in a zip or a gzipped tarball.
Fell free to use, or absolutely ignore. I don’t know yet myself if I’ll use it. I’d like to try, because writing basecodes and not using them is le useless. It’s very much untested in terms of usability, hence the “beta”, but the code itself should be pretty solid.
Basecode/lib: evöL 2.0-rc1
Fellow LDers, as required by the rules, here is my basecode, that I pretentiously call a library. It was available before in the bzr repository on Launchpad, but I made a release (or rather release candidate) in case anyone is interested.
evöL page on Launchpad or directly source tarball.
evöL is a multimedia library in Lua, based on SDL, aimed at fast game prototyping. It provides keyboard/mouse input, image loading/editing/blitting, font rendering, graphic primitives, sound/music playing, OpenGL context creation (to use with an external GL lib), and terminal simulation (curses like). Supported platforms are GNU/Linux, Windows and Dingux (Dingoo Linux), but it should be portable.
Copy pasted “intent” post
[Hey folks. Here is a copy paste of my last "declaration of intent" post, because I would have written the exact same information. Except that my Friday night is free, and that I have a flatmates party on Saturday. Oh and I dist-upgraded Ubuntu since then.]
So the “Hello”-posts season has started. I won’t be very original, I always use the same things:
- Code in Lua using my personal lib evöL. There are lots of new additions in the dev version that you can get by typing “bzr branch lp:evol2d” in the closest terminal. evöL runs on GNU/Linux, Windows and now Dingux (Linux for the Dingoo handheld device). It should compile fine on Mac OS X and *BSD, but I’m unable to cross-compile for these. Depending on my mood, I might make a Dingoo game (understand “low-res, limited input”), which by the wonders of portability, will run on PC OSes as well (with keyboard or gamepad). Oh and it’s binary compatible with the Ben Nanonote, if anyone of you has one.
- Alternatively, I might give a try to my previous experiment, of a text based networked platform where all code is on the server, and the client is only a terminal that relays input and displays output. That’s in Lua too.
- Compy is an EeePC 901 running Ubuntu 10.04, and the language is interpreted, so that limits seriously performance, although last time I managed to make a full 3D game entirely in Lua. If Dingoo there is, it’s even more limited (heh, no FPU!) But that’s good. Games shouldn’t need supercomputers to run on.
- Text editor is Geany.
- Graphics will probably be with Inkscape and GIMP. I do have a camera but no scanner. If graphics there are.
- Sound: the usual Audacity and/or sfxr for sound, LMMS for music.
Now I happen to have my housewarming party on Friday night, and a birthday on Saturday. I may or may not be able to participate at all. I may as well have to drop to the Jam, even if my goal is really the compo. I managed the top 20 last time, which is extremely exhilarating. I wonder if I can top that.
I should also warn that I always make many motivational posters, and that they suck like you can’t imagine.
Now have fun people. See you on Saturday.
The failure of Newton
So far, I implemented the usual Newtonian physics, that is, the ship has a thurster control, which makes it accelerate in the current direction, and speed and position are integrated from it.
To control by hand, it’s a bit unusual, but we get used pretty fast. Especially since I coded a control that turns you automatically to the direction opposite to your speed, so you can “slow down”.
However, I’m stuggling to build an AI for something as simple as “go there and stop”. The easy way seems to be to first slow down to a stop, then turn to the point, accelerate half the way, deccelerate half the way. But that, of course, fails if the target is moving.
More naive solutions can work too, but they all seem to “diverge” in that if you aim at a fixed point, the ship will oscilate around it, on an increasing orbit.
Anyway, despite allowing for pretty nifty curvy trajectories, I’m affraid Newtonian physics are actually not fun. You almost never point at where you want to go, and you spend your time doing “straight” accel/deccel trajectories, because they are easier to visualize.
The solution I see is to go back to a more “arcade” system, where the player controls directly speed, instead of acceleration. Pressing the thruster button makes you go forward, period. Of course, in space it’s very impossible, but that’s the kind of behavior we are use to on Earth. Thanks to friction on the floor, cars, bikes and stuff are controled by direction.
On the other hand, I like the idea that you can aim at somewhere you don’t go, especially if weapons are aligned with the ship. That way you can do fly-by shootings, and looking around without actually moving erraticly.
Maybe I can try a hybrid system, where ships have proper Newtonian inertia, but as soon as the thrusters are on, the speed is fixed to the forward direction. Maybe also some sort of damping to avoid brutal speed jumps then.
Dunno. I’m getting tired and I haven’t done much yet. Also I’m far from any game at all.
Declaration of uncertainty
So the “Hello”-posts season has started. I won’t be very original, I always use the same things:
- Code in Lua using my personal lib evöL. There are lots of new additions in the dev version that you can get by typing “bzr branch lp:evol2d” in the closest terminal. evöL runs on GNU/Linux, Windows and now Dingux (Linux for the Dingoo handheld device). It should compile fine on Mac OS X and *BSD, but I’m unable to cross-compile for these. Depending on my mood, I might make a Dingoo game (understand “low-res, limited input”), which by the wonders of portability, will run on PC OSes as well (with keyboard or gamepad). Oh and it’s binary compatible with the Ben Nanonote, if anyone of you has one.
- Alternatively, I might give a try to my previous experiment, of a text based networked platform where all code is on the server, and the client is only a terminal that relays input and displays output. That’s in Lua too.
- Compy is an EeePC 901 running Ubuntu 10.04, and the language is interpreted, so that limits seriously performance, although last time I managed to make a full 3D game entirely in Lua. If Dingoo there is, it’s even more limited (heh, no FPU!) But that’s good. Games shouldn’t need supercomputers to run on.
- Text editor is Geany.
- Graphics will probably be with Inkscape and GIMP. I do have a camera but no scanner. If graphics there are.
- Sound: the usual Audacity and/or sfxr for sound, LMMS for music.
Now I happen to have my housewarming party on Friday night, and a birthday on Saturday. I may or may not be able to participate at all. I may as well have to drop to the Jam, even if my goal is really the compo. I managed the top 20 last time, which is extremely exhilarating. I wonder if I can top that.
I should also warn that I always make many motivational posters, and that they suck like you can’t imagine.
Now have fun people. See you on Saturday.
Retro awesomeness
There seems to have been a Dwarf Fortress frenzy in the channel these past few days (which of course pushed me to fall in the DF trap once again. Already 2 all nighters lost to it…) and necessarily I wondered about some of the technical aspects. And of course I started coding.
After a few hours, there I am, with an OpenGL powered virtual terminal, that displays a 256 glyphs bitmap font, has 16 colors, has background and glyph coloring, and is actually just a network terminal.
Yeah. The only thing it can do is connect to a server, get text and color information from it, and send keypresses.
It’s kinda like OnLive, but for 8bit text 2*4bits indexed color games. Awesome. In fact the original idea was that since keypresses and a few letters are quite light with modern connections, why bother duplicating the game world in each player’s client? It brings lots of annoying things like synchronisation, world updates, distributed computing, cheating, etc.
My legendary laziness suggested that any game could in fact regroup world data, game logic, input and output in a single place. Exactly like a local multiplayer game. But over a network. It gives interesting ideas like very cheap “observer” mode (just broadcast some player’s screen to anyone who wants), transparent join/leave (after a deconnection or a local crash, find the game as it was, assuming the server paused, or rejoin a persistent multi experience), etc.
Now a cool thing would be to apply that for this MiniLD. I’m still not sure I’ll have time to enter, but who knows. It will depend on the theme I guess.
EDIT: oh and needless to say, there is some Lua involved. The main app with the OpenGL drawing is in C, but the config and the network code is Lua. Manipulating text and sockets is much easier there.
And about the protocol, it couldn’t be simpler: client->server is “SDL_Key code (as decimal text) and newline”, server->client is “char, 4bit background color, 4bit glyph color” for all cells, topleft to bottomright, followed by a newline.
The client also sends “tsize w h” to announce its size to the server at connection. That’s about all control messages I’ll use.
Arks of Mercy: the future
My game got 15th place on 204 entries. “Yay”, mesays.
And 4th in Innovation, Community and Theme.
So close to a medal! Thank you so much for your votes, and comments.
About the comments, they are very very positive, and this is extremmely rewarding. You all point out very clear downsides, that I am going to list here.
You big enthousiasm gave me the will to rewrite the game. Take your comments in account, try to make it better. More optimised, more fun, more functionnal, more beautiful. It might become my first full fledged game. And that would be nice.
Controls are awkward
True. As I wrote, I designed them with a gamepad in mind, and that was probably a bad idea. First because everyone doesn’t have a gamepad, and second because as it’s been pointed out, mouse controls would be a lot better.
Also, there are far too many controls. Moving, rotating, zooming camera is already 8 buttons. Could be reduced by suppressing the “strafe” left and right controls and probably still be functionnal. Given the height of the hills, we certainly need camera rotation, to reach “behind” them.
In the same vein, the “beacon” and “boat” shortcuts might be removed. They allow for faster play, but are confusing at first.
However, mouse controls were a lot harder to implement (I’m still not sure how to do the inverse transformation to get from screen to heightfield cell), so I went for buttons.
Solution: go for mouse control, as in classic RTS. Mouse to select buildings, mouse buttons to bring up menus, mouse at the edge of the screen to scroll. Mouse wheel to zoom. Maybe mouse in the top corners to rotate?
With of course keyboard equivalents for the poor chaps who still one one button mouses… Wink wink nudge nudge. And good old RTS keyboard shortcuts.
Gameplay is a bit confusing
Some of you mentionned this, and the fact that 3 pages of manual is too long. I can understand that, especially when you have 204 games to grade. Guilty as charged. When I decided to make a strategy game — with different types of buildings, each with its specificities — the game became inherently complex. And not “casual” anymore like many of the LD entries. That’s a choice that probably rebuked many players, and a risk to take. On the other hand, the only remaining ones were the most perseverent, and they seemed to find the game worth the effort. And graded well. Thanks again!
Solution: as suggested, inside help could be useful, as well as tooltips, maybe even tutorials. And pictures in the external manual.
Polish
Shading is a bit off at night time, menus sometimes disappear under water, aiming precision is not great, beacon rings should be visible at all times, colors didn’t get unanimity, etc.
Obviously, in a limited time competition, some polish gets left out. Especially since the technical part was quite challenging to me. All that would be corrected/improved in a post compo version. Notably, I would like to:
- replace my lousy 3D icons by 2D, maybe have a HUD à la Warcraft, or just a bring-up menu.
- use 2D sprites as well for the dezoomed view, instead of OpenGL square dots.
- more eye candy. My lightnings are a bit lame, the uniform water is not that nice. could use a sky in zoomed views. Maybe more gimmicks on the land so that it doesn’t look so empty.
- sound effects.
- longer music, maybe different themes.
- different environments, colors themes, etc.
More gameplay
No one commented on that, but I was thinking about it in my postmortem. Although many of you found the game enjoyable as it is, my intention was in fact to make it multiplayer.
- cooperative mode. 2+ players share the same ressources (max number of stuff) on the same map, and try to save as many people possible, together. Allows for more micromanagment and interesting strategic interaction.
- competitive mode. 2+ players share the map and people, but have their own ressources/buildings. In the end, the winner is the one who saved the biggest number of people.
- versus mode. 2+ players play on totally independent games but with an identical starting point. Other players can be displayed as “shadows”. There is no interaction at all between players, the point is to see how many people is saved by each player, given the same map.
Now I’m not sure a solo campain would be interesting. There are few types of buildings, one type of guys, and the point of the game is to control them indirectly. There wouldn’t be heros, or real stories behind.
Of course, there could a be a series of tutorials, introducing the buildings one by one. Or I could radically change the whole thing and add lots of unit/building types, and make it a full fledged RTS with military and bloodbaths and whatnot. But that wouldn’t really uphold the original concept.
I could, later, make a wargame out of this, in a sequel. But for now I’d just like to remake *this* game, since you seemed to like it so much.
Technical notes
I’m not really sure what i mean by “rewrite”. Of course, the LD code is pretty much unusable. Globals everywhere, fake OOP with ugly shortcuts, last minute patches that became core functions, etc. Also, it’s written entirely in Lua, and performance is probably not excellent. That means I should probably move the computation intensive parts to C (or a C based language such as Objective-C that I happen to know): heightfield generation and altitude interpolation, drawing calls, etc.
Sadly I don’t really know where to put the limit, and I haven’t really experimented yet with C-Lua communication and design. For now my library is mainly a wrapper that makes low-level functions available to Lua, and everything from low-level to logic is in Lua.
Might be an interesting challenge. Might also be one of these things I get sucked into and in which I roam around for ages in technical desperation.
The good things
You mentionned awesome, fun, damn cool, interesting, great visual style, atmosphere, “perfect” music, great feeling of doom.
Mission accomplished. Thank you a billion times.
Stay tuned for a possible remake, and see you during the next LD!

















