sowbug

LD14

Desk

  • Pygame
  • WinXP
  • Kids’ bedtime in 43 minutes

Tags: desk

First snack, first idea

Triscuits with salami and American cheese.

This is my first LD so I’m going to keep it very simple. Tetris variant. Portrait orientation, narrow screen. The advancing wall of doom is a grid of blocks moving downward. The blocks compose individual shapes of (probably) four blocks each. Your job is to create interesting combinations of shapes, perhaps just rectangles. Completing a combination removes the lowest corresponding blocks from the advancing wall. When the wall hits bottom, game over. Points for creating shapes.

I already hate my game

After further whiteboarding, I’ve decided my “Tetris variant” game is in fact identical to Tetris, but (a) upside-down, and (b) not fun. The “interesting shape” game rule that I envisioned is really just creating fully-filled lines of blocks, and that’s Tetris. Splitting the line-creation task out into a separate part of the game field doesn’t improve the play of the game, and re-combining it with the rest of the field is… Tetris.

So back to the drawing board. But at least I’ve written my pygame skeleton, which I had to do sooner or later.

I hate my game, Part 2

After a so-so night’s sleep and around a dozen wall-o-doom ideas, I returned to the basics: what was my goal in entering Ludum Dare? The answer was “to finish a game.”

Stating the goal in very simple terms was helpful. My goal is not to write a good game, or to write something original, or even (unfortunately) to write something fun. It’s just to finish the competition.

So I’m pressing on. I’m pretending LD 14’s theme is “Tetris Ripoff,” and my game will be the best of that sorry bunch.

Comments

18. Apr 2009 · 14:39 UTC
Go for it! :) Completing something, anything at all, is the most impressive thing that can come out of this.

Screenshot

Have the basic tile/slot drawing code in place. The idea is that the bunch of tiles at the top are a wall that is slowly scrolling down toward the bottom of the screen. You drag individual tiles to any of the four slots at the bottom. If you form interesting sequences (maybe four of the same shape, four of the same color, etc.), then they’re removed from the wall. The hope is that the game is made challenging by the conflict between the need to remove bottom tiles quickly (lest they reach the bottom of the screen, causing your game to end), and the desire to remove higher tiles because they are part of interesting sequences (presumably awarding more points than boring sequences).

The number sprites will be replaced with something more polished and abstract (probably circles, triangles, etc.). And the colors will be lighter so it doesn’t look like a 3 year-old’s bedroom floor.

I’ll finish the first iteration with these simple rules, then see how gameplay goes.

Taking a break

Going to rest a bit. I’m at a point where I could technically submit a finished game, though it would get a 0 for polish and maybe a 0.5 for fun. It’s still too hard; although I reduced the number of tiles, their height is doubled, so they go down the board just as quickly. At a certain point it becomes a question of how accurate you are with your mouse, which isn’t at all how I imagined it. Time to stop and think about how to make it more of a mental challenge than a dexterity challenge. Latest source here.

Eye candy!

Also added scoring. Source here.

Halfway point. Calling it a night.

Gave the game out to two friends and let my son try it. Everyone seems to understand it, but as suspected it’s still lacking in the fun department. I’m going to introduce a new tile type that can be removed only by removing its neighbors, which should give some meaning to the currently meaningless wall layout. Latest source here.

Dry run for final tag

My distribution. That is a sticky link to the latest version; I’ll probably be updating it throughout the day.

Changes since last night:

  • Figured out py2exe. If you’re stuck, download my distro and check out setup.py.
  • Added the stuff the LD judges want (gameinfo.xml, screenshot.png, license.txt, readme.txt). Not that I really care whether this game gets judged, but I want to go through the formal steps of submitting an entry, regardless of the game’s quality.
  • A tiny bit of game polish.
So now that all the release-related work is done, I can spent the next 9.5 hours turning this into an interesting game, and in theory avoid any panics at the last minute.

Tags: LD #14 - Advancing Wall of Doom - 2009, notfinal

Wheat Thins and Hummus

Hummus is easy to make if you have the ingredients. One can of garbanzo beans, one clove of garlic (READ THAT CAREFULLY. IT DOES NOT SAY “ONE BULB.”), some olive oil, and tahini. Mix them up in a food processor and eat.

