LD26 April 26–29, 2013

frog.recurse(favorites);

So, I’ve got a few favorites from this competition. Oddly, they were mostly games I found on the very first day after submission, totally at random.


Staring Contest



Laugh all you want, but this game pretty much nails the theme. Say what you will about the technical achievement, but I think it’s probably my favorite entry from the entire competition so far.


Fair King



Another game where the simplicity really shines through, and a nice instance of a contestant stretching his comfort zone successfuly. The mobile version is a bit difficult to play, so stick with the desktop/laptop version.


…—…



Playing this one on my phone was a really interesting experience. I liked the thought of an old style terminal interface on my phone… which suddenly was overtaken by a mysterious being.


PRISMA



Judging by the screenshot you would think this to be a creepy entry, and in some ways it might be… but it’s also a really colorful and wonderful entry, that’s wrapped its colors up under a cloak. NEEDS HEADPHONES and is worth it!


Chez Angelou



While this one feels incomplete, and probably off-theme, I enjoyed its style and presentation. I enjoyed the “Catherine” reference at the bar. And I enjoyed the reference to the author’s previous LD entry in the framed portrait of the mediaval world. I hope there’s a sequel forthcoming!

Comments

EdoMiyamoto
06. May 2013 · 11:00 UTC
Wow thanks for noticing my game recursive frog ! As i received 100+ messages telling me to make the sequel/full story/full game i’m planning on doing it for real, like on steam or something, and giving free key to whoever had motivate me through this LD ! You will not be forgotten !

“Snape” Postmortem

Snape is a simple Unity game involving rolling balls knocking into each other. This is the first game jam where I can confidently say that I’m very happy with the finished product; I didn’t run into any major snags in the development process, everyone who I playtested with appeared to have a lot of fun. My roommate even continued to play it after the competition was over!

I’m definitely going to continue development of this game. The largest recommendation I’ve gotten from everyone is to add multiplayer, so I think I’m going to try to turn it into a casual, local multiplayer, “Mario Party” style game for entertainment centers (think Big Picture). In the meantime though, the game is still being voted on, so rate it here!

Also, check out TJ and Dane‘s games!

Ginnungagap post-mortem

After making two post-compo releases of my Ludum Dare 26 entry, I think time has come to take a step back and have a long, hard look at the fruits of my labour. It’s kinda hard for me to be sure what went right or not and where, so I’m just going to list some stuff I did and didn’t do and let you be the judge!

What I did

gamemaker

ihavenoideawhatimdoing_dog.jpg

Use familiar tools

This is my second game jam. First one was Global Game Jam, where my team made a puzzle platformer about E.T. type of dude who could suck the energy out of things and use it elsewhere and there were dead animals… Oh, just check it out if you’re least bit interested, I’ll wait. It’s pretty short and ends in a cliffhanger. I was the programmer, and with no game making experience of any kind I quickly decided to use the program I had heard was friendly to beginners: Game Maker.

It really was an eye opener. Suddenly the little JavaScript and C I had teached myself over the years (but never enough to start a career in web development) became immensely useful, since GML is pretty much based around them. The finished product has it’s quirks, but it mostly works as intended and I was incredibly proud of managing to program it.

So there really was no competition. I’ve dabbled with Unity, but found it dense and since I was going to make 2D game anyway, I thought that time spent learning it’s ins and outs could be better spent elsewhere.

Looks like city building to me!

Looks like city building to me!

Have a set of goals

They were simple, but they were there:

  1. Finish the game.
  2. Have AI that interacts with the world somewhat immersively independent of player input
  3. Some kind of city builder would be nice!

It’s pretty debatable if I achieved any of these goals, but they shaped the decisions I made during the compo from the start.

 

The key

The key

Work with what I got

So, about those goals. It became clear pretty quickly (about that time when I had spent six hours trying to get little dudes to stay inside their huts at night) that I wouldn’t be able to make an engaging strategy experience in the timeframe given. That goal had to go. But I had no time to start from scratch, so I had to do something with the stuff I already had – somewhat working villager AI, handful of sprites depicting said villagers and their environments. There was some element missing.

It was only when I first drew that crude monster sprite I realized what this game could be about: stalking villagers and snatching them in the night. That felt… right. Like I had worked towards it all the time. All design became about making that experience more true, more fun, more varied: bigger levels, staying still (and later moving slowly) to be invisible, speed boost for panicking villagers, towns springing up overnight, hunters and their traps…

This is truly a game that wouldn’t exist if it weren’t for Ludum Dare. The idea didn’t even occur to me until I was halfway through building another game!

 

“If you ask me, this game could do with a bit more pant pant grr woof”

Get feedback early

