Hume

LD23

Hume Speaks

Tenth anniversary. First LD. Why not?

I’m Hume. I’ve been working on a space game since before it was cool, and I’m currently at a little bit of a loss because lots of other high-profile projects are using a lot of good ideas I wanted to use.

I figured this would be the perfect way to clear my head, meet some cool people, and hone the under-appreciated art of cowboy coding.

Since this is my first time, I expect to crash and burn, but I’m really looking forward to seeing what everybody can create during brief interval of mass insanity.

  • Language: Java. I like typing a lot.
  • Framework: LWJGL. I’ll likely use a small resource library I cooked up, but I need to replace the borrowed PNG loader, so I’ll have to post the library later on.
  • Graphics: Wings3d, Photoshop CS5 and maybe a little Fireworks for that authentic late ’90s feel.
  • Music: Modplug Tracker, played back with JMonkeyEngine code. Yep. My sample library is probably tainted, so I’ll use SFXR/CFXR to make instruments. Quickly.

Of course, all of the above assumes that the theme merits some kind of graphical treatment. Or maybe I’ll do a text adventure.

>ENTER LUDUM DARE
You enter the Ludum Dare.
It is dark. You are likely to be eaten by a grue.

Good luck, everyone!

Warmup Epic Fail!

Hi everybody,

Well, as I expected, the warmup was pretty instructive. I spent too much time on my tools and libraries — I switched math libraries. Why?! — and not enough time on the game.

"Design" "document"

My "design" "document" for the warm up weekend.

The theme I rolled for the warmup was “relentless,” so what I was aiming for was infinite mech combat. What I got was a lot less than that:

  • Enemies that don’t move and don’t shoot back (well, the jets did fly at one point, but into the ground, so they needed better AI which was not done);
  • Pickups that aren’t pick-up-able
  • Infinite everything instead of attributes topped up by pickups
What did work:
  • Gun works okay
  • Infinite terrain works fine
  • Loot drops work
  • I’m pretty happy with the camera

Missiles are so bad. Hilariously bad.

Check it out if you want; have a laugh. I’ll try to do better next weekend. No promises :)

Dry run, uh, game: “Relentless”

Comments

gulaghad
16. Apr 2012 · 04:56 UTC
I like your “design document”.
16. Apr 2012 · 05:09 UTC
Well, look at it this way: You learned a bunch of things you probably will avoid next weekend.
16. Apr 2012 · 13:06 UTC
Thanks for checking it out. It seems like a depth buffer problem, which should be easy to fix now that I know about it. My fault for not testing in multiple operating systems.

Workstation Action Shot!

Workstation action shot!

Ready to go. All we need is a theme.

Good luck,

Hume

Well, THAT was awesome.

I’m blown away.

So many people working hard. So many people finishing or with a clear idea of exactly what to avoid next time. 1100 finishers for LD48?! Some awesome artistic talent. Some really surreal code wizardry.

For a first time, I’m actually really pleased to have finished at all. And I’ve learned something important about making sure people can play through your whole game — hard is fine, but for the compo, people should be able to continue from where they lose, so that can see the whole game.

Thanks everybody for your help and your enthusiasm.

And you Jam people, hurry hard! Only 12 hours left. Good luck!

 

Conqueror: Making Of

You guys! I had so much fun, you guys!

Sorry about the low res. Being able to read the code would only make you cry anyway.

obligatory game link

LD25

Hume Speaks

Hi. I’m Hume. You may remember me from such Ludum Dares as the one before last.

IMG_1906

My screen really isn’t pink. I don’t know what’s going on in that photo.

Last time, I was well prepared with a complete Java/LWJGL project skeleton containing automatic compile and upload scripts, and I wrote my game in OS X. Since it seemed to work out so well, I’ll be doing none of that; instead, I’ll go with C and MinGW on Windows and cry over makefiles. I will try to build for other platforms at the end, but I’m pretty sure how that’s going to turn out.

That link in the last paragraph points to my framework, which is still available for download. I’d be using it if I were clever, which I’m not. If you’re looking for an entity system based framework with font, mesh, sound and shader loaders ready to go that builds an applet and the page to host it, have at it.

Actually, I may have just convinced myself to use that framework. Uh oh.

A.R.M.: Alien Research Mission (A Post-Mortem)

Sometimes, games are as fun to write as they are to play.Source code includes Goats

What follows is an hour by hour breakdown of why writing this game was awesome.

[stextbox id=”warning” caption=”TL;DR”]

Box2D.

Go play the game. Do a lot of barrel rolls.

[/stextbox]

T -4:00

I am pretty discouraged. Lately I code in C++ and C, but my sound library wouldn’t link and the source won’t build. I need an alternative.

T -3:30

I take a break and write an “I’m In” post that rambles into reminiscing about how convenient my LD23 project skeleton was. I decide to use it.

T -3:00

I discover that (1) the skeleton only builds applets and (2) LWJGL applets no longer work in OSX. I write a new Application entry point and wonder if the math classes are missing as much as I remember.

T -2:00

The math classes are missing more than I remember. If I want an orthographic camera matrix, I’ll be rolling my own. I could just go back to GL 1.2, but I’m not sure I remember how. I try replacing my Kenji math classes with OpenMALI.

T -1:00

This sucks. C++ has spoiled me. I start looking for something like GLM.

T +0:00

The competition has started. I don’t know what programming language or tools I’m using. I’m screwed.

T +1:00

My searches are hitting the online libgdx javadoc. The API looks pretty good. I start reading tutorials.

T +2:00

I successfully glClear(). I draw a UFO sprite and rotate in 15 degree increments. At 60 degrees I decide that this sucks. I write a basic Entity System for the comfort of the routine. I go to bed.

T +11:00

