Yet Another Technology Status Update

Last time I wrote a programming team update about Clockwork Empires, I made a comment that was somewhere along the lines of “the game is starting to hit that point where it transitions from a bunch of technology bits to something that looks like a game.” Well, we’re a lot closer to that goal than we were last update. Some of the edited highlights:

The Lua code, which has been a major time investment, is now starting to pay dividends. Pretty much all the old code has been moved over, and every job is now represented by a mix of XML markup and Lua scripting. Some of the XML may not be flexible enough, and may suffer from the same problems as Dredmor’s old spelldb.xml, so we’ll see what format this ultimately ends up in. Nonetheless, progress is being made: people can now harvest berries, clearcut forests, and construct their own buildings. This represents a lot of infrastructure that hasn’t directly translated to gameplay; at some point, though, somebody will start banging in gameplay using this existing infrastructure and all the assets that David and his crew have been working on, and it’ll start to feel more like an Entertainment Product.

Hunger is now in the game. Since we don’t have starting colony loadouts yet, if you don’t start harvesting food in the colony something like this happens to everybody…

… with the exception of one poet, who managed to get to a berry bush. Rather than harvesting berries, however, he was inspired by its beauty and attempted to create a magnificent work of poetry. He failed, however – and then died of starvation:

Shortly after that, we got people actually eating food. This created the usual cavalcade of bugs: people eating the same food, people eating invisible food, people eating food in somebody else’s hands and in one case inside somebody else’s body.

Biomes are in a “done-ish” state for now. You can now define distributions of in-game objects across the world, using various sorts of noise kernels and types to determine their clumping and sparsity. Here, for instance, we see somebody hanging his head in abject disgrace in a marsh terrain full of bamboo – probably due to an inability to create poetry:

Incidentally, we have poetry in the game and it is wonderful.

Here is a forest scene, again all specified procedurally by the biome generator.

Mr. Whitman, having completed the task of biome generation, is now working on Animals. We expect to have capybaras savaging the population shortly. Naturally, now that we have trees, we have the ability to cut them all down:

When a job is created, it has the option to create an “assignment.” This is hidden from the user, but the engine uses it for book-keeping. When a tree falls in the forest, if another tree is nearby, it will post itself to the first tree’s assignment; the work party responsible for tree cutting (or individual, or whatever) will then move on to the next assigned job in the assignment preferentially, which is assumed to be as useful as the original job. In this manner, we can have useful behaviours like workers repeatedly harvesting berries, clearing mines, or cutting down an entire forest. These all represent cases where you want to think of something as an individual job, but in our system it is really a system of individual jobs glued together.

People can also haul things back to stockpiles if a stockpile exists, and if the object in question requests it. Right now we are definitely using Dwarf Fortress’s model of “leave the log where it is, we have more trees to kill.”

Finally, this happened.

I swear, I was nowhere near the poet at the time.

Micah and Ryan are busy working on networking stuff, which is fairly boring and which we don’t want to talk about. I also spent a certain amount of time last week optimizing things and fixing bugs in the rendering engine, which we did using a really neat software package called Telemetry that deserves its own blog post in a couple of weeks.

Posted in Clockwork Empires | Tagged , , , , , , , , , , , , , , , , ,

