Category Archives: Uncategorized

Beta!

We have a beta release candidate for Dungeons of Dredmor.

I’ll be packaging it tomorrow – a task that requires me to swear at our software updating tool on not one, not two, but three platforms, and which will probably also require some wrestling with the Nullsoft installer and the peculiar chain of evil that is required to ship binaries on OS X. Hmm. The actual code, though, is done and tagged in Subversion.

Despite what the previous cartoon says, we are accepting *limited* applications for beta testers. We don’t want to overwhelm ourselves with bugs and data, and we want to make sure that people who are playing the game get to have their stuff taken care of as efficiently as possible. For the next week, at least, we will probably have about five beta testers, and we’ll see where we go from there. If you want in on the beta testing action, please drop us an e-mail at dredmorbeta@gaslampgames.com and tell us that you want in on the action. In no particular order, preference will be given towards:

  • people we know, and are experienced QA Doodz
  • people we know, and who are not experienced QA Doodz
  • people who are members of the Indie game development press
  • people who are members of the real game development press
  • anybody who makes funny cartoons about video games
  • people who buy pre-orders for Dungeons of Dredmor (this will hopefully be launched really, really soon.)
  • everybody else

Be warned: the game is going to be rough for a little while. We still have to fill in missing particle systems, missing text descriptions, and to deal with any of the myriad of random bugs that occasionally show up in games where 90% of your content is randomly generated. There are issues of balance to be sorted. There is the always humbling experience of watching real players try to figure out how to play your game. The next month will be Fun.

We’ll be doing various press releases, interviews, and figuring out media relations and singing and dancing all next week. E-mail addresses for the press will be provided soon, but in the mean time the beta e-mail probably works as well as anything.

Posted in Uncategorized | Leave a comment

Update from the Trenches

“A delayed game is eventually good, a bad game is bad forever.” — Shigeru Miyamoto.

An approximate list of things that have been done in the past week:

  • The bolt dispenser is in, and works. Previously, you’d just get free bolts. Now you have to pay for them. Buy Bolts, or the Bolt Council will put a Bolt in your Head.
  • The tutorial has been rewritten in order to a) cover all the new features, b) be obnoxious. “You probably shouldn’t go near that glowing anvil over there. It looks like it might explode at any moment, and it almost certainly wouldn’t help you on your quest.” Interestingly enough, it wasn’t clear during playtesting that the tutorial was a tutorial;  instead, everybody just thought that it was an enormous, glowing icon.
  • Massive dumps of new art from David, who is still continuing, desperately, to try and finish all of the skill art.
  • A new title screen (from David).
  • Some fixes to the achievement screen.
  • New title music from Matthew.
  • You can now enter doorframes, or other hard to access locations, by holding down SHIFT and clicking. (This doesn’t work on David’s keyboard, and I have to track that one down yet.)
  • Automatic crash bug dumping! Why didn’t I do this years ago? For everything? I don’t know. Anyhow, if the game crashes you can now send us a dump file and we can actually parse it. Microsoft does something good for once.
  • Various new spell effects, including the support code for Midas’s Touch, the Blazing Nova, and various melee-flavoured skills.
  • Levelling up works again. Skill selection works.
  • Every single skill tree now has some sort of entry in the skill database, most of which have some kind of art and many of which do various things. This is thanks to the heroic XML-slaying effort of Daniel, who spent today moving houses so that he could get away from us. It won’t work, though. We sent Death Bees after him.
  • An entirely new, all redesigned skill book. This is the third all new, entirely redesigned skill book, and we have now iterated its design to Valve-like levels of brilliance.
  • Derek assures me you will be able to buy the game shortly. He showed me a web page with various links that went to Amazon, Google Checkout, and Paypal respectively.
  • You can now combine skills due to the new Skill Combining System. Simply drag “Fireball” into one skill slot, “Root” into the other, and suddenly you can cover the entire dungeon with flaming plant life. It’s pretty funky. It also crashes occasionally, which is why you can’t combine just *any* skill…
  • An experience bar now tells you how much experience you gained.
  • Speaking of flaming plant life, monsters can now catch on fire.
  • “Trap shhtung.” I don’t even know what this is, but apparently I did it.
  • And more stuff that I haven’t been paying attention to.

