Author Archives: Nicholas

Smart Objects – or: “Everything I know about AI I stole from the Sims”

One of the fun things about doing a game like Clockwork Empires is that you genuinely have no idea what you’re doing some days. Some of our systems haven’t held up through the development process as well as they could, and it’s a constant game of trying to figure out how to extend them and how to refactor them. Case in point: our military AI originally used the same priority system as everything else, but now runs with a decision tree on top of the priority system. Social cues use a proper utility system *below* the priority system, etc., and there is some talk of cleaning the actual jobs up as well to not use the priority system either and to have everything in the game now run on a behavioural tree.

There are two types of people in the world, people with shovels ... well, also a gun right there if you need one. Where was this going again?

There are two types of people in the world, those with the shovel and, well, also a gun right if you need one. Where was this going again?

{ read this article }

Posted in Clockwork Empires | Tagged , , , , , , ,
6 Comments

Airship Masts, Containers, Fruit Baskets

I have a cold today, and I’m feeling a bit weird. Also, the office is a little quiet.

We’ve been working on a number of new features for the next build which are hopefully notable. A small feature, requested by our user base, is a way to designate an airship mooring tower location – the idea being that colony drop-offs (immigration, supply drops, criminals, vicars) will all happen in a controlled area, and that you can then stop them from being dropped on your colonist’s heads. David checked in his code commit for that on Monday, but he wasn’t in the office this morning so I don’t have any screenshots. I asked Daniel what was going on on Tuesday, and he replied, sarcastically, “We have an art director?” So I dunno, not sure what’s going on there.

airship_mast2

Just drop it on top of the stockpile loaded with (semi-)valuable goods.

Someone sent a fruit basket last week. That was nice. I guess I should have some more fruit; it’ll help with the cold.

{ read this article }

Posted in Clockwork Empires | Tagged , , , , , ,
12 Comments

Optimizing Colonist AI

We are definitely moving into the part of the dev cycle where we can craft the  “mid game” experience of Clockwork Empires effectively. One of the issues we are currently facing with the middle game is one of performance. We have a requirement that the game perform 10 simulation ticks per second, as mandated by our AI. This means that every update to the game state needs to take place in approximately 100 msec to avoid stuttering between frames – the renderer will keep rendering, if necessary, while it waits for the game AI to catch up. If you have 100 characters to be simulated, this gives you a budget of slightly under 1 msec per character. With Revision 36, we started to see people sending us save games with functioning colonies of 70 or so colonists, where stuttering was frequently occurring, and where in general the frame took more than 100 msec to run on my PC at the office. What can be done?

A busy town bustles. What is to be done!

A town bustling busily. What is to be done!

{ read this article }

Posted in Clockwork Empires | Tagged , , , , , ,
12 Comments

Character Events

I believe it was Rock Paper Shotgun who referred to our previous game, Dungeons of Dredmor, as “a randomly generated spinning roulette wheel of glory and death” (or something like that, anyhow.) Regardless, this is a good design philosophy and one that we can all agree upon. To this end, it is good to put some random events in games – they sparkle things up.

We also have said that one of the key driving forces in Clockwork Empires is your characters; it is very good for them to do various things, based on their personality, character traits, and moods. We want characters – and who they associate with, and who they are organized with – to start making a noticeable impact on the game beyond the incidental impact of being nearby other characters when they do something that may, or may not, affect other members of your settlement.

Dwarf Fortress handles this with Strange Moods; a Dwarf will lock themselves in a room and go insane – or, maybe, produce a strange artifact. Crusader Kings 2 handles this with various events happening, ranging from jousting tournaments to attempting to turn lead into gold.

To generalize this: we have random Character Events.

Well, the content is much more interesting, but that's not much of a choice. Now we also need to get rid of this enormous amount of wasted space.

For instance…

{ read this article }

Posted in Clockwork Empires | Tagged , , , , , , , ,
6 Comments

The Fog of War and Other Stuff

It seems like revision 35 of Clockwork Empires, Enola Brimble’s Fine Day In Which Everything Isn’t Going To Explode has been a very well-received! We’ve gotten a lot of positive feedback about it, and we appreciate it; players are appreciating fewer slowdowns, script errors, glitches, stutters, or save errors. So, clearly, we’re making progress.

Some folks are still having save game trouble, and we’re continuing to work on that as our #1 debugging priority (including the folks who don’t seem to be able to load save games at all?) – there are also some OS X speed and crash issues that we are currently debugging. However, we’re glad that people seem to be doing very much better with this latest build.

As the time until the next patch is roughly three weeks away, it looks like we will be primarily focusing the next patch on quality of life improvements – again! We’re rebalancing certain parts of the AI to try and clean up some odd behaviours with combat, social behaviours, and things not working correctly. We’re also just fixing a bunch of AI related bugs. One major quality-of-life improvement that is a new system, however, is fog-of-war, which is getting a rewrite.

Also, fog-of-war is not technically a quality-of-life system. More specifically, it improves our lives, but it makes your life moody and depressing.

There could be anything out there!

“Hello? Nothing creepy going on out there, I hope.”

{ read this article }

Posted in Clockwork Empires | Tagged , , , , , , , , ,
9 Comments

