Category Archives: Clockwork Empires

Dodos, Buildings, and the road to Alpha

Daniel suggested that I should pick out some of the juicier fixes and additions from the change log of our latest internal test build and talk about them; it’s also probably instructive to show some of the feedback. Our internal test build of Clockwork Empires is now on Revision 18. We usually do builds about once a week, but this week we had to do an Old-Timey Dredmor-Style Hotfix for Revision 18 because it introduced a bug where people kept spastically trying to pick up and put down shovels, and so now we are at Revision 18A. Some edited highlights:

  • The dodo is back in again. Yes! It now eats all your crops, but it doesn’t get stuck in a berry bush; additionally, hunting work crews will pick up any weapon that is suitable for them and will then go off and create a hideous, bloody dodo flesh massacre. This leads to enormous piles of dodo corpses lying around, including being found in houses and on the steps of upper class houses. Currently, you cannot do anything with a dodo corpse. (You now receive two Dodo Drumsticks if you butcher the corpse -David)
Dodos: The least dangerous game.

Dodos: The least dangerous game.

{ read this article }

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

May Technical Status Update: More from the Testing Front

David is on vacation this week, soaking up a little sun and visiting relatives in California before the last push out the door, so we’re working on a bunch of minor testing-motivated updates, which has mainly involved re-configuring internal stuff. Also, some UI work, which is always good.

First, we have added five new testers this week. Naturally, none of them can figure out the game! This is good, because it reveals all the hidden assumptions that you have been making, as well as the hidden assumptions that the other testers have now internalized. Then, you can fix those assumptions and get on with the next bit. Dredmor underwent a very similar process: if you go all the way back here in time, you can see early versions of the crafting system which we didn’t figure out was just totally awful until after we released the game. (There are some people, of course, who would argue that Dredmor’s crafting system is still awful, but oh well.) Getting a good game means fixing these issues.

For what it’s worth, player feedback has overwhelmingly been of the form “This is really good/promising/cool/great; here are fifty bug reports.” This is in line with our expectations, because Game Development.

Mr. Triolo has also been playing the game for the past half hour as I write this blog post in order to test some very special new animations for drinking in a chair. He has taken about seventeen screenshots of various things that are bothering him. This is also progress.

So what’s new on the code side?

{ read this article }

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

What Would You Say You Do Here?

An overview, with examples, of actual game development I’ve been doing with very few silly jokes.

Daniel has suggested that the fine readers of our humble development blog would not be so interested in the finer points of small business accounting even though it is utterly essential to our ongoing operations. Nor, he contended, would something so removed as a personal “Clockwork Empires Reading List” actually be relevant to the nitty-gritty of development as-such. Indeed, it is not always easy coming up with something to write here as many, many needs must be somehow balanced and the same goes for this.

I suspect, somehow, that a changelog direct from out SVN would not be helpful, though it contains gems (each an individual SVN commit entry) such as:

5836 – work*

5798 – fixing stew**

5796 -Making laudanum and sulphur tonic should theoretically work (when modules are fixed)***

* It was a vague day, one supposes.

Choose wisely.

Choose wisely.

** It works now. Before, stew was a valid ingredient for itself. This is in fact Realistic but also Not Useful for the purposes of game logic.

*** This is a valid sentence, as “should theoretically work” refers to both “making laudanum” and “sulphur tonic”. The description is incorrect however, in that just the making of these things should work; the Sulphur Tonic does not actually work.****

**** It was observed in a design discussion that the Sulphur Tonic should not actually work, just that it should cause people to think that it worked. This is a valid game mechanic in Clockwork Empires. I recall also Daniel wrestling with the problem of making people not go mad when they consume human flesh if they don’t know it’s human flesh when they eat it.

See the things we have to deal with?

{ read this article }

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

The Meat Tree & Fitting Pipes Together

I’ve been volunteered to write a development post, so here I stand begrudgingly, not unlike bauxite which eternally begrudges its treasure: sweet aluminum that bright and tawdry metal it is. And me? I bear only concept art for the Meat Tree as a sort of consolation for a lack of thematic unity herein. But wait- there are unifying elements to what I’ve been doing the past week that aren’t immediately apparent from “implementing and improving a ton of random tiny things to make a better overall game experience” and “going slowly, thoroughly mad”. We’ll get to it. First, that meat tree:

Why does the vegan draw so much meat?

Why does the vegan draw so much meat?

How does it grow? I’m not saying. What do you get if you cut it down? Meat, obviously.


 