I’m privileged to have a friend (not pictured, though you can see the actual chat window on the screen!) that tirelessly tests and gives feedback on anything I might be working on. The game would most likely be unplayable, unoptimized mess if they hadn’t pointed my attention towards stuff that simply didn’t work.

Also I am lousy at naming projects. Current title was my friend’s suggestion, and it stuck. Still, now I’m kind of vexed that I didn’t think of using the classic Finnish shareware game naming practice. Mörkö Metsä (Spook Forest) would have been a glorious title.

 

Alas, poor Yorick!

Alas, poor Yorick!

Kill my darlings

This goes hand in hand with previous item. In it’s earlier incarnations game featured wind, which changed the speed of tree animations, and tracks, which villagers left behind everywhere they went. Both were poison to performance.

I think the original idea with the tracks was that you could follow them back to the villager’s home and go full fox-in-the-hen-house, but since it was already pretty fast to scout the whole level, it became purely cosmetic. Wind was also just fancy way of adding some variety to visuals but it was so pretty! Yet when my tester started to complain about frequent slowdowns they both went. I miss them dearly.

 

What I didn’t do

gplanning

Text file where you try to decipher the code you wrote a couple of hours ago probably doesn’t count.

Have programming planned beforehand

Making AI is hard. It’s especially hard if you have no idea what your long term plan with it is. Currently villager needs a host of functions, alarms and other objects to make it behave as intended. I feel that this is needlessly complicated and could be written exponentially simpler, if planned ahead. This is where I feel that making a simple map of all actions any given NPC can take could have saved time and made the game run much smoother in the long run.

Then again… when I started making the AI I really had no concrete idea where I was going with the game. Some stuff became apparent only when I thought I had finished it and started on working with other aspects of the game. It’s a feedback loop. Perhaps the only way to make a good AI is to make a full game featuring a shitty AI, and then rewrite the AI.

 

Bonus points if you can make out what songs I skip outright.

Bonus points if you can make out what songs I skip outright.

Set priorities and schedules

Towards the end of compo I chose the way I spent the time poorly. I implemented ambient wind sounds for the latest release without much effort and what a difference it made for the mood! I could have easily made them during the compo and leave the still hopelessly broken villager AI as is.

 

They are completely right, of course.

They are completely right, of course.

Have variables exposed to player

Balancing the difficulty is a daunting task, and it cannot be done without a large amount of varied player feedback. The few testers that I could muster did their best, but the real trial by fire only came when submissions ended and rating started. The game was way too easy, and by then it was too late to do anything about it. However… if I had left a players some way to change the variables that controlled the aspects contributing to game’s difficulty (enemy spawning rate, health, amount of healing, day length, villager speed…) maybe they would have found it a bit more engaging?

Next time I’m participating in a game jam I’ll put all the variables that make any sense to modify into an ini-file that can be adjusted to suit player’s needs.

Conclusion

Wow, word count totally spiraled out of control! I didn’t plan at all to write this long post. I’ll at least end it quickly: I’m still planning on expanding the game, but for the next update I’m writing the AI system completely from scratch. It can take a while! I’ll be posting any updates on Ginnungagap’s Game Jolt page and my twitter, so if you’re at all interested on seeing how this develops, check them out once in a while.

And if you have not yet rated my entry, please do!

Tags: ginnungagap, post-mortem, postmortem

OS/X and 32-Bit versions now available!

I’m sorry that it took some time to get out, but finally there’s a version for 32-bit windows user as well as os/x users. I hope you enjoy the game! Let us play SUPER MONSTER ATTACK!

osxout

[ PLAY NOW! ]

Why I miserably failed at LD 26

Well, some of you may have noticed (but probably didn’t) that in the last days I disappeared.

That’s because I failed at LD 26 and I was ashamed of coming back here after failing.

Why I failed at LD 26? Well:

 

  1. I got sick. Nothing serious but I was definetely not in the mood to make games.
  2. Motivation. I started to make my game. Then I saw what other people were making. Then I saw how my game was a crap and lost my motivation.
  3. Theme. No, I will not complain about the theme itself, but I was prepared for other kind of theme. My tools were way overkill and non apropriated for the kind of game I was aiming to make. For example: I was using Box2d in a game were nothing moves!

I think 1 was the main reason.

Well, I learned a lot actually. After 5 hours of work (that was hour 12 of LD) I thought I was done. I couldn’t think in nothing I could add or polish. And I think that’s bad, because the game wasn’t “fun”. Well, after 5 hours of work I was already burning in fever too.

Well, wish me better luck next LD.

 

Tags: html5, LD#26, motivation

Comments

