Join #ludumdare on irc.afternet.org
Mini LD #3 :: September 5th-7th Weekend :: Theme :: Tool

Sign In | Write your Journal
Home | Planet Ludum | Rules Wiki | Mailing List

Ludum Dare 12 Final Results NOW AVAILABLE

Click HERE for the Ludum Dare 12 entries image grid
(to be included in the image grid, you must upload an image to the blog)

mjau's Archive

Fellow Kitty Award
Awarded by fydo on December 19, 2007
Porting Excellence Award of Sound
Awarded by allefant on December 15, 2007

Wall of text!

Posted by mjau
Saturday, September 6th, 2008

My first thought when I saw what the theme would be for this MiniLD was, this is the perfect chance to finally start making that pixel/paint program I’ve been meaning to do for literally half a decade! So far I’ve gotten by with Gimp, but I really don’t like its interface, and it’s pretty obvious it wasn’t made with pixel art in mind at all, among other things. Its tablet handling is also buggy, though to be fair that’s actually a GTK issue. (On the other hand, GTK was made for Gimp, so, uh.)

Anyway, a gfx editor needs an interface. This is part of the reason it’s been delayed for so long, there just hasn’t been any cross-platform interface lib that I’ve been satisfied with, and apart from GTK’s buggy support I haven’t found any cross-platform tablet libs either. Tablet support isn’t exactly essential for a pixel editor, but if I put that in it wouldn’t be just for pixels. And it doesn’t have to be cross-platform, the Linux tablet evdev interface is pretty easy to use (or was, until Xorg started blocking it), but it’d be nice. Still, I’ve made some half-hearted false starts on a tablet-less version using a custom interface in SDL, but SDL is also limited to one window, which is really not that big of a deal either, but still, multi-window support would be nice.

While these things shouldn’t have prevented me from getting it done, they have been.. irksome. Which bothers me. That’s the problem with being a perfectionist, if you want something to be perfect the first time around you’ll never actually get anything done. But! I’ve been getting slightly better at avoiding that problem, not least of which thanks to Ludum Dare and some other game compos. If you’ve seen some of my entries you know what I mean =)

Also, SDL 1.3 has been getting to a usable state lately. It’s still in development, but it supports multiple windows and pressure-sensitive tablets, and it’s cross-platform. This kinda leaves my excuses baseless.

In short, it’s time to make this thing.

It still needs that interface, though! I actually started working on a simple library for that earlier this week with the intention of getting it done and ready to be used before the compo started, so that I could use it for my tool and maybe others could, too. While that didn’t happen, I did get some things done, and I like how it’s turning out. It’s based on SDL 1.3, using Lua for the interface. You can do stuff like this:

    Frame {
        w = 100,
        h = 100,
        Button {
            label = "Click",
            onclick = function () print "whee" end
        },
    }

But it also supports a kind of hybrid immediate mode!

    if Button{ x=10, y=5, label="Click" }.clicked then
        print "hurray"
    end

I say hybrid because I’m not sure it could be called a true IMGUI, since some things like drawing are really delayed actions (though it happens behind the scenes, so you usually don’t have to care about this). This way immediate and retained mode can be freely mixed, so you could eg. have immediate-mode stuff inside a retained-mode frame’s onhover handler, and it’d all combine seamlessly.

I call it “SIF 2″ for now, but that might change. (If you’re wondering about SIF 1, that’s an ancient project that never really got anywhere. I guess I could just call it SIF. Or probably something completely different.)

Anyway, it’s not quite ready for use yet, so now I’ve got to decide what I want to do for this MiniLD! Do I keep working on the interface lib, even though that means I cheated by starting way before the deadline? Or, do I make some other tool without using the interface lib, so I can keep it within the 48 hours? I do have an idea for another very simple tool that could possibly be slightly useful. Decisions..

owls and ends

Posted by mjau
Sunday, August 10th, 2008

The little guy can run around and jump on stuff now, and I think I’ve got the jumping physics down. It’s actually a little bit fun just jumping around the screen. So that’s good. The engine is all Lua, with only a little bit C to glue into SDL and that, which is also nice.