Since you don’t have tahini, your options are (1) leave it out, but put in more olive oil to make up for it, (2) see whether you have any sesame seeds in the cupboard, and put those in (again, add olive oil).

Comments

crux
19. Apr 2009 · 15:29 UTC
If you have a food processor + sesame seeds + olive oil, you can make a nice tahini by toasting the seeds in a pan (I do mine until they start to make little crackling sounds), letting them cool, then whirring up with olive oil until you reach a slightly runnier than peanut butter consistency.
19. Apr 2009 · 15:54 UTC
Mmmhhhhhhhhhh, hummus 😐
sowbug
19. Apr 2009 · 17:01 UTC
Ah, I haven’t tried the toasting step. Next time for sure. Thanks for the tip!

Final: Flood of Air

Zipfile here. The executable is for Windows, but it’s written in Python so you can probably figure out how to run it on other platforms.

My kids seem to enjoy playing the game, so that’s sufficient for me to stop. If I get any great ideas in the next 5 hours and 54 minutes, I’ll re-upload, but as it is, my first LD attempt is complete!

Frequently Asked Questions

Q. What’s with the weird game name?
A. It rhymes with how I mispronounce Ludum Dare.

Update 29 minutes before end: new binary, new screenshot. Tiles now have gradient to look a little less sucky.

Tags: final

Comments

20. Apr 2009 · 16:10 UTC
how do I pause?
sowbug
20. Apr 2009 · 23:42 UTC
You select sleep or hibernate if your OS offers that functionality. Um, yeah.

Faking artistic competence?

Fellow LDers,

I can barely draw a circle, let alone cool monster or robot sprites. I’d like my next LD entry to involve real artwork, rather than just letters and geometric shapes. I don’t expect to ever see my creations hanging on a wall in a museum. But if I need a trash can in my game, I’d like to be able to spend a couple hours in a paint app and end up with something that looks like a trash can, rather than a gray rectangle with vertical lines.

Do any of you know of books or websites whose specific goal is to teach geek coders how to draw simple iconic artwork? If so, I’d appreciate your recommendation.

By the way, if you believe this is an unattainable goal (“it’s a gift — either you have it or you don’t”), or that I’m asking the wrong question, I’d still appreciate hearing what you have to say. I know that people who don’t have the “gift” of computer programming are nonetheless competent professional software developers after being taught how to program, so I hope the same is true with art.

Please help me learn how to learn (or maybe just fake) artistic competence!

Comments

