I'm DDRKirby(ISQ). I do lots of cool stuff! Check out my main website here:
About DDRKirby(ISQ) (twitter: @ddrkirbyisq)
I'm DDRKirby(ISQ). I do lots of cool stuff! Check out my main website here:
Ludum Dare 26
Ludum Dare 26 Warmup
Ludum Dare 25
Ludum Dare 25 Warmup
Ludum Dare 23
Ludum Dare 23 Warmup
Ludum Dare 22
Archive for the ‘LD #22’ Category
Just realized that I never actually posted this post publicly. -_-; well here it is…
So, how did I do? Really freaking well! Let’s go with the categories from bottom to top:
Humor: 2.07, #258
Well, no real surprise here, as my game has a distinct…lack of humor. To be honest, I don’t know why people voted anything more than 1 here, other than just not wanting to vote 1 star just because.
Graphics: 2.92, #248
Yeah, 3 stars is about right for this. I actually felt really good about the game’s look, because everything looks very clean and nothing like all of these chicken-scratch entries that you normally get in an LD. Despite that, it’s still really simple, and a far cry from the entries that actually have really great pixel art and all. So 3 stars is just about right.
Theme: 3.13, #187
This is…probably about right too. I had a neat theme going with my game’s narrative, but the tie-in to “alone” was at least -slightly- tenuous. So I deserved some points for -having- a good theme, but I didn’t deserve quite that many points since it didn’t tie in as well.
Mood: 3.30, #87
Did pretty good here–I might even have expected to do a little better, but I guess my game isn’t really quite so atmospheric or immersive as some of the other ones, so maybe it’s not worth 4 stars. Still, the music I made really fits the kind of feel that I was going for, and even the character graphics were fine for that. The ending was also at least slightly cool ;P
Fun: 3.21, #64
I did good here too! Unfortunately I probably got docked here because of my level design which seemed to be a little hit-or-miss with people. Some people seemed to really enjoy the puzzles, and other people just thought they were either too hard or too repetitive and boring. And that’s sort of a gamble I took by making a 2D platformer with an untested mechanic. Given that I didn’t know how the mechanic was going to pan out at all, I’d say I actually did pretty well! However, I probably would have been able to get more points here if I created something like a shmup or something. But that wasn’t the game I wanted to make this time, and it wouldn’t have been innovative or fit the mood.
Audio: 3.39, #45
I actually wish I could have done better here, since I’m quite fond of my music production skills. But I wasn’t really able to showcase my traditional kickin chiptune electronic style because of the mood I was going for. Ah well; I still did well anyways, which is honestly probably not that hard given that half of the LD entries you see have no music and most of the others have really shoddy music (understandable since I know most of you guys aren’t music people). Top 50 is cool though!
Innovation: 3.63, #37
Getting good here! I don’t think my mechanic was totally mind-blowing, but I think it was pretty new and definitely a new type of puzzle that people probably haven’t seen before. So this seems about right too!
Community: 3.64, #32
Actually a little surprised I did so well here…I guess people appreciated my lengthy post-mortems and writeups. I didn’t have any timelapses or livestreams and to be honest I didn’t feel very in touch with the LD community and wasn’t in the IRC channel much at all or anything. The thing about the LD community is that it’s just so BIG–we’re talking 1000 people or something like that, so it feels like a huge crowd. If I knew other people (whether IRL or online) doing it, I might interact with them and bounce ideas off of them/etc, but I didn’t, so…yeah. It’s nothing like One Hour Compos at ThaSauce.net where we have like 20 people there and most of us are regulars. I actually hope to have a little bit more community interaction next time around…it’s also a good way to get votes if you go into IRC and do “I’ll rate your game if you rate mine!”, which is how I got some of my last-minute rates
Overall: 3.70, #24
24th place!!! I actually expected to do pretty decent here simply because I think my game works really well as a cohesive package when you combine music, sound, art, puzzles, and narrative. But I certainly didn’t expect to be in the top 25! Granted I really don’t have a good feel for the “distribution” of quality in LD games, but still, 24th out of 891, holy cow! It’s really flattering, and really awesome. Course, now this means I need to shoot even higher for next time…;)
Could have done a little better here, but eh, I got my bronze badge and was happy with that. ;P Rating other games can be kind of hit or miss…you have this huge pile of games that are half-baked and not really there, and then there are the really popular ones that everyone likes, and then every once in a while there’s a decent/good one out there that you randomly stumble upon.
So, what do I want to change for next time around?
First off, I hope to use something other than SDL.net. I know OSX/Linux users are in the minority, but it’s still just a little too much trouble to run the game on those systems, especially for people who have 25 other entries to rate. I might look into Flixel since that seems to be a really popular choice, and having a web-playable game is great for getting votes (or at least, I felt that way when I was slogging through my 25 ratings for bronze). Other options include Lua with Love2D or PyGame, but I want to try Flixel at least once.
I also really hope that I’m not super-busy and caught unprepared for next time, because that was just unfortunate. I want to have my full 48 hours, please
Alright! Finally got around to doing this post. This is going to an extended look back at the development process of One of a Kind, which you can download, play, and rate here. It’s going to be a lot of walls of text, so if you want the shorter, regular port-mortem with “what went wrong vs what went right”, you can instead read this post.
That said, onto walls of text!
Well, the dust has settled, so it’s time to do the good ol post-mortem writeup for my game, One of a Kind.
I actually have quite a bit I want to say, so I’ll probably be splitting this into two separate posts. This one will have the basic what went right and what went wrong and what I learned, etc., while the other one will be longer, more ranty, and more of me expaining my development process, how the game came about, and some comments on the levels, art, and music.
Anyhow, without further ado:
What went right
Choosing an easy-to-use framework.
Although actually deciding what to use was a whole separate issue (more on that in “what went wrong”), once I settled on using C# with SDL.net, coding went really smoothly for the most part. I just really like coding in C# with Visual Studio…it’s fun, there’s nothing that bugs me about it, compile times are super-quick, it makes a lot of sense, and when I screw up and run into a crash, I can debug it in almost no time flat. It’s just a really nice language to work with. Granted, I haven’t worked with other things like Python, Flixel, Unity, etc etc much so I don’t know about the other things out there, but I acn say for sure that I’m super-thankful that I chose C# over C++ with SDL, which was another option I was considering. I’m sure that I would have just run into some stupid thing that would take me a long time to debug, or I’d have to think really hard about how I want to structure my game engine and who takes ownership of the allocated entities and you can’t delete them yet because they still need to do things, blahblahblah. It’s just simpler in C#. One small caveat is that I hadn’t actually used SDL.net before this, but luckily it turned out to be really straightforward (90% of the time, at least), and despite the somewhat lacking documentation (compared to vanilla SDL, at least), I was able to do just fine.
Now, don’t get me wrong here…I am a programmer who really, really places code elegance above almost all else normally, but when it comes to Ludum Dare, that totally just goes out the window. The trick is to know what you can make messy and what you should refrain from making messy. Most things you can safely get away with making messy because you know you’re not going to have to look at that code again. But things that you -will- have to work with again, shouldn’t be quite as messy. In any case, I had a whole bunch of public static variables, and even worse, I just intersparsed a bunch of them throughout the class, probably right before the function that uses them. So it looks kind of terrible, but it streamlined the process and I think I struck a very happy medium where I didn’t go overboard on messiness to the point where it caused any issues.
Mood and atmosphere.
When I saw the theme “Alone” I knew that it was more of an atmopheric theme, and didn’t really give you any game mechanics or anything right off the bat. And I knew that making a 2D platformer would let me create the mood I was going for, so I did that. After that, it didn’t take much brainstorming to come up with the core mechanic that would fit the theme. In any case, even at that point I already kind of had a vision in my head of how the game would look, feel, and sound (this was probably heavily influenced by The Company of Myself). And everything including the art, music, even the narration of the instructions, was informed by this mood/atmosphere goal. In the end I think this is the area where my entry shines and it all came together really well.
It was a great feeling to be a couple hours away knowing that all that was left was basically just some more levels, packaging, and some finishing up. I already had my concepts in, my gameplay in, and even the music and sound and art style was all in. I had even already programmed the ending in–I just needed a way to trigger it. So there wasn’t any real rush to finish any features when it was coming down to the wire. I also found that it was nice to work on level art and such other things while you were stumped trying to come up with new puzzles or mechanics, so you wouldn’t waste time.
What went wrong
Oooh boy. Yeah, getting this thing distributed was (is?) way more of a pain than I would have liked. It’s not like my usual C++/SDL setup where I know exactly how to make things work on Windows, Linux, and OSX with the least amount of additional dependencies. This is C# with Mono, which…well, is already just asking for trouble in the first place. Even my windows build ended up requiring the .NET framework, so I had to recompile using Mono, and even after that I stupidly forgot to include a .dll file. The Linux and OS/X battles were much tougher to wage, and even then only partial victories have been won. I guess I can see why web entries are so popular. Anyways, the bottom line is that even though I knew that C# with SDL.net would run in a development environment on all three platforms (I tested that as my bare minimum requirement for choosing the language), I hadn’t had any experience distributing using this framework, so that was a pain. Of course, I could have figured it all out earlier, but…
…I didn’t because I came into things just totally unprepared. My initial ideal plan was to do a warmup game the weekend before LD, use that to decide how good of a framework C# with SDL.net actually was, and figure out how to port it to Linux and OS/X. If it didn’t work out well, I might even have tried to make a test game in pygame, as that was another one of my possible choices of framework. Unfortunately, real life, christmas letters, finals, and everything else happened, so I was stuck not having had time to do any of these things beforehand. I had -barely- done enough work to decide that C#/SDL.net/mono was a “potentially okay” way to go. On the plus side, I had done some good reading and thinking about fixed timesteps and framerate stuff, so I didn’t waste any time during the actual compo thinking about that (I ended up using a fixed timestep, and not limiting frame rate…I don’t think SDL.net lets you use vsync).
This is the one that had me banging my head against the wall. One bad thing about coming up with a new puzzle concept is that you have no idea how interesting or not interesting it is, and you have no idea what kind of puzzles are even possible, let alone how to design good challenging ones. So I definitely spent long chunks of time just trying to think of puzzles that I could create using the base mechanic. And I think this is the weak point of my entry too–although the puzzles aren’t bad, they aren’t -good- either. I think my friend said it well when he said there were never any “aha!” moments; it was more just going through and deciding what to do next. I liked the fact that I came up with the reflection concept, but unfortunately that was so late in that I couldn’t really flesh it out with more levels.
Overall, how did I do? Fantastic. I’m super-pleased with my end result, and really happy that I was able to actually make a 2d Puzzle Platformer with this kind of style. It matched my vision almost perfectly, and is just really good at cohesively establishing a mood. And I love how polished everything in my game is–it doesn’t look like it was just thrown hastily together with simple placeholder art.
What did I learn? hmm…well I learned how C#/SDL.net/Mono tends to work…easy development, “possible” to run cross-platform but really more difficult than you probably want it to be. Next time perhaps I’ll try a web game…
Thanks to WineSkin, I now have a working bundle for osx users to run. The downside is that it is 155MB, and >400MB when uncompressed, because it contains an entire install of Mono. Which is really ridiculous. BUT AT LEAST IT WORKS. And you don’t even have to install anything!
Linux users, you can also run in Wine if you download the windows version and use “winetricks mono2.8″. Otherwise, you’ll have to install all the mono + sdl packages and run it the usual way. I’m assuming Linux 64-bit is still broken but I have no way of verifying this since I don’t have a 64-bit Linux VM/machine.
Main game submission post, again, is here:
Well, I’ll definitely be sure to do a full port-mortem later, but for now I’m done wrestling with bugfixes and compiling and repackaging things. I have v1.01 of One of a Kind up which fixes a stupid crash that happened at the end of the game. It works on windows, it works on linux as long as you’re not 64-bit and…well, osx -works-, but you need to install extraneous other stuff.
Off the top of my head though, the short version of how things went:
+ Great end product that I’m really happy with.
- Really stressful times, had a lot of trouble thinking of puzzles and game mechanics.
+ Developing was for the most part, a breeze.
- Ran into performance issues and other things, but…
+ Managed to work through them all and I think the end product is really quite polished.
- Frantic headaches trying to get my final distribution packages good to go.
In the end I’m really happy that I was able to make a game of this type–it’s pretty much exactly what had envisioned when I first started scoping out the idea, so I really can’t ask for anything more (well, besides nice cross-platform portability).
Definitely check it out if you have the time. It’s not very special, but maybe if you look closely you’ll find that it’s One of a Kind.
Well, the deed has been done! I’m really happy with the end result–maybe would have liked to have time to do a few more levels or so, but it’s okay.
I also managed to actually get the windows version packaged up properly–first time I tried it turned out I was missing a .dll from my package so it wouldn’t work on anyone else’s machine. D’oh! But it should work just fine now! It might still throw you a crash when you exit the app though…sigh.
OSX is pretty much hopeless in terms of a good portable bundle, I think. The good news is that on my machine it actually runs really well (still crashes on exit though…). You probably need to install Mono to be able to play it, and even then I wouldn’t get my hopes up. I thought about trying to just include the frameworks in the .app, but it turns out the mono framework is like 300MB or something ridiculous like that, so…well, I’ll spare you -that- trouble.
Linux is the front I’m currently combating right now…it works fine on my VM but my friend says it refuses to start, giving some crash or other. I’m trying to use another VM to test it…we’ll see how it goes.
But in terms of the actual game, I’m really happy with how it turned out. It’s even pretty polished, I would say. The only thing that’s bad about it right now is getting it to actually work…and hopefully that problem has been solved on windows, at least *crosses fingers*.
I should also add that I had a really great flash of insight when I came up with the idea of having a mirrored version of you. I probably didn’t explore that mechanic nearly enough in the game as it is right now, but after thinking about a whole bunch of other concepts (moving platforms, keys, switches, teleporters, lasers, …) this is the only one that seemed to make sense in an easy way.
I’m calling it done! Now I just have to package it up in the next two hours and hope I can make cross-platform work. GOGOGOGOGOGOGO
Well, things are looking slightly different. On the plus side, the revised form of my mechanic seems to have a lot more potential than my old one. The idea is that you get to “alonify” entities, and essentially make one instance of it exist and make the other ones not-exist. I admit it’s kind of a stretch on the theme, but hopefully I’ll be able to weave it in with narrative, in the style of “The Company of Myself”.
Anyhow, before I actually had the other instances of the objects being deleted, but now instead I’m having them fade out so you can walk through them, but they still exist and you can toggle which one of the objects is physical by using your sparklies on that one. This also means you can actually get stuck between two barriers, so I added a respawn function that restarts a level for you (looking more and more like the company of myself, really).
Now I’m sitting here scratching my head…the only thing harder than solving puzzles is making puzzles…I still don’t really get how this one works.
That’s right–I have a little test sprite moving left and right and jumping around! The white background tiles are loaded from a 16×12 bitmap. The best part is that the little guy doesn’t glitch through anything! Hooray~
Unfortunately SDL.net doesn’t seem to really do subpixel render stuff unless you get into OpenGL which I’m not going to do for this project. But I need to use floating-point coords for logic, otherwise the jumping will look really weird. So I’m constantly having to round off my logical floating-point coords to int coords for rendering…which actually isn’t too bad.
I am well-rested, just had lunch, took a shower, room is clean, I started brainstorming ideas and have a sort-of-solidifying idea in my head, and I just created my project and github repository.
We’re at T minus 1 day + 3 hours and I haven’t actually done ANY coding on my game yet.
Well, I’ll still try and get this done, but depending on how things go I may just decide to enter the Jam instead, as that gives me a proper 2 days. Kind of a bummer how the timing worked out and all, but that’s just how it goes!
I’m thinking to do a 2d platformer, as I think that really works for the mood/atmosphere I’m envisioning. I have a central concept in my mind. I’m scared that it won’t end up making for good gameplay, but I’m going to roll with it anyways and hope I can come up with good level design later =X
I was initially thinking to do video blogs of progress updates but I’m tossing that idea because I’d just make myself look like an awkward fool and I don’t want to waste time on unnecessary things anyways. If I need to show you guys stuff I’ll just post screenshots instead! But…right now I have nothing to show. SO LET’S GET TO IT >=D
So, almost 9 hours have elapsed since the start of LD and I have…actually done absolutely zero coding and I don’t really have any ideas as to what I’m going to be making. Am I screwed???
Well, on the plus side, I managed to get my test app running on Windows, OSX, and linux–and I got it to work on windows and osx without additional dependencies! (I think…well, windows i might have gotten lucky in terms of test subject. but I’m confident that even if it doesn’t work I can get it to) So it’s settled: I’ll be using C# with SDL.net. I’ll probably still be developing in Visual Studio with the .NET framework, but then my releases will be using Mono.
It was really coming down to the wire, and a tough call…if I hadn’t figured out how to get it working on OSX I probably would have started trying to learn pygame (which I should still do at some point). But this is hopeful. Ever since trying out XNA I’ve really liked dev’ing in C# with Visual Studio, it’s just…nice.
As for ideas, well…going to a social dance event for 5 hours didn’t really help me think about “alone” too much, haha. I still really have nothing…maybe some really scatterbrained ideas, but nothing concrete.
But in any case, I’m really dead tired so I’m going to just get a really good night’s rest (I’m gonna have to sleep sooner or later anyways) and then wake up ready to both brainstorm and start setting up the project. Who knows–maybe I’ll come up with a neat project idea while I’m sleeping xD
Interestingly enough, Alone was the name of the experimental way-short visual novel I made in a day. I think as a theme, it kind of begs me to think of something artsy–as in, a game that tries to make some sort of psychological or emotional impact. Something that sends across a message of some sort. In contrast to say, evolution or something, which I’d just regard more of as something to make into an interesting game mechanic.
I guess the ideal way would be to make something that is both a game mechanic and has emotional impact. Hmm…what to do?
I do have to say though, that I like Alone a lot better than most of the other top-placing themes. Randomly-generated, meh…Evolution, kind of okay I guess but I can see that one a little too easily. Parallel dimension too, that’s too game-mechanic-y. Forgotten places might be kind of interesting.
But anyways….alone. alonealonealonealonealonealonezzzzzzzzz
Yeah, so we’re at T-minus 11.5 hours and that warmup game I wanted to do never happened (though I’ve been playing around with SDL.net!) and I still haven’t figured out whether SDL.net is viable for cross-platform. It’s looking pretty good, but I really want to do some more testing today.
On top of that, I want to be able to make myself a nice main loop sometime in the next 10 hours or so. I’ve found that just using the plain tick-60-times-a-second and draw-to-the-screen-every-time results in some jerkiness, so I’m assuming vsync is disabled. I think the ideal way of doing things is to use a fixed timestep, then save the render state (probably just as a plain old surface) from the previous frame so that I can do linear interpolation between the current frame and the previous frame depending on how much time is in the “accumulator” that is “left over”. The good part is that I actually think I’ve wrapped my head around the whole concept, so hopefully it shouldn’t be that hard to actually get working.
So, checklist for the next 10 hours or so:
-Check cross-platform compilation of SDL.net again (using Mono)
-Play around with using the Sprite class
-Set up a nice main loop with fixed timesteps and silky-smooth motion (bonus points for getting starter code up)
The good news is that developing with SDL.net is feeling a lot like XNA did–maybe even better. I love the fact that compilation is so fast, and that debugging isn’t a pain. I think C# just really clicks for me. Someday I’ll try out Python, but right now that’s the “funnest” language I have.
I’ve been running on less-than-normal sleep lately since this week has just been packed with stuff, so I might actually just spend the initial parts of LD trying to catch up on rest. Been having to do stuff like deliver xmas stuff, dance events, finals, final projects, etc.
I finished LoopMuse this week actually, as a final project for a class and that was made in a grand total of 3 days worth of work.
On the off-chance that I find out SDL.net is totally borked in some way or I just get fed up, I might instead use my old standard–C++ with SDL and OpenGL, in which case I will be using starter code, which will be ripped from one of my existing projects, such as this one on github (trying to disclose my starter code here in consideration of the rules). Or I might be crazy and just use pygame despite very rarely programming in python.
…on the plus side! Making music for my game should theoretically be a synch, as I’m used to making 5-minute songs in one hour. Check out what I made for yesterday’s “One Hour Compo” here: http://compo.thasauce.net/files/DDRKirby_ISQ__-_Shooting_Star(OHC166).mp3
After some issues signing up for an account (which I had to ask the admins to step in and take care of), I’m signed up and have started getting ready for LD22–which falls right after the end of finals week for me.
This is my first Ludum Dare, and I’m definitely looking forward to it! One of my recent class projects was made in one weekend, so I know it’s definitely possible.
I’m still trying to figure out how to split my posting between here and my personal blog, and whether I’m going to do any sort of videolog or anything. In terms of frameworks, I’ve got a few options I’m looking at…
-C++ with SDL is my mainstay which I’ve used for a majority of my stuff. it’s interesting to note that I’ve used OpenGL for rendering instead of vanilla SDL, but I really can’t recall why since none of my games have any advanced graphics behavior…maybe I just wanted to be cool… xP
-C# with XNA is something I haven’t worked with quite as much. I actually find it pretty fun to work with, but the major downside is that I lose cross-platform compatibility, plus I need to make an installer.
-C# with SDL.net is something I’m currently trying out right now. It -might- be the best of both worlds (managed language plus cross-platform, etc), but I have to give it a test run and make sure everything is aok before I give it the green light.
For graphics I’m panning on using my minor levels of pixel-pushing powers with GIMP, for music I’m using my less-minor powers of electronic/chiptune production with FL Studio, and for sfx I’ll either use bfxr or more FL Studio stuff (probably a combination of both).
I’m thinking to use some starter code (in the case of say, C++/SDL/OpenGL, a bunch of sprite stuff, for example), which I’ll finalize sometime closer to compo.
Interestingly enough, LD isn’t my first “make x in y hours” experience, as I’m a regular participant of One Hour Compos over at ThaSauce, where participants are challenged to produce a song based on a theme in one hour. The streamlining of my music process that’s taken place because of OHC will definitely come in handy for LD, methinks. ^^