LD14 April 17–20, 2009

Bunny Press timelapse

On youtube!

Also, I changed the applet version to allow resetting the level with escape or backspace, but that is NOT the competition version of the game. A link to the competition version is provided on the website.
It’s a shame I forgot to add this during the competition, as it’s fairly easy to get stuck.. :-\

Tags: timelapse

Deathbeam patch

I’ve uploaded a patched version of Deathbeam! It offers a big performance boost, rendering and collision fixes, and tweaked scoring. After I released it I found that it got horribly chuggy on pretty much any computer but the one I developed on (except when I was in OS X… weird).

This should not be considered for voting, of course!

You can get it here:
Windows: deathbeam_p3_win32oo.zip Mac: deathbeam_p3_osx.zip

And Python source is here. If you go that route, I recommend running it with python -OO deathbeam.py.

Stuck?

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.


The theme
Advancing wall of whaa? It is a classic, it was tough finding something original. I tried to mindmap my brainstorming around the theme, but it only confused me more with thhe possibilities. One continuous wall/many separate elements. Rectilign/soft-shaped. You’re the wall/the wall is the enemy. Possible actions again the wall (ie gameplays): run away, slow it down, destroy or damage it, protect yourself, go through it, push it back… After a walk to see the sunrise (woah it’d been ages since I woke up so early that I could see the sunrise…) I had narrowed down to three main ideas. A classic sidescroller where a bunny is chased by a wally cloud of darkness. A space-sim where you control a band of space pirates and have to use linked ships (as a “wall”) to take over other ships and planets. Or (as the sea outside is still frozen) a thing with ice that threatens an island.

I discarded the first one because it implied a lot of content to create, and possibly level design (or randomly generated levels, which might be difficult to make interesting). I discarded the second one (although it would have allowed me to use my cool glowy vector graphics script) because it would have needed too much AI, and I was really not sure of what control scheme to use. And a classic STR “click to select and order” seemed daunting to code. So seals and bears and moving ice. The fact that the wall is not a frontier, but the side of solid matter seemed original enough.

The game mechanics
The base principal was simple: advancing ice, make it melt as it gets closer. Surely I was counting on the “cool, fireballs!” effect, but I’m not sure how fun that is. With the boni it makes it a bit challenging, because the only way to get them is to use the fireballs. If you concentrate too much on getting a bonus, you let the ice get dangerously close, and vice versa: if you just keep melting ice, you never get any bonus.
Here is the important thing: you don’t need the boni, since melting ice is enough to keep you safe. The goal of the game would then be to survive as long as possible.
It took me a while to realise that this was not enough (well my mind was busy with broken geometrics algorithms…) So I needed a winning condition, to do something else than just clicking on some ice forever. Having no time to implement anything radically new (and having no other idea anyway) I just made special boni, that you collect. They are more rare, and you need one of each to complete the game. I made up the pretext later.

The “play until you die” type of game is not my favorite. It seems too “easy” from the designer. Like they didn’t even bother. I think the winning condition turns a toy (even if it’s a complex simulation) into a game: there is another goal than just playing the game per se.

The technology
Deformable wall meant I was in for a treat. Good thing I like geometry. The wall is simply modeled by a sequence of points. It’s not even a closed line, the ends are just outside the screen. This is OK conceptualy, but it made things more complex later on. Especially for the drawing. The two big difficulties were:
– the vertical faces. They needed to be drawn in the correct order, of course (far first, close last). But it requires to deal with a lot of special cases. The algorithm makes a lot of assumptions (notably, the line shouldn’t self intersect).
– the ice top. I thought “easy, just close the line somewhere outside the screen, and call love.polygon()” Myeah right. OpenGL can draw correctly only convex polygons. There was a big moment of panic when I realised the whole game could be ruined by such an stupid thing. I though of doing it otherwise, like abandoning the neat regular side and “paint” the area with sprites. But someone on IRC told me tesselation was not too hard to implement and should take an hour or so. It took a bit more, but I got it running, with the help of mighty google. Then when you think it’s over, you have to revise the algorithm several times for stupid reasons like counter-clockwise polygons and stuff. Also, the tesselation take time (O(N^3) algorithm. Had no time to optimise), so I had to make sure it was computed only when necessary.
By the way, known bug: when the line intersects itself, the polygon is not simple anymore (it’s crossed), and the algo fails. But I tried to optimize the blast radii so that it doesn’t happen too often. I’m proud I managed to avoid losing more time on that.