21. Apr 2009 · 00:44 UTC
One of the most wisest pieces of knowledge told to me by my fifth grade teacher was that if you try to make something look straight, people will see the crookedness. But if you make it crooked on purpose, no one notice there is anything is wrong.
sol_hsa
21. Apr 2009 · 00:58 UTC
I’m not claiming to be an artist by any scale, but here’s my few hints.
5parrowhawk
21. Apr 2009 · 01:15 UTC
Light-sourcing works wonders, and doesn’t require much artistic skill. If you’ve ever worked with 3D before, it should be intuitive.
21. Apr 2009 · 05:00 UTC
Yeah, I don’t buy in to the “gift” angle. But like anything, it takes work. Doing it (crappy results and all), and looking at stuff (trying to understand it) is how you get better. Pick up a sketchbook, grab a pencil, and start doing.
21. Apr 2009 · 07:46 UTC
I firmly believe that anyone can learn to draw just like any other skill out there. I think a lot comes down to the fact that we tend to spend more time on things that we like to do or have found a drive for or that our parents may have noticed and encouraged from a young age. This time spent practicing builds our skills over time.
21. Apr 2009 · 07:49 UTC
Oh yeah.. the title of this post reminded me of a great quip:
0rel
21. Apr 2009 · 07:54 UTC
some lazy, but fun techniques using free graphics software could help, maybe:
0rel
21. Apr 2009 · 07:55 UTC
oops
0rel
21. Apr 2009 · 08:51 UTC
(hmm, other post wasn’t display. markup errors or something…)
21. Apr 2009 · 09:27 UTC
My suggestion is a little expensive… Forget about drawing with the mouse and get yourself a graphics tablet. I bought the smallest Intuos3 tablet from Wacom on Ebay for a little over $100. Using it in the GIMP, it lets me create my own smooth style. That alone is all I needed to make art that looks (nearly) as good as production indie titles. Of course, the Linux drivers aren’t so hot… grrr…
robot_guy
21. Apr 2009 · 09:39 UTC
If you’re more a programmer than a drawer and you have a reasonable grasp on the way shapes can be put together but can’t actually put them down on paper (or screen) you could go the route that I went and use PovRay. This is a 3D rendering tool that uses a text description rather than a GUI tool to describe the objects / image and therefore I feel fits better with people that program rather than draw.
Hempuli
21. Apr 2009 · 11:08 UTC
It annoys me that I can’t draw on computer like I draw on paper. Tablets aren’t very good imitations, sadly. :(
sowbug
21. Apr 2009 · 14:09 UTC
Hey everyone,
jovoc
21. Apr 2009 · 15:00 UTC
Thanks! Glad you liked the article. And I know what you mean about people whose brilliant doodles look effortless — but you find out that’s really because they’ve been doodling since they could hold a crayon.
ArmchairArmada
21. Apr 2009 · 19:06 UTC
I have always been an ok artist, but recently I discovered a few simple principles that have helped me to grow a little. Here they are:

* Don’t worry about technique. How you’re creating the art does not matter as much as what it looks like.

* Don’t worry about being messy. Draw quick and rough with the forms, proportions, and perspectives of the drawing in mind. Lines can be cleaned up later on a computer, with a light-table, or, if the rough drawing is light, on the same page.

* Don’t think, feel. Does what you are drawing feel right when you look at it? Does it provoke the emotional reaction you are trying to achieve?

* Be progressive. Only a few artists can go directly from a blank page to an awesome drawing. Instead, gradually make changes bringing a drawing closer and closer to being visually appealing.

* Stay in motion. Do not focus too deeply on any one part of the page. If you go in close to try to draw ‘the perfect hand,’ for example, you might find that it is too small compared to the rest of the character’s proportions. Jump around all over the place starting rough and loose then work towards refining and adding detail.

* Keep the big picture in mind. When you start a drawing it might be best to rough in basic shapes (rectangles, circles, amorphous blobs, etc.) just to get a feel for the layout and proportions of the drawing’s elements.

* Warm up. I find that the first thing I draw usually looks terrible. Quickly get a few rough drawings out before trying to tackle a more serious one.

* Have fun. If you are stressed out about how your drawing looks it will appear stiff, awkward, and unnatural. If you are simply having fun, though, your drawings will more likely be appealing, dynamic, and pleasurable to look at.

* Go easy on yourself. People tend to judge themselves more harshly than other people would. Artists can look at their own work and see hundreds of flaws, where other people will likely never notice.

* Learn with each drawing. Take notice of what can be improved in a drawing and try not to make the same mistakes again. This may seem to contradict a lot of what I previously said, but improvements can only be made if you know what to try to improve at.
23. Apr 2009 · 13:35 UTC
To expand a little and cover Hempuli’s problem…

If you have a graphics tablet, you can draw your figures by hand on some paper, then just plop that down on your tablet and trace it into your PC.
24. Apr 2009 · 01:52 UTC
You should watch Cactus’ talk at IGS. Here’s a torrent:

Postmortem: Flood of Air

Background and Pre-Compo

My primary goal of this, my first Ludum Dare, was to finish the competition. Nothing more; not to win, not to place, not to show. In fact, someone’s game has to come in last place, and I was totally OK with that game being mine.

There’s something mystical about computer games. Every developer I know has tried to write one. All of us dream of checking out from our dreary jobs after a sleeper hit that we wrote at home over 52 weekends. But though we’ve all tried, none of us ever seem to finish our games. I was tired of being in the slacker group. I wanted to join the cool kids who have finished a real computer game.

I made the final decision to participate a few hours before the theme announcement. My wife’s 9 months pregnant and could go into labor at any moment, so when I first heard of LD a few months ago, I dismissed it as too close to our due date. But by Friday afternoon (Pacific time), it was looking to be a quiet weekend, so I committed. I knew that by Sunday evening I would submit a Ludum Dare entry.

Technical Preparation

At around -2:00 (two hours before the theme announcement), I downloaded an IRC client and joined #ludumdare. I closed all my open projects in Eclipse and created a new blank Pydev project. I made sure I could draw a gray screen in pygame. I promised myself that I’d stick to 2D.

I searched Google for [royalty-free clip art]. Then I read the contest rules for the first time and was horrified to learn that we couldn’t use clip art. You might as well have asked me to sing on American Idol. But hey, level playing field, etc. etc. etc. No biggie.

While waiting for the theme announcement, I read some of the survival guides and prior postmortems. Don’t use LD as an opportunity to learn new technologies. Don’t start coding before you’ve done a little bit of design. Don’t design for lots of content. Don’t get drunk. Don’t pick this weekend to get a new girlfriend. Roger wilco.

First Night

I spent the first few hours of the competition kicking around ideas. Almost every one was too ambitious, mostly requiring level design or lots of cute icons that I couldn’t draw, or else having a bunch of vague “and then the two actors have some sort of conflict” parts that I wasn’t sure would get clearer in the remaining 46 hours. I settled on a dumbed-down Tetris variant.

This was the first decision I made in the competition, and it was probably right for my personal goal, but it doomed any chance my game had of being playable. It was the best briefly-describable game I could think of in the short timeframe. I traded the benefit of simplicity for the chance of creating something interesting.

I wrote a little code and started talking myself out of the Tetris idea. Sensing trouble, I backed away from the keyboard and went to bed.

Saturday

I woke up hating my design even more. I started typing in more Google searches: [anti tetris], [tetris variants], [inverted tetris]. My web browsing was getting more free-form. Huge warning signs. I pulled back and resolved to get back to my stupid original idea.

Six hours later, I had the core game finished. I added scoring and an in-game tutorial. I also added some animation transitions that were surprisingly effective in helping my focus group (my two kids, ages 4 and 5) understand the cause/effect relationships in the game.

After a dinner break, I made another big decision: either explore gameplay and risk destabilizing the code, or button everything up to guarantee that the entry would be finished. I picked the conservative route and promised to return to gameplay during whatever time was left on Sunday.

This decision hurt, because I knew the submitted game was now very, very likely to be trivial and dull. But last time I checked, game design is hard. Which am I more likely to do in the remaining hours: stick to my strength of writing production-quality code under deadline, or come up with a brilliant flash of creativity?

Sunday

More buttoning up: gameinfo.xml, readme, license, screenshot, hunt-and-peck testing (which did discover a few obscure but good bugs), py2exe, free-licensed font, and coming up with a suitably dorky name for the game. As expected, these details sucked up a fair amount of time. But damnit, my entry was technically complete in every sense. I’d finished Ludum Dare!

With the remaining time, I implemented two interesting features: a special tile that showed up later in the game and introduced some locality constraints on the board, and various gradients on board components that gave them some visual depth. The gradient code introduced far more CPU usage than I expected, so I spent the last 90 minutes before the 48-hour mark prerendering and caching as much as possible (while flipping through the Git documentation to figure out how to quickly revert to earlier in the day if I had to abort the gradient project to make the deadline).

What I did right

  • Set a realistic initial goal and stuck to it.
  • Wrote solid, conservative code.
  • Added a reasonable level of polish: transitions, cosmetics, in-game tutorial, and compliance with all the LD submission guidelines.
  • Stayed on IRC.
  • Admired without envying the progress of my fellow competitors.
  • Postponed needless risks as long as possible, while tackling necessary risks as early as possible.

What I did wrong

  • Wrote a really crappy game that is wasting LD judges’ time. I didn’t realize that every entrant was expected to judge every other game. That’s a heck of a O(n^2) algorithm, and I’m sorry to be contributing to the polynomial explosion. I wish there were a “submitted for non-consideration” tag, like “finalbutdonotjudge” instead of “final” if you’re entering just to enter, not to compete.
  • The one somewhat fun aspect of the game is the special tile. But I don’t introduce it until 60+ seconds into the game. Unfortunately, from the comments left so far for the game, I am pretty sure that most judges exited before seeing the first special tile. The rule of thumb is to sell the core of your game in 20 seconds, or risk your judges bailing out early. Fixing this wouldn’t have saved the game’s crappiness, but I’m disappointed that I didn’t get this easy part of the game presentation right.
  • Aimed a little too low, even for my first competition. It’s my personal style to value reliability over creativity, but successful gaming is all about taking risk. That’s obviously true in game play, but it’s also very true in the development of indie games. Your audience really doesn’t give a shit how proud you are that you finished your game; that’s a given, or else they wouldn’t be wasting their time playing your unfinished game. So people expect that any finished game will reach a basic level of challenge, and mine definitely failed that test. It was a fine personal goal to finish LD once, but for a second LD, if my game were no more fun than this one, I’d decline to submit it and call my attempt a failure, even if it was technically a complete entry.
  • Didn’t explore every artistic challenge the compo has to offer. I should have tried to draw something. It was fine to use sfxr for my beep-boop sound effects, but at a minimum I should have tried throwing some reverb over the wav files. I avoided injecting any kind of artistic expression into my game, and as a result the game’s not just boring, but also sterile.

Comments

Tenoch
23. Apr 2009 · 05:07 UTC
Heh don’t worry about O(n^2), I did O(n^3)! Polynomial explosion FTW!
23. Apr 2009 · 08:01 UTC
Thanks for sharing your thoughts and experiences in your post mortem. Congrats on finishing… it is important! :) I haven’t tried your game yet but I’ll get to it soon I’m sure. I’ll try and find the special tile too.. 😉
callidus
23. Apr 2009 · 16:14 UTC
Another first time LD entrant here, very interesting reading your postmortem. It seems like your process was similar to my own. I also suffer from aiming a little too low and simply focusing on crossing the finish line…. but hey always next time to shine 😉 look forward to you next entry 😀