The bad news is I’m about to throw in the towel. There’s less than 4 hours left, and the game doesn’t even have all the elements or logic for them, let alone any levels. What gfx there is are stubs, and there’s no sound. I’m also feeling like crap at the moment, all dizzy and my head seems to be throbbing for some reason. If it wasn’t for that last part I’d still give it a try, but I’m honestly having trouble just typing this right now.

Looking forward to play the other games, though. There’s some great stuff here.

The excitement never ends!

Posted by mjau
Sunday, August 10th, 2008

Hey, kids! Here’s some stuff I’ve eaten lately. Yesterday, I ate this (this was some time before going to sneak about in towers):

This was my breakfast today:

And I just ate this (while watching some Star Trek with a friend):

In other news, the game is very slowly coming along. I somewhat doubt it’ll be done in time, but hey.

Intense action!

Posted by mjau
Sunday, August 10th, 2008

I’ve finally started!

Doesn’t look like much at the moment, but at least I’ve got something now.

The other entries here are looking great btw.

in which nothing happens

Posted by mjau
Saturday, August 9th, 2008

Three journal posts so far, and still I haven’t started working on anything at all! Boy this is exciting. (I was just too tired after yesterday, so I went to bed in stead.)

19 hours left? I’ll have to scrap my original idea, but I’ll try to come up with something, at least. Maybe.

Towers and Tall Ships

Posted by mjau
Saturday, August 9th, 2008

I just spent a day not working on Ludum Dare entries again (aside from the brief foray into löve fiascos)! This time me and a friend had a real life adventure involving tunnels, towers, tall ships, thousands of people, pirates on stilts, some ice cream mocca thing, and music, including caribbean, jazz, music boxes, sea shanties, and musical air strike sirens.

Unfortunately my camera’s battery went out just as I was approaching the tower, so there’s not much to show. My friend’s camera worked fine, but that memory card is apparently incompatible with my card reader. Oh well.

Anyway. Here’s a tunnel!

It had these totally ancient cave paintings in it.

The tunnel eventually led us to the vicinity of the Rosenkrantz Tower!

Its oldest parts are from the 13th century, and it’s completely filled with cramped passages and endless spiral staircases. The roof had a magnificent view of the aforementioned tall ships and masses of people, which you’ll have to imagine since my camera went out. You can see a mast or two in the above picture though.

Now. Should I start coding? Hm.

no love / linux timelapse howto

Posted by mjau
Saturday, August 9th, 2008

The story so far:

no love

Woke up early today at 06:15 CEST (which is unusual..), but haven’t really done anything since then, except having some more or less vague ideas about what I’m going to make. For the code part I was planning to do it entirely in Lua, using the löve game box thing. I’ve briefly looked at löve once before, but discarded it then because it was missing a few features I’d like (such as fixed timestep). For some reason I thought I’d actually give it a chance though, and what better time to try out new things than during Ludum Dare? It does seem to have some nice parts, and assuming I could get it to work it’d save a fair bunch of engine coding in favour of actual game development. So, that’s what I’ve mostly been fiddling around with for these past few hours since I woke up.

I won’t be using it, though. I do like parts of it, and some annoyances are bearable or can be worked around (fixed timestep can at least be approximated, with some slight drift), but there’s some serious issues that can’t be overlooked. For example, I can’t get it to load any png images (”png library error”), and the love executable sometimes segfaults on exit.

Also, I get the impression this isn’t actually intended to use for stand-alone games(?). I couldn’t find any way to get it to autorun a game on start, you have to pass the .love file or directory as a command line parameter. A bat/shell script easily fixes that, but eh. Also, there’s a ton of dependencies, so packaging the final entry would be pretty involved for the Linux version at least (though they do provide Windows binaries).

I’ll just have to code up some Lua game engine myself then, won’t I =].  I’ll begin work on that in a little bit I guess..


recording a timelapse in linux

This comes a little bit late perhaps, but people always ask about this, so.. To record a timelapse in Linux, first get scrot for capturing screendumps (some distros have a package for it). You can use some other screen capturing tool if you really want to, but scrot can capture screendumps without annoyingly freezing the screen like many other screen capture tools seems to do for some reason. Then just run that every x seconds with some shell scripting. Make a directory somewhere with a couple gigabytes free space, enter it, and run this (every 30 sec here):

while true; do scrot; sleep 30; done

