Jun 26 2008

The TIGSource Procedural Generation Comp - Results!

Tag: General life, MMORPG Tycoontrevor @ 8:20 pm

The results are in!

I’d like to congratulate everyone who entered the competition;  there were lots and lots of really good entries, many of which I’m still playing in my spare time!

So how did MMORPG Tycoon do?  Well, by the current count, it looks like it came in seventh out of sixty entrants;  not bad at all, considering how badly it needs a hold-you-by-the-hand tutorial to help out starting players!  :)

For those who haven’t yet played the various games entered in the competition, I highly recommend you check them out.  Every last one of them is an interesting play!


Apr 20 2008

RSS feed fun

Tag: General lifetrevor @ 8:39 am

Just a quick note to everyone that I’ve just modified the RSS feed to act like the front page of the web site;  it now displays the same amount of story as is displayed on the front page, instead of being truncated at a ridiculously short length.

It also adds a single line footer with Copyright and other information about the post.  Unfortunately, this means that those reading via an RSS reader will have all those old posts they’ve already read showing up as ‘unread’ again.  Sorry about that, guys!  Mark them all as read, and I’ll try not to change the footer format again.  :)


Apr 15 2008

On jets, and the lagging thereof

Tag: General lifetrevor @ 3:04 pm

During the past 50-someodd hours, I’ve had a grand total of approximately four hours of sleep. This was largely due to needing to wake up early for a lengthy international flight on which I was unable to sleep (obligatory screaming baby three seats to my left, and another two rows behind me), and now trying to adapt to a strange new time zone.

Johnny Depp as Sweeny ToddOn the plane, I finally watched (amongst other things) the movie adaptation of Sweeny Todd: The Demon Barber of Fleet Street, by Tim Burton. When it was released in theaters I had been amused at reports of people who had been surprised to discover that the film was a musical, despite it being a film adaptation of a fairly high-profile Stephen Sondheim musical of the same name.

In the end, I was surprised to find that it wasn’t so much an adaptation as virtually a straight translation, maintaining even the incidental and transitional music from the stage show, just adding CG elements to fill out the world beyond what can realistically be done in most live theater. And making some surprising changes, where you’d least expect them.

At this point, I’ll confess to being a bit of a theater nerd. Below the fold, my comparisons between the movie and the stage play. While the comparisons are mostly spoiler-free, they won’t mean much to you unless you’ve seen one or the other of the productions. So those who have no interest in this sort of discussion probably want to skip this post. More game design discussions tomorrow, when I’ve had proper amounts of sleep, I promise.

Continue reading “On jets, and the lagging thereof”


Apr 05 2008

Hooray for spammers

Tag: General lifetrevor @ 6:39 pm

Apparently somebody has chosen to spoof my e-mail address to send spam. How do I know this? Well, my mailbox is bulging with “delivery failure” notifications; about a dozen in the last hour, and I’d be surprised if the rate doesn’t increase overnight. Not really what I wanted to be dealing with when I’m under a deadline, even self-imposed. :(

The spams advertise an online accessories shop, which has been registered on about half a dozen domains, all registered on March 31st, all by one person using a Chinese address.

In case anybody’s here because they want to complain about receiving one of these spams, it’s not my fault; I hate spam as much as anybody else; the criminals have just stolen my online identity to throw people off their track (and this can easily be verified by those who know how to inspect the spam’s e-mail headers).

For everyone else.. does anybody know of an effective way to avoid this problem in the future? Has anyone had success with things like SPF or Sender ID to actually keep spammers from spoofing your identity? For right now, all I can think to do is to set up a procmail rule to throw away the delivery failure mails, and wait for the spammer to move on to some other victim…


Mar 23 2008

On the Construction of Mansions

So in my last post, I rhetorically asked when would be a better time to post game design thoughts than after working a twelve hour day on a weekend while feeling vaguely ill. Well, I have an answer for myself.

I’ve managed to get about two hours of sleep since then, as my brain just wouldn’t settle down to let me fall asleep (it was stuck in a little loop of trying to debug an issue that doesn’t actually exist; and no matter how much I told myself that the issue didn’t exist, my brain refused to stop obsessing over how to debug it). Plus, I’m quite definitely ill. So I’m trying to take it very easy for the next few days.

But even so, I’m also going to continue writing about procedurally generated murder mysteries (although it’d probably be better for all involved if I didn’t try to write any code right now). I want to start by stating that everything I’ve been writing thus far are guidelines; they’re intended as sign-posts and touchstones during the development of the game, which are returned to to help in making the hundreds of tiny decisions that need to be made during the construction of any game, in order to keep the game on track.

So with that caveat out of the way, I’d like to talk about my current thinking about how our randomly generated mansion will be generated.

The key thing that distinguishes the construction of a house or mansion from (for example) a network of caverns as seen in randomly generated games such as NetHack, is that its living areas are tightly packed together, with very little wasted space between rooms, so it’s important that our construction algorithm pack rooms very closely together.

As a starting point, we’ll assume that our mansion is a single story. Our mansion will be built on a grid; the precise dimensions of the grid don’t matter. There are two types of rooms that we can place on the grid. The first are regular “rooms”, which are a minimum of 3×3 in size, but may be anything up to about 5×6. The second type are “hallways”, which are always either two or three grid squares wide, and will be at least twice that in length (but can be longer than that).

When building the mansion, the first room placed is always at one of the edges of the grid, and is labelled as the Entrance Hall.

After placing the entrance hall, the mansion construction approach works this way: First, we search the grid for unused grid squares which border two used grid squares. If we find any, then we randomly select one of these to begin placing our next room or hall. If not, then we randomly select any unused grid square bordering one used grid square.

We then try to place a new room, starting from the selected grid square. If we can’t fit one (it’s conceivable that we could have a 2×2 dead space which can’t contain either a room or a hallway, for example), then we just select a new unused grid square and try again. Eventually we’ll reach the desired number of rooms, and will be able to stop.

This gives us our base floorplan. Once we have rooms and hallways placed, we start placing doors. The general rule of thumb is that every room that borders a hallway will get a doorway to the hall. Any room that touches another room has a 50% chance of having a door to that other room.

Once we’ve placed the doors, we’re almost done; just do one more pass over the map to make sure that every room is reachable from every other room (that is, that there are no little groups of rooms entirely cut off and inaccessible from the rest of the mansion) , and add extra doors as required until that condition is fulfilled.

Or at least, that’s my initial idea. I’m sure that once I eventually get around to implementing it, I’ll find problems with the approach. I’m particularly worried about whether in practice, the “select a random grid square that borders two used grid squares” heuristic will actually produce tightly packed floorplans the way that I hope it will, without moving to a more complicated and intelligent room selection mechanic.

I might actually have a go at implementing this, tonight. See whether I can get something working as a proof of concept, despite my fever. :)