wccrawford
06. May 2013 · 09:40 UTC
Sounds like you learned a lot about yourself and your tools, though! That’s what I love about LD. Even if you don’t end up with a game, you still improve yourself so much that it’s worth it.
06. May 2013 · 14:21 UTC
This is probably cliche and all, but seriously, you really shouldn’t care about what other people are making in comparison to yours. LD is about having fun and improving yourself. It’s about what YOUR abilities are, and raising what you can expect from yourself by giving it your best shot and learning new things. There will always be someone better than you out there. In my mind, If I’ve done better than last time, either by feeling like I’ve learnt more than last time, or if I literally did place better percentage-wise than last time come judgement day, then I’ve won. I can certainly relate to seeing better projects and sucking up my motive… but you really have to ignore that if it’s stopping you from improving. Your enemy should be yourself. If you aren’t improving, you’re moving backwards comparatively, since the world around you is moving forwards. So next time, move forwards by challenging your previous self to a duel and winning. Good luck. See you next LD.
Haette
06. May 2013 · 15:58 UTC
I have a lot of trouble with motivation in general, so my mantra is “making something, making anything, is better than making nothing.” As long as you’ve learned something or made something you like, that’s it, you’ve won LD. Everything else is just icing.

Hundred rated, best five I found…

Since I hit a 100 rated games, I’ve decided to check my scoring and pick some of the best I’ve yet found, in no particular order:

Potato Dungeon by _Rilem – JAM

Very good platformer (although I wasn’t able to get past the horse).

Square Space by Berkano – 48H

2d shooter combined with mining and building.

Steve Can’t Zen by DaanVaanYperen – 48H

Excellent and funny action game. I laughed (which was very rare while rating).

Syntesthesis by TheFuntastic – 48H

Great concept for musical puzzle game, too bad there’s just few levels and no free play.

Mustache Armies by TurboDindon – JAM