Now that I’ve reeled you in on a highway littered with the sodden giblets of the Meat Tree’s broken promise, let’s make this post, as threatened, about the importance of animation timing or, more properly, all the complex moving parts that revolve around them. And if fit together just right they form something very much greater than the whole. Like Voltron.

Take the case of a soldier firing a musket at a menacing fishperson. (A shudder courses through my coffee-withered body; Komodo Edit flashes searing white light etched in courier new a record of torment.)

A soldier is a “citizen”* type gameobject. A fishperson is a “fishperson” type gameobject. Each will, if not otherwise occupied, query a global blackboard of jobs to find something appropriate to do based on a variety of conditions, then carry that job out. If hostilities exist between human and fishperson then one attacking each other is a valid job that each will attempt carry out (though only a citizen tagged “military” is allowed to execute attacks at this point). With the attack job acquired, a soldier will rush to grab a firearm if they’re not already carrying one, then will move until they’re in range of a target fishperson and open fire.

It's good to have a sergeant to watch your back.

It’s good to have a sergeant that watches your back – Fishpeople are everywhere!

(* Every time the word “citizen” is mentioned I will put forward my argument that the people of the Clockwork Empires are more properly labeled subjects because, if we are being Historically Accurate about this (and we are), that although the topic concerns citizenship, British subjects became allowed to be referred to as  “Commonwealth citizens” only with the passage of the British Nationality Act of 1948. So by Jove, all this “citizen” talk sounds like the work of La République Mécanique agitators seeking to undermine the monarchy or, worse, Communist infiltrators carrying out the diktats of their Novyrusian masters!)

Let’s break down how the moment of firing works.

Every “job” a character can carry out is broken down into FSMs – finite state machines – which execute a series of operations in a given order. If you get shot while, say, attempting to chug a bottle of whisky, your job’s FSM sequence can execute an “abort” call which could (say) cause the bottle of whisky to be dropped. Here’s the FSM sequence for shooting a fishperson (or other malevolent eldritch entity):

  1. <attack_ranged input=”entity” name=”run”/>

Yeah, that’s it. The attack_ranged FSM probably holds more logic than it needs inside of itself, everything for moving into range of a target, repositioning oneself if the target moves, and finally entering the firing sequence if both the subject and target are in the range that the firearm being held by the subject says it has.

Phew. Let’s look at the firing animation:

Don't be alarmed by what appears to happen to the soldier running to the left -- this is from the same video the above shot was captured from!

Don’t be alarmed by what appears to happen to the soldier running to the left with the splash of blood and all– this is from the same video the above shot was captured from, so that’s totally fish blood spraying all over.

The particles (by Mr. Triolo) and a lovely sound effect (by Mr. Steele) are attached to the appropriate frames of the animation (by Mr. Triolo) running on the NCO model (by Mr. Nejat). With all of that work done and packaged by all those guys, back on the scripting side of things we just have to concern ourselves with running the animation and triggering scripts at appropriate points. The sequence is essentially this:

  1. Load & execute pistol firing animation on to character
  2. Wait X gameticks until the point in the animation where the pistol has appeared to fire, then send the target a “damageMessage”.
  3. When firing animation length in gameticks is hit, load & execute the default do-nothing animation and find a new “job”=

Anyhow, the next character job is probably going to be “shoot the fishperson” again unless the soldier’s morale breaks or they’re set on fire or something, so the system works pretty well. The timing and functioning at stage 2 is the tricky part – sending information to objects being interacted with. Aesthetically the value of X here is interesting because if it’s off by just a little, the entire interaction of each animated character, sound effects, and particles will intuitively feel wrong. So let’s get it right.

So that’s great and the timing is visceral and lovely, but how about that “damageMessage”? This is a collection of information that the FSM pulls from the character’s item about what type and amount of damage it does which is sent over to the receiver of the damage to decide how they’re going to take it. A Steam Knight for instance will shrug off most damage types and simply play a metallic “ping” sound. A fishperson, however, is soft and fleshy and will shoot out blood (triggered via a script command) and take injuries (via decrementing hitpoint integers and possibly adding special afflictions).

At that point, you say, shouldn’t we play a “get hurt” animation? Why yes! But this is where it gets more complex: We’re in a position where one game object is pushing animations, usually covered by the “job” system, onto another game object. What if the target of attack is in the middle of walking between tiles? What if they’re having a conversation? Everyone needs to know how to abort properly, what to do next, and figure out at what point they’re allowed to query their status to figure out what job they should be doing next. I’ve been considering the idea of animation interrupts detached from the job/FSM system, but anything inspired by one of the more confusing Magic: The Gathering mechanics is probably not a good idea. Maybe I’ll pass this to Nicholas to figure out. [Note: We know how to solve this and just had a big talk which ending up with all the partners agreeing that this was relevant to the discussion.]

