Darkholme 1.0.0

Here’s the first open source result from my game development: an entity-component system written in Ruby! It’s called Darkholme and I am super proud of what I’ve done with it. It’s a real open source project!

I wrote it initially to fulfull a need and to learn a bit about how games work these days. It’s heavily inspired by the work of Stefan Bachmann on ashley, so I’d be remiss if I didn’t think him heavily. Thanks, Stefan, you’re awesome!

It’ll be evolving as my game evolves, but I encourage you to try it out.

Devlog 12: I move through the network daily, conduct myself in silence

The Last Error is coming along really well. I’ve accomplished infinite, random map generation that only draws visible chunks. Because of reasons. Look at that awesome placeholder art! I purposefully made the player art so bad that I must change it before public release.

Now, the big question: what engine/language is the game using? Surprise! It’s LÖVE again. I’m reasonably comfortable with Lua and it’s allowed me to iterate a lot faster than any other engine I’ve tried. I did have a brief flirtation with HaxePunk, but desktop rendering for Haxe games has a long way to go before it’ll be viable for what TLE is doing.

I’d like to also outline more of what TLE will be and is becoming. Now, the game will be a top-down, randomly-generated cyberpunk survival game. I hesitate to label it “roguelike”, as it’s not turn-based, nor is the movement tile-based. Maybe “roguelite”, as the kids call it? This is not really important.

The game will feature a Spelunky-like level generation in that preset tiles will be arranged in a random order and populated with random obstacles, enemies, items, and other such things. I think this is a nice compromise between hand-built and totally random levels. Doing completely algorithmic levels well is hard and I like having at least a little bit of authorship in what the player sees.

It will be released as an alpha soon from a website that is not this one. Most likely Massive Danger, my current umbrella brand. It’ll be paid, but the alpha will be so, so cheap. Really. I haven’t thought too much about it, but you’ll be fine.

I’ll be providing Windows and Mac builds. Linux is more complicated, but I can potentially provide that. It’s a high priority, though.

I really want to have mod support. Barring that, I’ve considered giving the game’s source out to paying customers. Wouldn’t that be weird?

That is all. For now.

→ Variants: The Challenge of Changeable Design

I meant to link to this article a while ago, but better late the never, yeah? Achievements are old hat and not fun. This article by Keith Burgun proposes “variants”:

I am considering anything that changes the game rules a “variant”. So that means that Smash Brothers: No Items is a Smash Brothers variant, but Street Fighter With No Music wouldn’t be. I do, in general, believe that by changing a single rule, you are in fact creating a new game. After all, as anyone who has ever tried to balance a game knows, changing just one rule will usually have ripple-effects throughout a game system, often dramatically changing its character.

For those curious, I’ve already implemented variants into my game in lieu of achievements.

→ From Ruby to Lua

I was aware of most of this already, but it’s a useful primer and had a few nice libraries & tools that I missed.

Devlog 11: Always looking straight

I haven’t worked on my game for a few weeks. I guess I got the point where I wasn’t actually working on my game. I was working on an engine that I wasn’t even totally in love with.

It’s frustrating, having to throw things away. I think I’m going to do it, though. I want to make a game, not an engine. I did learn a ton about how the guts of things work, but I’m tired of figuring out how to display simple images and playing audio. I just want to make my game.

I’ll update in a little bit with a new screenshot.


Devlog 10: You are the bullet in the chamber of the gun

This is extremely exciting for me.

My engine running a game on a retina display and it doesn’t look like a load of bollocks.

Devlog 09: It's hard to know they're out there

Progress is coming along rather well on the engine. I’ve got scripting access via Squirrel and Sqrat. I was very proud of myself that first moment I accessed the C++ engine from a script. It’s not often I feel smart, but that was one moment.

Ideas for the game’s content are constantly percolating in my head. Sometimes it feels like a disservice to spend so much time wrapped up in the tech of the thing, but it’s vital for this to be a success in my eyes. I want my vision to be fulfilled in a timely manner, though, so I won’t spend half my life perfecting this thing. Rapid iterations!

Also, I’ve been wondering what’s best when it comes to distributing the game’s code. I want modifications to be possible, but I’d absolutely hate for someone to steal my game and make it their own. I guess I’ll need to work out a license that permits mods, but not complete redistributions. That’s putting the complete game cart in front of the work horse, though.

I’ll have screens as soon as possible! Unfortunately, code screenshots are about as boring as it gets, so nothing for now. Stay tuned, true believers.

Devlog 08: Can you rock?

Here’s the first screenshot of a Massive Engine “game”. It’s C++ and it’s awesome. OpenGL is neither fun nor easy, but I’m getting the hang of it. I’m still fleshing out some bits of the engine, but it’s nearly to the point where I can port over some of my old Lua jazz.

Oh man, I still have to do Lua bindings on top of all this. Ugh.

→ New Flickr update: super dope

Where do I begin? 1 terabyte of free storage, a sweet photostream redesign, and full-resolution photo display. Oh, there’s a new Android app or whatever. LIKE I GIVE A RIP.

I guess I need to start uploading some photos.

A strange voicemail

I have a Google Voice account that I haven’t used in a meaningful way since 2009 or so. Here’s a weird voicemail I got on it today.

I went to the beach

It was a pretty good time. A+++ Would Beach Again.

Devlog 07: I'll go back to black

So, I’m doing all the wrong things, but I don’t care. I’m just writing my own engine. Because of reasons.

I’m actually learning more about games now then I was before, so that’s exciting. I’ll post a screenshot once I’ve actually got some more to show.


New Nero track: "Into The Past"

Nero just dropped this massive track from The Great Gatsby and I can’t get enough of it. Treat yourself.

Edit: It appears Nero have removed this track from their Soundcloud. Fun!

Devlog 06: I’m Not Standing Still

There have been a few changes in my little world.

The game, up until this point, was written in Lua using the wonderful LÖVE engine. This was great for getting a prototype going, but I felt I was limited by it. The performance just wasn’t there and I was spending a lot of time working around Lua’s restrictions. I come from a very OOP-heavy background, so not having true objects was driving me crazy.

That brings me to the latest TLE update: we’re changing engines! I say we as if there’s someone else working on this. Well, I’m changing engines. Which ones? Angel 2D, of course! You have probably not heard of it, but it’s a fantastic C++ (with Lua scripting) engine headed up by the talented Shane Liesegang. I spent a considerable amount of time thinking about the new direction for TLE and this just feels right. I’ve also been talking with Shane about making some changes to the framework and he’s been very friendly and helpful. This is in contrast to my experiences with a few other engines where I received absolutely zero help with my simple queries. Let’s not dwell on that, though.

I’m excited about the future of TLE. With these new changes, we’ll be able to more easily support features that would have been “nice-to-have, but probably won’t happen”, like controller support and an iOS port (!!!).

The goal is to have an alpha for people before summer is out. Let’s hope I don’t turn out to be a liar.

Devlog 05: I guess that makes me the lucky one

So, the big news is that I’ve purchased a much nicer, much faster computer to develop the game on. The downside is that I need to get the game working on retina displays now, since it looks like a load of feces on them. It’s still very exciting, though.

Face front, true believer!