johnfn

LD19

Oh man Ludum Dare!

This is my first time doing a Ludum Dare, but not my first time doing a 48 hour contest. I really thrive on competition, so I’m expecting to have all sorts of fun! 😀

Hardware: An old ASUS laptop… ah, my best friend. And a mouse. Sadly, my external monitor is back at college. Ah well :(

Development: Flash for sure. I started learning Flixel the other day, so I’ll probably end up using that. I could also end up getting really frustrated with the dumb thing and just doing it all myself (I’ve come dangerously close already! ;). Course the other (huge) advantage of Flixel is that you get to use FlashDevelop exclusively, which is orders of magnitude better than plain old Flash (kinda embarrassing for Adobe, imo). I’ve been working on an old tile editor I made recently, trying to bring it up to speed so I can use it over the competition. It’s here if anyone is interested in using it or hacking on it. I can’t imagine why you would want to, though (it’s pretty far from a generally usable state).

Art: Probably some lame pixel editor. Graphics Gale looks promising. I’ll have to get around to learning how to use it sometime before the competition… :)

Sound: FL Studio. I hear a lot of talk about sfxr, so maybe that too.

Not sure if I should team for the Jam or go solo for the Dare. Anyone out there have thoughts? Was thinking about Jamming initially, but I would like to have people vote on my submission, and 72h seems a bit of a slog compared to 48.

Good luck, everyone!

Declaring some code

This is essentially the collision and camera code that flixel gives you, without flixel. If you have an allergic reaction to flixel, this could alleviate your pain.

http://www.mediafire.com/?8s233o16y181868

Halfway or so!

Yup, it’s your stereotypical discovering platformer!

What do I have so far?

  • A working engine!
  • 1 sided dialog!
  • A power up!
  • Lame pixely graphics!
  • A soundtrack!
  • You can jump!
  • A screenshot!
  • Insightful dialogue! (Obviously!)
  • Yeah!

What don’t I have so far?

  • Hopefully less than 50% of the finished product!
  • Levels!
  • Sufficient amounts of sleep!

The Dreamer postmortem (and timelapse!)

Timelapse

So the Dare is over!

(It’s been over for a while, aye, but I was kinda dazed, and I started playing other people’s games for a while to restore myself.)

I think that this is where I mention the major problems that I had. But I really feel like I lucked out this time, because the creation went off without major hitches, and I even managed to adhere to a schedule (!!!)

Still, some notes:

  • I’m still not exactly sure what kind of starter code we’re allowed to have. My starting code put me at about the same level as Flixel (but without map support), but that still disadvantages us to people who use things like game maker and get stuff like map support and room support built in. I don’t think I had all of that until halfway in!
  • This was the best I’ve done with abstraction, I think (at least up until the last few hours where I was just cramming in fixes). It really paid off, too – the latter half of development was relatively breezy.
  • I was insanely productive. This kind of game usually would take me around 2 weeks to make.

I’ll stop patting myself on the back now:

  • My biggest problem by far was the lack of a good map editor. If you look at the timelapse, you might notice that it took me something ridiculous like an hour or so to develop a single map. Going back to make changes (of which I had to do several times) took a while too. Editing the raw data in Flash was atrocious because Flash just dies with that much text – I eventually switched to FlashDevelop, which is lightning fast. The good news out of all of this is that I have finally discovered how to solve this problem, and with it, another problem that I’ve wondered about for ages. Essentially, the tile editor must handle ALL of the output. My current setup was just outputing the raw map data, which I had to put into a class and hook up with exits to other rooms (which later led to nasty bugs). Editing maps and writing code should be completely separate activities. I really wish I could have made a more expansive world, and perhaps played around with the alternate world idea a little more. Ah well. I’ll be taking a few days to make my tile editor better (again)
  • I never made a sprite for the main character and eventually just had a stupid smiling pixel. I need to learn how to do art better. I did some tilesetting a few months ago, but I never made characters. This needs to change.
  • I didn’t have any animated things. I wanted to make the flowers move around, for instance, but I was preoccupied with other things, and worse, I wasn’t sure I knew how. Now, come to think about it, it’s not that hard, but it requires some more abstraction (yay!)
  • The worst bugs in the game were related to collision detection and map transitions, two things that I should have (and could have) done before the Dare. Next time!

All in all, LD was a good experience. Makes me wish I could work at that efficiency all the time…

LD21

MiniLD! MiniLD! MiniLD!

A solicitation for help.