Hit ctrl+c to stop it when you’re done. Now you’ve got a directory filled with lots of huge image files, which you probably want to combine into a video somehow. Er, I apparently lost my script for that, but the mencoder man page should be helpful =]

Trivial Escape from Minimalist Island Timelapse

Posted by mjau
Monday, April 21st, 2008

Here’s a timelapse for my game. Watch me repeatedly fail to draw stuff, write big chunks of code that was later thrown out, and also try to make music that I decided to not put into the game! (The music just didn’t fit at all. I extended it a bit and used it in this video in stead)

Contains spoilers obviously, so play the game before watching =)

Oh, and I noticed the counter shows -1:39:49 at the end of the video. I did go a few minutes overtime (mostly upload issues though, also I started way late so please go easy on that =]), but only by a minute or two. There was a bug in the counter that caused it to count wrong when it went past the deadline. (Also, the time skips when the sleep window pops up as my PC was off then.)

Trivial Escape from Minimalist Island

Posted by mjau
Sunday, April 20th, 2008

Trivial Escape from Minimalist Island

Windows exe + source (compo version; if it crashes, get the post- compo zip below)

Windows exe + source (trivial post-compo fix edition, see below)

Timelapse video

Updated with a fix version above. The game would crash if run at a bit depth lower than 24bpp, use the fix version if it does! The fix also removes a comma from brygge-s.lua to fix a copy/paste bug that prevented turning around/right when looking away from the wharf, this isn’t required to beat the game or even much noticeable though.

Tools used: kate (text), gimp (graphics), sfxr (sound)

Libraries used: SDL, SDL_image (png), SDL_mixer (ogg vorbis), Lua

Burger time

Posted by mjau
Sunday, April 20th, 2008

Game is progressing, but very slowly.. Spending too much time fiddling with details.

I ate some stuff again in the hope that some energy will be beneficial:

burgers.jpg

Also ate a banana earlier. It’s important that you know these things.

Progress

Posted by mjau
Sunday, April 20th, 2008

Woke up today, ate some food:

frokost.jpg

Got some cola here too, but unfortunately the floor decided to take a sizeable portion of it.

Anyway, I finally got the engine done now! No new screenshot since it looks the same as before, but now I can easily add screens simply by making a new png for the graphics and a lua script to link it to stuff. Time for content creation..

Also, maybe some sound. I’ve got some samples that would be perfect for ambience, but I probably can’t use those since they weren’t created during the compo (or by me, even). Guess I’ll have to try to make something.

Adventure?

Posted by mjau
Saturday, April 19th, 2008

sshot.png

I spent way too long getting this to work..  Need sleep now.

Minimalist game development!

Posted by mjau
Saturday, April 19th, 2008

So, Ludum Dare! Woke up a bit late today and had some breakfast to prepare for the compo while I chewed on the theme a bit. (Also this.)

leverpostei.jpg

Then a friend of mine called and wanted to go on a mountain trip. I needed to think some more about the LD theme anyway, and what better way to get the brain working than to starve it on oxygen by breathing much thinner air? Seemed like a good idea, so off we went.

Ate some Rislunsj first, though. This is Rislunsj:

rislunsj.jpg

(My food started floating about in the air at this point, not exactly sure why.)

Then we walked on said mountain for a while, and I took lots of pictures (mainly of trees), since I thought there might be a remote possibility that they could come in handy for the compo.

Anyway, at some point we decided it was time to eat something. My friend brought a portable stove and we cooked this on it:

gryterett.jpg

Unfortunately we used all our water for the food, but miraculously we found we’d brought something else to drink, seen here posing in the scenery:

urge.jpg

My friend had a Solo. Afterwards, some chocolate:

sjokolade.jpg

Then we went back down again.

And that was my day! Man, with all this hard work my game will surely be way beyond awesome. The product of dreams.

Cubetendo

Posted by mjau
Sunday, February 24th, 2008

Bit of a late entry for me, but oh well, here it is anyway:

Cubetendo

Download: cubetendo.zip (Updated with trivial fix for ATI cards)

Windows exe and source code included (compiles in Linux). Requires OpenGL 2.0. If it crashes, try running it from a console (updated the zip with a bat file that does this).

Cube in GB-land

Posted by mjau
Saturday, February 23rd, 2008