Morning. I’m adding TrueType support to my GDX workspace. I’m going render something, even if it’s just an FPS counter. I stumble across the Box2D classes. I still don’t have a game idea, so I might as well build a sandbox. I find this tutorial and create a ground box in my own game.

T +12:00

Inevitably, I add a spaceship. This Box2D debug renderer is an awesome time saver for prototyping.

T +13:00

I’m ustreaming a flying UFO with rotate/thrust controls. I add cubes because physics. I crash the UFO into the cubes, which fly everywhere. I am laughing a lot. I decide that this game really needs flying cubes.

T +15:00

The cubes are arranged in a way that approximates buildings, in stacked rows. At first.

My UFO has a tractor beam that pulls objects up. Then they hit the UFO. I learn about collision masks.

30% of the way through the competition, I have some idea of what I’m doing. I throw away all the game object classes and move everything into the entity system.

T +19:00

The tractor beam logic is done. It opens doors if there’s something “edible” in the beam; otherwise the beam releases at the UFO and the object continues upwards. I can’t see the doors opening, because the graphics still consist of (1) FPS counter and (2) the Box2D debug renderer.

T +21:00

I add a stats component and render stats in the ground. They’re boring. I have no idea what the instruments in a UFO would look like, but A: 320 N: 16 isn’t cutting it. On the plus side, I now have a command-queue based renderer.

T +22:00

My body feels like crap because all my windows were on the wrong monitors for livestreaming, and it screwed up my posture. I have shooting pains down my arms and my left forearm has an egg-shaped welt on it from leaning against the desk. I call it a night.

T +36:00

Good morning! I fly the UFO again. This needs to be a side-scroller.

T +36:15

This is a side-scroller.

T +37:00

The humans are smaller boxes that keep the bigger boxes company. The humans need an AI that makes them run away from the UFO. The rules for when certain things collide with other things are getting complicated.

T +41:00

I have spent the last two hours throwing humans. There is a callback that fires when they hit the ground, but the impact force is always registering as zero, so the humans aren’t killed by the impact. I tamper with the FixtureDefs involved and eventually see some improvement.

T +43:00

I recreate some old music and copy the .ogg file into my assets. It plays with zero hassle. It’s also six minutes long. I won’t need any other music. I will probably get sick of this. I disable the music.

This game needs sound effects. I fire up CFXR and create a couple of wub-wub-wub-type sounds.

Unless I am serious about my game using only the Box2D debug renderer, I’d better start drawing sprites.

I write a collision damage processor for the UFO instead.

T +44:15

I start drawing sprites.

T +44:35

That will do for now.

T +45:30

I have spent too much time looking for a monospaced pixel font. On the other hand, the stats on the results screen now line up. I feel like these aliens are probably not on a plum assignment with top of the line gear. I add PONG burn-in to their briefing monitor.

The humans aren’t getting a flee AI.

T +46:00

I sprite the crap out of the main game screen. I don’t think I’ll have time for backgrounds.

T +47:00

I don’t have time to draw a proper title screen. I recreate the briefing screen with a sort of title/instructions thing.

T +47:30

I tune the levels. I feel like this isn’t really a game, except for the fact that there’s a goal and you can die. It’s still fun though. Wait, what’s a game?

T +47:45

I create sound effects for humans and buildings tearing loose and UFO damage. I scream twice and scare the crap out of my wife. I drop a dinner plate and fork on my desk while I stomp my feet. The cat runs away. I realize I missed my chance to add a cat sound effect.

T +48:00

Deep breaths. I play the game. It…well, somehow, it’s a game. I upload it and try it again. And again.

It’s not much, but it’s the game I want to play right now.

I am so excited I forget to have my victory beer.

Tags: 1000 words, box2d, java, ld25, libgdx, post-mortem

LD26

ULTRAPEW!

PEW PEW PEW PEW PEW PEW PEW PEW PEW PEW PEW PEW PEW

PEW PEW PEW PEW PEW PEW PEW PEW PEW PEW PEW PEW PEW

PEW PEW PEW PEW PEW PEW PEW PEW PEW PEW PEW PEW PEW

Here’s the idea: 

  • Up to 128 players chase and shoot each other. IN SPACE.
  • Weapon upgrades are per-shot.
  • PEW PEW PEW PEW PEW

Here’s the point:

  • Leave a multiplayer server running for the duration of the judging.
  • PEW PEW PEW PEW PEW PEW
  • Have the server spit out logs and give out pointless awesome LD trophies.

Here’s how it was done:

  • Forget about fancy lag compensation and cheat detection
  • Three thousand lines of C
  • Two original songs
  • One person jam team
  • “Minimal” scale testing.

Best moments:

  • It works!
  • No it doesn’t! But it’s broken in awesome ways!
  • Particles!
  • PEW PEW PEW PEW PEW PEW etc.

PEW PEW PEW PEW PEW PEW PEW PEW PEW PEW PEW PEW PEW

This was probably my favourite LD since my first. Once again I spent all of my time on a technical prototype instead of polishing, but you know what? That’s okay! I think Ludum Dare is the perfect place to take risks and try something new. And judging by the other entries, lots of my comrade contestants agree.

I had a blast. I’ll try to rate as many entries as I can, and I’ll also try to stay on the UltraPew server as much as I can so everybody has somebody to play against.

Thanks everybody! See you in the comments sections of your entries, and I can’t wait for LD27!

P.S.: OpenGL coder looking for artist for next Ludum Dare or earlier. @justinbowes on Twitter.

LD29

Code Base

Here’s my Git repo. It contains a bunch of framework code and a “game” that just bounces the words “DVD Video” off the sides of the screen.

I haven’t started yet, so this is still ok, right? I still have no idea what I’m doing with this theme.

Good luck to everybody.