Great platform action game, both idea and visuals are incredible (I’d probably mark this as THE best game I’ve found in one hundred tested.

Hosting your own Scratch web player

I made an entry for LD #26 in Scratch and used their website to host the file and the player. It’s a convenient system but unfortunately subject to the whims of their update schedule. For the next few days I’m expecting the Scratch web site to be down as they upgrade to Scratch 2.0.

So I thought I’d post up a quick guide on hosting the Scratch player (the Java player at any rate) on your own web site. Assuming you have a web site capable of serving up your files you’ll need 3 things to make it work:

  1. your Scratch .sb binary file
  2. the ScratchApplet.jar file
  3. a web page to hold your content

Your Scratch binary file is the file that you save out from the Scratch environment when you save locally on your own machine. The Scratch applet you can get from the Scratch web site. I grabbed a copy and put it in my Dropbox if anyone needs it:

https://dl.dropboxusercontent.com/u/15225572/ScratchApplet.jar

As for the web page, you’ll need to write that yourself. The most likely thing to go wrong when putting this all together is paths and the folder structure. Here’s the structure I chose:

public_html/Projects/MyWebPage.html
public_html/java/ScratchApplet.jar
public_html/scratch/MyScratchFile.sb

You could use a different structure, but beware that this will mean you need to put different paths into your embed code to make it work. Here is a bare web page template that should work and you can modify to host your own Scratch files:

 <html>
 <head>
 <title>My Scratch Project</title>
 </head>
 <body>
 <h1>My Scratch Project</h1>
 <div>
 <applet id='ProjectApplet' style='display:block' code='ScratchApplet'
 codebase='../java' archive='ScratchApplet.jar' height='387' width='482'>
 <param name='project' value='../scratch/MyScratchFile.sb'>
 </applet>
 </div>
 </body>
 </html>
 

Comments

rajagopalcr7
25. Mar 2014 · 08:25 UTC
Hi , i am getting error here.. I think its because of wrong path ,may be…
rajagopalcr7
25. Mar 2014 · 08:26 UTC
rajagopalcr7
25. Mar 2014 · 08:26 UTC

My favourites so far

Terrible terrible terrible!
I hoped to be able to rate a hundred games this time. Unfortunately, I have fallen into a horrible sickness since a week back and I do not start to feel any better, nor do I think I will in the next couple of days.
So in the meanwhile, here are my favourite games (in no particular order) from LD26, out of the 65 I have rated.

#5: Minimalist Dungeon Crawler by Cranky

#4: SINE by ElScootro

#3: The Last Soul by Gaeel

#2: Escape the Minimalism by klianc09

#1: Super 1-Bit Space Arena by Orni

I will hopefully recover in time and rate the hell out of the remaining 2282 games.

Comments

Gaeel
06. May 2013 · 11:55 UTC
Hey thanks!
Orni
06. May 2013 · 12:07 UTC
wow, thx you included my game 😀

Coolness 0

I have rate many games already. I also rated many Least ratings games (instead of the default). I see that those getting very low rates are because they have coolness 0, which means they didn’t rate any other game.

What surprises me is that some of them are wondering why they don’t get comments on their games.

As I saw dozens of games with coolness 0, I was wondering if any dev have the actual number of games in that state.

Is this a problem with communication? I mean, maybe those who made a game don’t know they have to rate others to get their game rated as well. Or is it simple laziness? Can we do something to motivate these little guys to start rating other games?

Geekopolis Game Jam!

Hi all!
The following message is adressed to french jammers, that’s why it’s in french 😉

Salut à tous,
Dans quelques jours se tiendra une game jam en ligne (type LD donc) à l’occasion du salon Geekopolis qui se tient à Paris fin mai.
La game jam, elle, a lieu du 10 au 12 mai (oui, vendredi prochain) et il reste des places, alors n’hésitez pas à vous inscrire ici : http://gamejam.geekopolis.fr/?p=inscription
Les projets sélectionnés seront invités à venir à Geekopolis pour présenter leurs créations au public et peut-être être récompensés (http://gamejam.geekopolis.fr/?p=workshop)
Vous pouvez participer en solo ou en équipe, alors n’hésitez plus, inscrivez-vous !

RGBCMY, Post Mortem and Update

So, I managed to participate in my first LD. RGBCMY is very minimal game where you have to absorb colors to be able to pass colored gates and finally reach the target.

What went right

  • Using Löve2D game engine
    I always liked LUA and thought that Löve2D is a great engine for small games. I just never found a project I could use it for. Using it for LD was fun.
  • Only using basic shapes
    As the theme was “Minimalism” it felt natural to stick to basic shapes like boxes, rectangles and lines. At first, I wanted to use them as place holders for pixel graphics, but after a while I liked the minimal look.
  • Using sfxr
    There are only two sound effects in the game. Using sfxr it took only seconds to create them.

What went wrong

  • No preparation
    I did not do any preparation, so I spend the first hour configuring my tools and figuring out how to actually use Löve2D.
  • Underestimating level creation time
    I totally underestimated the time it takes to create and test new levels. Although I came up with very minimal level editor, I only managed to include 5 levels with the game. Four of them were created in the last hour of development. You can easily finish all levels in less than 30 seconds.

Update

As I only managed to include 5 short levels but got nice comments asking for more, I have now added five more levels which are way more challenging and should keep you entertained for a few more minutes. You can find the download links on the entry page http://www.ludumdare.com/compo/ludum-dare-26/?action=preview&uid=21343.

Conclusion

Ludum Dare is awesome! I’ll definitely be participating again next time.

Comments

GreaseMonkey
06. May 2013 · 22:57 UTC
Lua is not an acronym. It is the Portuguese word for “Moon”.

Aranami is going mobile!

The voting round isn’t even over yet, but the responses to our zen garden raking puzzle game Aranami are so positive that we’ve decided to make it into a proper game for iOS and Android!

After having weighed the pros and cons of various technologies, we’ve started writing Lua code in the cocos2d-x framework. We considered libgdx but found a $299 Xamarin license (needed to run the Java code on iOS) a bit steep. We also considered Haxe with NME but it seemed a little immature, and lacking good documentation. We also considered playN, but it did not appear to have any advantage over libgdx. So cocos2d-x it is.

Improvements we plan to make, compared to the Ludum Dare version:

  • More levels! We’re aiming for 30, instead of only 8.
    We might offer additional level packs as in-app purchases later.
  • Super-crisp, beautiful, HD, Retina-ready graphics.
  • Different rake shapes, starting with a straight I, going to the L from the LD versoin, then later on maybe U, T or Z shapes.
  • Correct par scores. We had some trouble with beta-testers achieving better scores than we had, so we intend to brute-force all possible routes to verify there is no shorter option. It’s a large state space, so I’m not sure how well this will work, and we might have to use some simplifications, heuristics or hinting. Apart from producing a par score, such an algorithm could also tell us how many possible routes there are, which is a metric for how difficult the level is.
  • An undo option.
  • A sandbox mode, where you can draw lovely patterns to your heart’s delight.
  • A level editor.
    In a future version, we hope to make levels shareable online.

Cocos2d-x is a bit harder to get started with than plain HTML5 and JavaScript, neither of us are familiar with the API and neither of us have a lot of Lua experience. But after a day or two of research, fiddling and hacking we’re finally over those first hurdles: we have a rake, and it moves in response to touch, both on Android and on iOS.

IMG_20130506_210409

 

So if you haven’t played Aranami yet, go try it now! Any additional suggestions for the upcoming mobile version would be hugely appreciated; you can leave them in the comments to this post, or on the entry page!

Fractured REMIX + Rad Game Roundup

While playing through the games for Ludum Dare 26, I found an awesome little puzzler called Fractured by dalbinblue. The game features a really rad song that I decided to remix (with dalbinblue’s permission, of course). Check it out on Soundcloud!

Fractured REMIX by SonnyBone

Also, check out this collection of 15 of my favorite Ludum Dare 26 games… the RAD GAME ROUNDUP for LD26!

rad-game-roundup-ld26

Tags: rad game roundup, recommendations, song remix, soundcloud

Complexity Post-Mortem!

This was my 4th Ludum Dare, and for it I made a game called Complexity, a first person shooter/platformer in Unity3d! Timelapse:

From the start I knew it would be some sort of first person game. In LD24 I had made a puzzle game, which surprised me. After LD24 I tried working on some more action-based mechanics: I had begun work on a 3rd person shooter adventure game and spaceship simulation game.

So with my newfound curiosity of the action genre I wanted to make a game that would prove my profound knowledge of fun mechanics. Like most of my games, it started looking like this:

a

After the basic movement was achieved I started thinking of a plot. From the beginning I knew there had to be a bad guy, because without a bad guy there would be no purpose to shooting things up! And with the theme Minimalism, I decided early on that you were trying to stop some sort of bad guy from making things too simple. From there I came up with a weapon to counter his efforts — the complexity gun.

b

Alright, so now I had a weapon. After working on putting some basic shapes together I started a simple AI script. From this I had my enemy. If there was one thing I learned from LD23 it was that the more the character interacts with the level the better — basically keeping the immersion. So I came up with a second purpose for the complexity gun – what if it could shoot objects and make them more complex too? Then I tied this into a gameplay perspective — doors that could only be opened by making them more complex. With these new mechanics I pieced together a level.

c

Audio and music are pretty self-explanatory, if you want to see exactly how I spent my time on them check the timelapse above!

After working on more important game mechanics such as health and enemy lasers, it was time to work on the final boss! Obviously you all know what it had to be:

Untitled-2

Sorry to whoever worked long and hard on that animation 😛

Anyways to add story to the game I quickly came up with a splash screen and tutorial section and after that it was done!

4

 

What went right:

  1. Gameplay
  2. Mechanics
  3. Boss Battle
  4. Story
  5. Animations
  6. Sound

What went wrong:

  1. Graphics
  2. Textures
  3. User Interface
  4. Incomplete side-objectives
  5. Goal of game

Why don’t you PLAY THE GAME?

Happy Gaming, Ludum Dare! <3

Tags: final, game, post-mortem, postmortem, potato, timelapse, unity, unity3d

Post Mortem!

Unfortunately, I accidentally deleted all of my timelapse screenshots. So, no pictures :( This will be brief.

What went well:
– I did music within the first few hours, so that was out of the way.
– I did sounds every single time I made a new feature that could benefit from sound.
– Paint.NET worked great as a level editor!

What went badly:
– I’m not any sort of composer, and I tried to do a complex musical piece. I’ll keep it a bit more simple next time!
– Something went wrong with my input grab methods. They seem to glitch out occasionally, locking you out from controls and sending you into lava.
– Wacky controls. I always struggle with getting these right.
– I think I spent way too much time playing around with the initial engine! It was just so fun D:

You can play it here: http://www.ludumdare.com/compo/ludum-dare-26/?action=preview&uid=15753

Shut Up, Good Enough, It’s Playable: The Mass Splitter Post-Mortem

A week has passed since LD48 and it’s a good time to take a deep breath and reflect. Rub our sore muscles. Think about what’s next. Weep uncontrollably. Whatever you need. In my case, Mass Splitter went out the door without a hitch! Well, rather, it was well under the maximum number of allowed hitches. It was within hitch tolerance. In truth, there were three hitches: I didn’t get in a main menu, I didn’t get in a tutorial or at least an instruction page, and there was only one level. But all these hitches pretty much have the same cause, that of running out of time, so how comes I haz runs out?

What Went Wrong

Architect hat mostly unworn

I spent a bunch of time trying to get some view components working with HaxePunk. HaxePunk handles origin a little differently than I would think it should work, so I spent a few hours on my View class, getting the Scale, Origin, and Position components to all work together. Great, they now work together.

I did this because my game has orbs in it, and the active orb has a tube spinning around the outside edge of it. You hold the spacebar to shrink the active orb and start growing a new orb on the other side of the tube. After I got the tube spinning at the right radius around the correct center point I then went to add the new orb. This new orb also needs to be placed at spinning radius from the center, so how do I get the true position of the edge of the tube?

Well I can’t. The tube’s actual position is derived inside the view class, so it doesn’t exist at the component level. So now I’d have to either hack into the View objects to get this information (which horrifies my MVC sensibilities), or just calculate the orbital position myself, which I did. Well gosh, that was easy. And now that I’ve done that I can position and rotate the tube using the same logic, so the tube stops scaling along with the size of the active orb, which is a better look I like anyway.

In essence, I looked at just one next thing to do, rather than the broader landscape. Without putting on the architect hat, I spent a few hours going down a rabbit hole I didn’t need or want. On the other hand, I’ve got a cooler View class now.

Failed to take the time to split up complicated classes

I didn’t universally fail this, but I could probably attribute a few hours of wasted energy because of failing to do this early or at all. In particular my firing system is doing several things rather than breaking it up into different systems. See Ash Entity System / What Went Right.

Not putting more of my personality into my game

Friends often tell me I’m funny. Even fine, up-standing strangers — if not calling me that — have in the least called me irreverent. I try not to listen to other categories of people whose job is to be offended by everything. Anyhow – you wouldn’t know these things about me from playing Mass Splitter. Sure, I don’t have to make humor a central aspect of all my games, but a) it’s clearly desirable in a competition where there’s a category for it, b) there are many kinds of humor besides pratfalls and puns that can serve a dramatic cause. Heard of irony? Sarcasm? Deprecation? Pathos? Impudent contempt? Not that Mass Splitter is a deep example of erudition (it’s not), but it’s better for one’s self esteem to believe your personality is a strength. And if it’s not … well, you should work on your personality. Are you trying to tell me I should work on my personality? Stop staring at me like that.

What Went Right

Ash Entity Framework

Richard Lord’s Ash Entity Framework is really good. It’s an entity component system. I used the Haxe port maintained by Dan Korostelev. It was really fun to learn how to use an entity system and put it into practice. For those who don’t know, apparently those folks at AAA game houses have been using these things for years. The idea is to eschew traditional static object hierarchies for a data-driven composition approach. Richard has some great articles about it on his website.

Everyone seems to approach an entity system differently; in Ash the entity is a fairly generic object. You create a new Entity instance, optionally give it a name, add components to it, and add it to the engine. Usually it’s the job of a factory to create the entities with the components you need, but that’s up to you. Components are simply data-holders that you create, with little if no logic in them. Ash components do not need to derive from any base class, any object could be a component. All the behavior for your game goes into the systems you write, derived from the System class and added to the engine instance driving your game. When you call engine.update(time), all your systems execute in the appropriate sequence. Although Ash provides a signaling capability, Richard recommends you use boolean flags or components as markers to indicate when events happen, so that a component event (such as “this changed”) is only responded to by a system when it executes. Using engine.getNodeList(MyNode) a system fetches a list of entities from the engine that are relevant to it. Nodes are classes that contain one or more components; only those entities holding the components you specify will be returned.

I enjoyed using Ash quite a bit and encourage you to look at my source on Github if you’re interested in seeing one possible way of using the library.

Think smaller

Last compo I thought I picked a small idea but apparently it wasn’t small enough because I couldn’t get it done in time. This one was doable — juuuust barely. :)  I tried to get a playable prototype as soon as possible; I would have liked to go to bed on Saturday night with it playable.  Now, that didn’t work.  Pthbth. The prototype wasn’t playable until Sunday afternoon, but imagine if I wasn’t striving for earlier! Suck-sess.

