depp

LD22

I’m in… and, code.

So, I’m in. I just finished porting my base code to Linux, Mac OS X, and Windows: game_v0.1.tar.xz. Text rendering is broken on Windows, but who needs text anyway? I’ll do it all in OpenGL and C++. I wanted to get an audio framework working before the contest but I spent too long wrangling with COM interfaces for loading images.

Lonely Star

It’s a game! Not a very long game, in fact it has just six levels. All I’m going to do now is add some “You win!” / “You lose!” messages, polish it some, and publish it. I’m not going to do the second half of the game as I planned unless some extra time materializes somewhere.

Screenshot 2

(The weird glitches are from the screenshot.)

LD23

LD24

Shall we vote?

Hoo boy. Another Ludum Dare coming up, and I am going to exacerbate
an existing problem by also talking about the rating system. But first,
I have a confession.

I like the rating system. Screw accuracy, it encourages people to
play your game. We’re all hungry to see who made the best games this
time around, so we play each other’s games, rate them, and give
feedback. The rating system creates more feedback, because it
encourages play. And I also like seeing the top games: the top games
are pretty solid games these days, even if (especially if) they’re
short. And on top of that, I love having the opportunity to get
quantitative feedback on my game!

So I came to talk about improving system accuracy, because I dug up a
pretty simple statistical analysis of the voting system that shows the
likelihood distribution of the top three overall ranked games from LD
#23, and the picture is not pretty. (From: Let’s make a voting system)

Likelihood distribution of top games

Well, it is kind of pretty, but the implications aren’t. It kind of
implies that the ranking (not the ratings! the ranking!) is a bit of a
farce. I provide the mathematical model, a discussion of community
goals, and a possible fix in my article.

Article: Let’s make a voting system

I’m in, and I have music

Okay, I’m in. And I’m definitely going to have sound in my game this time. I’ve added audio support to my framework (C/C++) that works on Linux, OS X, and Windows. I don’t have Vorbis decoding done yet, but that should be tractable, I hope. Base code is available from the link below.

Oh, and to warm up… I wrote a few tracks, to see if I could quickly put out short pieces of music. The MP3s are available from the link below. I spent about a half hour to an hour on each track, so they’re not much…

Link: Dietrich’s LD #24 Page

Progress

I have made some progress on my very fancy game whose technological sophistication will STUN you.

More importantly, now I’m back into the swing of things, so I’ll probably be able to go faster from here on out. I’ll need to…

Phase 2 is almost complete!

Phase 2 of my nefarious game is almost complete! Behold, a screenshot, where in the background you can see the pathfinding algorithm in action. (Also observe that my game defaults to 1280×720 — yes, it’s High Definition.)

Alas, this is only phase 2 out of… what, six phases that I came up with? So I’m really only half done, considering that I did phase 3 out of order (phase 3 is complete). I think I’d like to skip ahead to phase 6 if I can, but it might be a bit crazy…

Digital Generation post-mortem

I’ll do my post-mortem for Digital Generation now, rather than putting it off until never.

What went right:

  • Gameplay: I focused more on simple, achievable gameplay this time. I focused on making the game start out easy, and introduce new elements that you can figure out one at a time rather than all at once. My last Ludum Dare game just dropped you into the middle of everything.
  • Sound effects: I was hoping for music (see below), but I settled for sound effects. Even though some of them are shrill and annoying, they make it feel “real”. (Turn your volume down when playing my game.)
  • In-game help: In the final hour, at the bottom of my TODO list, was an in-game help system. Each level has a list of strings which get printed at the bottom of the screen as help messages. People don’t read READMEs, after all.
  • AI behavior on level 2: I just get such a kick out of how the AI behaves on level 2.