Add isometric projection on top of that, and you find yourself converting coordinates between screen space and game space all the time. But I like how it worked out. I think it was worth it.

Löve’s particules are full of awesome. Instant fireball gratification. Well, almost instant.

Also, Lua, I’m loving it more and more. Everything is so easy. People criticize its lack of features. I think it’s what makes it so good. Instead of using a specific method of a specific container class for each different purpose, here you can just call the same thing all the time. table.insert, table.remove. Doing things “myself” with just two functions makes me work faster than having to check a class’ interface documentation.

The graphics
All the ice is vector graphics, which is quite easy (once you managed to compute some coordinates). Compute a color depending on an angle, call drawing functions.
The sprites, well. Harder to make. Half was made solely in Inkscape (the boni, the seal island). The rest was handdrawn, photographied, and used a model in Gimp. Working at high resolution slightly masks the horrible mouse drawing. It still took a lot of time.
Also, so much time that I couldn’t draw the bears, while I had them coded. They random walk and stay away from the border of the ice. It’s useless, but it gives life to the game. The seals do the same and random walk while staying close to the center. I didn’t bother to draw them in the z-order by the way, so they might be buggy.

The sound
Sound effects in sfxr. Three clicks, hop, done. It was too late to be more creative.
The music was tracked in Milkytracker, in the XM format. On my computer the render done by Löve (so SDL_mixer) isn’t really nice, but I hope it’s only a problem of performance. Making the music was fun. Heavy use of repetition. Modules for the win.

The wonders of time managment
Here in Europe it started saturday morning at 6. I think it’s close to the optimal solution.
If you sleep before theme announcement, then you have the full saturday with full energy to code. Then a small night sleep, and another full day of awesome, barely tired. And of course you make the final rush last until the deadline.
It’s only 5-7 hours of sleep over compo time, but you’re still at best performance (except in the last hour, where panic makes you slightly unconfortable…).

Compare with starting friday evening: theme announcement, excitement, starting coding, w00ps, it’s 7 in the morning already. Well too late to sleep. Then you continue during saturday, but you lack of sleep makes you do crap. Maybe you consider a nap, and wake up 10 hours later. w00ps.
I mean, if you try the normal sleep schedule, it has two nights on compo time. If you want to skip one, better if it’s at the end.

In total I worked 36h on the game. It has about twice as many lines of code than my previous entry. You can see on this bzawesome graph the repartition of time among categories of tasks. The major time eater was making 3D in vector graphics. I mean, it was so cool to code, but that’s what 3D engines are for.

The conclusion
Ludumdare is hard. Because you have to complete a chalenging technical task (programming) while making sure that the game will be interesting. Programming is easy. It just takes time. Finding a good concept is hard. It doesn’t take time, it takes imagination, cleverness, genius for some. I have absolutely no idea how fun is my game. None whatsoever. What I’m sure of is the performance of my tesselation algorithm, the quality of my vector library, or the extent of their suckiness.
I may know some programming, and some math, it doesn’t make me a good game designer. Actually I realise I don’t play that much. I find most games boring. I’m looking forward to the day when I’ll have an idea and think “Wow, *i* would love to play that game”. That day, I’ll feel like a game designer. In the meantime I’ll train for the developing part, to be competent when I’ll need it.

I’m happy that I managed to make a complete game. From the three ideas I had, this was probably the simplest, gameplaywise. And this is how it should be. Simple means better chances to implement it correctly and have an enjoyable game. I hope.


It was pleasure being around the IRC playing with old memes and following people’s progress. Grade wisely.

See you all next time!

Tags: postmortem

Comments

Simon
22. Apr 2009 · 18:46 UTC
Very interesting post-mortem. Thanks!
23. Apr 2009 · 15:27 UTC
Very insightful :)

Wallcraft Update

