Ludum Dare 25
Ludum Dare 22
Ludum Dare 20
Ludum Dare 19
About Grungi Ankhfire (twitter: @b_gorissen)
Grungi Ankhfire's Trophies
Grungi Ankhfire's Archive
I could have titled this post “Flawless victory!”
Or at least something along those lines (let us not get cocky here…).
First thing first, this post is going to be a pretty big one, so if you would rather see the game and play it, you can find it at the link below (Source, Windows and Linux64 at the moment, more platforms to come).
With that out of the way let us get down to business, shall we?
What went right
Most of the Ludum Dare, for a change. But in more or less chronological order…
- Theme & Idea : At first, as usual, the theme did leave me scratching my head. Most probably because I had started formulating a very cool idea for “End of the World”, which I thought would be picked because of the date. But it was not to be, and I had to find something else. I did not want to shoehorn my idea into the theme somehow, so I started by scouring the Internet for ideas. I wanted something a little more original than casting the player as an archetypal video game villain. The answer came from Wikipedia and its disambiguation page for “villain”. A game idea fell right into place as soon as I had read a particular page. You can either play the game and beat it to find out what it is about, or I will give you the link at the bottom of this post if you want to spoil yourself. But nevertheless, it was really a good find, and really fit the theme (guess what the V. in Raoul V. actually stands for?).
- A roguelike! : I have wanted to make a roguelike(-ish) game for quite a while now, so I was thrilled to see that my idea actually could be implemented as one. And it was the right way to go. I could have done it as a first-person 3D game, but I am pretty sure I would not have finished in time. So not only did I have the opportunity to code a small roguelike, it was very much instrumental in achieving the next point…
- Proper scoping : This is what I always did wrong in my previous attempts. Except maybe for OUT OF HERE, but I had the idea for that one way before the LD, and even then I completely shoehorned the theme via an ugly wall of text. Here, I managed to implement all the core features of my initial design. Except for one thing, which is handling a restart after the game is over. But more on that particular point later. The point is that my idea was very much doable in the time frame of 48 hours, without really skimping on anything.
- Letting features drop like flies : This sounds at odd with the preceding point, but what I mean is that, as usual, I continued to came up with new features and refinements as I progressed. One such thing was a minimap. I implemented one, but turns out that the particular way I went about it slowed the game down to a crawl. So, instead of trying to push forward and lose a big chunk of time, I simply dropped the feature. Same thing for my level generation, I ended up leaving the first, somewhat “buggy” version in the final game. By buggy I do not mean that it crashes, but simply that it gave different results than I had planned. So be it, it was playable, and actually doing what I had in mind would have been really too much work. Several things like that didn’t make the cut, but I never mourned them for long. And that meant I got a game done.
- Procedural everything : The map, but also the combination of elements that make up the NPCs, and the notes revealing information on your target are all procedurally generated. It does tend to feel a bit same-ey, but it was a great way to keep the game interesting for multiple playthroughs.
- Mixing known and unknown tools : I went partly against common sense, and decided at the very last minute (meaning after I had actually started writing code) to use Cocos2D instead of pure Pyglet. I had never used Cocos2D, but as it was based on something I was quite familiar with, it went rather well. The only downside of Cocos2D is that while it is a Python library, almost all the documentation you can find on the net is aimed at its mobile ports, and more specifically the iOS one. That made the learning experience quite a bit harder, but as I was able to fall back on Pyglet for things like sound (which I never got Cocos2D to play…), it never became a showstopper. And in the process, I have become proficient with a new API. Success!
- Pixel art : I suck at art. No, really. But I am still happy of the graphics for my game. The neat thing is that I was able to work the setting of my theme into a constraint that eased the creation of a coherent art style. And I am quite pleased of my characters. With more time, I would refine the aesthetics, and improve the readability of the graphics, but for my skill level I really think I did quite ok. That I even had time to revisit my initial tile set was just icing on the cake.
- Music and sound : After my attempts at playing a sound effect with Cocos2D fell through, I shelved the idea of putting sound into the game (and it would have been more or less justified by the “silent film” motif of the game), but I went back later and succeeded. I quickly whipped up a couple of music tracks and went along with it. I would have loved to make a piano-based score, but my MIDI keyboard was having troubles and so I fell back on my trusty guitar and my drums (for the sound effect), which I filtered to have an “old telephone” sound to them. All in all I do not think I have spent more than 15 minutes on actually creating the sound, and as everyone will tell you : sound ties a game together.
- Coherence : I think the game fits together nicely. Everything plays off the same theme, and the game mechanics relate to the historical facts (albeit loosely). I worked a goat or two in there (in the written text), there is some flavor text on some of the notes, and all in all nothing seems too out of place. Even the dialogues improve (or their presentation at least) the impression of you playing in a silent movie. So there, very happy with that.
- Blogging, Twitter, etc. : While I did not post as much as I would have loved to (not to mention I did not have someone dedicated to documenting the process as I had for my last participation in the jam), I still managed to post some screens, check out the IRC, Twitter, and even record a timelapse! This last one is a first for me, and both days are actually uploaded on Youtube, and embedded at the bottom of this post. I also commented and “hearted” here and there, and there are now a bunch of entries I really look forward to playing!
- Packaging the goods : PyInstaller has become pure awesomeness. If you are using Python and have access to your target platforms, use it, it is really great, and version 2.0 really makes things a breeze.
…That is a lot. To conclude, the most important point : I submitted a game, not a half-broken prototype!
What went wrong
All is not sunshine and rainbows though, and there are definitely things I could have handled better.
- Awful code architecture : As if that was not a given in Ludum Dare games? Still, because of my inexperience with Cocos2D, I ended up digging myself into a design hole, and had to spend several hours at the end of saturday and sunday morning cleaning up the mess. At the end it turned out ok, but I could have polished the game a little bit more if I had that time left.
- Not having everything ready : I almost failed at creating music because of problems with my MIDI keyboard. I should have tested all my things prior to the compo, and not leave anything untested until the last quarter of the time. At least I managed to record my guitar and my drums without any problem.
- A couple of bugs : Unfortunately, there is, to my knowledge, a single bug that could potentially prevent you for playing or winning the game. Sometimes, the level generator will create a room sealed off from the rest of the level, and if you or your target end up being put there, you might as well restart the game. Speaking of which…
- The missing features : I really wanted to get the restart working, but thanks to my crappy code architecture, it was almost impossible without yet another rewrite, for which I had no time. This means that the game will exit rather unceremoniously after the end screen. And you have to relaunch it if you want to have another go. The game also should have provided a way to look back at the notes you collected. Right now, you will need to use paper or your memory to keep track of the information. It should also have warned you when you killed the wrong guy. At least it will be evident when you have shot the good one. Lastly, the full screen mode (which is provided by default by Cocos2D) does not work correctly in regard to aiming. That is quite the bummer.
So, there you have it. I think the only way to improve on these is to continue practicing making games, and probably to collect some kind of base code which enforces a sane structure rather than throwing code around and see if it sticks together.
I think you have had enough to read, right? So instead, here are the two parts of my timelapse. The image quality is poor, I need to improve my timelapse-fu. I had also planned to make an “IRL” timelapse synced with the screenshots, but that did not work out. Enjoy!
This weekend was a blast. With everything going smoothly, it managed to be a very interesting learning experience, while being incredibly rewarding. For now, I will leave the game be while I rate other entries, and I will also provide an OSX version, as well as one for 32 bits Linux. Thank you for reading, and have fun playing…
Spoiler : You can check the Wikipedia article from which my idea came. Meet the real Raoul V.
Over and out!
- Bastien ‘Grungi Ankhfire’ Gorissen [@b_gorissen]
Such a great feeling!
After a bunch of almost-failed entries, this one went almost exactly as planned.
The packaging (I’m using python, with Cocos2D and thus Pyglet) went surprisingly well (at least, on Linux XD) with the new version of Pyinstaller.
Now I just need to fire up a virtual machine for the windows build. Then I’ll try to make an .app for Mac users!
I’ll also hit you with a full-blown post-mortem of the compo, and with my second timelapse video for which I’m still processing the images.
Cheers everyone! Get some well-deserved rest and be ready for the voting madness that is to come
Ahem, so, no screenshot this time, but I’m happy to report that the gameplay is 100% in.
Meaning winning/losing conditions are in and everything. Still, a lot of things on my plate for the remainder of the time. Here’s my to-do list :
- Redo the graphics for the notes scattered around
- Fix 2 random crashes occuring while generating the world
- Redo the main character sprite
- Redo the tileset
- Figure out why the (only) sound effect I have doesn’t work
- Package (hahaha)
- Add some more variations
- Balance everything
- Properly handle restarting, or at least exit gracefully when winning/losing
This is not really in the order of my priorities, but it’s not far.
I’m afraid I won’t have time to add fitting music however, which is a bummer. Or I might go the Dwarf Fortress road and quickly record a solo guitar tune. We’ll see.
Hello fellow LD’ers!
I have started working on the polish for my little game, and first thing I got done was this title screen, giving away the name of the game’s protagonist : meet Raoul V.
The in-game interface has also changed quite a bit, and also gives away a bit of information. The game takes place in Paris (really ? ^^; ), in 1914. I’ll leave the exact nature of the goal for later, but know that NPCs are going to transform from blank…
…to things progressively more detailed.
Now, I’m going to add a couple of remaining game mechanics, then get going on the sound, and I hope to be able to revisit both the graphics for the tiles and the level generation.
So, here I am, ready to tackle day 2 of this LD.
I have kinda slowed down yesterday night, and am still in the process of cleaning up a little bit of the messy state the code was in.
Once that is done, I’ll have the whole game more or less going (with win/lose condition, title screen, etc…).
I will then be able to start on proper art and sound for the game.
In the meantime, while I resume coding, here’s a timelapse of this first day of work!
After some more hours put to good use (mostly), I have implemented a nice chunk of the gameplay mechanics. First, the levels make a bit more sense now, and is populated with notes and randomly walking NPCs.
The NPCs are at first completely grey, but picking up certain notes lets you see some of their colors. I have also gotten the field of vision detection to work.
Now, I need to step back and think of how I want to go forward. There are several things I could implement right now, but I need to prioritize.
But so far so good, I’m on track for having all the gameplay put in today Hope you are all doing okay!
It has been almost three hours since I woke up and started thinking about an idea.
Now, I have a scrolling, tiled map procedurally generated. My idea is still solidifying in my mind, but I think I have got most of the concept ironed out. Hopefully I scoped it right this time, and I can finish up the gameplay today. I would love to have a full day dedicated to art, music, and polish.
One can dream, heh ?
So, after a jam entry that wasn’t completed on time last time, for the 25th LD I’m doing the compo once more.
I hope my past experiences will help me scope my idea correctly this time, but we’ll see…
As for my weapons of choice, well, it’s basically the same as always :
-Python, along with Panda3D or Pyglet
-Blender, Gimp, …
-Various instruments for music (if I have time)
I’m trying to keep my head clear of ideas until the last friday, when I’m probably going to do the same as last time, and quickly jot down 3 ideas for each theme up for voting on friday. Just to have something to start from at the start of the compo.
Good luck everyone!
Unfortunately, I am going to have to declare my attempt a failure. As I said in my previous post, I needed to be laser-focused on my game, and it seems I was far too tired for that. I still learned quite a bit though, so I’ll make a postmortem of that, and maybe do a timelapse video of what I have accomplished so far.
Anyway, I wish all of you the best of luck if you are still working on your game! For me, it will have to wait until next time
Ok, so it’s already getting pretty late, and I’m only starting again now. I’ve given some tought to what I should do first, and I will start by some pixel art, then I will produce some more assets and design the levels. I already managed to put in what will constitute the core gameplay, I only need to put in a way to die, then a way to win.
I still think I can make it, but I will need to be really focused, and I’m afraid the graphics won’t be up to par with what I had in mind. Anyway, here’s a quick screen