Ludum Dare 17
Ludum Dare 15
The 'You live near me, here in Austria' Award
Awarded by Folis
on October 22, 2010
Double Sonic Device
Awarded by Hamumu
on December 5, 2007
Final Fighting Medallion
Awarded by Hamumu
on December 3, 2007
I ran bbfreeze on the main python script, so should work in windows by simply double clicking the owl.exe (also contains the source, so i replaced the previous link in my final post as well): http://allefant.googlepages.com/OwlbyAllefantsourceandwin32.zip
And I managed to encode and upload a gameplay video i made yesterday while half asleep: http://www.youtube.com/watch?v=hWRXimhigvk
(removed embedded link as that seems to be an admin-only feature of wordpress (?))
[updated with bbfreeze link instead of just sources]
Here is the final entry: http://allefant.googlepages.com/OwlbyAllefantsourceandwin32.zip
It should contain now an “owl.exe” which supposedly will work without python/pygame/pyopengl. It’s made using bbfreeze. No idea if it actually works. If you have the three dependencies, then running run.py should work instead.
Not really done, but I’m too tired to do anything anymore. It’s possible to reach the top, just recorded a video of it, will post it later. It’s way too hard/tedious in any case. In the end, I wasted too much time on little things (like getting the 3d-wrap-around done) and spent way too little time on the actual gameplay and level design. Oh well, still was lots of fun, I coded more-or-less non-stop
Oh, nice comments.. editing here as a reply. A few things:
If you run into a cat while carrying a block, it will respawn at its original position. So you can always get the map back to its original state.. just can be somewhat tedious
The tunnel cat jump is rather easy, harder jumps are waiting further up. The three mice below it should give you a hint about the solution
If you don’t want to repeat the two times of tedious block-building in the beginning, open up “data/The Tower.txt” in a text editor, then find the “P” in line 79 (and don’t ready any lines below to avoid spoilers :P), and replace it with a “.”. Then go to line 30 or wherever you want and replace a “.” by a “P” After tunnel cat some more difficult jumps and two less tedious blocks puzzles await, so if you actually played until up there, it might be worth it
Things are going slow. Now there’s a.. cylinder in the middle of the tower. So well, I must do a lot fast from now on.
Anyway, need some sleep first. And food.. which is cooking right now.. and now done and photographed. Some kind of noodles and the last rest of coca cola which was still left in the bottle. And the small animal normally sitting on top of my computer wanted to be in the picture as well.
And my final food pic which I moved from the final post to here, so it won’t show in the grid:
Well. With no idea after 12 hours, I finally decided what to do:
You play an owl, and start at the bottom of The Tower. Then you have to jump up all the way to the top of The Tower. What I got so far is:
- A blue screen, and an Owl made out of a few colored GL_TRIANGLE_FAN and a few GL_LINE_LOOP.
What I need to do next:
- Make vector-brick tiles for the tower.
- Draw a monster (kittens).
- Code (display of level geometry, platformer controls, collision detection, monster behavior)
- Draw a level (The Tower).
Optional, if I have time left:
- Animate owl and kitten.
- Some extra tiles besides the brick.
Didn’t spend much time, and also had no idea.. thought I still put up what I got: here
It needs python, pygame and pyopengl to run (..hm, for the real LD, I have to find someone who can make me a py2exe and py2app version of my entry). You can run until you touch the turnip if you want, but nothing will happen even then. Except for the unicorn, it also totally fails the theme and at no point I was even close to an idea
The good things about this mini LD for me though were, I think I know now how I could easily do one of those motocross games.. just need to use 2 or 3 collision circles instead of a single point as I did here, and some spring forces between. Also, I was surprised how easy it was to read SVG files – took me a total of 5 minutes to develop loader code for it (first few lines of line.py).
Requires pygame and pyopengl.
If someone with Windows could create a py2exe, would be nice.
Also made a complete playthru video just now:
Well, didn’t really have time for LD, but I scribbled together a minimalist text adventure in 2 or 3 hours
It requires pygame and pyopengl to run if you still want to look at it..
A post-compo version of my entry is here.
- Different algorithm to create dynamic holes (without any texture upload), and compiled with optimization on (so no more slowdowns)
- Gameplay change: Can now walk even during explosions (which allows new timed puzzles)
- Gameplay change: Added movable bombs (allows Sokoban style puzzles)
- 4 new levels (13, 14, 15, 16 are new – still not very good, but a lot better than the ones in LD)
- Allow to choose your starting level (once reached)
- Some graphical changes, like flags to mark indestructible fields
- Fixed several bugs (most of which could not occur in the LD levels)
- Includes a crude linux makefile now besides the mingw makefile and the .exe
- There’s still a bug with 16-bit desktops under Windows
- Another bug which caused unexplained failures to upload textures is fixed with the fixed exe in the comments (so if it doesn’t start up, you can get that .exe – maybe I’ll also re-upload a new version with this later)
Was experimenting with this, gtk-recordMyDesktop made it trivial to capture a window and even sound, shows me again how little gameplay there is, oh well:
(Hm, got bored at work, so an extremely lengthy post-mortem following..)
LudumDare 10 entry “Lunte” by Allefant
I have yet to analyze the over 3GB worth of automatic screen caps, but I think I spent about a third of time each in IRC, coding, or working in Blender. Rather minor amounts of time were devoted to idea research, making sounds in SFXR and making music in LMMS.
In fact, my music is somewhat of cheating, as I used an existing melody, and further, an existing .mid file including 2 additional scores to the melody, cords (or whatever, I’m no musician) and percussion. What I did is just fiddle in LMMS to create and assign instruments.. I gave a high pitched square wave to the main melody, a piano to the cords, and since LMMS decided to simply lump the midi percussion notes into one channel, ignoring the MIDI assignment, some wooden sounding neutral percussion to that. As for in-game sounds, I used SFXR by DrPetter, which simply is incredible – in last LDs I was running an old SimSynth through Wine to get some poor sounds, now (also thanks to mjau) I have a native app with all those randomization features making sound generation much quicker.
Since sound is covered, next to graphics. My tools were Gimp and Blender. But most of the visible graphics are Blender renderings. I do know by now how to set up a simple “armature” to get stuff animated. I still have no idea what the difference between the three windows IPO/Action/NLA is and why some of them are empty some times and sometimes not. And very likely connected to that, I can’t figure out how to give separate animations to separate things (like, doing the feet animation independent of the head animation, in the same armature). With everything downscaled to 640×480 pixels, not many details were necessary anyway though.
One thing which proved somewhat challenging were shadows. I decided I want to have them separate – since two tree sprites next to each other looked somewhat odd otherwise. Suffice to say, I had to resort to Blender’s Python-scripting capabilities to have a script which fiddles with material parameters – for the non-shadow version, disabling the shadow, for the shadow version, setting all materials to “cast-only” and a special “shadow plane” to “only-shadow”. The result is, each of my graphics has two versions, the shadow and the rest.
The biggest challenge however was the explosions. I learned some about particles, soft-body and the deflection setting in Blender. One thing I wasted time on was when I tried to get the explosion to cast a shadow – Blender simply can’t to that (yet?) – particles can receive shadow, but not cast it.
Now, finally, to the code. I ended up not using pygame but my C-disguised-as-Python language and my custom library. Which for someone who wants to compile means, the following dependencies are required:
- allegro window, input, timers
- allegroglopengl context in above window
- DUMBmod player, actually not used, but i found no time to edit it out of everything
- OpenGL, FreeType, png, z, jpeg, ogg, vorbis, vorbisfile
After that, it should be a matter of compiling all .c files in the “generated” folder and linking to those library. I provided the Makefile I used for cross-compiling the .exe.
The actual code I have written is all in the src directory, little more than 800 lines. I love the Python syntax for that, even though the code is rather hackish and there’s no comments, the forced indentation makes it still easy to follow. There’s nothing really special regarding the gameplay, it’s a rather simple puzzle game, done a 100 times. I made one huge list of all objects (santa, trees, bombs, wood), then pass it to the C qsort function to sort by layer and by y position, then draw it.
The challenging thing was the water/ice/snow layers. The straightforward idea was to first draw water, then where there is ice draw ice tiles, and finally snow tiles. It just would have meant, if there’s a snow tile at x/y, cut that tile out of the snow texture, and place to the screen. However, I wanted to use an alpha mask for the cutting out – but OpenGL 1.0 does not allow specifying a separate alpha channel. Which would have left me with some texture combine extension, or a fragment shader. I read up a bit on fragment shaders, but then finally went for a software solution, re-calculating the water animation with possibly ice and snow in front each time level geometry changes.
One thing I totally neglected was level design. The game I cloned apparently lived from the clever level design, giving you hours of puzzles. In my version, there are no real levels, basically just 13 tutorial/test screens. I guess I could try and find a ROM of the original then rip out the levels. Or try to create some challenging levels myself. In any case, when doing a puzzle game in an LD48, time for level creation must be factored in. It’s hard enough doing platformer levels in short time, but for a puzzle game it’s crucial.
In a way, not having the least bit of originality haunted me throughout the competition. I wish now I had thought more about my initial chain-of-lights on xmas tree idea (all the xmas setting is a remnant of it), then could have spent the time creating explosions and break-able terrain on implementing that idea instead.