27 Responses to “Yet Another Technology Status Update”

  1. Bropocalypse says:

    As it turns out, if a tree falls in the woods, it DOES make a sound; “Ooh, ooh, me next!”

    { reply }
  2. Ruigi says:

    Eating berries out of each other’s hands? I could see this happening between romantic partners or parents and children, but not acquaintances.

    { reply }
    • Hey man, it’s a progressive society! What do you have against sharing?

      { reply }
      • Daniel Kelly says:

        Ug, I hope it’s not a progressive society, I get enough of that in RL, living here in N America. Regardless, I think that the setting of the game’s society is a psuedo-Victorian era, which would be decidedly conservative: “Egads, man! Can you not see to your own berries? What affrontery!”

        { reply }
        • Ruigi says:

          Yes, I’m also hoping for a Victorian experience, including rigid class structures and colonial subjugation. Part of me feels that even stuff like women soldiers breaks the atmosphere– however, I think gender relationships is one aspect of CE that Gaslamp would want to leave open ended.

          I remember a game called “Mount and Blade” set in an imaginary Old World Medival era, where the player could play as a female soldier, and while the game did not restrict the player’s options completely, There was definitely a different flavor. The game recognized that an armed woman on horseback fighting in battles was at least unusual for the time and setting.

          { reply }
          • Lena says:

            Iunno, I don’t think discrimination and inequality are an essential thing of Victorian flavor. And it’s sorta tiring how the same groups tend to get screwed over with the ‘historical excuse’, so I’m really glad that Gaslamp decided to steer away from it.

            { reply }
        • ShadowTani says:

          Progressive? Lol, Canada maybe, but US? Oh dear.

          Anyway, I’m not going to get into politics. But I do have a point, and that is that there was a time North America was without question the most progressive place on earth, and that was back in the colony times. So no, I actually would find it odd if the colony didn’t display progressive elements – the first to go to the colonies are often people wanting to get away from the old and establish new values after all.

          { reply }
  3. Yobgod says:

    Your missive nearly, nay did, move me to tears at the realization that your team of stalwart bit-twiddlers has implemented poetry at a higher priority than sustenance. I knew those “pyramids of needs” were wrong, and they called me a fool! Hah! But we’ll show them, won’t we?

    { reply }
  4. Joshua says:

    Can we read some poetry samples?

    { reply }
  5. Wootah says:

    Eating berries out of other people? Made me laugh. Hard. How do you track this kind of stuff? It is one thing to see the people’s hunger bars (or whatever indicates their hunger) change, but i assume there is something separate from the UI to get that level of information.

    Also, No tree stumps? Is that an artistic decision or a gameplay one? Tree stumps give more of a feel of ‘leveling nature to the ground’ that a meadow in place of a forest would.

    And What is with the head on the ground? Are the body parts all programmed to be severable(real word?). There was discussion in the CE forums about how to handle health, and how different it should be from DF (damage to individual parts)…. is the headless picture any indication that a choice was made?

    { reply }
    • MOOMANiBE says:

      Re: head, nothing so complicated or fancy, alas. Actually the reason it happened is that heads and bodies are separate models to allow them to be swappable (for more customization, and all that.) Due to a bug, the head decided to play the death animation. The body… didn’t.

      { reply }
    • D3F3N357R470R says:

      In response to your question about tree trunks, each tree model will have a stump, yes.

      { reply }
  6. Gabriel says:

    That eating out of other people sounds hilarious. Just how buggy will the game be when it’s released?

    I don’t mean game-breaking buggy, but more like the hilarious Dwarf Fortress bugs; or Prison Architect, where it used to be when you loaded a save all the prisoners had an electric drill.

    Or can you maybe implement the more interesting bugs, like only cultists or insane eat food out of other people’s stomachs, or the old building exploding from giant rock spire bug is caused by an eldritch abomination.

    { reply }
  7. Alistaire says:

    So will the trees be a little more randomly generated, as in “rotation of tree = math.random(0, 360)”?

    { reply }
    • Electro says:

      By the Holy Cog, how dare you?! Are you some kind of poet? Your ancient “degrees” are an Affront to the Progress of Science!

      { reply }
  8. Kaidelong says:

    If all that the markup is going to do now is represent assets in the game, a non-SGML markup language for describing content might be appealing to people who don’t want to program.

    Also how many “things” in the game have monoid or group operatiions, I wonder? One thing about Dredmor is that to add on or remove from existing things, you generally had to modify the existing thing itself. With integers, you have + and – and can change an integer without access to the original. Group or monoid operations on in game stuff might be nice, just have a zero and an appending operation, IE to make an analogy to dredmor rather than listing effects inside the spells, have them top level and refer to what spell they are a part of. Nesting with effects inside a tag can just be treated as sugar.

    { reply }
  9. Rory Harper says:

    Are biomes dynamic? Does player/colonist destruction of the biomes (cutting trees) affect the biomes?

    Secondly, is there a chance for underbrush/ground cover biome that could build some depth to the forests

    Looks great guys

    { reply }
  10. Ray says:

    The alt-text made me laugh. Great update.

    { reply }
  11. Jay Sherby says:

    I thought I might offer a few kind suggestions from a programmer’s perspective.

    I’ve had experience with mixing XML and other languages and it usually get ugly and unmaintainable pretty fast. Have you considered using Lua for data description? It has a data description pedigree. (see here)

    Also, I like your use of FSMs for pretty much all objects. However, I think letting inanimate objects like wood perform actions (such as creating a chain of wood to harvest) is going to come back to bite you in the butt. You may already be having issues like that causing your food bugs.

    Ideally, actions performed on inanimate objects can only change the object’s state and no other objects’ states or perform any actions of their own. That way, when a person comes along to chop wood or eat food, they perform an action checking if the wood is already chopped or if the food is being held or already eaten. Then they use their algorithm to find other wood or food to use. It doesn’t make sense for the inanimate resources to perform decisions like that. Trust me that it will help you down the road when emergent behavior, well, emerges.

    Of course, that’s just one programmer’s outlook. Hope I helped and keep up the good work!

    { reply }
  12. Pingback: Clockwork Empires dev update introduces hunger, biomes | VG247

  13. Stuthulhu says:

    Yea, though the bitter tiny trees,
    Didst tease me with their berries,

    Yet still my stomach was appeased,
    When I reached inside of Harry’s.

    { reply }
  14. RK says:

    Finally, YES!!!!!!

    { reply }
  15. Atom says:

    If I may make a suggestion: Make logged trees leave stumps behind, if not forever then at least for a year or so. A clearcut forest looks so much more clearcut if you can easily see that there were once trees there. Let their sad little stumps stand as monuments to the march of progress, and all that.

    { reply }
  16. Pingback: Dev Links: A Fresh Start | The Indie Game Magazine - Indie Game Reviews, Previews, News & Downloads

Leave a Reply

Your email address will not be published. Required fields are marked *