http://gamejolt.com/games/wallcraft/files/wallcraft/download/65/92/

 

Changed a couple things that some people in my web design class mentioned.

  • Icons over buildings different colored to make it easier to tell them apart
  • You can now pause by hitting escape
  • Slightly changed the cloud sprite because it was bugging me. 😛
  • Fixed a glitch where holding both arrow keys down would make things move really fast.
  • Magic has a little effect when it hits something and can also very slightly slow the wall.

 The feedback was surprisingly good considering I didn’t even enjoy my own game all that much. People in my web design class gathered around my computer attempting to beat the high score of this one guy who somehow managed to get 2995 points. No one could beat it, and then he beat it again getting 3018 points.

And then, someone on Gamejolt rated my game 1 out of 5. Now, normally I wouldn’t mind (much), but whoever gave the rating didn’t leave a comment with it, which is fine with sites with thousands of people rating every day, but that 1 is my only rating so far, and he didn’t even bother to say why he so disliked my 2 days work. 

Ok, mini rant done. He probably just thought it wasn’t fun, any way… isn’t that why you normally dislike a game?

Oh, am I supposed to say, like, “This patch should not be taken into account when voting yadda yadda yadda,” or something? If so, than the read inside the previous quotes.

Comments

Radix
21. Apr 2009 · 08:14 UTC
Don’t sweat a single bad vote, people only really care about written comments/reviews anyway.

I noticed your description on Gamejolt assumes that people know what LD is, though. If you’re really bothered by it maybe you could update it to mention that the game was only made for a 48-hour compo.

Thanks to allefant: Windows version is done!

http://www.ludumdare.com/compo/2009/04/18/i-hereby-dub-the-spacewalls-final-entry/

Thanks once again!

Comments if it doesn’t work, but it ought to since it does on my machine! 😉 (Fingers x’d.)

Torrent! (for Windows)

I want to tell you a story, a story about something I hate.

“But why,” you ask, “would we want to hear your story?”

I’ll tell you why: do you know what I hate? I hate free hosting services. And so, instead of my daily dose of self-flagellation I decided to download all of the windows-playable LD 14 games, many of which were hosted on places like 2share, rapidshare, getdropbox, etc. This was painful.

But, like any other zealot who has recently undergone such a rugged purificaiton, I have Good News! Instead of jumping through these hoops yourself, you can instead download this:

Torrent of Windows Binaries!

There. Now I’ve taken away your excuse; you have to vote! And, once you’ve voted, please (please!) take the time to seed this for a week or so. I’m only one man, and, more importantly, I’m only one man with a single DSL connection.

*note: Where possible I’ve included whatever each participant marked as “download for windows” or similar. If a downloadable Java or Flash version was provided, I included that instead of the online version. Where no windows binary was available, I included the source code if it was in a language that (might) run on Windows (i.e. python+pygame, Löve, etc.).

**note: Missing from this torrent are: secret_knitter (broken download link), winferno (broken download link), increpare (OS X only), GBGames (Linux only), and eugman (*nix only). Please remember to look these games up and find a way to play them!

***note: URLs for Flash games hosted online but not linked for download are listed in the file “Links to Online Games.html”.

Tags: LD14 - Advancing Wall of Doom, torrent

Comments

20. Apr 2009 · 16:55 UTC
You, Doches, are a true hero. I salute you.
crux
20. Apr 2009 · 16:58 UTC
Awesome! I assume I was too late with my windows version to make the cut & I imagine I’m not the only one… will you be updating this by any chance? :)
20. Apr 2009 · 17:12 UTC
Crux: Alas! I did include your pygame sources, though. I wasn’t planning on updating it, though I may if no one does a more complete binary torrent in a week or so. This one is a little premature; people haven’t had time to finish ports and what-have-you.
20. Apr 2009 · 18:04 UTC
0rel: I didn’t include you because you had a playable Flash version online, but not in downloadable form. I did include a link to that version, in the file “Links to Online Games.html” — which I should probable make a note of.
crux
20. Apr 2009 · 18:05 UTC
No worries, Doches =) Thanks for putting this together!
0rel
20. Apr 2009 · 18:43 UTC
ah okay, that’s fine… just didn’t see it. – currently testing some of the entries, it’s great to have them all together… such amazing load of content, created in just 2 days…. total crazyness =)
athanazio
20. Apr 2009 · 21:53 UTC
me /salute Doches

