Spark – Postmortem

Posted by (twitter: @fullmontis)
August 26th, 2013 3:51 am

So, LD#27 is finally over. There is something peculiar about it this time: Spark is  in the compo! My first completed LD48!

After my insuccess in April, getting this achievement really made me happy, despite the game itself being only a pale shade of what I wanted it to be. Still, no matter the things gone wrong, it was a great learning experience and I learned a lot, which is probably the greatest achievement. But let’s see what were the ups and downs of these two days.

The Good

  1. LOVE2D
    I’ve been in love with love2d since the first time I discovered it. Because of it, I learned Lua and how amazing of a language it is. Still, I always used it in non time constrained environements: doing a Ludum Dare with it was a breeze, mainly because I got used to the environement, but also because of the amazing semplicity of the modules. I have this idea that a framework should be as transparent as possible so that it doesn’t get in the way of the developer: Love2d achieves that. I never had to stop more than five minutes in the excellent wiki to find out what I needed to do. This to me is like a liberation of a curse: passing hours on poorly documented and overly complicated APIs really kill the creative ideas one may have in a moment. My wet dream would be a love2dJIT, that would be the shit. But only time can tell.
  2. Picking an idea I liked
    I wasted somewhere around 12 hours with brainstorming and another aborted game idea before starting working on Spark. This is a huge down, meaning a quarter of the limited time I had was spent on basically nothing that would be in the final game. This is a wrong thing to do (and will never do it again for the future compos), but it helped me find an idea I really enjoyed. While Spark didn’t come out as I wanted, I really enjoyed working on it and implementing it (The Call, my LD26 jam entry, in comparison, felt more like a chore). I knew from the start it was an overambitious idea and I would never be able to complete it all, but my motivation was so strong I got a lot more done in two days than I would have in a project I didn’t like. So those 12 hours didn’t really feel like a waste but more like an investment: they saved me from working a day and an half on a project I would have hated working on.
  3. Submitting the game
    I was ashamed with how little I was able to put into Spark in the time given. I implemented stuff I never used, I created graphics I didn’t have the time to put in, the final product misses a lot of stuff and doesn’t even remotely resemble how I wanted it to be. But still, the game is in the compo! Great fucking feeling. I was in for a quarter of an hair, but was still able to put something up and online. The last three hours were the worst: I still had to create the levels and implement a lot of stuff and started to think it wasn’t worth all the sleep loss and the hard work since it hardly was the game I wanted after all. I stopped for a few minutes to think, then I realized that I was in the compo to make an amazing game but to finish a game. So I pushed through it. It was hard, but Spark finally got “done” (with quotes so big you could sleep in them). Now that I have something playable, I have even more motivation to complete the game because I see so much stuff I was unable to implement that would make the game so much better. I’ll start working on a post compo version soon.
  4. Theme
    This time around, the theme was actually a theme. LD26’s Minimalism was hardly a theme (more of a style), which frustrated me to no end. I could hardly put something together because of that. This time around, I really liked the theme. I loved it so much I had a lot of ideas that I could be working on in the future, which I had to discard for the compo because they are way too big to fit in 48 hours. It was quite prolific. Even too much, which brings us to the negatives of these two days.
  5. Moonscript
    Moonscript is a language created by leafo that compiles to Lua. It basically gives Lua a python-like style. While I know of a lot of programmers who hate forced indents with a passion, I personally feel they make the code immensely easier to read and write. No more ugly, verbose do..end cycles, just press enter+tab and you are good to go. It also forces your code to look good which is hardly a bad thing. Putting the simplicity and speed of coding of Moonscript on top of the beautiful simplicity of Love2d is like supercharging your game making potential. It literally flows under your fingers. My only pet peeve with it is that the debugging errors given but love2d refer to the .lua files because.moon files are compiled to lua. This means that I have to refer from time to time to the compiled .lua file for debugging instead of the .moon file I’m working on, which kinda breaks the flow for me. But still, Moonscript+love2d is a bomb of a combination.

The Bad

  1.  Overambitious idea
    In the beginning, Spark was a huge idea. I had in mind to put forking paths, complex level design, and a story. None of these got into the final game, by far. Mainly it was because of me being stupid and wasting time, but even for the best programmer it would have been a challenge to put together what I wanted in 48 hours. I remember clearly thinking “I’ll never do this” when I started working on Spark. Buy, was I right. Still, I really liked the idea (see point 2 above) so it wasn’t a complete idiotic choice: it’s not like the idea will self desctruct when I submit the entry. But still, I should have probably toned it down quite a bit.
  2. Tiles
    Oh boy. Tiles. Never really used them. And it shows. I wasted around 4 hours making a tiling system that creates levels from images and carefully drawing the tileset, only to discover that I would have to hand draw every level, every angle, every border. I would never be able to do that. It took me around 20 minutes to make one room! I was so heartbroken when I had to draw blocky levels that hurt my eyes only to watch. Also, since the pitfall and the wall tiles were too similar and difficult to determinate which was which, I had to basically throw in a barf-looking pitfall tile in the last half hour to make the game playable. It hurts to watch what it could have been and how it is instead.

    Spark's original tileset

    Spark’s original tileset

    The original pitfalls

    The original pitfalls

    Instead you got THAT

    Instead you got THAT

    The hell is this?

    The hell is this?

    MY EYES! IT BURNS!

    MY EYES! IT BURNS!

    So… Yeah. I’m not proud of how it looks. But hey, that’s a mistake I’ve learned from.

  3. Horrible code structure
    In my last few projects I got used to an entity component system I’m developing for Lua. While at first it is pretty weird to work with, once you get the hang of it it flows easily and is very clean to mantain and use (even though there are some weird bugs that pop out once in a while). I could have used it for the game but for this ludum dare I wanted to try something from “inspiration”. The result is a mess of a code. I already have problems changing it because of how horrible it is. It is my fault for being lazy and breaking encapsulation too much, which in the end makes mantaining code an abomination. I should be more careful next time around. I’m already thinking about rewriting the engine to make it more human (right now it looks like a deformed monster struggling to breathe).
    The way I implemented stuff was also weird. I had a lot of problems creating a switch that would change the level, which was quite embarassing thinking of it (but still, I have the excuse of sleep deprivation, so shut up>:( ), so I created this weird solution where there is a switch that changes level from one to another, which greatly limits future implementations since it is limited to one switch per room and can only change THAT room. This really hurt level design since there was hardly anything I could do with it, and the time to implement new mechanics simply wasn’t there. I want revenge and I’ll probably reimplement the mechanic in the post compo version.

So, this looks like that’s it. It was a pretty stressful weekend, but Ludum dare is about that. It makes you understand how difficult actually finishing a game is, it takes away your sleep and it makes you ashamed of what you make, but it is still an amazing experience.

Now, for the best part: actually playing the games! I’m so excited. Happy voting!

Blog Entry ->

Tags: , , , ,


2 Responses to “Spark – Postmortem”

  1. RedHot says:

    Love2D JIT has been introduced to the public a couple of months ago by a user. Google it 😉

Leave a Reply

You must be logged in to post a comment.

[cache: storing page]