What went wrong:

  • Audio subsystem: The audio subsystem is my most recent addition to the base code library, and it’s got some problems. There are a couple bugs in it that I know for certain can cause crashes. The resampler is also total garbage, and the game only sounds decent at 48 kHz. If your system is set to 44.1 kHz, it sounds terrible.
  • Music: I wrote background music, but the audio subsystem doesn’t support it — so it goes to waste. The soundtrack is available as a separate download.
  • Sleep: I felt seriously ill half the time I was working on the game, and I think it was due to a combination of excitement and bad sleep patterns. Or I could have been genuinely ill, who knows? If I do Ludum Dare next time, I’m keeping to a strict sleep schedule. It doesn’t help that I’m trying to prepare for 8 hours of jet lag.

Tags: postmortem

First fifty, let’s talk about the theme

Okay LD-ers, you’ve actually had quite a long time to think about the theme this time, not just the 48 hours. That said, I’ve categorized games into 7 categories based on how they examine the “evolution” theme. I’ll pick five good games from the fifty that I’ve played for examples. To clarify: I’m picking games based on whether they represent these categories.

  1. Munch and evolve (7/50): In quite a few games, you play a critter which has to eat things in order to evolve into better things. I’m choosing Nom’s Evolvathlon to represent this category. This is the “movie science” version of evolution — totally not how evolution works, but no matter. I like Nom’s Evolvathlon because you have to evolve the right set of abilities to eat everything on the board. This category also includes “Osmos” clones (3/50), and by extrapolation we can conclude that there are 84 Osmos clones in the contest.
  2. Evolution as cultural topic (3/50): You don’t have to incorporate the theory of evolution when you can work with evolution as a cultural phenomenon. Evidently chose this route and made me laugh harder than I’ve laughed all week. These games usually play Church versus Science, perhaps in an utterly ridiculous way.
  3. Upgrades (11/50): If you’re having trouble matching the theme, you can always think of upgrades as a kind of evolution. This gives you a lot of flexibility since just about anything can be an “upgrade”. I’ve chosen A Castle in the Desert for this category, which is a fun game but uses a broad interpretation of evolution. It has an impressive gameplay script.
  4. Simulation (4/50): Some people made a valiant effort to actually simulate some evolutionary process, and Galapagos is a great example. You’re influencing the evolution of birds, but I managed to make the simulation go horribly wrong — I gave the birds too much food at once, which lead to overpopulation. They wiped out the food supply and completely died off. That’s what I love about simulation games — they embrace emergent behavior.
  5. Evolution of the game (3/50): And some brave participants decided that it would be the game itself that evolves. Stevie Asteroid Rescues the Hovercredits is a great example in this category — at first it looks like the most horrible, primitive game. Then you get to the next level and suddenly the graphics and music are better — they keep getting better as you get farther in the game. Now you have to understand the reason I say brave here is because if you took this route, you basically committed to making multiple games during the contest. It’s hard enough to make one!
  6. And finally, I think the sprite from my game, Digital Generation looks like Freddy Mercury wearing a space suit. Or something. The walking animation is more like a pelvic-thrust dance animation than anything else. (Incidentally, my game is also in category #5… and stringing together multiple games drove me crazy!)

The sixth category is none/background (21/50): for some games, evolution only really appears in the background, and you’ll miss it if you don’t pay attention to the text that scrolls by. Or evolution isn’t relevant to the game at all. I’ve played a few platformers this time where you just jump to the level end… I think if you can string a few words together you can make a platformer about anything.

And the final category is unique (1/50): games that I feel just don’t belong in other categories. The example I have is Vesuvius, which takes a “what does not kill you makes you stronger” approach to the game.

Well, time for bed, then I can play another 50 games…

Tags: review, theme

Video walkthrough!

Okay, I spent the past two days bashing my head against the keyboard trying to encode video directly from my game, Digital Generation. The result? A video walkthrough! It’s also a bit of “developer’s commentary” for the game.

I don’t know how to embed videos into posts. Digital Generation Walkthrough (Youtube)

Tags: walkthrough

Comments

mohammad
31. Aug 2012 · 12:30 UTC
i made a post like this…but more douchy…er.

AND GOT MAULED BY FRICKEN EVERONE!

LD25

The Water Shrine

I didn’t make an “I’m in!” post this time, but I’m in.

So far, I’ve made up some scratch graphics, designed a level format, and written a utility to convert Tiled Map Editor levels into my level format. Here’s what the first area in the Water Shrine level currently looks like in-game:

out2

It doesn’t have any water yet, that will come.

LD26

You had one job, hero. One job.

Hero was defeated!

Hero was defeated!

I was hoping the hero would make it to the final dungeon, but that’s apparently not in the cards. Could be because I wrote the code which allows the player to take damage before I bothered to write the code which allows the monsters to take damage.

Maybe, now that the lose conditions are working, I might add some win conditions.

Analytics and Post-Mortem

A long post lies ahead! My game is The One Road, which I wrote in JavaScript for the 48 hour compo.

Analytics

My game is played in the browser so I can just look at web server access logs. No special logging, I’m just looking at which resources were downloaded.

111 unique visitors. This counts anyone who loaded the background for the battle screen. 38% had referers, with 6% of those coming from Facebook and the rest coming from Ludum Dare.

89% of visitors requested at least one audio file. This means that audio is broken for 11% of visitors. That’s huge! I could figure out no rhyme or reason to the visitors without audio: they used different browsers (Chrome, Firefox, Safari, and Internet Explorer) and different operating systems (Windows or OS X).

Audio File Download Rates

There are three background music tracks. Each correspond to a different point in the game. For those with audio, 100% played track 1, 40% played track 2, and 29% played track 3. So under 30% of those who play my game got to the end. Is that a big number? Small?

48% of visitors with audio played the “you died” music, so maybe 52% gave up without dying. Well, it is possible they faced an unbeatable battle: the first gremlin. I’ll talk about that later. Actually, three visitors got to the end without playing the “you died” music. Congratulations to the seasoned RPG veterans out there (or cheaters).

Only 54% of visitors with audio ever bought something (sword, potion, etc.) at the town store. I think the store was not obvious enough, or people tried to get too far in the game without visiting the store. You can’t beat the game without going to the store, it’s simply not possible.

Browser Popularity

Browsers: 65% Chrome or Chromium, 27% Firefox, 5% Safari, 2% MSIE, 2% other. One visitor claimed to be using Safari on Android. Huh. People generally used up to date versions of Chrome and Firefox: there was a Chrome 18 user and a Firefox 14 user, but almost everyone used either Chrome 26 or Firefox 20: those two specific versions account for 80% of all users. All that time I spent testing on Firefox 10 (yes, seriously) was a waste.

Operating System Popularity

Platforms: 57% Windows, 28% OS X, 12% Linux (except Android), 2% iOS, 2% Android. My game shouldn’t work on iOS or Android, but I want to make it work. Again, this only counts users who got to the battle screen. Windows XP was the oldest with 6% of Windows users and OS X 10.6 had 16% of OS X users.

Gameplay

I focused on the core mechanics of turn-based RPGs: start at a town, go through the overworld, and end at the final dungeon. Defeat monsters to gain XP and gold to buy better equipment. This focus worked well, but…

Balancing the game was tough and took too much time. I expected “Impossible” difficulty to be literally impossible, or at least extremely tedious, but it turns out that it just requires a little grinding, a lot of caution, and some luck at the very beginning. “Easy” should be very easy, but if there’s one thing I learned about Ludum Dare game balance, you should err on the side of making your game easier. If you make it too hard, people won’t see most of it.

The major problem with gameplay is that stupid gremlin you fight on the other side of the bridge. The gremlin has a defense rating of 3, so you can’t harm it unless you buy a sword at the shop in town. Worse yet, if you decide to buy chainmail but no sword, the gremlin can’t damage you either. Oops. I suspect a number of people stopped playing here. I should have made the shop more obvious or reduced the gremlin’s defense rating on Easy.

One user complained that potatoes are overpowered in the game. They actually fill a specific need: they cut short any encounter you’ve already faced, so backtracking is less tiresome.

Coding

Two hours in, I switched from C++ and OpenGL to JavaScript and Canvas. That worked out surprisingly well. I did web searches for “how to make a simple HTML5 canvas game”, followed some tutorials, and expanded until I had a game.

I found the core UI in an RPG like this is the menu system. The game used a stack of menus, where hitting escape would pop the top menu off the stack and return to the previous. I didn’t realize how critical it was until I had reimplemented it in four or five places.

The other fundamental piece of code is the tables used to drive the game. There are tables for monsters, encounters, swords, armor, items, spells, and difficulty levels. The rest of the code only has a couple special cases, mostly revolving around the potato.

I also like the battle animation system, which runs a bunch of callback functions in sequence or in parallel to adjust the position of sprites on the screen. For example, one function will generate a tween callback, another function will cycle through sprite frames, and the two of them in parallel make the “sparkle” animation when you drink a potion.

Media

Not much to say: I didn’t want to SFXR everything but recording sound effects was tough. However, the music came out well. I scrapped plans to draw and paint because I suck at that, and ended up pushing pixels in GIMP.

Summary

An extra hour or two might have made worlds of difference for game balance. It’s just too tempting to add features right until the last minute, next time I’ll try to save a little bit of time to play before release. Next time, I’d also like to add a little extra analytics code: I want to know how long people play, how far they get, and what strategies they use.

Looking forward to doing this again in August… or even sooner!

LD26 Top Eleven

So I’m well on my way to getting sick of playing games… at least for a while. Here are eleven good games I’ve played, in randomized order, out of just over 150.

01-fs8

A – infernet89

A game with no instructions that does not need any. You get the simple joy of figuring the game out as you go along.

Placeholder – mtrc

That bug that you can’t quite catch… just make a comment in the source code and move on. It’s the experience of game development.

02-fs8

My Peculiar Car – brantkings

Wacky and simple gameplay, with a fusion of sax hits and comedic automobile design that just works.

I Know Nothing – MathiO

Simple gameplay focused on exploration and obstacles that are organic parts of the terrain.

03-fs8

Hexzilla – Bernhard

Strategy game that’s very addictive. My high score is 4537 credits, on wave 404. It’s all about building redundant shield generators behind a double layer of turrets.

This Is Not A Minimalist Game – Volute

A polished puzzle platformer with a great twist at the very end, and some sharp dialogue in the middle.

# – Kitch (not pictured)

A minimal arcade game that gets a lot of mileage out of some great sound effects.

04-fs8

T.O.M.B. – Knighty

Wicked puzzle platformer with an array of tricky but well-designed levels. I can’t beat it, but that didn’t stop me from trying.

Prototype (Jam) – OnlySlightly

Another game that evolves as you play.

05-fs8

The Epicly Short Adventure – JaJ

A platformer with no repeating tiles: each area has its own complete set of artwork. The final boss is a real treat, and it even has multiple endings.

X PRESS (Jam) – Pitoum

I’ve never had a game give me instructions so many times. Guess which button you have to press in this game…

Bonus challenge: find the artwork…

How many games can you find that feature artwork in Piet Mondrian’s style?

How many games in LD26 feature Botticelli’s “The Birth of Venus”?

Comments

13. May 2013 · 13:57 UTC
Thank you for place my game in top eleven! Good karma for you 😉

LD29

Base code declaration

Here’s my base code. Just about to dive into coding, and I hadn’t decided what programming language I was going to use until now. BSD license, about 1.6k lines of C++ with SDL and OpenGL.

http://moria.us/ludumdare/ld29/ldbase.tar.gz

LD30

I dream of post-mortems

Ludum Dare #30 was my fifth successful Ludum Dare, which brings me to a 50% success rate. Yay! Time for a post-mortem.

By the way, you can also play my game.

What went right

The engine. I wrote the engine in C++ this time, and took notes from an article called “Programming M. C. Kids” Iz-Tavares and Chang. The platformer physics turned out rather well, and the game feels responsive but not crazy. There was even enough time for some tricky shader effects, and I’m going to show those off in a GIF:

Dreamless Gameplay

Dreamless Gameplay

Core gameplay. Once the gameplay concept got to its final, simplified form, I could focus on implementing it and writing levels. The level format was just ASCII text, so I could crank them out pretty quickly, and I ended up with 9 levels.

Sound effects. Just a couple hours with a microphone (and some music software) were all it took. There are 13 sounds with an average of 5 variations each, and the engine picks a variation at random each time a sound is played. The effect is rather nice, especially for the footsteps.

Dialogue This was the last piece of code implemented, but it gives crucial context to the game. The writing isn’t great, but I’m really glad it’s there.

Analytics. I keep a record of every time a level is beaten or restarted, along with a couple other things. Here’s a chart of the statistics for each of the 9 levels. You can see that about 60% of the players who start the game finish it, and players who get to level 8 restart it 2.5 times, on average.

Chart of level data

Analytics for “Dreamless” by level

What went wrong

No tutorial. The game doesn’t exactly throw you into the deep end, but it does very little to tell you what you’re expected to do. This was painfully obvious once I watched someone else play the game. For everyone who played my game: thank you for taking the time to figure things out!

The worst part is the double jump. I was careful to make it so you could beat the game without the double jump, but there are some places where you have to restart if you don’t know about the double jump.

Slow start to the project. Looking at the commit logs, the game didn’t even respond to input until 16 hours into the contest, and jumping didn’t work until 21 hours had passed. I spent the time refactoring, messing with base code, and other things that don’t make games.

Not enough time on graphics and music. With only an hour and ten minutes left to go, I cranked out a music track and a bunch of sprites. I spent less than 10 minutes on music, and that’s including the time it took to start up the sequencer. I picked out two chords (Cm9 and Gm9), hit record, and rendered the result to disk without editing it at all. I even used the default patch you get when you start a new song!

Special Thanks

Special thanks to Obsolete Entertainment, who put footage of gameplay for Dreamless on YouTube. In general, thanks to everyone who posts videos of the games they play!

Tags: postmortem

LD31

Ludum Dare #31 Episode 1

12 cool games from Ludum Dare #31. Send me links and I’ll get your games on video!

Tags: video

Ludum Dare #31 Episode 2

Thirteen more cool games from Ludum Dare #31… Send me your game and I’ll record a video!

Caved In
KudukuForgiveUs (Compo)
http://ludumdare.com/compo/ludum-dare-31/?action=preview&uid=28928

That Dangerous Bridge
Shackhal (Compo) @shackhal
http://ludumdare.com/compo/ludum-dare-31/?action=preview&uid=10863

The Harrowing
K.Chplr (Compo) @kchplr
http://ludumdare.com/compo/ludum-dare-31/?action=preview&uid=46806

Stay Frosty
trenchgames (Jam) @TrenchGames
http://ludumdare.com/compo/ludum-dare-31/?action=preview&uid=46155

Last Ark
Nuclear Napalm (Compo) @NuclearNapalm
http://ludumdare.com/compo/ludum-dare-31/?action=preview&uid=38866

Sentinel
kipelovets (Jam)
http://ludumdare.com/compo/ludum-dare-31/?action=preview&uid=46923

Walk to the door
el-pepi (Compo)
http://ludumdare.com/compo/ludum-dare-31/?action=preview&uid=38693

Space Cube
lxd1 (Compo)
http://ludumdare.com/compo/ludum-dare-31/?action=preview&uid=34792

Thermonuclear War
panda (Compo)
http://ludumdare.com/compo/ludum-dare-31/?action=preview&uid=16086

CoinSlot
SuperDisk (Compo)
http://ludumdare.com/compo/ludum-dare-31/?action=preview&uid=11035

On The Field
redoxkun (Jam)
http://ludumdare.com/compo/ludum-dare-31/?action=preview&uid=40073

Vanitas I
ProgrammerPony (Jam)
http://ludumdare.com/compo/ludum-dare-31/?action=preview&uid=43889

Towards Light
Last Man Standing (Compo)
http://ludumdare.com/compo/ludum-dare-31/?action=preview&uid=41895

Comments

Pestel Crew
13. Dec 2014 · 21:00 UTC
Try our take on the theme
13. Dec 2014 · 21:24 UTC
Hey, I’d love for you to record Mobius Dungeon. Thanks for offering!
abdurrahmankh
13. Dec 2014 · 22:15 UTC
nice video
MiniBobbo
14. Dec 2014 · 00:17 UTC
Mines only a couple minutes long.
14. Dec 2014 · 15:27 UTC
Thanks for the video, @Dietrich :)