Toolkit practice

I’ve had previous practice with HaxePunk, and I started messing with Ash in a previous game I attempted to complete for the 7-day Roguelike. Even though THAT attempt was a failure, it gave me crucial practice that made this submission possible, and also gave me base code to pick at for Mass Splitter. Of course, more practice would be better, so I shouldn’t wait four months for my next game…

BFXR

This audio tool is available in several forms; the one I used is BFXR. Sooooo convenient. Sure, all your sounds do tend to sound video gamey retro screechy crunchy if you don’t post-process them, but a lot of people go for that, and damn if it isn’t quick to pump out some placeholders.  (… that wind up being the final sounds when you run out of time)

Shut up, good enough, it’s playable

Shut up, I say! It’s good enough. It’s playable. I’m just happy I got out a game. Would I have liked to get those extra things I conceived of? Of course. Over time, with practice, I’ll be able to meet the goals I think I should be capable of. (I’m a damn perfectionist. I’d be faster if I wasn’t always trying some different way of doing things.)

I finished something playable in time that some people actually liked. Next time I’ll do even better.

Tags: Ash, Ash-Haxe, entity system, haXe, haxepunk, ld48, nme

A First-Timer’s LD26 Post-Mortem

 

Preparation

There’s no real way of preparing for a Ludum Dare. The theme on which people make games on is only revealed once the event starts.