We have gone from SVN revision 2,444 (David, Monday May 10th, “exp bar highlight versions and tileset polish”) to revision 2,544 (Nicholas, Sunday May 16th, “Tutorial Fies”) in the space of a week. The game is looking much, MUCH healthier than I have seen it looking in a very long time. You can play, things happen, they are good things and they are fun. I am pleased.

That said, we’re still not quite at our beta release date target (the 15th.) This is mainly the fault of the massive amount of work that still needs to be poured into the skills system.  Our Mantis bugtracking system claims that I have four tasks to do before beta, David has three, and Citizen Daniel has fifteen. I’m probably going to start chipping away at some of CD’s tasks soon enough, as some of them are things I put on his plate when I was overloaded with stuff to do. Now the tables have turned on me. With that in mind, I’m going to go back to work. I have coffee, Coca-cola (which I only ever drink in crunch mode these days), and a girlfriend in the back of the apartment playing Rune Factory Frontier (work that yogurt maker, honey! work it good!) and asking me every fifteen minutes if I want soup or not.

Now where’s that @#$@ing Rhapsody CD gone?

Posted in Uncategorized | Leave a comment

Yes, we’re still aiming for that beta release date…

Even though it’s probably going to kill me. I’m also moving on the day of beta release. I’m going to probably die of stimulant overdose saturday night after collapsing into a pile of bbq pork ribs. The vividness of that image actually just really disturbed me. Ah, video game production. But anyway, I want to talk to you about brief status updates, and the moddability of Dredmor. (Is that a word?)

{ read this article }

Posted in Uncategorized | Leave a comment

Thoughts on Game Development from Jim Jarmusch (or: a call for Authenticity)

I have a math post under construction that explains some statistical stuff that we were doing, but when I went to write it I lost interest, then discovered that WordPress’s LaTeX system wasn’t working (Derek assures me it now is), and then wrote about half of it and then got distracted by, you know, trying to ship a video game. Mea culpa. I was going to finish writing that post today, but instead I was struck by the applicability of the following quote by filmmaker Jim Jarmusch (“Broken Flowers”, “Coffee and Cigarettes”, etc.) to the craft of game development. Jarmusch, of course, is talking about creative endeavours in general. He advises:

“Nothing is original. Steal from anywhere that resonates with inspiration or fuels your imagination. Devour old films, new films, books, paintings, photographs, poems, dreams, random conversations, architecture, bridges, street signs, trees, clouds, bodies of water, light and shadows. Select only things to steal from that speak directly to your soul. If you do this, your work (and theft) will be authentic. Authenticity is invaluable; originality is non-existant. And don’t bother concealing your thievery – celebrate it if you feel like it. In any case, always remember what Jean-Luc Godard said: ‘It’s not where you take things from — it’s where you take them to.'”

Nowhere is this more applicable than in game development. We steal on a regular basis. Every first person shooter references back to the roots of the genre – Doom, Duke Nukem 3D, Quake, Half-Life. Any role playing game released on a console today digs back through the collective unconsciousness until it eventually turns into either Ultima or Dragon Quest. In our case, Dungeons of Dredmor borrows liberally from Nethack, Linley’s Dungeon Crawl, and Dwarf Fortress. More recently, there has been an alarming infusion of Diablo; we also have some ideas that originated with a lesser-known Roguelike called Lost Labyrinth, which particularily influenced how we assign character skills. Our magical skill set – earth, fire, water, air, white and black magic – comes from, like, every computer game ever. Our musical score contains licks lifted cheerfully by Matthew that pay homage to everything from an episode of Doctor Who that I particularily liked to Pink Floyd’s “Money.” Our art… well, I’ll let David talk about our art.

Sometimes this is a fight in the office. As indie developers, surely we should be doing things that are original.  To heck with that – let’s be authentic!

Posted in Uncategorized | Leave a comment

Crunch Week: Postmortem