me /bow Doches
20. Apr 2009 · 22:51 UTC
Downloading now, thank ye sir!
5parrowhawk
20. Apr 2009 · 23:00 UTC
Thanks, Doches! This is awfully convenient.
Radix
21. Apr 2009 · 00:16 UTC
I’m behind the Great Firewall and can’t get to most free filehosts at all, so this is great. It’s just too bad I have to wait for the whole archive to finish.
21. Apr 2009 · 01:41 UTC
0rel: Crap!
secret_knitter
21. Apr 2009 · 18:12 UTC
Secret_knitter apologizes for posting a bad link.
24. Apr 2009 · 01:59 UTC
Doches, no worries on my side! Though Hope is not really an entry, since I posted it after the deadline here. I’ll make it more clear in my post, so no one else makes the mistake.
shawn
17. May 2009 · 12:15 UTC
the link for the torrent is broken

Video for the crashing people

Here’s a little bit of video from the final build, since so many seem to not be able to run it. I tried running this on the various machines I have at my disposal, and they all ran it fine. So i’ll chalk the crashes up to people missing .NET/XNA binaries. Nothing new there :)

Video, lookie!

Locustats and timelapse

Time for timelapse http://www.youtube.com/watch?v=HLFC40lIRA4&fmt=22

and some statistics. This graph shows the frequency of programs I used during the compo:

Tags: statistics, timelapse, video

Comments

20. Apr 2009 · 17:06 UTC
Ok, wow. My internal stats monkey, the one who eats raw numbers and excretes useless data, is ludicrously happy right now. Such a cool idea. How did you keep track, by the way?
20. Apr 2009 · 17:24 UTC
I wrote a simple program for it :)

Evacuation – Bugfixes

In my game I had some problems with gosu’s rendering of tiled graphics. jlnr was so kind as to quickly fix some bugs, so here is my updated LD14 entry:

Download: Evacuation v1.01 (Windows binary + Ruby source code)

Bugfixes include:

  • background and road tiling
  • bunkers no longer getting placed under houses so villagers can’t enter
  • sound glitch when game is won

Bummer, too late for the binaries torrent :(

Tags: bugfix, gosu, post-mortem, ruby

Comments

21. Apr 2009 · 00:10 UTC
I liked the first version so much, I downloaded this :)

tombed update

here‘s a version of tombed with two little changes: the blur is gone and the Z key and spacebar can be used instead of shift.

Tags: post-final

timelapse

Youtube is kinda being strange with it, but here it is anyway :)

Tags: timelapse

Who would have thought…

…that the real Advancing Wall of Doom would be the 121 entries to attempt to rate and leave feedback on in 2 weeks!

As I was thinking about how to schedule this into the next two weeks I thought up some rough stats based on how past compo playing/rating has gone:

  • You should play and rate 8.6 games per day of the two weeks if you want to hit the deadline.
  • If you assume an  average handling time per game of 3 minutes you are looking at 6 hours of just getting the games to the point where you are playing them.
  • If you assume an average playing time per game of 2 minutes you are looking at 4 hours of total play time to get through all the entries.
  • Given the average handling and playing times above you could earmark about 45 minutes of LD time per day for two weeks to finish on time.

Phew.. well, I better get cracking.  I must admit I haven’t had much of a chance to play more than a few so far.  The rating and feedback is so important though.  I know I really appreciate the time people put into playing and leaving thoughts on my game so I try and do the same.

Great compo everyone!  I can’t wait to see what everyone created…

Tags: doom, feedback, omg, ratings, record, stats

Tit for tat. How does that sound?

Ok, there are soo many entries. Here is my pledge: I will try to rate,at minimum, as many games as I get ratings. So right now I’ve been rated twice and I’ve rated 3 games. There’s no way I’m going to get to everything but I think this way I won’t feel guilty about being a vote drain. Of course my game only runs on *nix so that limits how many ratings I can get anyways.

Comments