So, in the week leading upto LD, I focused on finalizing the tools I’ll be using. I had previously used GameMaker,XNA and Stencyl in varying measures but Unity had always been my ultimate target. Besides Unreal Engine, it is the only top-tier, professional-grade game engine available for hobbyists and indie developers.

Since I had never worked in Unity before, I set myself a task to atleast get a basic feel of its’ features. It was more difficult than I thought. It took me some time to wrap my head around its’ coordinate system, scripting of main camera, particle system and I had to even brush up some of the high-school physics and math concepts.

It was fun and challenging to learn but I knew the real challenge lay ahead.

Challenges Ahead


It was never going to be easy. In that very week, I had THREE back-to-back practical exams. So, I spent Wednesday,Thursday and Friday on them. Also on the day LD was going to start (with the announcement of the theme) I had to give my Senior Year project seminar in the college. So chances were that I was already going to start a good 8 hours later than everyone. Plus, I had a birthday lunch I was obligated to attend to on Sunday and I couldn’t excuse myself out of it.

It only got worse.  My Internet provider called up saying the maintenance of Internet would mean it would be down till Sunday morning. Just great. 

Basically, if I was planning to aim for the 48-hour deadline, I was already going to have to work with 10 hours less and without Internet to help me. Not a good start for things. I told myself that even if I wasn’t able to finish it, I’ll learn something.

With that positive mentality (hear O Pro-Life Preachers!) I went into the weekend.

Theme

When I woke up on Saturday morning, I immediately checked the site and found that the theme was “minimalism”. Since I had a project seminar in few hours, I had to get ready for that but I kept thinking about the theme and what ideas I could adopt into a proper game that is fairly unique but not too difficult to make.

Behold my infamous handwriting! Behold my infamous handwriting!

Surprisingly by the time I reached my college at 9, I already had charted a rough concept and I wrote it down. By the time I was done with the project seminar (which was delayed no thanks to the lovely professors of our college) and I had returned home, it was 2. I took a short nap and began at 3.

Timeline

I had decided on a dynamic rhythm game with simplistic two-control scheme that had a rather deep underlying concept but absolutely no exposition.  Dynamic in the sense, the players could adjust difficulty of the game through their own actions. Create/destroy musical objects which repeat to form a pattern imitating one’s daily routine.

With the basic premise on paper, I began getting the setup ready. The LD’s “Compo” rules state that all the content — code,art and music needs to be made within those 48 hours. It took me a 4-hour sitting to get the engine set up exactly how I wanted for my game.

I then began coding the individual behaviour of the player “cube” and it was around 10, I could finally start working on the chief concept of the game — recycling objects. This required creating a custom module. Something which a newbie to Unity like me obviously suffered to do.

Unable to find solutions, I decided to plug in my MIDI keyboard and create some tunes in the meantime. A rhythm game needs to have some good tunes after all. I stuck with ambient music as the background soundscape as I felt it was minimalistic and sparse enough to suit the theme.

I used FL Studio for the beats. I really liked the simplistic interface and how easily one could mix. For the MIDI, I used the typical MAGIX Music Maker and stuck with the traditional play-record-mix-master technique to get the appropriate sounds. I liked how I could imitate sounds of a flute and of a violin using a low-pass filter applied onto lower keys of the keyboard.

While I was doing this, I was constantly trying to rack my mind to solve the issue  I was stuck on. It was around 3:30AM when the migraines started creeping in and I finally gave up for the night and went to sleep.

New Day, Late Beginnings

I had set my alarm at 6. I snoozed it.

When I next woke up, it was 7:30AM. Ugh.

Within 10 minutes, I was back to work. And tell you what, it took me just 10 minutes to crack the problem that was plaguing me for almost 4 hours last night. Just ten minutes.

Over the next three hours, I was on a roll speeding through the lost time last night. If this were the popular Kairosoft’s Game Dev Story, I would be a programmer “on fire”.

Unfortunately, my mean streak came to an end when I had to go for the birthday lunch. I came back at around 2PM and graciously avoided the comforts of an afternoon nap and set back to doing. I had been feeling weirdly confident since morning. As if, despite all the odds that had been stacked up against me, I was going to do it. At the same time, I was a little wary of being like a hare in the Hare and Tortoise and not getting too overconfident of where I was.

The workspace The workspace

So, I continued working without a break. More tunes were created by 4PM, some of which were recorded live using my iPad and SoundCloud app on it.

Then I set aside everything to work on my primary weakness — art. I believe I have a decent visual aesthetic sense, but when it comes to creating them I’m no good. There’s this inherent phobia that drawing instills in me which seems to sap all the confidence I generally have for other things.

So, I got onto it. Using Inkscape and Photoshop, I created simple designs that described the type of instruments each track was imitating and keeping the color palette fairly simple.

I did not believe that minimalism = black & white. In my opinion, minimalism is something which conveys a deep concept through limited usage of aesthetics and exposition(if used in a narrative context).

So, as you can see the colours I used were a lot more vibrant than what most of the others used for their games.

It was about 8PM when I was done with art and sound. So, I started implementing them into the engine one by one. Surprisingly, art didn’t result in any obstacles. It was Unity’s sound design which gave me trouble as I couldn’t wrap my head around how I should use it to fit the purpose of my own game.

I tried to look up at the Internet.

Still no internet.

I was seeing visions of yesterday, where I was stuck on a problem and without help from the Unity forums, I wouldn’t be able to get past them. But somehow, a few workarounds later, the sounds worked pretty much like how I wanted. I guess that is an important aspect of design as well. “Trying to adapt things as much as possible”.

Late Run 

Around 10PM, I had this crazy idea. An idea that could certainly have a positive effect. Now, I despite this being my first time in any game jam, you need not tell me that even entertaining these ideas was basically signing a death certificate. Given the time constraints, you had to stick with the idea you had originally thought. I had managed to do it thus far — but this idea seemed too delicious to not implement it.

So,leaving all my scheduled plan for the game aside, I started focusing on this. It was not before 2AM when I had finally finished this. With the deadline date, just a mere 5 hours away, I decided I needed to wrap up ASAP.

So, as I was finally getting the win/lose conditions implemented, I realized something.

I had not even made the Main Menu.

Again chucking everything out of the window, I frantically set to making the Main Menu, the “How to Play” screen as well as the Win and Lose screens. This took art and some new scene scripting to implement but I finally did it.

The screenshot at 5AM. With 2 hours left on the clock The screenshot at 5AM. With 2 hours left on the clock

The GUI needed tweaking, so I set on doing that.

It wasn’t until 6AM when I was finally done. But then I just recalled that I could make the background music vary according to different “phases of life” or the progress bar atop.

So, I spent another hour doing that. Then, almost frantically, I baked the native version (Windows) of it and quickly set about uploading it on Dropbox. It was just around 7:10AM (the deadline was 7:30AM) that I logged onto the Ludum Dare site and filled up the submission form, describing my game and uploading various screenshots.

I had made it on my first Ludum Dare. I had finished making my first “complete” game and that too within the 48-hour Compo deadline as I had initially aimed. Despite all those obstacles that the world threw at me, I managed to do it.

Post-Mortem

In retrospect, I am rather proud of myself. Not because of the game. But because of the dedication I never knew I had within me. I don’t recall ever waking up for the entire night for something I was working on. On occasions, when I have done that, I’ve done it if I was reading a really interesting novel (The Wind-Up Bird Chronicle),watching a really interesting TV series(Twin Peaks) or playing an addicting game(too many to name).

But never for something related to work or even a hobby. Something where I wasn’t getting entertained. I lost motivation while developing a number of times before and this time I had plenty of opportunities where I could have table-flipped and just quit. But I didn’t. I stuck to my target and that makes me really proud of myself. This past year has been great for a number of reasons and I think I might have found another good reason for that.

What’s better is that the game has received some really good praise from fellow LD-ers and their comments both on the game page and my Twitter were really encouraging. Even the criticism has been helpful since I apparently had messed up on a number of small factors(resolutions on Web browser etc) but it’s all cool.

The best part besides finally having a “finished” game? THE MOTIVATION! I have loads of it now. I had heard people say how a finished game helps and now I am experiencing it first-hand. I’ve already made plans on reviving some of my older “ideas” and seeing if I could implement them. All while implementing some features I left out of the LD48 game due to the time constraints.

So expect to hear more of this “new” side of the old Ansh in the coming weeks.

Of course, here is the game page on the Ludum Dare site. Currently, I’ve managed to port it on all versions — Windows/Mac/Linux as well as Web through Unity without any major issues. I explain the underlying concept and the mechanics much better there. So,it’ll be better if I keep it simple here.

Any feedback is appreciated. I’m new to this and I’ll take any words — praise or criticism alike with a pinch of salt and take it as part of my learning process.

That is all for now.

–Ansh

EDIT: Indie Game Mag featured my game as their “Indie of the Day”

Tags: Ludum Dare, post-mortem, unity