I’m thinking about doing the upcoming MiniLD. Yay! And I’m thinking of doing it in Clojure, a language I barely know. Anybody experienced out there want to chat about Lisp gamedev? Hit me up at johnfn at gmail. I’m particularly interested in how game state is conventionally kept in what is almost uniformly a stateless language. But any other tips or clues would be greatly appreciated. Clojure is shockingly different from the other languages I’ve used.

Comments

huhwhozat
21. Jul 2011 · 06:45 UTC
Clojure? As I have to say is glhf. A buddy at work would be very interested to see the result.

Watch me develop!

Here’s my repository. I’m coding in Clojure, which is going to be…interesting.

I have no idea what I’m doing with the theme yet. This is extreme writer’s block. According to the repository, it has something to do with a block moving around…

I’M IN!

After flirting briefly with Clojure, I’ve decided to be a little safer and do Python.

Here’s some code I’m declaring: http://www.megaupload.com/?d=RARFRZ6Z It’s a simple game engine on top of Pygame.

Tools I’ll be using:

  • Python and pygame. I haven’t really used them before, so this ought to be interesting.
  • Vim. All vim, all the time.
  • Graphics Gale. To make the pixels. ALL OF THE PIXELS.
  • FL Studio. For gorgeous background music. Or decent background music. Or…yeah.
  • Maybe I’ll try my hand at sfxr. Didn’t have time last time but… yeah, we’ll see.
I’M FREAKING EXCITED!!!

End of the First Day. 42 hours remain.


It’s the end of the first day, and I’m pleasantly surprised by how development has gone so far, especially considering pygame is something I’ve essentially never touched before.

My game has stuff like

  • Decent collision detection
  • Maps
  • Patrolling enemies
  • Dialog
  • Super top secret gameplay element (not really, you can go play it on github if you want)
  • Open source github repo https://github.com/johnfn/ld21
It’s great to be editing python in vim. Feels like home. I’m starting to feel a little sleepy, and I’m seeing my abstractions start to deteriorate as a result. So, it’s bed time. Tomorrow I’m going to whack at the rest of gameplay and see if I can beautify up the graphics. If I’m feeling ambitious, I may even toss in sound. Keep rocking on, fellow Darers. All your awesome images and words are a great inspiration. The graphics are ALL placeholders right now. You’re the anomalous bottom right square inside the rectangle. The grumpyface is the enemy. I wonder what that blue thing is..? And how on earth are you ever going to ESCAPE that rectangle? I dunno…

Pygame Programmers!

How the heck are the pygame users among us planning to port your game to all platforms?

 

I’ve been trying with py2exe and py2app and having absolutely no luck; I’ve been seeing crashes everywhere. Any tips?

Tags: oh god the pain, port, porting, pygame

Comments

22. Aug 2011 · 19:50 UTC
I know your pain. Mine crashed unexplainably on everyone else’s computer but worked fine on mine when I first submitted. Used py2exe to compile it.

Escape Artist postmortem pt 1 (of 3?): Is python/pygame feasible?

This post is about if python and pygame is feasible for LD48. But first… an action screenshot!!

So. How good is Python/Pygame for making games?

Good parts:

  • Python is a lovely language, an absolute joy to program in compared to just about anything else. It is definitely superior to any brand of ActionScript. I never got bogged down in syntax or trivialities, and bug fixing/iterating flew by.
  • Programming in Vim, favorite native text editor by far*, was orders of magnitude better than being relegated to some IDE, or worse, Flash’s cobbled-together editing environment.
  • I was worried that a lot of the things that I loved about the rapid development cycle in Flash would be lost in python/pygame, but I turned out to be almost completely wrong. For instance, I liked that in Flash you could just draw something and instantly have it in game, but as soon as I wrote a nice abstraction layer I had that in Pygame too. In flash I really like how you get animated sprites for free with keyframes, but that was about 5 lines in Pygame. There was some oddness about text not being multiline by default, but I managed to fix that quickly by taking some open source code. Which leads me to my next point:
  • Pygame has a fairly respectable community. Every time I have encountered a bug (so far), I have managed to fix it just with a simple Google search.