Mar 14 2008

Development stuff

Tag: General life, VectorStormtrevor @ 7:47 am

I just wanted to post an update on where things are at.

The current level of busyness at work will soon be easing off a bit; I’m hoping to have enough brainspace back to kick off another “Game in a Week” next week.

In other news.. Box2D version 2.0 has been released; I’ll be updating VectorStorm to that new version sometime very soon; I’ve already been playing with the new testbed examples that come with Box2D; lots of exciting new features in there! Can’t wait to adapt it all to the VectorStorm engine. Hopefully I should have that done sometime this weekend, just in time to not use it for anything meaningful in the Game in a Week, exactly like last time. ;)


Mar 05 2008

Busy, busy

Tag: General lifetrevor @ 11:47 pm

Very slow progress on VectorStorm lately. This is mostly because of being extremely busy at work, but also because I’ve been playing games rather than making them, the past week.

Stuff I’ve been playing this week: Sam and Max - The Raving Dead (excellent, for those following the Sam and Max series), Metroid Prime 3 (probably even better than the original Metroid Prime, for those who like exploration/puzzling action), Burnout: Paradise City (fantastic example of how to squeeze huge amounts of value out of a single set of level geometry), Phoenix Wright: Trials and Tribulations (I have a real weakness for this series), Oendan 2 (this game is going to ruin my eyes. Must.. remember.. to.. blink!), Professor Layton and the Curious Village (Casual game with stunningly high production values. And the setting is straight out of a platform game that I’ve been wanting to make for a long time, so I’m mildly annoyed that they got there first, and more fully-realised than I could possibly manage on my own), Patapon (I like its graphic style, but I’m not yet convinced by the gameplay), and just in case I somehow manage to finish all of the above, I also have the new “Apollo Justice” game in my “to be played” queue. And N+ on the 360 has more levels than I’ll ever manage to make it through. Especially bits of episode 14. Mean ol’ Metanet (they do apologise for that one, at least).

More independent stuff I’ve been playing this week includes Warning Forever (boss-centered sh’mup where later bosses are evolved based upon how well you dealt with earlier bosses), Tripline (deceptively simple puzzle game; I’m currently working on solving the very last level), and I’m immensely pleased to have finally beaten Cursor*10 (single-player cooperative game; outside-the-box game design!) At work, I’ve had a window open for the past week, with The Tall Stump running in it (I can’t really play it for more than a few minutes at a time; I find the controls to be painfully fiddly, but I also can’t simply stop playing it!) And of course, I can’t ignore Samurai Movers, which is simple, joyous mayhem (assist a nice old lady who’s moving house, through careful use of your trebuchet).

I’m hoping to get around to doing some more coding sometime soon; perhaps this weekend. But for right now, work and work-recuperation are taking my time. Things should ease off a lot, late next week. :)


Jan 12 2008

Things I have learned

Tag: #1: Petition Damsel, Game in a Week, General lifetrevor @ 6:02 pm

I have serious trouble typing the word “petition” at speed. It keeps coming out as “peitition”. Writing it on paper isn’t a problem. Investigating other words with repeated sound patterns, I found that “Banana” reliably comes out as “Banena”, and “Pinocchio” as “Pinocchiao”.

The only conclusion I can draw from this experiment is that my mind is really good at inventing creative means of procrastination, when I really should be programming.