Category Archives: production line

…So I ended up concluding that rolling those two bits of GUI together was not unanimously a good idea, but I think changing the car design one so those horizontal tabs became left hand side list items is a bit of a no-brainer so I did that:

I’m currently working on supporting toggling slot upgrades to be on or off, to allow more player control. I’m in a bit of a ‘usability’ mode where I’m making the game easier to use, and more welcoming, because its easy to get caught up into an Early-Access vortex where all you think about is expanding the game for people who already know how to play it.

However, that doesn’t mean that I am *not* planning a lot of expansion. I have some more music on order (yay!) and am getting all those untranslated strings sorted so that its a smooth translated experience in French, German and Spanish. I’ve also got some more artwork coming probably in the new year, for stuff like making your own air bags, some new machinery to make slots more distinctive, new animations, and some components like chrome and wood to make plush luxury interiors (plus cabin lighting!).

Basically Production line seems to be going quite well, which is just as well as I have lots of other stuff making demands on my time, mostly Shadowhand and Democracy 3 unicode. We have some teething problems with the windows build of Democracy 3 unicode, in that some fonts are not displaying right. We are aware of this and desperately trying to fix it ASAP, although the earlier build is now available as a steam beta option. We already have some thumbs up reviews in Chinese, which I take as a good sign, and hope to have an official press-release about Chinese Democracy soon :D

Shadowhand has been announced to the world recently, and will ship on the 7th December on Steam, GoG and the Humble store (oops…must set that up…) We have been promoting the game a bit on youtube, reddit and facebook, and our wishlists are thundering higher and higher. The more I play the game, and read peoples comments on it, the more confident I am that its going to do well. If you are wondering what I’m on about, you should go check out the game from the link below…

There are no comments yet

My car factory game currently has two separate dialog boxes launched by these two icons on the top interface strip in the game world:

The one on the left is the ‘car showroom’ dialog and it looks like this:

…and the one on the right is the car design dialog and it looks like this:

I have some design issues with the way this works, in terms of it being a nice logical and intuitive user-interface. Firstly, those two icons are not really distinctive enough to show that one means ‘the car market as it currently is, plus your showroom’ while the other means ‘design of your cars’. Secondly its not immediately clear why they are separate dialog boxes at all. There is some justification for having 3 buttons and 3 windows (market, showroom and designs) or a single one with 3 tabs called ‘cars’, but very little justification for the current layout. In addition, the car designs window is currently different dimensions to the showroom, which feels weird when switching between the two, and to further complicate the issue, clicking a design in the showroom dialog launches the car design window to show that model…

My gut instinct is that this is just poor design, resulting not surprisingly from the design evolving during the games development. Initially the showroom was a single window, then it got the market added as a new tab, and the overall design of this stuff has not been revisited with fresh eyes since it got added.

The problem with just changing it, is that existing players of the game are going to initially wonder what happened. I can put a note in the change-list, and mention it in my next blog video, maybe even have a first-run popup, but there is always the possibility that some players may prefer it the way it was. Of course the game is still in Early Access, so really players should be expecting that the design would evolve, and I think the majority would welcome the change, but its still something I hesitate to do without canvassing some players opinions.

For existing (or for that matter new or potential…) players, what do you think about changing this?  Would a single window (and thus button) make more sense?


Unlike a game its often compared to (factorio), Production Line has intelligent routing. In factorio, things on conveyor belts go in the direction you send them without thought as to if thats the right way. In Production Line, every object has intelligence, and will pick the best route from its current location to its desired location, which allows for some really cool layouts. It is also a performance nightmare.

Obviously every time the game creates a new axle, wheel, airbag or other component, we dont want to calculate a new route along all the overhead conveyors. Thats madness, so we cache a whole bunch of routes. Also, when we decide which resource importer should be assigned with (for example) airbags, we dont want to do a comparison of routes over every possible combination, so we also cache the location of the nearest 2 import bays. Once we have worked out the nearest 2 bays, we never EVER have to recalculate them unless a bay is added, deleted, or a piece of the conveyor network is added or deleted. So thats cool.

The problem is, this happens ALL THE TIME, and its a big part of gameplay. If we have, for example 100 production line slots, and 20 import bays, then we need those 100 slots to check 20 routes each, every time we change anything related to the resource network. Thats 2,000 route calculations per change. if the player is slapping down one every 3 seconds, then thats 600 routes per second, so ten routes a frame, which isn’t *that bad*.

If the map is bigger and we have 200 slots and 40 bays, then suddenly its 40 routes per frame that need calculating. Very quickly you end up with profiling data (multithreaded) like this:

There are multiple solutions that occur to me. One of them is to spread out the re-calculation over more frames, which means that the import location could be sub-optimal for a second or two longer (hardly a catastrophe). Another would be to do some clever code that works out partial routes and re-uses them as well. (If my neighbour is 1 tile away and his routes are optimal, and I have only one possible path from me to him…calculating new routes entirely is madness).

In any case, I have some actual proper bugs relating to routes *not* being calculated, which is obviously the priority, but I need to improve on this system, as it is by far the biggest cause of performance issues. FWIW, it only happens on really super-full large maps, and custom maps, but its still annoying… Eventually I’ll find a really easy fix and feel like an idiot.

Meanwhile Production Line was updated to build 1.38, with loads of cool improvements. Hope you like it.