Bad parts:

  • One big missing thing from pygame is the wealth of neat filers and effects in Flash. I really wanted to do some nice TV static or something over my game, and make some stuff glow, but I was simply incapable, and I felt like in general my graphics were a bit worse than they could have been in Flash.
  • Another really nice thing in Flash: Tweens. And then even better is the open source Tweener library for AS3 which does a lot of really slick transitions and effects. I hand coded these in Escape Artist, and Flash could have saved me some time.
  • Now for the absolute worst part about python/pygame: porting. Turns out not too many people are excited about taking your raw source code and compiling it. py2exe and py2app are the standard for Windows and Mac porting, respectively, but it was still really hard to get them set up, and in fact I’m hearing reports of really obscure crashes in the Mac port – something that I’ve never encountered in my Ubuntu testing.
  • It actually took about 24 hours to port, which was really sad for me since it (understandably) got no votes during that period :(
So, is Python/pygame viable for Ludum Dare? Sure – if you plan out how to port beforehand. Now that you’ve read my postmortem (the first part, anyway), you should go play my game! Tell me what you think. * If you have never heard of Vim or Emacs, you absolutely must try them out. They have a steep learning curve, but you’ll soon be flying through code like you’ve never done before.

Tags: postmortem

Comments

23. Aug 2011 · 21:19 UTC
Cool, I also used pygame for my game! I think your comments are mostly right on. I don’t know Flash, though, so it’s harder for me to compare. You’re right that porting is the biggest pain, especially since I usually run Ubuntu, and I find Windows so hard to use by comparison.

What makes a Ludum Dare game best overall?

I was talking with my friend earlier today and I was wondering what is the most important thing to focus on a game (after functionality): is it graphics? Innovation? Audio? Something else entirely?

 

So I wrote a quick script to show the correlations between all of our statistics and overall. The script is here.

The correlations are (lower is more correlated):

{'Humor': 179, 'Innovation': 66, 'Community': 158, 'Theme': 107, 'Graphics': 73, 'Fun': 23, 'Audio': 251}

Fun is obvious. If a game isn’t fun, then it’s not going to be good overall. But fun is also pretty vague and hard to define – it doesn’t give much more information than ‘overall’.

Innovation and graphics come after – these are things that are more understandable. So, conclusions: work really hard to come up with clever ideas, and spend a lot of time on the graphics.

 

Pretty sad to see audio come in dead last, since that’s something I worked hard on :)

Escape Artist postmortem pt 2: Attack of the Wrists

So first and foremost, I have to make an apology. I wanted to spam the LD community with tons of blog posts during game development, but I wasn’t able to. Why not? Well… (apart from the website crashing and all that… :) )

Python, it turns out, is an amazing language to code games in. The greatest part for me is that the iteration process from code to test to code is incredibly quick, and error fixing is a breeze. Contrast with languages like Javascript where you often have to spend comparatively more time tracking down bugs and correcting for silly errors you made (like accidentally adding an integer to a string instead of another integer).

What this means is that I was flying through code. I think that in the first 6 hours after I woke up I had written about 500 lines of code, which is an astonishing rate for me. But then I stared to notice that my wrist was starting to hurt. I kept going, figuring that it was probably nothing, but then at about 2pm I realized I needed to stop coding because my wrist was killing me.

For the first time, I had reached my limits. I had never written so much code in such a short amount of time.

This was actually really terrifying for me, and I had a ton of thoughts fly through my head. I was worried that I wasn’t going to be able to finish my LD game because my wrist was going to slow me down immensely. I was worried I was going to develop RSI or carpal tunnel. I was just generally freaking out since nothing like that had happened before.

So I took a break. I went to eat lunch. Then I went and picked up a guitar and played the song you hear in the background. Then I realized my wrists still hurt, so I worked on graphics for a few hours. Then I did some google searching to see what people do in problems like these. Turns out that these kinds of problems are why people invented those weird looking ergonomic keyboards, and I conveniently had one lying around, so I used it.

That keyboard was the saving grace of the project. It is much less intensive on the wrists for some reason I can’t quite figure out – your wrists don’t move around as much for some reason. Without the keyboard, I probably would have gotten stuck halfway through, which would have been really depressing!

On the other hand, I did lose about ten hours of time that I could have really used to improve my game further. It’s a shame that it happened, but I’ve learned from it, and it’s also a mistake I won’t make again.

So, tl;dr: If you’re a coder, I highly recommend getting a split keyboard to code with, especially during competitions. Save your wrists from pain!

Finally, if you want to see what I suffered through pain to bring you, check it out: Escape Artist

4

This entry was posted on Sunday, August 28th, 2011 at 5:05 pm and is filed under LD #21. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

Escape Artist Postmortem Pt. 3: Right and Wrong

It seems to be traditional to, in your postmortem, say what went right and wrong. So here goes.

Good stuff

  • I managed to adhere to my schedule almost perfectly. I’ve had enough practice with timed contests by this point to know exactly how much I can accomplish in a certain amount of time, which is a huge boon.
  • With two hours left, I decided to include a boss, because I felt the game ‘didn’t feel right’ otherwise. As much as a recipe for disaster as that sounds, I pulled it off, and debugged the last boss bug with only minutes to spare. Like a boss. 😀
  • Python was an incredible language for gamedev, even though I had only recently learned pygame. I was much more productive than in (say) Actionscript.
  • I feel my graphics have much improved since my LD19 entry.