Ludum Dare #31 Episode 3

Another twelve cool games from Ludum Dare #31… Send me your game and I’ll record a video! I currently have a short backlog of requests, so if you made your request last time around, it’s on my list. But keep the games coming :-)

  1. One Act (Compo) by Sheepolution (twitter: @Sheepolution)
  2. 2P – BounceEmUp (Jam) by Kuality Games (twitter: @KualityGames)
  3. Slam Dunkin’s Beat The Crap Out Of Everybody (Jam) by sP0CkEr2 (twitter: @sP0CkEr2)
  4. Fibonacci Grid (Compo) by Andrew Adams (twitter: @andyjamesadams)
  5. A MAZE inc (Compo) by 5you
  6. GTAlien (Jam) by Pulsartronic (twitter: @pulsartronic)
  7. Meme Pixels THE GAME (Jam) by TrentSterling (twitter: @Trent_Sterling)
  8. Frosty Ninja (Compo) by belva1234
  9. The Lonely Realm of Tom Thaum, the Space Wizard (Jam) by JJEvil (twitter: @joeyjandrews)
  10. SumoBall! (Compo) by flyingbear
  11. Vibrant City (Compo) by Anshul Goyal (twitter: @goyalanshul)
  12. Fantastic Ludum Dare theme generator (Jam) by Rick Hoppmann (twitter: @tinyworlds)

