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
With two dead-line filled coding jobs keeping me busy 7 days a week and barely having done any coding besides this for 8 or 9 months, I’m ill prepared for this LD. Tired, no proper dev environment set up, blender isn’t compatible with any of my old stuff. So have to compromise a lot – most likely won’t have anything finished by the deadline.
Also, I don’t like open themes like this. And this one is the worst I’ve ever seen – it’s basically as good as no theme at all – make any game and have an old man say “it’s dangerous to go along take blah” and it will perfectly fit the theme. So yeah. Having watched a play-through of the first 20 minutes or so of the original Zelda (shamefully have to admit I never saw the game before) I do have a vague idea though (“remake Zelda” ). Any finally knowing about this game is one good thing I can take from this LD
So anyway, the plan is to fix up my C+Allegro framework to latest versions of everything and use it. And right now I’m writing a custom Blender export script from scratch, for Blender 2.5. Took me some time to figure out where to place the addon… so hopefully I can speed up a bit now. Here’s a screenshot of my progress so far:
Coded non-stop, lots of work done. I also worked some on artwork (they have eyes now). And I learned a lot about chipmunk. This is the first time I’m using a physics library of any kind but I’m very positively surprised. Chipmunk does everything right. C API. Simple, does just what it needs to. API makes sense and is easy to use. Good documentation and examples. Probably the first time I don’t find anything to criticize about a library I used. So, despite learning the API and spending time watching the examples, I probably saved a bit of time compared to if I had used my own line-line collision function as I did in the past. However I lost all that time because I decided to write my own XML parser instead of downloading expat or something. The problem is I need level data and just drawing them in Inkscape and reading in the .svg files seemed like the easiest approach.
What I have left for tomorrow is: Different kinds of monsters. Then using the weak monsters (the only ones you can really fight on your own) as weapons against the stronger monsters, beat the final boss.
If I had the time I could also add actual graphics and sound effects and music. And more gameplay effects like more varied monsters and more varied attacks. Alas, I have to work all Monday, so have to get up right around when LD ends – so I lose the last 6 hours or so. I also stupidly slept for the first 6 hours of the compo because I stayed up right until the theme was announced. And I’ll sleep another 6 hours now since I’m too tired to go on.
Well, for now at least, let’s see how much of the day I’ll have off. My idea for enemies-as-weapons is as follows. You control a wizard who has two spells. A fireball which does some direct damage to a creature. And a zombification spell which resurrects bodies of fallen creatures as zombies loyal to their master. The game now has a few areas with creatures of different strength and you are to build up an army of zombies to face the final boss.
The screenshot below is how far I am right now after about 2 hours and also how the final graphics will look. It shows the wizard and some enemy creatures.
Ah, this was a lot of fun for me. My original idea was some kind of RPG where I wanted to implement line-of-sight lighting – but the Islands theme prevented that. So I decided to go 3D instead. I wanted to try using a 3D engine, but unity doesn’t work here in Linux and after tying the Ogre3D and Panda3D demos I felt too overwhelmed to actually go on with them. So instead I looked at my code from previous LD and pyweek entries and decided to go with just that and Blender.
As always I ran out of time to actually implement much gameplay, but there’s more than in my previous 3D entries. There’s 18 taxi orders, displayed as little boxes in the upper left corner. And there’s 7 docking stations, each one with a different color. Passengers will have their destination color in a triangle above there head and need to be delivered before time runs out.
(Clicking image should open a video of the game on Youtube.)
Ok, added collision. It’s really buggy but as much as can be done with just a polygon soup imported from Blender and no 3d engine. I also realized the external camera might not have been a good idea without an engine either… not that the camera glitches could make the game much worse
Anyway, the game ideas is, you are the blue guy who is an airship taxi driver and has to drive customers (the yellow guy) from island to island.
Well, I added lots of stuff:
- Camera control
- Airship control (the airship is the flat box with steering wheel in the screenshot)
- Vertex colors
- OpenGL fixed-pipeline vertex-lighting
- A second island
- HUD display
What I’m still missing:
- Collision detection
- More and better models
- Textures (won’t have time)
- Audio (won’t have time)
- Skybox (won’t have time)
Well, I missed the last 2 LDs because there was way too much work to think of joining. And what do you know – the same is true this time. However, I’m trying to reserve some time this weekend for LD anyway (or rather, just forget about all the other stuff and see what will happen ). So, well, what did I do so far. First I put the the Monkey Island 1 music on endless loop to inspire me for the islands theme, then watched a video of a goat pulling a cart with… the typical LD entrant in it. Then spent several hours to get my code to export and import a Blender model and display it in OpenGL working again.
Behold, I can display my island now:
Since I was too tired to write a readme at the end of the compo, guess I can put one here
Cursor Left/Right: Lean backwards/forwards
At the top of the screen, there’s a blue wave icon and a yellow hat icon showing the relative position of you and the advancing wall of doom. The goal is to ride the wave to the right and manage to land at the wooden dock at the end without the big wave reaching you.
There’s no randomness at all, the 6th level is quite easy after some practice – can be done without ever missing a wave and winning it far ahead of the big one. Guess it’s the problem of playtesting your own game for 48 hours straight… you’re bound to be almost perfect at it… or actually, I’m still kinda bad at it: video of level 6
Ah, and the cursor up key can be used to flutter your arms and fly up a bit, it helps landing on the dock. If you surf past the dock it’s usually over (but you can move backwards by turning upwards more than 90 degree so if you were fast enough…)
Also should say something about the used stuff:
The title picture is obviously just that painting and not made by me – considering how the game is all made after the picture that should be ok
The music/sounds are kinda cheated… both the music and the only sound effect are made in LMMS. The melody is out of some .mid. And the samples are all stock samples as I had no time to fire up sfxr and make instruments and wave noise in it…
Everything else is drawn by hand in Gimp, color-sampling (and for the wood structure also tracing) various pictures of the same painter.
Code is almost totally from scratch – only the initial versions of image.py and text.py are from the last pyweek.
Getting it to run
Under Windows, just clicking one of the two .bat files (windowed/fullscreen) should work. In theory not even Python needs to be installed… but some msvc dll might be missing if you don’t.
Under Linux, execute main.py. Needs pygame and pyopengl to work.
Under OSX, I have no idea.
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 ), 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.