Bad stuff
  • I had a wrist failure which took me out of the compo for almost 10 hours. I wrote about it in detail in pt 2 of my postmortems.
  • I was making some dumb decisions by the end of the first day. I prioritized sound effects over getting the game done, and I’m not quite sure why I did so in retrospect. I think it was because I was really tired and it was detracting from my ability to make good decisions.
  • As much as I’ve improved, I still feel my graphics were subpar, and I should have devoted more time to them.
  • I wanted to apply fancy graphical filters and stuff like that, but didn’t have time. More than that, I didn’t know how. The graphical style of appy 1000mg in particular was a great inspiration to me, but I was unable to replicate it in any way. I need to look more into pygame’s advanced features in the future.
  • I had to port Python, which took about 6 hours of work. But since I had work, I didn’t get the ports out until 24 hours later, which meant I fell behind in ratings. That was disappointing at the time, although I’ve mostly caught up now, I feel.
What I’ve learned:
  • Get an ergonomic keyboard!
  • Care more about graphics. They really are important. Particularly, after you’ve finished with implementation, graphics are arguably the most important thing to work on.
  • Porting is hard. It’s such an advantage to choose a language you don’t have to port.
Two big problems with the entry, and one thing that’s separate. I’m going to work on graphics and buying a nice keyboard (that second one is pretty easy to work on :D) and I plan to really knock LD22 out of the park! :) Check out my game, Escape Artist!

LD22

I’m in!!

Man, why do I love LD so much? Is it the cheesy orange theme? The delicious food photos? The warm fuzzy community? Something else?

Anyways, I’m in! Here is what I plan on using:

  • Python. Only the best language ever created.
  • Pygame. Tried and true.
  • Sublime Text 2. This is like Vim, but better. If your mind is blown by reading that statement, go check it out. If not, check it out anyway.
  • Graphics Gale. To create the most beautiful pixels the world has ever seen. EVER.
  • Linux Mint. Some weird OS no one has ever heard of.
  • Garage Band, if I can get my hands on a Mac. Otherwise, Fruity Loops.
  • Split keyboard. The importance can not be overemphasized.
  • FOOD. Om nom nom.
  • Air. Again, very important.
  • Philz coffee. Caffeinee
  • More food.
What I plan on doing:
  • Making my game more fun.  Last time my game was apparently very innovative but a lot less fun. I shall have to correct for that… somehow.
My goal:
  • My goal is simple and humble: BEAT NOTCH. 😀

Comments

05. Dec 2011 · 13:15 UTC
About the Linux Mint thing…. lots of people here have heard of it. Just sayin’

Prediction: 1000 entries to LD

The total number of voters on the first round of theme voting is usually fairly predicative of the number of entries. See:

http://www.ludumdare.com/compo/ld-21-voting-round-1-of-5/ Votes: ~650, Entries: 600.

http://www.ludumdare.com/compo/ld-20-voting-round-1-of-6/ Votes: ~400, Entries: 350.

So, after some fuzzy math, my guess is we’ll get 1000 entries this time.

Thoughts? I’m nervous!

Getting started.

Lost about 8 hours of compo-time yesterday due to finals. Let’s see if we can’t make them up.

I have a few ideas but nothing too concrete..except that I know I want to make my game top-down.

Off to lunch!

Not done with basics yet. I have a dude walking around on a map. Woo!

Still waiting for a killer idea, although I have some small things to play around with…

I think I’ll try for the new mood category :)

Aha.

I had it. The idea. The idea.

 

Now, let’s just hope I can bust this out in the next day or so. I might not sleep.

I’m out

:(

I’m so sad. I have been looking forward to Ludum Dare for so long that it sucks that I have to pull out now. But I am completely burned out from finals week coming into this, and the more I continue, the less I enjoy it. If I kept going, I’d probably hate programming games forever. So I’ll leave now, and hopefully come back to the next one better and brighter.

Here’s what my idea was, if anyone is interested:

You are stranded alone, in the future. You have the ability to go back in time, but only for five seconds, so you can affect future things by modifying the past.

You also have a gun that shoots things into the past/future (wherever you are not). Unfortunately, no one has invented a reflective surface that you know of, but if only you could find one, because then you could shoot yourself into the past… hehe.

Comments

TehWut
18. Dec 2011 · 05:10 UTC
I had finals as well, in fact I should be studying now….F*ck that shit!
Sheep
18. Dec 2011 · 06:23 UTC
Sad to hear, I really liked your idea :)