Author Archives: Nicholas

The Prestige (Menu)

Every great blog post consists of three parts.

Whenever Nicholas talks just imagine Lord Palmerstoke.

Whenever Nicholas talks just imagine Lord Palmerstoke.

The first part is called “the pledge.” The blog author, working on behalf of the programming department, asks you to see a perfectly ordinary game. It has some quirks; it has some issues. Some of these issues are things that we are cleaning up this month as part of ongoing patch-work. In particular, I have spent most of this week so far adding the ability for buildings and modules to be removed and destroyed, and for zones to be removed and destroyed. (As part of this, farms are going to have a set up menu similar to those for buildings.)

The second part is called “the turn.” In this part of the blogpost, we mention that we finally figured out what’s going on with the Mac build and why it was throwing Lua errors all the time. This has been fixed, and will be pushed to the experimental build for further testing, once the next experimental revision goes up. We will also quickly note that Linux support is coming along as well – we are now mainly waiting on the additional work to get it building over here and not just on Ryan’s machine, but I think we now have all the pieces. Again, we’re sorry this is taking so long, for those of you on alternate operating systems.

The third part of the blog post is called the Prestige Menu.

{ read this article }

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

A Crash Course in Moving A Legacy OpenGL Codebase to Core OpenGL 3.2

I’m actually absconding from the usual subject of these blogposts this week to do technical writing which people might find useful – mainly because a lot of the information on this seems to be scattered all over the Internet. One of the issues with our Mac port of Clockwork Empires which has prevented it from launching when we wanted to is that we discovered – a bit late in our schedule – that we couldn’t fix all of the shader issues on OS X without porting the entire game from what we were using (OpenGL’s “compatibility” mode plus a ton of extensions, dating back to when this codebase was started ages and ages ago) to what is called OpenGL Core 3.2, which is part of the OpenGL Architectural Review Board’s attempt to remove all of the “cruft” that had accumulated in their codebase throughout the years. In the process of doing this, they removed a lot of the nice stuff about OpenGL that makes it a good teaching tool, which is sort of annoying; you can’t just throw together a program any more and get stuff up on the screen, not without doing large quantities of work. Oh well.

On OS X Mavericks, you can only get access to OpenGL features newer than version 2.1 if you create a core OpenGL context; they aren’t even accessible as extensions, which is just flat out weird. OS X’s OpenGL implementation has been charitably described as “a mess” by everybody involved for some time, as the issue seems to be that all the driver engineering teams at Apple are now cranking out OpenGL implementations for your iPhone (and these are quite good), while neglecting the desktop platform. The situation used to be *worse* before Mavericks, if you can believe it. The net result of this is that I had to take a legacy codebase, with numerous pecadilloes, and port it to what is almost, but not quite, a new graphics API.

Your Monday Morning rendering artifacts. (Sign up for our newsletter to see more broken stuff.)

Your Monday Morning rendering artifacts. (Sign up for our newsletter to see more broken stuff.)

Ugh.

{ read this article }

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

Afflictions, Jobs, Religion

I took a vacation last week. It was really, really weird. So here is a list of things we are working on this week around the office:

(This is what happens when Nicholas takes a vacation.)

This is what happens when Nicholas takes a vacation.

This is not part of the list, but it's cool.

This is not part of the list, but isn’t it cool?

Afflictions. Previously, we have a notion of “you get shot a bunch, you die.” This does not really convey the interesting damage model we were after. At the same time, we do not wish to start modelling individual colonist teeth like certain other games we know. The solution is afflictions, which I suspect has been inspired by our in-office game of Dominions 4. As units are damaged, they may receive afflictions. These afflictions may affect characters by giving them (currently) an equivalent to negative traits.

How do we fix these? Well, for now you don’t have a Physician or Doctor, so the local barber is what you’ve got. Or not so much what you’ve got, but, rather, the first stage of The Plan.

{ read this article }

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

It’s the Economy, Stupid (And Also The Building Creator)

My current push on Clockwork Empires right now – in addition to the usual horde of performance fixes, crash fixes, and save game fixes (in fact, save games are currently the purview of Mr. Micah J Best who is sorting through a list of long-standing issues as we speak!) – centers around two things:

  1. Creating player motivation to develop their settlement’s economy. You can produce things, but there is often not much reason for you to do so (unless those things are the precious life-giving foodstuffs which stand between Civilization and Cannibalism).
  2. Improving the process of placing modules. In particular:
  • In the most recent build, you cannot add modules to a building after the building is constructed, nor can you remove modules after a building is constructed to make room for new modules;
  • If you want to place a bunch of beds, you have to click on the bed icon, then click on the blueprint, then click on the bed icon again, then click on the blueprint again, and it’s all quite a lot of bother;
  • If you want to make five Middle Class Houses, and put beds, chairs and tables in each of them, you can’t put down three house blueprints, then all of the beds, then all of the chairs, then all of the tables;
  • Decor (as a category of objects you can place in buildings) is kind of buried so our colonists are deprived of lovely photographs, lanterns, and all the other junk used to decorate buildings.