I've got an icon for this.

I’ve got an icon for this.

(Related: we have a “Run Because I Am On Fire” job which becomes unbearably important to execute if you have the “on_fire” tag, but I talked about that already.)

In conclusion, there are lots of little pieces of art and code that need to fit very cleanly together to allow systems (ie. a character) and their meta-systems (ie. a workcrew), and their meta-meta-systems (ie. a colony) to execute in a technically smooth and aesthetically pleasing manner. They also need to interrupt each other in similarly pleasing manners when things go terribly wrong in your colony and characters rather impolitely interrupt one another.

This is where, as I’ll always insist, it gets complex.

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

Polish!

I haven’t written a blog post in a bit; much of the glamorous work of Adding Exciting Stuff to the game has now fallen to Mr. Baumgart and his motley crew, while the programming department scuttles about behind the scenes doing things which are less obvious to the general public. Most of what I’ve done in the past few weeks has been a series of very small polish-y things. They’re interesting, and every time something goes in it makes the game better, but it doesn’t necessarily lend itself well to a glamorous blog post.

People doing good, solid, boring work. Yup. Keep on working, people. Good job.

People doing good, solid, honest work. Yup. Keep on working, people. Good job.

A few examples of polish-y things:

{ read this article }

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

The Mad, Mad, Mad Vortex of Game Development

Alright, real talk. Today’s post is inspired by a question asked in the forums, paraphrased:

“With early access titles you find a lot of people complaining that features are being added while bugs aren’t being addressed and I’d love to see what Gaslamp Games could say about this.”

This question makes me reflect back on myself 15 years ago, when I was an enthusiastic fan of games eagerly watching their development from the outside, being frustrated by waiting for patches, and, I’ll admit, not being very understanding at all about bugs and venting anger at developers. Now I’m here on the other side and I can see why things happen the way they do, I recall specifically saying, after launching Dungeons of Dredmor, “I understand now why things end up the way they do”.

Vaguely related example: Yesterday I argued myself into conceding that the most important thing I could do was another mockup for the character info UI widget.

Vaguely related example: Yesterday I argued myself into conceding that the most important thing I could do was another mockup for the character info UI widget.

(I was originally going to use the framing conceit of Dominions 4 game mechanics to explain the functioning of a small game studio, but Daniel helped me see that this will not necessarily make the process easier. And that Dominions 4’s game mechanics being comparable in complexity to running a small game studio says more about Dominions 4 than it does explain anything useful to gamers. So let’s not do that. Also rejected the “Eastern Front of World War 2” analogy as potentially a bit grim. Moving right along.)

Game development is a problem of satisfying a bunch of competing interests while trying to align a bunch of contingent sub-projects. Let me dig into an example loosely inspired by reality.

{ read this article }

Posted in Clockwork Empires, Gaslamp | Tagged , , , , , , , , , , , , , ,
28 Comments

A Scheduling Change

We have spent an intense few weeks considering our plans for the next few months, and as a result, we’ve decided to push back early access of Clockwork Empires to the summer. It’s a short delay from our original release window for early access, but a delay nonetheless.

Almost everyone who has played the current version of Clockwork Empires can see the promise of what we want the game to be when it’s done. The message that we keep hearing is “don’t force this game out the door until it’s ready, because it will be really special when it is”, and we want it to be there when you play it.  In the spirit of transparency, starting early access this spring would not allow us to give you that – close, but not quite hitting the mark yet.

In the meantime, recruitment of pre-alpha testers continues apace. We’re sorting out some compatibility issues with graphics cards, spending time figuring out which UI decisions are correct and which need work, and generally putting in more content to flesh out the game.

So that’s our game development blog post for today. We realize this may come as a disappointment to some of you, but we only get one shot at this and we want to do it right.

I'm not even going to attempt to caption this one. Readers, over to you!

You’ve got to bake the bread the right amount even if there’s a man wearing a fez passed out in your doorway and another standing in the field, staring and angry. Because that bread is worth it and it’s going to be delicious. Unless you have Celiac Disease, in which case we’ve probably got a teff or quinoa based bread that’ll work just as well.

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

How To Set People On Fire

Or another day of learning how to do Lua scripting with artists. (It’s easier than you think.)

It's simple, really.

Just click the button. You monster.

I’ve been excited about the possibilities for our scripting system to handle fire and fire propagation for some time and finally made the chance to start working on it this last week while I was delving into some combat scripting (and that with regard to making The Troubles With Fish People more aesthetically pleasing).

{ read this article }

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