LD16

Pint-sized success story

I submitted an entry in LD14. Those of you reading my journal during the compo will understand that I didn’t expect to win, place, or show. The goal for me was just to finish something, anything. After 48 frantic hours I was astonished to discover that I made my goal; I’d written a real live game! I’d finally succeeded at game development, which is something I’d tried in vain many times before.

That was about nine months ago. Next challenge: commercial game development. I came up with an idea in January, and just under a month of furious coding later, I finished my very first iPhone game, Teragati. Other than alpha channels, 22KHz sounds, and accelerometer as the principal control, it’s straight out of the 1980s. Good, clean, crack-like addictive fun.

Apple approved it for sale today in the App Store. 99 cents. If that’s out of your price range, let me know and I’ll find a promo code for you.

Next challenge: is there a Ludum Dare competition for marketing? 1,000 sales from scratch in 48 hours?

Comments

PsySal
16. Feb 2010 · 23:45 UTC
Congrats and best of luck with Teragati. That’s a pretty awesome turnaround into making games commercially! Keep on going…
17. Feb 2010 · 05:01 UTC
I was thinking about doing a “48 hrs to App Store” competition in February for the mini LD. But I didn’t have the time to run it. Maybe I’ll have that be an official meta-competition in one of the main compos this year :)
18. Feb 2010 · 17:51 UTC
Congratz! It’s always great to see people going above and beyond like this (something we want to encourage more and more).
18. Feb 2010 · 19:09 UTC
congrats and good luck sowbug!
18. Feb 2010 · 19:36 UTC
Good job! If it can be ported to Linux, I’d check it out.
jovoc
18. Feb 2010 · 20:55 UTC
Nice job. Well worth the 99c, fun game. I like the music. Congrats on shipping!
sowbug
19. Feb 2010 · 18:45 UTC
jovoc, I managed to get the blue/white pinpoint star change, as well as some real box art on the loading screen, into the 1.1 update, which I submitted for review this morning. If the App Store’s as quick as it’s been in the recent past, it might go live this evening (Friday Pacific time). Thanks again for the feedback and let me know if you have other suggestions.
19. Feb 2010 · 18:56 UTC
Woot! Way to go!
21. Feb 2010 · 05:10 UTC
Just bought it based on people digging it and the screenshots. :)