So Crunch Week happened. It was reasonably successful; we wrote a lot of code and put in a lot of sustained development. In fact, we put in enough sustained development that there is now a clear path to beta and release. There wasn’t before, there is now. I think that’s a good thing. We are looking at trying to get a beta candidate done by May 15th, at which point we send it out to the Lucky, Lucky People. (Did I mention you can still get in on this beta action? There is a sign-up somewhere around here.) Pizza was eaten, coffee was consumed, other important tasks were ignored… yeah, it was a success. Not much bunkering actually happened, though; maybe we’ll work on that more later.

Okay, everybody read that? May 15th, 2010 beta. That’s the first time I put a date on the blog. Let’s see if we hit that.

In the end, as Citizen Daniel said, mostly what we did was tear stuff *out* of Dredmor. We removed all the old spell system and replaced it with a new one. We removed 10 floors of dungeon. We removed the scroll system, which kind of sucked anyway. We got rid of duplicate monsters. New content includes figuring out what the Evil Chests actually DO, and paring our giant mess of skills and spells into a somewhat coherent collection of one hundred and thirty five skills, implementation of which is ongoing (and each one of which requires somebody to manually enter data, from a text file, into yet another XML database… by somebody other than me. Ain’t I a stinker?) A lot of code cleanup was done. Some bugs were killed, including some long standing ones. For instance, you can now actually get things into your inventory with some degree of accuracy. And so on, and so forth. Generally, … let us just say that “business was taken care of” and we’ll leave it at that.

I also drank a lot of coffee. There was no coffee in my apartment when I woke up this morning, because I drank it all during crunch week. I’m currently drinking “coffee” brewed from ground-up espresso beans. It… well, it’s an interesting experience, and I alternate between feeling euphoric and like death.