Under the Influence (of Euclidean Distance Mapping)

First off, an announcement: customarily, we release new builds of CE (major ones) at the fifteenth of the month, or as close as we can get to that. This month’s build will be pushed back until next week, owing to the fact that we lost a week and a bit of development time in December due to the Fishmas Holidays; experimental builds will, of course, continue.

That said: Technical Talk Day.

Loosely speaking, this month’s patch is focused on doing spit and polish, maintenance on existing issues, and busting some bugs rather than new gameplay features (although we’ve done a bit of that). In terms of character behavior, you may have noticed that characters occasionally do things that are counter-intuitive; we are narrowing this down as development continues (Daniel has a huge and terrifying spreadsheet). We have received a number of bug reports of the following varieties:

“people wander off into the woods and die”

And, well, that’s about it, really.

Here's a tantalizing sneak peak at the promo illustration for this month's update.

Tangentially, here’s a tantalizing sneak peak at the promo illustration for this month’s update.

The solution to this is that people should calculate when they are, or are not, in the user’s colony. We previously did this with a notion of “civilization”, which computed (for each tile) the closest distance between the tile and any civilization in range. The problem is that the way this calculation was done was a) buggy (if a building was not within some radius of the square being tested, which was quite a small radius, we wouldn’t pick it up), and b) slow (using more than one square root per grid tile, which adds up on a 512×512 map.) I finally got sick and tired of this this week, and decided to look up the right way to compute distances.

{ read this article }

Posted in Clockwork Empires | Tagged , , , , , , , , , ,
15 Comments

Shades of Tofu

[SCENE: The Gaslamp Games Offices. THE NEW OFFICES. DAVID BAUMGART, ART DIRECTOR, enters the Break Room.]

David Baumgart, Art Director, enters the break room. Programmer Art Depiction.

David Baumgart, Art Director, enters the break room. Programmer Art Depiction.

DAVID: Wizards, grain silos, Utretcht, tank simulation… ah, it is good to be a vegan! Horrible frost giants! And now, lunch.

[DAVID opens the door of the fridge. Inside is BEEF JERKY, which leaps out and attacks him.]

DAVID: Alas! I die.

[HE COLLAPSES. Enter DANIEL and NICHOLAS from the Break Room Door.]

NICHOLAS: David is being attacked by beef jerky! It must be Wednesday. Quickly, get him onto the table.

[THEY DO SO. The table collapses. OH WELL.]

DANIEL: The beef jerky is … attacking his mind, somehow. It’s corrupting his vegan essence.
DAVID: I… deny then… my essence…

[SCENE: In David’s mind, terrible flashbacks occur. The company is formed in a basement. Dredmor ships.]

NICHOLAS: Fascinating.
DANIEL: You can’t say that – we’re parodying The Next Generation, not The Original Series.
NICHOLAS: Look! He’s remembering old blog posts… in his dreams.

[DAVID PROCEEDS TO REMEMBER.]

David Baumgart proceeding to remember happy memories (in this case, a carrot.) Programmer Art Depiction.

David Baumgart proceeding to remember happy memories (in this case, a carrot.) Programmer Art Depiction.

DAVID: mumble, mumble… Scott Pilgrim ruined it for all of us… mumble…

DANIEL: Now it looks like he’s experiencing good memories.

[DAVID PROCEEDS TO REMEMBER “GOOD MEMORIES”:

Clockwork Empires’ Early Access Announcement
– That GDC trip where Stephanie got us all Hand Lotion
Six months of early access updates!
– 4,700+ repository commits
– 22 experimental builds released to the public
– coverage from just about every major PC gaming site on the planet
The Beauty of Poetry
Whatever this thing is!]

DANIEL: It’s no good. The Beef Jerky is getting to him. Maybe if we make him… remember bad memories, it will damage the virus. Jerky. Jerky virus.
NICHOLAS: We can induce bad memories with Medicinal Liniments. Remember, under no circumstances take medical advice from me!DANIEL: Aren’t all those good memories *your* blog posts?
NICHOLAS: Whatever. Here, let me stick needles into his head.

[DAVID PROCEEDS TO REMEMBER “BAD” MEMORIES”:

– Making three Clockwork Empires Trailers
– That GDC trip where Stephanie got us all Hand Lotion
– The last time we parodied Inception]

DANIEL: Hang on, let me set this machine to “Programmer Art.” There we go.

[DAVID AWAKES, SCREAMING.]

David Baumgart Awakes from a Horrible Dream. (Also, he is wearing Mittens for some reason.) Programmer Art Depiction.

David Baumgart Awakes from a Horrible Dream. (Also, he is wearing Mittens for some reason.) Programmer Art Depiction.

DAVID: What happened?
DANIEL: You’re on vacation, so we made fun of you in our year-end wrap-up blog post.
DAVID: Ah, it must be Wednesday!

NICHOLAS: That’s it for us, folks. As always, we thank you for your patronage and look forward to seeing you in 2015! Happy New Year!
DAVID: … who are you talking to again?
DANIEL: Gnomes!

[ALL LAUGH. CREDITS ROLL.]

 

 

Posted in Uncategorized | Tagged , , , , , , , , , , , , ,
3 Comments