Decided to try to do something in 3D for pretty much the first time this Ludum Dare (other than some very basic tests and such). Here’s what I’ve got so far:

Cube in GB-land

Just needs some gameplay now..

Another Pelly

Posted by mjau
Sunday, December 30th, 2007

Since people are posting pellies, here’s the one I made last night:

(slightly tweaked)

Shrapnel Post-Mortem (+ timelapse!)

Posted by mjau
Saturday, December 29th, 2007

This was my fifth Ludum Dare (including 8.5). Before this compo I went through all my previous LD entries and wrote some small post-mortems for them, and looking back, I’ve never been particularly good at handing in finished entries for these compos. I think maybe the first one I entered (7) resulted in the most complete game. That one (which I named Pathmania: Way of the Jelly for some reason, I think it was supposed to be some obscure joke) left a few things to be desired, but it had a title screen, several levels, a random level generator and even a level editor! Shrapnel has one thing it didn’t have, though: Sound =)

Libraries and tools

I used the SDL, SDL_image and SDL_mixer libraries (which in turn uses some libs for decoding png and ogg vorbis), the rest was written from scratch during the compo. All work was done in Linux, using the KDE desktop with 4 virtual desktops. Tools I used was:

  • kate: Text editor. The split view feature is great!
  • gcc: Compiler and cross-compiler.
  • gimp: Graphics. I always use several views of the same image when making pixel graphics, this time was no exception — one for 1x, sometimes one for 2x, and one for 8x or 16x. Sometimes I use a mouse, sometimes tablet, this time I mostly used a tablet.
  • sfxr: DrPetter’s sound effect generator we all know and love. I used the SDL port which I ported myself during the compo =)
  • pxtone: Pixel’s music editor (v 0.8.3.4).

Other things:

  • xchat 2 and firefox: Internet distractions =)
  • amarok: Music player. Tuned to Nectarine during the compo =)
  • scrot: Screenshot utility, to take screenshots for the timelapse video. Worked really well, I didn’t notice it at all.

General

I had those previous half-finished entries I mentioned in mind as I started out, and simplified a few things right away. For example, I’ve traditionally used libpng directly for loading images in stead of simply using SDL_image. There’s a few reasons for this, but most of them have usually been irrelevant for my LD entries anyway, and SDL_image is a lot quicker to use than libpng. You just call one function to load your SDL_Surface from a file and that’s it.

So for this compo, I did what I should’ve done all along and went the quick and simple way, using the SDL, SDL_image and SDL_mixer libs. I think that worked out well, it took almost no time at all to set up the traditional black window with an event loop, and some image loading capabilities for good measure. I added sound later on, which was also very quick and simple. I still made the game in plain C, but I did some header magic to autogenerate loading and unloading code for resources, setting defines and including the header several times in the file that should get the handling code. This way I didn’t have to worry about either spreading things out in several places or making some fancy resource management system, just put the resource IDs and filenames in one place, and the resource is instantly available for use with that ID. I’ve done similar things in some earlier LDs, and while the headers can look a bit hairy it works really well =)

The result: Less fiddling with technical fluff, more time to work on the actual game. This was a very good thing, since I worked horribly slow and inefficiently during the entire compo and could use all the time I got. I also had major trouble getting to sleep during the compo, which didn’t exactly help (that happens sometimes, compo or not .. I’ve tried several variants of sleeping pills before, but none actually work on me for some reason). So, I ended up wasting more hours just lying in bed trying to sleep, during the night, than I spent actually sleeping, which ended up being during the day. Ugh.

I also spent some time porting DrPetter’s sfxr tool to SDL and Linux, since the Windows version had some issues when I ran it in Wine, and I was determined that for this Ludum Dare, I would have sound in my game or die trying. The porting work was done entirely during the compo, so that “wasted” some time too, though I don’t really see that as a waste of time since I ended up using the port to make some really nice sounds that I feel add a lot to the game. Similarly, the time I actually spent sleeping, eating and going outside for some air was time well spent, I doubt locking myself in the room for a 48 hour marathon would’ve resulted in a better game. On the other hand I could’ve really used some of that time to make more and better levels. The short and crappy levels are, I think, Shrapnel’s most major flaw.

What went right

Well, I made a playable game, and I think it’s kinda fun despite its many flaws =)