So about this dungeon cutting thing. Daniel proposed it, and I agreed to it. It’s interesting looking at how we’ve gotten from where we started to where we ended up. In the end… well, it’s another step away from where I originally planned on being with Dredmor. Dredmor was originally supposed to be a very, very oldschool experience in terms of its length; you would descend through the dungeon to kill Dredmor, but reaching Dredmor originally required you to explore through branches containing various monsters. Each branch corresponds to one of our tilesets that we have today, and would be a 5 level mini dungeon with its own generators and content. (This idea was almost certainly influenced by Linley’s Dungeon Crawl – one of the better roguelikes since Nethack. Then, after you killed Dredmor, you had to escape back out of the dungeon while being chased by him and carrying his Magical Phylactery (lifted, again, from Nethack.) Now, you have ten levels to get through, and you have to kill Dredmor. The good news? You might actually get to beat the game in your life time. The possibly bad news? Traditional roguelike players (as Daniel likes to point out, all ten of them) may not be quite as satisfied with the experience. Personally, I think it’s reflective of a general trend in game development towards tighter, more focused experiences. I’m comfortable with that.

Next week: more on roguelikes that have influenced Dredmor, and how those influences were removed. The week after that: well, hopefully we’ll be into beta.

Posted in Uncategorized | Leave a comment

The Triumph of my Magic Steel

We’re getting into bunker mode here, and bunker mode means that we shut up and program. Programming soundtracks are infinitely variable, but everybody tends to have one. For Dredmor, 50% of the programming was done while drinking coffee and listening to Rhapsody albums. Rhapsody is a largely insane European power metal band who mainly sing about unicorns, swords of magic, and dwarven economic practices. Christopher Lee was on their last album. It’s a reasonably intense experience, and a certain amount of silliness from the albums has transfused itself into Dredmor like some kind of musical background radiation.

Everybody has crunch mode stories. One of my favourite ones in my experience was several years ago – back in 2001 – when I was trying to ship a first person shooter using The Goddamned Lithtech Engine. Lithtech Talon, back then, was not known for its robustness, and most of my job description involved taping bits of it back together in order to get things shipping on time. One last problem we had before shipping our demo was that certain objects were suffering from z-fighting with the wall. Depth buffer precision issues are notoriously hard to fix, so I decided that the easiest thing to do – given that this was a last minute fix – was to tag the offending models (which were lights, or something) and give them a little depth bias in order to stop them from fighting with the walls. With that done, and a few more bugs taken care of, I crashed on the company couch in case I was needed later.

Three hours later, I was woken up: QA had gotten the build of the demo, gone through it, and wanted to know why there were vases floating through walls. It turns out that the depth buffer bias had been cranked… a little too high at the last minute, and on some of the wrong things. It still took me fifteen minutes for my brain to figure out how that was even possible.

I hope to have something a little more insightful for you next week. Until then…

Posted in Uncategorized | Leave a comment

Doom week(s) and Bunkers.

It’s that time of year again, when students everywhere (well, everywhere on a semester schedule at least) undergo the long and grueling process of ingesting dangerous amounts of caffeine and overloading their short term memory capacity.

As one of these barely human coffee zombies, I am nearly free of the clutches of final examinations, but since Nicholas is also somewhat tied to the chains of academia, we’ve been forced to put development on hiatus until Monday.

Fear not, though! A bunker session the likes of which Gaslamp has never seen is slated for just the next day! I understand coffee and instant noodles are being stockpiled in the workplace of choice, and we are destined to either never emerge from our self-imposed programming exile, or we will shamble out of our dimly lit and stagnant bunker to bring to light something odd, fun, and addictive in video game form.

Bunker

Posted in Uncategorized | 2 Comments

The Joys of Ruby

I really should be talking more about the programming decisions in Dredmor, but for the most part the programming decisions in Dredmor are uninteresting. There are a few little bits of cleverness lurking under the hood – there’s some good stuff in the map generation system, and some good stuff in the load/save system – but for the most part, Dredmor’s programming isn’t particularily sophisticated or challenging. Instead, I’d like to talk about some technology decisions that didn’t work out.

In the engine that we’re putting together for the next game that we’re making, and for the game that we tried to make before deciding to finish Dredmor, we found ourselves needing a scripting language. Scripting languages are important for games: they form a divide between certain elements of game logic and the engine itself. They also make it harder (if correctly implemented) for a game designer – who may not be thinking as a programmer – to crash the engine or to introduce Exciting Behaviours into C++ code. We wanted a scripting language, and I shopped around looking for one.

For our first attempt at solving this problem, we decided to use Ruby. Ruby is a scripting language that now powers… well, a fair amount of the web… due to its elegant design and a little library called Rails that you might have heard of. Ruby has a lot to like about it. It’s a smart, well-designed language that comes with a good set of useful primitives. It supports serialization and reflection of objects out of the box, it has a number of useful string manipulation functions, and it has utility libraries for everything under the sun. It looked like a winner, and it came with some binding code to help you integrate it into your C code. The problem, then, was how to integrate it into C++? How do we get two object-oriented programming models to play nicely?

Integration, surprisingly enough, turned out to be a very pleasant experience. I started with some good hints from Gaffer and his Ruby wrapping classes, and ended up mangling the hell out of his library to add some features specific to our needs (like cross-platformness and transparent object serialization.) The part that I found particularily delightful about the experience is that Ruby can internally serialize classes – including new, exciting sorts of objects – as plaintext strings. This made it very easy to get Ruby playing nicely over a network.

So, why doesn’t Ruby work? Short answer: the garbage collector sucks.

Long answer: Ruby’s GC does not support asynchronous garbage collecting, or incremental garbage collecting. Instead, when the garbage collector runs – it *runs*. And by runs, I mean chugs. I hope that some day this will get fixed, and would fix it myself except that I don’t know enough about Ruby’s internal source code or how to write a garbage collector to attack the job. If anybody out there knows something about these two topics and wants to make Ruby’s GC useful for games, let’s talk.

What are we going to do next? I’m not sure. My occasional hackmaster buddy, Ryan C. “Icculus” Gordon (that’s a mouthful), suggested Lua. Everybody does Lua these days, and that’s both a good thing and a bad thing. I suppose it does what you want it to do, but … I don’t know, something about it doesnt make me happy. AngelScript has also been floated, but I don’t know what the point is of embedding a language in a C++ application that programs exactly like C++. Next week, we’ll explore more interesting and arcane alternatives. Like that Erlang thing.

Posted in Uncategorized | 1 Comment