As it happens, these two problems are interrelated, and this is what I am working on this week.

One of these things is not like the others.

One of these things is not like the others.

{ read this article }

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

Instancing, AZDO, and Performance Optimization

WARNING: This is a technical graphics rendering post! If you are not interested in the nitty gritty of OpenGL performance optimization and what I did this week, then what you should know is “Hey, we’re making the game faster!” and “Well, you should probably update your drivers if you haven’t done so already.” The fact of the matter is that this is a blog post that will be most interesting to people with an interest in graphics programming, but this is a game development blog after all, and this is game development!

(We’ve left a whacky animated gif at the bottom of this post as a reward for making it all the way through. No cheating! -ed.)

In unrelated news, you shouldn't let cultists run your farm.

In unrelated news, you shouldn’t let cultists run your farm.

One of the things that has been talked about recently in the graphics programming community is the problem of driver overhead. Every time a graphics programmer makes a drawing call to the video card, the driver sits in between your game and the video card and looks at everything the game sends it. It checks to make sure you didn’t feed it garbage and that everything is valid, so that you don’t end up crashing the computer in a fiery blaze of glory or a blue screen of death. These validations add up and take time – every time you switch states, every time you change textures, and every time you draw something, the little man in the driver needs to go through and sort it out. This takes time, and slows the game down.

{ read this article }

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

Clockwork Empires 30B released: Saves, Unicode.

We’ve pushed version 30B to the public branch today, which will contain saves as well as support on Windows for user names with Unicode characters. If you have the update, you should see “Version 30B” on your screen in white text in the upper right hand corner. You shouldn’t need to do anything else.

Whoever controls the stew controls the colony.

Whoever controls the stew controls the colony. Here, the Law of Stew reigns merciless.

Saves are still a work in progress, and there are a handful of bugs we’re fixing, so keep a sharp eye out. If your save fails to load the first time, try it again (we’re not sure what causes that quite yet but we have Top Men on it). If you get a random crash related to saving or loading, please let us know on the forums and send us a .DMP file.

Further work on saves will be put into the experimental branch for testing purposes. You may also find other Exciting Work for Clockwork Empires version 31 (which we will elaborate on in a future blog post.)

Thanks for your patience everyone!

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

Early Access Update Schedule (& An Extra Special Update)

EDIT: A quick note to the above – we are still testing save games this weekend, with an eye to getting the last few bugs out. If you would like to try them, please switch your Steam build to the experimental branch – the version number should be “30B” – and let us know how it goes. We’ll let you know when the official release goes out here, and via e-mail if you are on our mailing lists. Sorry for the delay – hunting mysterious crash bugs and fixing things is time consuming business. — Nicholas

I think it’s always a miracle when a video game actually gets released, in any form. It’s also a very weird feeling having three years of work launched, for a product that is not complete yet – but there it is, we are in Early Access. The trick now, of course, is to get Clockwork Empires out of Early Access – and that is what we will be focusing on next.

Common scenes from players' Early Access experience.

Common pastoral scenes from players’ Early Access experience.

With regards to Earliest Access: it very much appears to have been the right decision. We launched on Steam in a pretty good state and ended up with only a few issues that we were unaware of. We have seen some excellent streams of Clockwork Empires appearing on Twitch and people have put up some wonderful YouTube videos that invariably end with everybody being eaten. It is also nice to do an early access launch for the simple fact that it had none of the Sheer Terror! that accompanied the launch of Dungeons of Dredmor, or any of our expansion packs. I would highly recommend Earliest Access as a thing for people considering Early Access to do: in terms of our primary goal of having the smoothest launch possible into Early Access, it seems to have worked perfectly. Many of the improvements we put in the game between Earliest Access and Early Access are a result of the diligent feedback of players and their willingness to criticize/talk about their experiences. As always, we thank you for your support.

Similarly we’re now seeing some excellent suggestions through Early Access on our Steam forums, which we are currently working our way through.

With that said, how do we get OUT of Early Access? The plan going forward is as follows.

{ read this article }

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

Indie Game Development Rock

Jira_ticketWoof! You sure have to do a lot of programming to get a game into Early Access on Steam, on August 15th, for $29.99. (Hint, hint.) But I wonder what this sad little JIRA ticket is…?

I’m just a change, yes, I’m only a change,
And I’m sitting here at Gaslamp Games,
Well, it’s a long, long journey, to get onto Steam,
It’s a long long wait, but a change can have dreams,
But I hope someday I’ll be a patch,
Or else we’ll have to write this code from scratch!

Gee, change! You certainly have a lot of patience and courage!

Well, I got this far. When I started, I wasn’t even an idea! Some folks playing the Earliest Access build decided that they wanted a new feature, so they bugged the developers on the forums until the developers said “Yup, that’s probably something we should fix,” then they wrote me a JIRA ticket and I languished in another pile of JIRA tickets until somebody got around to it. And I became a change, and I’ll stay a change until they decide to push me out in a patch.

{ read this article }

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