Tags: video

Ludum Dare #31 Episode 5

Twelve more cool games from Ludum Dare #31! The backlog is a little bit smaller now, feel free to send me requests :-)

  1. Finish Your Project (Compo) by AgentParsec
  2. Sheep enchanter (Compo) by jsmtux
  3. Press i for inventory (Jam) by mr_tag
  4. Galvatross (Jam) by MrShoestore (twitter: @shlfstudios)
  5. SQUISH AND BOUNCE (Jam) by waveformmodulations
  6. The Spy (Jam) by cyrus
  7. INtire (Jam) by A Flat Miner Studios (twitter: @AbMinerStudios)
  8. Pipe Quest (Jam) by HotBoxGames (twitter: @HotBoxGames)
  9. Swotch (Jam) by Ulydev
  10. pOp (Jam) by Ulydev
  11. Batz (Compo) by recursor (twitter: @recursor)
  12. Life of a Geek (Compo) by Tommyno222 (twitter: @TomasBencko)

Tags: video

Comments

19. Dec 2014 · 22:42 UTC
It’d be cool if you could look at “The Tower”. I honestly don’t know if a video would do it justice, but you could give it a shot. It probably won’t take you too long. 😉
Lynx
19. Dec 2014 · 23:06 UTC
I f you have time and wanted to film more games, then by all means please check out BEAT+TRAK, pictures don’t do this game justice haha. Thanks!
19. Dec 2014 · 23:11 UTC
Sure thing! Our game isn’t too fun, but it’s enjoyable to watch the interactions and all the little things I wasted time on. 😛
23. Dec 2014 · 02:37 UTC
Thanks for Playing Galvatross!