Radix
21. Apr 2009 · 00:04 UTC
I was planning to do the same. I’ve got this week off work though so I’ll probably end up doing a lot more.
sol_hsa
21. Apr 2009 · 00:53 UTC
My technique for rating is:

1. Play all games.

2. Play all games again, giving ratings.
21. Apr 2009 · 03:58 UTC
I’m going to play every game and write a comment to every one.
hroon
21. Apr 2009 · 13:15 UTC
I’ll start rating when I played all entries, which might take a while – I have planed next saturday for this. Otherwise I would never be able to bring myself to give the top rating in any category, because there could be something even better down the line :)
Osgeld
21. Apr 2009 · 17:16 UTC
Im making a list of *nix games, im doing the windows ones first cause i cant stand being in windows much, then ill go back and do the python / nix games

extreMine

extreMine

Yet another mutant  mine game.

There’s nothing different from a normal one, except the boundaries keep getting shrinked during playing, and you can detonate the mine.

(I’d love to tweak it some more,  but I really have to get a sleep…)

Engine: BlitzMax (http://www.blitzbasic.com)

Tools: Photoshop,   DrPetter’s sfxr

Downloads:

Windows binary: http://www.indie-g.com/extremine.zip

Source & Resource: http://www.indie-g.com/extreminesrc.zip

Sorry for not giving explaination.

The gameplay is actually quite different from old minegame. In fact, you don’t have to find out all mines.
What you do in this game is:

1.  left Click to open tile. If it’s a mine, it explodes and hurt your HP.

2.  right Click to MARK/UnMark known mines. You can also Drag with Right Mouse Button to mark tiles continously.
Marker number is limited. When you mark some tile, your marker number decreases. When you unmark, it will recover.

3.  leftClick/midClick on the tile around which there are right number of marks.    This action will open all the 8 tiles around.  At this point:
* The right marked mine will explode without hurting you.
* The wrong marked mine will explode and hurt you.
*If there is no wrong mark, your marker number will get recovered plus some bonus.

4.  When all mines get cleared or marked, you win.

5.  When there’s no empty tile remaining, you lose.

6.  When HP is 0, you lose.  (For 5 times wrong explosion)

7. Mines which is in shrinked tile will try to move inside. But if it’s marked it will explode (marker will not recover).

Good luck, Good morning, and Good night to everyone.
Happy LDing.

Tags: final

Faking artistic competence?

Fellow LDers,

I can barely draw a circle, let alone cool monster or robot sprites. I’d like my next LD entry to involve real artwork, rather than just letters and geometric shapes. I don’t expect to ever see my creations hanging on a wall in a museum. But if I need a trash can in my game, I’d like to be able to spend a couple hours in a paint app and end up with something that looks like a trash can, rather than a gray rectangle with vertical lines.

Do any of you know of books or websites whose specific goal is to teach geek coders how to draw simple iconic artwork? If so, I’d appreciate your recommendation.

By the way, if you believe this is an unattainable goal (“it’s a gift — either you have it or you don’t”), or that I’m asking the wrong question, I’d still appreciate hearing what you have to say. I know that people who don’t have the “gift” of computer programming are nonetheless competent professional software developers after being taught how to program, so I hope the same is true with art.

Please help me learn how to learn (or maybe just fake) artistic competence!

Comments

21. Apr 2009 · 00:44 UTC
One of the most wisest pieces of knowledge told to me by my fifth grade teacher was that if you try to make something look straight, people will see the crookedness. But if you make it crooked on purpose, no one notice there is anything is wrong.
sol_hsa
21. Apr 2009 · 00:58 UTC
I’m not claiming to be an artist by any scale, but here’s my few hints.
5parrowhawk
21. Apr 2009 · 01:15 UTC
Light-sourcing works wonders, and doesn’t require much artistic skill. If you’ve ever worked with 3D before, it should be intuitive.
21. Apr 2009 · 05:00 UTC
Yeah, I don’t buy in to the “gift” angle. But like anything, it takes work. Doing it (crappy results and all), and looking at stuff (trying to understand it) is how you get better. Pick up a sketchbook, grab a pencil, and start doing.
21. Apr 2009 · 07:46 UTC
I firmly believe that anyone can learn to draw just like any other skill out there. I think a lot comes down to the fact that we tend to spend more time on things that we like to do or have found a drive for or that our parents may have noticed and encouraged from a young age. This time spent practicing builds our skills over time.
21. Apr 2009 · 07:49 UTC
Oh yeah.. the title of this post reminded me of a great quip:
0rel
21. Apr 2009 · 07:54 UTC
some lazy, but fun techniques using free graphics software could help, maybe:
0rel
21. Apr 2009 · 07:55 UTC
oops
0rel
21. Apr 2009 · 08:51 UTC
(hmm, other post wasn’t display. markup errors or something…)
21. Apr 2009 · 09:27 UTC
My suggestion is a little expensive… Forget about drawing with the mouse and get yourself a graphics tablet. I bought the smallest Intuos3 tablet from Wacom on Ebay for a little over $100. Using it in the GIMP, it lets me create my own smooth style. That alone is all I needed to make art that looks (nearly) as good as production indie titles. Of course, the Linux drivers aren’t so hot… grrr…
robot_guy
21. Apr 2009 · 09:39 UTC
If you’re more a programmer than a drawer and you have a reasonable grasp on the way shapes can be put together but can’t actually put them down on paper (or screen) you could go the route that I went and use PovRay. This is a 3D rendering tool that uses a text description rather than a GUI tool to describe the objects / image and therefore I feel fits better with people that program rather than draw.
Hempuli
21. Apr 2009 · 11:08 UTC
It annoys me that I can’t draw on computer like I draw on paper. Tablets aren’t very good imitations, sadly. :(
sowbug
21. Apr 2009 · 14:09 UTC
Hey everyone,
jovoc
21. Apr 2009 · 15:00 UTC
Thanks! Glad you liked the article. And I know what you mean about people whose brilliant doodles look effortless — but you find out that’s really because they’ve been doodling since they could hold a crayon.
ArmchairArmada
21. Apr 2009 · 19:06 UTC
I have always been an ok artist, but recently I discovered a few simple principles that have helped me to grow a little. Here they are:

* Don’t worry about technique. How you’re creating the art does not matter as much as what it looks like.

* Don’t worry about being messy. Draw quick and rough with the forms, proportions, and perspectives of the drawing in mind. Lines can be cleaned up later on a computer, with a light-table, or, if the rough drawing is light, on the same page.

* Don’t think, feel. Does what you are drawing feel right when you look at it? Does it provoke the emotional reaction you are trying to achieve?

* Be progressive. Only a few artists can go directly from a blank page to an awesome drawing. Instead, gradually make changes bringing a drawing closer and closer to being visually appealing.

* Stay in motion. Do not focus too deeply on any one part of the page. If you go in close to try to draw ‘the perfect hand,’ for example, you might find that it is too small compared to the rest of the character’s proportions. Jump around all over the place starting rough and loose then work towards refining and adding detail.

* Keep the big picture in mind. When you start a drawing it might be best to rough in basic shapes (rectangles, circles, amorphous blobs, etc.) just to get a feel for the layout and proportions of the drawing’s elements.

* Warm up. I find that the first thing I draw usually looks terrible. Quickly get a few rough drawings out before trying to tackle a more serious one.

* Have fun. If you are stressed out about how your drawing looks it will appear stiff, awkward, and unnatural. If you are simply having fun, though, your drawings will more likely be appealing, dynamic, and pleasurable to look at.

* Go easy on yourself. People tend to judge themselves more harshly than other people would. Artists can look at their own work and see hundreds of flaws, where other people will likely never notice.

* Learn with each drawing. Take notice of what can be improved in a drawing and try not to make the same mistakes again. This may seem to contradict a lot of what I previously said, but improvements can only be made if you know what to try to improve at.
23. Apr 2009 · 13:35 UTC
To expand a little and cover Hempuli’s problem…

If you have a graphics tablet, you can draw your figures by hand on some paper, then just plop that down on your tablet and trace it into your PC.
24. Apr 2009 · 01:52 UTC
You should watch Cactus’ talk at IGS. Here’s a torrent: