fullmontis

LD26

My first Ludum Dare!

I’m in! First ludum dare and first attempt at completing a game ever! Wow, that sounds scary. Hopefully this will be a learning experience even if I miserably fail in delivering my game.

Since a lot of people have been listing their tools for the job, I guess I’ll do the same.

  • Genre: Point and click adventure
    I had been planning to make a free point and click adventure for a while now, so I thought that making a ludum dare entry may be some good training wheels before throwing myself into my “dream project”.  The fun thing about this genre is that it can fit any theme pretty easily.
  • Language: Python
  • Engine: Ren’py
    I’ve rarely seen Ren’py being used in ludum dares and never for anything other than visual novels, and that’s a serious pity. Yes, it is an engine for visual novels, something that actually made me ignore the engine for a long time  (stupid, stupid!). But the reality is its scripting language is so fast to use and flexible you can do some rather complex stuff with it.
    Okay, it’s pretty limited: for example, only 2D (no 3D models), and is not ideal for stuff that requires real time input, like a platformer (using plain pygame is better for that). But if you want to make something story driven that requires user input once in a while (a point and click game, for example), its scripting language is pretty powerful. It’s a pity everyone uses it mostly for visual novels and dating sims cause there is a lot of stuff that could be done with it. I’ve done a prototype of a first person point and click game in a matter of  minutes, no joke.
    Fast prototyping, fast debugging and on the fly script reloading means an immense amount  of time saved that can be used to add more mechanics or make better art and music. Since I know that I will be using (wasting) most of my time to come up with an interesting idea, time efficiency is a critical factor. Plus, it’s multiplat AND free. 
  • Editor: Notepad++
  • Graphics: Paint.NET, GIMP, probably some handdrawn or rotoscoped stuff.
  • Audio: REAPER combined with the free and excellent sounding Synth1

Good luck to everyone and good work!

Tags: adventure, click, first, LD#26, point, pygame, python, reaper, Ren'Py, synth1, tools

Why I decided to partecipate to my first Ludum Dare

Ok, since I have some free time I may as well put down why I decided to be part of this Ludum Dare.

The main reason is I need some motivation to get my first game done. It is actually pretty easy to procastinate when you do not have some hard coded deadlines. Ludum Dare instead gives you a time frame (and a very small one too!) to do EVERYTHING related to making a game. This is actually a fantastic idea, and I’ve followed the past LDs with excitement and awe while some expert coder was showing his code katas on Eclipse or Vim, or a modeler was plasmating a good model in a matter of minutes. I always though: “I’ll never be able to do that”. I still think I can’t, which actually puts me a lot of pressure on the upcoming challenge. I mean, the hell I’m doing? I’ve hardly coded anything in my life, let alone a whole game! But still, pressure is a good stimulus to get stuff done, so I’m looking foward to it. Whether I’ll finish my game or not, I’ll put as much effort as I can into it.

Another great reason I really wanted to partecipate was the community. It is great to see so much support in an event, and a very rare occurrence indeed. While following past LDs I really liked the attutude and dedication of the developers, and really wanted to be part of it (hopefully I’ll be able to). I really learned heaps by only reading other posts about what went right and what went wrong (this is also the reason why I’m trying to contribute with useful posts). I got to know a lot of tools and techniques I would have never heard of if I didn’t watch some timelapses.

Third, I really want to see some feedback. Feedback is vital to any developers, since I believe what defines us as human beings. Doing something and getting responses is something that really excites me, and makes me want to contribute even more. Also, as I said in my first post, I want to make a point and click adventure game for an idea of a story I have. This LD was the perfect occasion to get a small game together and see how people like or hate it. Since my “dream game” will probably have my “style” in it just like my LD entry, this game will be a good test for the waters, so to speak: it will help me see if I’m moving in the right direction or if I have to do something better or differently.

Fourth, it looks fun. This is without a doubt the biggest motivation of them all. Only reading past developer posts makes me all set up to start. It’s great to read other posts where people say it was heaps of fun… Somehow it makes you enjoy the game even more. Following the story of a game is great, and that’s something I really would like to see more of. If I’ll have enough time, I’ll share as much as i can of the development of my game.

Well I guess that’s it for now. I think it would be fun if you guys would share in the comments your reasons for partecipating in this LD.

Tags: LD#26, motivation, reasons

Some Basic Concept done! I present you… The Mission!

Ok, after a difficult 6AM rise and already 2 hours behind the schedule, I crawled to the PC to find a theme that made me gasp. Hell, I really didn’t expect this to be a theme. I mean, tell me about a game done in 48 hours that isn’t minimalistic!

So, the brainstorming session started quite slowly. Pick up the pen, go to the desk with a white paper and start writing whatever came to my mind. An hour later I’m rather happy to say that I have a clear idea of the concept of the game. And (this coming from me is actually quite unexpected), seems pretty fun to both implement and play. Let’s make a quick heads up.

My traing of tought followed this route: about 99.9% of the games that will be developed will focus on minimalistic graphics. Well, that’s almost a given, due to the time constraints. That CAN fit the theme alone but of course with a theme so ample there are a lot of stuff you can apply it on: mechanics, story, choices, number of buttons used… I see from posts that this last one is a common choice… Very interested in seeing the results!

Ok, since I’m using Ren’Py for the development of my game, I’ll focus on… Drum roll please… Minimal dialogue choices! 

(Why is no one clapping?)

Ok, it is not the most original idea in the world, but hear me now. The game is about rescuing a princess. You have two choices: “yes” and “why?”. With “yes”, you save the princess and all is good. You see an image of you saving the princess, credit roll and goodbye. With “Why?”, the narrator explains your reasons. For example, “Cause you are in love with her”. Then you have the same two choices: “yes” and “why?”. With yes, you win the game, credit roll and all. With “why”, the narrator explains… You get the idea.

So, you can basically choose any time to save the princess, but you can go as deep as you can with your  The fun stuff is, this can go on for quite a while, and can lead to some pretty fun writing. With time, you will access some unique questions. And, now for the fun part: based on the question you asked, the final image will change according to the details you unveiled. More question you will ask, more details you will add. Think Binding of Isaac: each power up adds up effects on the character. This will be the same but with the final image.

The title for this game is (since the theme is minimalism, let’s keep it simple):

 

The Mission

(Oh yeah!)

I’m pretty happy with the concept so far. I really didn’t expect to be happy with a concept of a game less than one hour after waking up. I have some basic idea on the Ren’Py script to use, now let’s get down to work!

Tags: choices, concept, dialogue, minimalist, pygame, python, Ren'Py

First day of work is over! The Mission is starting to get shape…

I’m proud to present you the result of over 15 hours of hard work:

The mission

The Mission

 

Ta-dah!

Yeah, I know, it’s really bare bones (at least I’m getting the theme right, I guess). I sincerely hoped to get more stuff done in 15 hours. I’m kinda behind on a few things, most importantly the script! But at least the basic engine works well.

(I’m still wondering why some buttons have white font and others don’t)

My biggest waste of time was trying to do drawings with the mouse in GIMP. I probably lost a couple of hours on that alone. I was messing around, trying to make a good image, but that didn’t work as I wanted. I dropped everything in the bin and started from scratch with Inkscape. First time using it, and I’m already in love! Easy to use and extremely powerful.

I ditched the initial “save the princess” theme for something probably more misterious: a secret agent story. I won’t spoil the story much but I’ll tell that I have a few interesting ideas to put on paper.

In my last update I talked about making a different image for each choice made. I’m sincerely not sure I’ll be able to do that, especially considering I still have the whole script to do (though that won’t take much, couple of hours tops).

Aside from that, everything went rather smoothly. No major bug encountered (still). The good news is that, differently from what I predicted, I’ll probably be able to drop a (kinda) finished game before the 48 hours end. It won’t be as good and pretty as I hoped but still, it’s at least something in the plate.

Other goodies: I worked on music to detach from coding a bit and make my brain breath a little, and it came out rather cool sounding. I love synth1, that stuff really is golden (and it’s free! It feels like jackpot).

This is a screenshot of my desktop at the end of the day.

screenshot1

 

FreePlane really saved my life, it is a godsend for organizing stuff out. Highly reccomended.

Ok that’s enough for today. Now a Saturday evening out and some sleep and tomorrow we’ll start again at 6AM (ugh). Good luck to everyone!

Tags: renpy python mission update

The Call – Postmortem (AKA Rookie mistakes a gogo)

Phew, so after two and a half hellish days, here we are. The Call is actually finished (kind of).

Last Friday I never made a game in my whole life and never thought I would.

Now, just three days later, I completed my first game.

The feeling of accomplishment is overwhelming, even though the result is not spectacular.  This, plus the fun I had making it, are worth the sleep deprivation and stress of this last week end!

Let’s look back in time and analize what made the development of The Call possible and what made it Hell on Earth, so that next times I’ll ake a game I won’t have to keep the phone near me to call 911 in case I have a heart attack.

What went unexpectedly smooth:

  1. Ren’Py.
    As I said in another post, this engine is pretty amazing once you get to know its possibilities. It’s so much more than a visual novel engine. This weekend helped me appreciate the qualities and fun of scripting for this engine. I have to say it was a neat choice for my first game since it allowed me to save a lot of time on many things that would have taken forever in another, lower level language (for example sound). I was really satisfied of its scripting language and its extensibility. I will use it again in another game, that’s for sure (even though I’m thinking about using Haxe for the next LD for making something more interesting gameplay wise).
  2. Deciding the engine/language I would use before the start of the competition.
    I knew way before the theme came out on saturday that I would be making a game in Ren’Py. That saved me a lot of time on brainstorming ideas later on cause I already knew what the possibilities and limits of my engine were. I also had some time to become familiar with the engine itself, so that I would not start for absolute zero at the start of the compo, thus saving a little amount of time.
  3. Brainstorming ideas.
    As soon as I knew the theme for the compo, I sit down on my desk with a piece of paper and a pen and nothing else and started writing. Writing, writing, writing. I wrote down ideas, comments on ideas, random thoughts, imprecations, everything that passed in my mind. Pure freeform mindflow. The result was that, after a few mediocre ideas or some amazing iddeas that I would have never had the time to do, I finally struck an idea that appealed me: making a game with minimalistic dialogue.
    The original idea was completely different and probably more interesting as far as the competition goes: it was about a game where you have to save a princess and can only choose to save her. After that, the game would end. The only additional choices would change the context of the things happening, so you could save princess Diana with a motorbike on fire or save princess Peach killing all the Goombas with a machine gun. The idea was cool but way more ambitious, so I had to scale it down a lot. In the scaling down process, a lot of stuff changed, ending in what you have played (or will play, or won’t play, your choice) which in no way resembles the original idea. The original title was also different (The Mission). I still think it is a cool idea and may implement it in the near future.
    Still, after less than three hours in the competition, I already had a rough idea of what my game would be. This gave me an immense motivation that I would have never had if I didn’t have a clue on what I would be doing. This played a huge part in me actually being able to finish my first game.
  4. Knowledge of the tools.
    Most of the tools I’ve been using (Ren’Py in part, REAPER for sound, GIMP for drawing) I know very well, meaning I saved a shitload of time on a lot of stuff that I would have to learn, subtracting time from the already limited time pool of the competition. A little hooray for me!

 

What went horribly wrong:

  1. Ren’Py.
    This engine is a double edged sword. While it has great potential, actually being able to use it means having over the top google fu abilities. Its documentation is extensive, but lacks examples. This implies that implementing new stuff isn’t immediate and requires some attention.
    Luckily PyTom (the head behind Ren’Py itself) is an exceptional dude and posted tons of helpful posts in his forum, and the whole community is very supportive; still, districating the gold out of the World Wide Web is not immediate and lead to a lot of time spent in the browser instead of in making the game.  This to be honest is more of a  nuisance and less of an issue if you do not have deadlines; doing it for a LD (especially my frist one) was instead particularly stressful.
    Still, I have to say that the new stuff I learned over these three days made me want to explore the possibilities of Ren’Py even more. I already have an idea for a new game, and this time making it will be way smoother since I actually know how to do stuff.
  2. Failing to follow my own advice.
    On Friday I posted a list of suggestions to actually make my first Ludum Dare go smoothly. I feel slightly guilty in saying that I completely ignored my own advice, and as a consequence nearly fell asleep on the keyboard trying to correct bugs at 4 AM after a 20 hours day. My biggest failure was not remembering that details are EVIL. As a perfectionist, details have a devilish charm and it never feels too soon to start working on them (whil eit actually is). What I did wrong was starting to work on art and music while not having any idea for a script. While at least it gave me something interesting to put into the game, it put me back more than 36 hours on the script, which I completed on the last few hours of the competition. I actually finished the script for the interactive novel less than one hour before the ending of the compo, meaning that it would have been impossible to finish all the debugging and proofreading in time for the LD48. I still made it for the jam, but it still disappoints me that I came so close to the deadline without actually making it.
    (In my defense, I have to say the original script I though of was crap and putting it back on time allowed me to rethink a lot of stuff and refine it a lot, making a lot more interesting to read at least. Still, doesn’t hold up as an excuse to me.)
    As they say, there are two ways to learn stuff: the hard and the easy way. This time I went for the hard one. Next time hopefully I won’t make the same mistake again.
  3. Time management.
    This was the number one issue for me. While I actually scheduled the times for everything quite rigidly, I didn’t include any time for debugging. This was HUGE. As an excuse I can say this was my first project, so I had no idea debugging could take so much time; on the other hand, thinking it would take NO time was foolish from my side. I mean seriously! Thinking about it, how could I think the game would just fall in place by itself? Another big mistake that I won’t make again.
  4. Sleep deprivation.
    I didn’t think this would be such a big issue. I’m probably getting too old for 4 hour sleep schedules. Or, more probably, thinking intensive activities like making a game actually reuire the brain to be well rested before going on a marathon. The fact is, the last few hours before the end of the 48 hours were an agony. I had an half finished script after 16 hours of work in that same day and 4 hours total of sleep and it was extremely hard to maintain focus. In the end I did it (sort of), but I would never repeat that again. You can make more in an hour with a well rested brain than in 5 hours with a sleep deprived one.

 

So, I’m guessing that’s it. Being my first attempt at this, I learned quite a lot, some in the hard way, some in a softer manner. This post was immensely useful for myself and I really hope this may help others startng out on what to expect. Good luck to everyone!

PS: I’ve played now over 140 games in this competition. I’m completely and honestly in awe for some of you guys out there. I’ve seen so much creativity and talent in those games that it actually warms my heart. I sincerely hope all the best for all you guys!

Tags: post-mortem, postmortem, Ren'Py, the call

LD27

Second Round!

So, yes, after an exciting first time with Ludum Dare 26, I’m back for more. This time hopefully I’ll be able to get into the compo and not screw up at last minute. I hope to squeeze at least a few hours of sleep in there too (but it isn’t my main concern).

Here are the tools I’ll be using for the job:

Engine: Love2d (Lua) OR Ren’Py (Python), depending mainly on what weird idea passes my mind the day of the compo

Editor: Scite

Graphics: GraphicsGale and Gimp/Paint.NET

Audio: MilkyTracker

So that’s all for now… See you on the day of the compo.

Tags: love2d, lua, Ren'Py

This is a disaster

4 hours in and completely out of ideas. Wasted all the time dropping down overambitous designs. Also today I have to work most of the day so this is looking grim.

Still, no way I’m giving up. I will get into the LD48 no matter what. This is a personal quest I’ll complete. No way this is going to end so soon!

 

Spark – Postmortem

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: love2d, lua, moonscript, postmortem, spark

LD28

In in in!

Of course, I couldn’t pass this opportunity. Ludum Dare is here again and my hands are itchy for some sloppy programming! This is my 3rd time in the compo and it’s getting better each time! Hopefully this time around I’ll be able to get some decent sleep inbetween some maniacal programming sessions.

I did a warmup game to see if my brain is still working. It seems so, because I was able to complete it in less than 5 hours. If you are a fan of mysteries it is up your league, check it out here: The Box.

Let’s see the tools that I will be using this time around:

  • Engine: No idea, it really depends on the theme that will be chosen and my inspiration on saturday. It’s a fight between Ren’Py, Game Maker studio and love2d. I’m even thinking about making something with HTML5, but it really depends if I have time to study something this week.
  • Graphics: My hand 😀 I just suck at drawing with a mouse. And Paint.NET probably.
  • Sounds/Music: bfxr for generating sounds, REAPER and the awesome synth1 for making music.
  • Editor: Vim

Ok, that’s all for now. See you!

Tags: Game Maker, LD28, love2d, Ren'Py, Vim

Comments

Hazel-Bun
12. Dec 2013 · 16:08 UTC
Can’t wait to see what you put out :)

Throwing the towel

This sucks, but I won’t be able to complete my game for the ludum dare 28. To be honest, I have enough to complete the game, but there is still too much work to do, and I don’t think I’ll be able to complete a game I’ll be happy of. Last edition I posted a game that I felt was very incomplete, and regretted it. This time I prefer not to push myself if I don’t feel the end result is worth it.

I wish I could blame something or someone for my failure to meet the deadline, but I have to blame only myself. I wasn’t prepared for the quirks of the Game Maker Language, and I spent too much time on things that didn’t matter. This leaded to me getting tired over useless things and making mistakes over and over, basically making me go backwards instead of foward, since I was fixing bugs for stuff I didn’t actually need for the end game. I feel a little silly to share this, but it may be useful for someone else. I tried implementing a script that would allow me to do some interesting transformations with fonts. In the end I ended up scrapping that mechanic because it wasn’t necessary and it would have required me more time to create, meaning I ended up with an engine with a custom string visualization routine.

Yeah, I basically rewrote draw_text. And on top of that, I had to hammer my head on the wall a few times because it was quite buggy and inefficient too. So I spent almost all of the first day on that, meaning that I was back on everything else. Today I realized there was just too much to do still to actually create something worthwhile, so here I am. I quit.

It feels like a sore defeat. But it’s all learning experience. For this time around I quit, but next time I’ll be stronger and more prepared.

I still have some time to pull together something for the jam, so I may try to quickly put something together, just to sweeten the pill a bit.

Comments

Zenkerdus
15. Dec 2013 · 18:40 UTC
Well written!

Almost done!

So I am actually positive about finishing Synesthesia before the deadline. This is cool, especially since I had to remake it from scratch today after I made a mess this weekend.

Here is a screen of the main menu.synesthesia

For those interested, the game is about having the limitation of accessing only one of your senses at a certain time, i.e. smell, touch and hearing, minus vision. This means that you have to explore the rooms with the smells you feel, the things you touch and the sounds you hear, trying to solve puzzle and reach the exit. Probably the game won’t have a proper ending since the story I had in mind is way more convoluted than I could ever do in half a day, but I’ll see what I can cram into it into these last few hours. 

I feel that this game mechanic is interesting and I’m rather happy of how it turned out. Check it out if you like exploration and weird moods.

Here is some music I made for the game, check it out if you wish:

https://soundcloud.com/hypernosis/sets/synesthesia-ost

Tags: Game Maker, jam, synesthesia

Synesthesia is in the Jam!

 

This is great new: I’m done with developing Synesthesia and can finally get some sweet sleep.

 

synesthesia

 

As I already said, Synesthesia is about you having access to only one of your senses at one time. This allowed for some interesting puzzles. Unfortunately, the lack of time (I had to made it all in less than 18 hours cause I spent the weekend on an idea that didn’t work out) made so that the puzzles aren’t as satisfying as I wanted and it is super short, but I’m still happy with the result.

Check it out here:

http://www.ludumdare.com/compo/ludum-dare-28/?action=preview&uid=21736

Also check out the I composed here if you are interested:

https://soundcloud.com/hypernosis/sets/synesthesia-ost

Tags: Game Maker, jam, LD28, synesthesia

Synesthesia – Postmortem

Wow. What a weekend. I love Ludum Dare because it helps to learn and do something, but it also stresses you out completely, especially of you are mistake prone like me. In the end, Synesthesia hit the shelfs, so to say, but it wasn’t an easy task, despite the game’s semplicity. Let’s recapitulate what happened in these 72 hours and what I have learned from it.

synesthesia

The Good 😀

Picking an idea I liked

Like last edition, this time I decided to focus not on making a game just for the sake of it but actually focused on an idea that I really enjoyed, even if it looked way harder than other ideas I had. This, counter intuitively, helped me a lot in getting the game done: I was very interested in seeing how my idea would have turned out on screen. If you’ve played Synesthesia, you probably felt it is quite a weird and disorienting game; if that’s the case, I’ve done my job well and I’m happy about it.

The thing I love the most about Ludum Dare is the amount of inspiration you get. For someone who is cronically depressed creatively (like me) it feels like growing back a lost arm. It is amazing. You see so many ideas with so many applications, and you can’t help but get dragged into the vortex of ideas. Then, from the mass a few ideas stand out that you really like and start implementing them.

This is the best mental state to be in when starting to make a game, to me. It doesn’t feel like you choose an idea. It feels like an idea has chosen you as your ambassador, and your job is to show it to the rest of the world as best as you can.

I felt this way with Spark, my last compo game, and Synesthesia. I couldn’t make them justice in just a weekend, but I like them so much that I am willing to work on them even after the compo is over. I’m currently working on a longer and better version of Spark, and I hope to do the same with Synesthesia, since there is so much I’ve left out. They may not be a critical success in the compo but I’m proud of them nonetheless.

Game Maker: Studio

As I said, I’m currently developing a follow up to my game Spark in Game Maker. I was lucky to get a free copy of the standard  edition of the studio about a month back, and thought that making a smallish game with it would have been a great learning experience to test the waters, so to say. Then I decided to use it for the LD too, to see how it performed in a time critical situation.

I have to say, I’m very impressed with it. I was able to get a basic working engine in less than two hours. This is quite outstanding. The interface, compared to other popular development environments like Unity, is extremely intuitive, and it just “flows”. I can’t explain it in words but everything is where I expect it to be; after getting used to it I rarely even checked the help. It is definitely an accomplishment for a developer to be able to pull this off. Also, compared to other D&D environments like Construct 2, I felt it is faster to make it do what you want.

In the end, I’m very happy with choosing Game Maker this time around, and I’m sure I’ll be using it again for other small projets.

(still, it’s not all smiles, see below…)

Knowing the mechanics

As we only have a week end to complete a game for a LD, what a developer should focus on first is the basic mechanics. I had a good grasp of what I wanted from my game and how I wanted it to work, and this helped me immensely in saving time during development. I knew what I should have been focusing on and what I should have scrapped, and this made it possible for me to make Synesthesia in only 15 hours, more of less. Sure, the game itelf hasn’t much going on to show, but it was just impossible for me to make more levels in the time I ws able to squeeze in, so I’m happy that I actually got anything working at all.

Focusing on “accessory” stuff

Okay, this may be controversial. I was actually happy I spent a couple hours on making music and a micro dialogue system to give atmosphere and a setting to the game. The intro dialogue actually works like a sort of tutorial, explaining what the mechanics are in a subtle way, which is a lot metter than a simple wall of text coldly showing the ins and outs of the system. Also, I strongly feel that aesthetics actually should build on mechanics, empowering them, not being completely detached from them.

I know that for some it would have been better to just focus on making more content for the game itself, but I don’t regret my choice. I like games that have a mood to them and I would have been very displeased if I couldn’t give it to the game.

The Bad :(

Reinventing the wheel and not getting priorities right

If you were  paying attention, you may have noticed that I made the game in only 18 hours, and yet it didn’t qualify for the compo (it is a jam entry). Weird, right? Why?

Well, the truth is that I actually made a first version of the game engine in the weekend, but had to scrap it whole about 8 hours before the deadline for the compo. The reason is: I’m stupid. One of my biggest sticking point about rapid development is that I can’t understand when to drop something. I spent almost two days implementing in Game Maker a particular way of displaying strings that allowed for interesting animations, like vibrating characters and such. This was an absolutely superfluous feature, but I didn’t realize this until 36 hours later when I had a messy and buggy string display system that made showing simple text very complicated, without much gain on the visual side. To my defense, this initially was a big part of my mechanic so it had some sense in the beginning, but I must have realized before that it wasn’t fundamental to making the game itself.

So what happened is that I just threw the towel and got the rest of the afternoon off to lower the pressure a bit, since I was fuming like a steam engine. Luckily, I was still motivated, and on Monday I was able to pull together a new engine quickly and arrange some gameplay together. But I’m still sore I committed such a naive mistake, again. This is the third time I’m trying to get into the compo, and every single time I didn’t fail into losing at least one afternoon on something that I wouldn’t include in the final game because I wasn’t able to complete it. Maybe next time my brain will be wired and I’ll be able to complete a game without all this nonsense.

Still, I feel that this time around the tools I used got in the way a bit, even if I shound have expected it (another mistake). And this brings me to the next point.

Game Maker Language

Okay,  now let’s see where  Game Maker  caught me off guard and pissed me off. Ohh, boy this is going to be long. 

Above I praised GM for being an amazing engine for rapid prototyping and intuitive use. But under the fun stuff there is unfortunately a thick stuff of sticky and smelly matter that we should talk about.

What I like about Game Maker is the fact that it gives a scripting language as an alternative to the D&D interface, which is great, since scripting is way faster to develop and allows for more complex implementations that would take a lot of time with pure drag and drop. The smell starts to rise when you actually analyze the scripting language itself. It has the structure of other c-like languages, and this is cool since it is a syntax that I really dig. But if you expect an high level of abstraction like almost all of modern languages allow, well, then you are in for a big disappointment. I (probably naively) expected that, and was disappointed to discover that, even if the game uses some abstractions called “objects”, in fact inside the structure of the code they aren’t, at least not in the OOP sense. You can’t define methods specific to a class. You don’t have first class functions. There is no means for encapsulating data. Inheritance works weirdly. Basically, it’s a purely procedural language masked as an OO one, which leads to a lot of incomprehensions for those like me who are used to the latter.

Of course, this doesn’t limit the amount of stuff you can do, in any way. Far from saying that. But this kind of paradigm today feels antiquated: making it do some stuff feels kinda hacky and making code easy to maintain is hard.  It’s just some general smell that I would prefer to avoid since there is such a huge amount of modern languages that allow for great levels of abstractions, that helps a lot in developing a game.

Another weird thing about GML is scripts: I thought that they were just functions that you call and then return from. It appears this is not the case. For example, at a cenrtain point I had to call a script iside a loop. Inside the script was another loop. This caused the game to crash, for some reason. I was puzzled. It took me more than half an hour to find out that since both loops were using the same index i, the index, when “returned” from a script, had changed. This means that, even though “objects” have local variables, these variables are common to the scripts that you call. This is a very strange behaviour and while I may understand why this is the case (because of the procedural nature of the Game Maker engine), it really bugged me off. It is the kind of small limitation that really makes debugging hell in bigger projects.

This comes probably off the fact that Game Maker has always been marketed as a D&D tool, and the scripting side was seen as more of an afterthought. But I guess this came back to bite their ass when developers turned their head in favor of more “mature” engines. It’s a pity, because as I said before Game Maker is an amazing tool and very intuitive.

So, yeah. GML is not great, and not even mediocre, I would say. But it does its job, and in the end it’s the game that matters and not the language you program it in, but still. The dev inside me cringed when discovering this stuff.

Conclusions

So in the end it was an instructive weekend. They say that you either learn the easy or the hard way. This was more on the sadistic side, but I’m happy nonetheless. I’m actually surprised, since I thought that I had fucked up a lot more stuff, but instead it turned out to be productive, compared to last compos. Maybe (just maybe!) I’m getting the hang of it.

So that’s all. Again, if you want to check out my game Synesthesia and leave a comment, feel free to. Now onto playing a lot of games for the next 3 weeks. See you!

Blog Entry ->

Tags: Game Maker, GML, jam, LD28, postmortem, synesthesia

Spark: De Sacrificio is finished!

“… And why should I care?”

Good question. Let me tell you a short story to give it to you.

 

Screenshot from Spark: De Sacrificio

 

Spark: De Sacrificio is a little project that stemmed from an old ludum dare entry I created for LD27. I was very excited with it back then, and had it all planned in my mind: a puzzle/platformer with exploration components. It felt like a cool thing to play, so I did a smallish implementation for the compo. I wanted to develop a complete game from the small prototype I created back then, but because of a few personal problems and my inability to focus on one thing for more than 48 hours, I dropped it.

It would have been the end of it if I didn’t get a hold of a copy of GameMaker back in November. I was curious to test this platform, and decided to brush some dust off Spark to recreate it in this bright new engine. I was really excited, and got a lot of work done in a short time. It started to look really amazing for what I was expecting. The game felt just as I wanted and it was interesting to play and explore.

But for some reason I felt reluctant to wrap the game up and send it on its journey through the Internet.

 

Screenshot from Spark: De Sacrificio

 

It took me a couple of weeks to pin down what was this dark feeling I was having towards releasing this small game. In the meanwhile, development got very slow. Staring at the game, replaying the same parts over and over started to feel painful. I caressed the possibility of leaving it in a drawer and forgetting about it more than once. The reason wasn’t that I didn’t like the project, but that I loved it way too much.

I was scared of what people would say about it. I’m not new about getting feedback on stuff, and I have a thick skin for hrash comments. But the reality is that I had put a lot more of myself in this game than I would have ever expected. It’s no use to have a thick skin if you have your most vulnerable parts of yourself out in the open. Spark isn’t just a game for me but more of a piece of myself I digitalized and put in a form that others can experience and live. As someone who is extremely reserved, this is terrifying: it’s like living an open door on my soul.

I knew that I had to push though it. On December the 30th, Spark: De Sacrificio was finished. I knew it wasn’t perfect, but it didn’t matter: I knew I had to close this loop and go on. So, here it is. Spark.

 

Screenshot from Spark: De Sacrificio

 

So, going back to the original question: why should you care about Spark: De Sacrificio?

Because it’s sincere.

I put all my passion and knowledge in this game. It’s not a great game, I know it. But I know it is unique, in its own weird way. As I said, even if you won’t notice, there is a lot of me in it.

Oh, and it’s free. But that was a given. See it as a present to other developers who really love this medium as much as I do.

If you are in for something different, challenging and (hopefully) touching, you may want to download it here. If you check it out, feel free to pour some feedback on my blog or my twitter account.

Thanks for reading these ramblings.

Tags: gamemaker, LD27, postmortem, spark

Results and in for the MiniLD!

So, another LD has come gone and as usual there are trails of interesting feedback on the road. Let’s see how Synesthesia went.

results

 

 

 

 

 

 

 

 

Woah, that’s something I would have never expected: top 25 for Innovation? I knew the idea was very interesting but I would have never expected to go so high! Thanks to everyone!

Ok so let’s see in detail. It looks like what other fellow Ludum Darers appreciated the most was the basic idea. That’s encouraging, since I’m planning to expand further on the game. It really got butchered out of time caresty so it bugs me that the original idea hasn’t come out as much as I expected. It shows on the Overall and Fun category since it should have felt more of a demo than a complete game (even though a 3 star average is still amazing in my eyes).

This fact, combined with the lot of enthusiastic comments about a post compo version really geared me up towards making a longer and better version (and over everything, portable). I couldn’t work on it in these weeks because I had to finish another game based on a game I made in LD27 (it’s out gladly, so you can get it for free here if you are curious), but I’m definately going to work on it after the MiniLD this weekend, so stay tuned for some update.

I’m especially glad that people liked the mood of the game, since it was my main focus besides gameplay.

On the bottom we have, not surpisingly, graphics and… Humor? Two stars in humor? For some reason people think Synesthesia is more humorous than half of the games in the jam! I’m flattered but I can’t seem to see any humor in this small demo. Oh well.

Okay, so let’s talk about this miniLD that is about to start. I’ve never partecipated in a miniLD but since the rules are much more relaxed I’m pretty confident of creating something worthwile. Let’s see the tools I’m going to use:

  • Language: JavaScript (HTML5 canvas)
    This is the first time I have ever dabbled into developing something for the web. I’m starting to get used to the language in this period and I really like it, it feels like a web oriented version of Lua which is always a good (and the C like syntax is something I feel more comfortable with). Also, portability and simplicity of use is never a bad thing. I’ve done a few simple projects and besides dome problems with asynchronous loading it looks like it’s working great, so I’m really excited to create a game in it.
  • Graphics: Gimp, Inkscape
  • Audio: REAPER with the amazing sounding Synth1, as usual, bfxr
  • Editor: Emacs

Ok, this looks like everything for now. Looking foward to this weekend!

Tags: gamemaker, LD28, synesthesia

LD29

What’s one year old and almost killed me?

My Ludum Dare experience.

I started back in April 2013, with LD26. All I can remember is deep sleep deprivation and programming stuff while in a frenzied daze.

And I loved every moment.

It’s been a strange year. A few weird games dropped from my fingers, and had heaps of fun. A few sad moments, here and there (two to be precise).

Now, it’s this time of the year, again. Let’s get down to business.

  • Language: HTML5 + JS using custom framework (link provided as for rules)
  • Editor: Emacs
  • Graphics: GIMP, Inkscape
  • Sound: bxfr for SFX, synth1 for music
  • Starring: my five years old VAIO laptop, which somehow still holds himself together decently. A reliable pal.
My reliable VAIO

No other tools needed

Stretch those fingers and load up on coffee cause it’s going to be a wild weekend.

Tags: emacs, html5, javascript

Comments

Dominator_101
25. Apr 2014 · 14:32 UTC
“five years old VAIO laptop, which somehow still holds himself together decently”

The Longest Way Down – Postmortem

Okay, so another Ludum Dare went by, and all we have left is a small, dense game in which we’ve poured all of our willpower.

The Longest Way Down is UP! Yay for the oximoron!

the longest way down

It’s time to go back in time and analyze the ups and downs and hopefully learn something useful.

This was the first time that I actually submitted the game before the deadline instead of struggling with last minute problems during the submit hour. It  either means that I’m starting to get the hang of how it works, or that I just don’t care anymore and whatever.

Let’s have an in detail look, shall we?


THE GOOD

Focus

This one was big. Of all the four Ludum Dares I’ve been in, this was the first one where I picked an idea and sticked with it until the end. In the other compos I used to pick an idea, waste half a day on it, understand that I could not do it in time and start again from scratch with a brand new idea. This was inefficient to say the least.

I managed this time to ignore the costant nag of myself thinking about other ideas. “Hmmm, this isn’t going anywhere. That other idea I had looked interesting, maybe I can try that instead.” Nope, guess what, the other ideas I had were just as time consuming and without an end like all the others. It is the idea of procrastination that is too sexy to resist. Still I managed to keep my instincts under control. End result: there is actually a game done in my LD portfolio! Cool beans. Take that, procrastination!

Keeping it simple

This time around I started playing around with and idea, and managed to keep it snack sized. This was the key that let me finish the game in time. Yes, because adventure games are not as strightfoward as they look, especially without dedicated tools.

Still, even though the idea was small enough, the game still made me sweat for the finishing line. I had to cut down a lot of ideas I had during these two days. and the end result is ermetic to say the least. If this game was a room, it would have the bare essentials to survive. But hey, it’s a game, you can play it and you can finish it, so I’m happy with that.

Unfortunately, it comes with a price. I had to cut out sound completely to make it in time, and in part it is my fault (see below).

Sticking to what I know

This time around I decided not to jump into another language in which I’m completely virgin with (which I did for all three last Ludum Dares) and stick with something I was comfortable with. I did a few months of programming in Javascript and HTML so I was moving in familiar territory.

This was a decisive move. Instead of moving along with a language that got in the was most of the time, I could breeze throught the programming part with (almost) an arm on the back. I just love programming in javascript for some reason, I know it’s got its fair burden of birth defects but it does its job very well.  And also, designing the structure of a level with HTML+CSS is very straightfoward and fun.

I have to admit that the biggest part was played by the fact that point and click games are (relatively) simple to program.

Another big thing was using an ambient that I’ve forged into my back mind in the course of the last few months: Emacs. Amazing IDE and a joy to work with (when you get the hang of it). It is the first LD that I did with Emacs and I’m very glad I did. Fast, lightweight and extremely powerful. It fits perfetly in my workflow and has been a wonderful toon in this weekend.

Inkscape

I started drawing in Inkscape on a whim. I thought about making some mockups and them improve them in GIMP, but then the results I got were so quick and so good that I ended up using it for everything. I am really grateful for that. I got a very good approximation of what I wanted for a fraction of the time.

I’m starting to really love vectorial graphics. Probably because it’s the diametral opposite of pixel graphics, which I can barely stand (and before someone jumps on me, let’s clarify, I do not mean pixel art, i mean those blocky Lego-style graphics where a pixel is the size of your nail and you have a hard time understanding what the hell is going on). I’m definately not one of those atari 2600 aficionados which love this kind of style. To me, the less the pixels are visible, the better.

I’m definitely going to use inkscape in the future for other projects (probably with some improvements).

Going the safe way

For once I did something that I considered a waste of time at the time but knew that was the better thing to do: I decided to play it safe. I’ve been fucked over in the past by trying to getting the pc to do some work I should do.

For Spark, it was tiling. This time around, it was hotspot programming (i.e. the clicky areas). Looks like I had to do them by hand. Took a long time, but looking back I’m glad I didn’t create some weird script that would have been just a waste of precious hours in the end. I saved time and in exchange the game gained some health.

What’s good for the game, is good for you!

This took me longer than I'm willing to admit

This took me longer than I’m willing to admit


THE BAD

Lack of Automation

While I managed to complete The Longest Journey Down in the required 48 hours, there was a lot of stuff I had to cut out to do it. For example, there is no sound in the game, which for me is a big blow. I’m a graphics guy first and a sound guy second, so not having any sound to impregnate the atmosphere like I wanted sucks more than a little.

The reason for this is that I decided to make the game in HTML. This has some great advantages under a lot of aspects: complete control over page structure and code efficiency, familiar language which I know very well, familiar workflow. The problem is, if you want real control of what happens over the page (and maintain your mental sanity in case something goes wrong), you have to pick up your sleeves and type. I don’t trust programs with GUIs since most of the time the barf they spit out is unworkable.

Unfortunately, this can be very slow. The workflow consisted in this:

  1. Create a mockup of the scene in Inkscape and export it
  2. Boot up Paint.NET and find out where each interactive element was positioned
  3. Hard code the coordinates into the source

This was a very reliable process and going back I would do the same, but I think that doing this for a game even twice the size it can be extremely time consuming. I really wished that Inkscape had a JSON exporter of sorts to save some time. I even thought of making a converter from XML to JSON so that the process could be automated more. That of course was just stupid since the time I would have saved would have been a lot less than the time I would have spent creating the game.

So in the end I was between a rock and a hard place. Not much to do other than grinding those numbers into the source. I wish I had some way to automate the process, I would have been able to insert a lot more content in the game.

Procrastination

During Ludum Dares, time is tight. And somehow I still managed to waste more than a handful of hours on Reddit. Why I did that is beyond me. I’m not so bitter about this since I knew that the game would be done in time anyway, but I’m still disappointed in my lack of discipline.

the longest way down


THE UGLY

Shit Happens

Sometimes, things happen that you just can’t foresee, and you get stumped. Happens all the time, for every project.

This time around, a weird bug popped out during the later development stages. To give some context, I was programming the part where you have to change scenes in the game. What should have happened is: you flush the current hotspots and load the next scene. Done, simple and easy.

Not quite. For some reason, the browser was flushing only part of the hotspots, and was just refusing to flush the other ones. I had no clue to why this happened, and had me stuck for more than 40 minutes. I was looping through the current active hotspots divs and using removeChild to get rid of them.

But Chrome didn’t like it. I was oblivious to why this was happening. For some reason Stackoverflow wasn’t of much help either. I was starting to get nervous, I had to finish the art, the textboxes and put everything together and this bug was preventing everything from getting done.

The loop worked like this: I call getElementsByClassName and collect the divs that I want to remove (they have all the same ‘active’ class). I loop though them using length. Through some rapid debugging I discovered that the length of the array I got was changing every iteration, although I didn’t change it.

What. The Fuck.

Then, after much more imprecations, it hit me. I was naively thinking that the “array” I got from getElementsByClassName was, in fact, an array. It looks like instead it is a pointer to another array with the list of the ACTUAL elements in the document with that class. This meant that every time I removed a div, the array changed. But I was still looping on the original array size, so it was basically telling me “the fuck” and stopped removing them when it started getting ‘undefined’ elements (which were in fact out of range).

This is one of the occasions where Javascript’s ass implementation and weak typing fucked me over. NOw that I know It, I understand that I was quite stupid, but back then it was a pure WTF moment. Oh well, at least I learned something new.


Okay, I guess this covers everything that happened during this weekend. Be sure to check out The Longest Way Down (shit title by the way, wish I picked something hipsterish like “Down” or something like that). I like it and I think you may enjoy it. For sure I did while creating it.

Tags: emacs, html, javascript, motivation, postmortem

Postcompo version is OUT!

Since it was unanimous from the comments that the lack of sound was a bummer, I’m pleased to announce:

the longest way down

The post compo version of The Longest Way Down!

What’s new:

  1. Sound! The game now has a few sound effects, recorded by me personally.
  2. Music! And it fits the mood perfectly.
  3. Better layout! The presentation is now a little cleaner and easier on the eyes.
  4. Assets preloading! To improve gameplay immersion.
  5. Title Screen! Ok this isn’t very exciting.
  6. Bug Fixes! Neither is this…

I wanted to add more content but I decided against it to keep the game bite sized and focus on the mood.

Think of it as a Myst equivalent of a comic strip. Short, but atmospheric.

Hope you will enjoy my game. Check out my compo page if you want to try it out.

Comments

raulincze
01. May 2014 · 09:44 UTC
The music does indeed fit the game nicely. It adds an extra dimension to the mood induced… But I think the whispers are a bit too loud. (they also don’t loop very well)

LD30

IN!

Just a quick note: with my immense joy, I will be partecipating in LD30!

This is my 5th consecutive ludum dare and I’m starting to really enjoy it. Hopefully I’ll be able to learn a lot like I usually do and have heaps of fun!

Some quick list of the tools I’ll be using:

  • Language/Framework: JS/HTML5, for prototyping goodness and instat portability
  • Graphics: the insuperable Inkscape for vector and Paint.NET for raster
  • Sound and music: bxfr for sfx, REAPER or milkytracker for music (IF I’ve got the time for it)
  • IDE: emacs because it’s just awesome
  • Drink of choice: water because being sleepy makes me creative
  • Hours of sleep: not as much as my body needs, not as little as the game requires

Sooo, yeah. Here we are. Good luck to everyone, and have fun!

Tags: emacs, html5, inkscape, javacript

Comments

joshg
21. Aug 2014 · 17:24 UTC
Inkscape is impossible to overcome? I didn’t think it was *that* bad. :)