The food I ate during the compo was great, probably the best I’ve had during a Ludum Dare so far. One of my flatmates made us lots of delicious food =)

I kinda like the graphics, too. It’s not amazing by any means, and the ship designs are perhaps somewhat uninspired standard fare, but at least they’re not plain ugly =). The graphics was made in Gimp with my tablet. Before the compo started I had some serious issues with the tablet in Gimp, so I was afraid I wouldn’t be able to use it. Gimp would freeze, crash, make all tools behave like the “move layer” tool, and generally misbehave in any number of ways. Thankfully these issues magically disappeared the day before the compo started when I compiled GTK and Gimp from source and installed that in stead of using the distro’s packages.

The sound effects are great, which I have DrPetter’s sfxr tool to thank for. The time spent porting it to SDL was time well spent in that regard =)

I also like the music, which I made with pxtone (pxtone works well in Wine as long as you touch .ptcop files before saving them, since only overwrite works). I was equally determined to get some music in the game as I was about the sound in general, but initially I didn’t have any musical inspiration at all. I tried to make some tunes, but everything I did sounded like crap (specially since I don’t really know any musical theory, it can be a bit hit or miss). I was ready to give up and continue making the game — this was during the last hours of the compo, there wasn’t much time left and I really should be spending time on more important things than trying to make music — and even switched over to the code desktop, ready to do some coding again, when the whole tune suddenly popped into my mind out of nowhere. So, I switched back to pxtone and, according to the timelapse images I’ve got of my desktop, the primary and secondary voice was basically complete in literally three minutes for the first half, four more for the second half, note for note what you hear in the final tune apart from some minor tweaks I did later. That includes time for listening to it a bunch. It was so weird! I did spend some more time with it later, added the drums and such (and made the ingame background thing), but the whole thing was done pretty quickly. Most of what you can see of the pxtone window in the timelapse video (below) is actually rejected tunes, listening to it, and doing and undoing small insignificant tweaks =)

What went wrong

I already mentioned a bunch under General, so I’ll skip that here.

By far the two biggest complaints I’ve seen about my game in the comments have been that the game is too short, and that there’s not much connection to the chain reaction theme, and both of those are really at least partly because of the levels, or lack of, and their design. Actually calling it “level design” is a bit of a stretch since I didn’t really put much thought into their design at all, there wasn’t enough time. They were literally thrown together at the last minute. For the next compo I really need to set off some time for level design, or make some game where level design isn’t so important.

There really are chain reactions in the game, I made the game with the idea in mind from the start — when you kill enemies, they send out shots that kill any other enemies they hit (or you!), which again sends shots when they die to kill yet more enemies, and so on — it’s just not very apparent that they’re there since the level design I mentioned doesn’t really take advantage of the fact at all, except perhaps for this one place. So, there’s not often you actually see chain reactions happening unless you’re both lucky and work really hard at making some. Originally I wanted to have a bit more advanced enemy behavior too, with them floating around the screen for a while before going on, going both left and right and upwards in addition to just down, so that you had to choose both where and when to shoot to make the most chain reactions possible. I’m sorry I didn’t get around to that, because I think that that would definitely have been a much better game. However, that would also have required good level design, and even with the current enemies I think that some decent level design, levels to really set up potential chain reactions, could have had an impact.

Also, the scoring system could use some work perhaps, but the effect the chain reactions have on the score isn’t really obvious in any case (see next section). There should have been some visual feedback when combos happen and such, or at least a mention in the readme in the slim chance that someone should happen to read it.

There’s also a few bugs that slipped through. The most apparent one is probably that the last level sometimes ends before you get a chance to kill the last few enemies, so you win the game with enemies still firing shots at you =). Another bug is that the Alt test when pressing Alt-Enter for fullscreen doesn’t actually work, so you go into fullscreen just by pressing Enter without Alt. Maybe that’s a good thing though, since the fullscreen toggle is undocumented and it’s easier for people to accidentally discover it that way =)

Another undocumented feature is the joystick support. I wonder if someone used it?

Last words

Overall, I think I’m going to call the game at least a partial success. I didn’t get done nearly as much as I wanted to or even could have had I been more efficient, and the levels are a huge detractor, but it’s still kinda fun to play, and I like it =)

By the way, it actually is possible to take advantage of the chain reactions for higher scores if you’re just aware of the scoring system =). I think my record is around 11800 or so.

First, you lose one point for every shot you fire, so if you want high scores it’s in your best interest to not just keep firing, but choose somewhat more carefully where and when to fire.. like a bleak shadow of the original intent with the smarter enemies, heh. You only score 1x the points for each enemy you kill yourself, but enemies killed by the death fire of other enemies get a combo multiplier — 2x for the first one, 3x for the next, and so on. Score is also multiplied by the current level number.

Or, if scoring’s not your thing, you can also try to beat the game by not firing a single shot =)

Timelapse

Finally, here’s a timelapse video of my desktop during the compo. I turned off the computer when I went to sleep, since it’s a bit noisy and is in the same room as my bed, so it’s broken into three parts. I use four virtual desktops, you can see which one I’m in in the little indicator at the taskbar if you look closely. During the compo I used the top left mostly for code (kate), top right for graphics (gimp), bottom left for IRC (xchat2) and internet (firefox), and bottom right for sound (sfxr) and music (pxtone) and sfxr porting =) (except for day one, when sfxr porting was done in the top left desktop).

There’s one screenshot for every 30 seconds at 30 fps. I used scrot in a shell script loop to take the screenshots in the background during the compo, and then mencoder to combine them into this video.

Hm, looking at this I seem to be doing a lot more work than I actually did. Like I said, inefficient..

30 minute drawing compo entry: Running out of time: Clock thing in the desert

Posted by mjau
Tuesday, December 18th, 2007

Running out of time: Clock thing in the desert

(click for full size)

Made in Gimp with a tablet. First time I’ve used the smudge tool, went a bit crazy with it =)

Shrapnel: sound latency fix

Posted by mjau
Tuesday, December 18th, 2007

For everyone who was having issues with huge sound latencies in Windows, here’s an updated zip that should fix the issue:

[ shrapnel-ld-c.zip ]

The only changes in that zip from the compo version is that I rebuilt the executable without debug info and with optimization (no code changes), removed svn files to make the zip smaller, and replaced the buggy SDL.dll I was using with a good one from libsdl.org.

I’ll probably write a postmortem in a few days.

Shrapnel: Final entry

Posted by mjau
Sunday, December 16th, 2007

Shrapnel!

mjau-ld10-5.png

Downloads (both have windows exe + source code and Linux makefile):

Uses SDL, SDL_mixer and SDL_image. I used kate for code/text, gimp for graphics, sfxr for sound effects (thanks DrPetter!), and pxtone to make music.

If the Linux version crashes when you run it on 32-bit x86, use this SDL library (contains a fix for a bug in SDL_SoftStretch)

Edit: Figured out the Windows sound latency issue! Seems the SDL.dll I used was buggy. Replacing it with one from libsdl.org fixes things.

Chain reactions! Explosions!

Posted by mjau
Sunday, December 16th, 2007

Yay! Chain reactions work now. Also, explosions!

mjau-ld10-4.png

The explosion gfx is a bit square perhaps, but I spent way too much time on it already and time is running short, so it’ll have to stay as is for now I guess.

Next: Levels! The game is actually sort of playable now, but everything just sits there. The game needs levels that scroll, making new enemies enter and stuff.

Skolebolle!

Posted by mjau
Sunday, December 16th, 2007

My flatmate is at it again, making delicious foodstuffs:

dscn0213.jpg

Fresh baked skolebolle.  Mmm =)

Bullet hell

Posted by mjau
Sunday, December 16th, 2007

Progress! Finished the first few points of the todo list. Also, enemies can now have their own update/AI function to do stuff, such as shooting at you.

mjau-ld10-3.png

Hm, perhaps I should reduce the amount of shots a tad..

I see stars

Posted by mjau
Sunday, December 16th, 2007

Food did indeed help. Then I coded up a scrolling starfield!

mjau-ld10-2.png

Things left to do:

  • Make sprite code support several frames per image (makes some later things easier)
  • Make more angles for shots and enemy shots
  • Make collisions work
  • Chain reactions
  • Make more enemies, maybe some powerups and such too
  • Make levels
  • Scoring
  • Sounds and music
  • Title screen and obligatory scroller

I think that’s doable in the time I’ve got left. I hope.


All posts, images, and comments are owned by their creators.