Thursday, June 18, 2015

Heights of Engineering and the Soft Constraint

I've been thinking about the curve on construction games.

In nearly every construction game, there is a wall and a plateau, and they aren't very far apart. That is, it's hard to learn how to build, and once you've learned how to build, there's relatively little engineering skill to learn past that.

In Space Engineers this is particularly pronounced. You need to learn that you need to arrange all your thrusters, need gyros, need reactors, need assemblers, etc. That's the wall: you need to learn all the hard constraints before you can make anything that comes even close to working. You can pilot included ships, but that doesn't help you learn how to make them!

Once you've got the basic hard requirements down, there's nothing to push against. You can do small topological and mass optimizations, but there's not much reach. Really, the only place to explore is aesthetics, and few players will feel strongly enough about it to want to spend real time on it.

(You can do a lot of stuff with moving parts, but those aren't part of the core ship design loop.)

Both of these problems can be solved by adding one simple thing to our construction game: soft constraints.

Hard constraints are when something won't work unless X is met. For example, reactors don't work without uranium, engines don't fire without fuel.

Soft constraints, conversely, are about conditions that gently change how the systems work. For example, an engine will burn all the fuel you pass to it, so you can change how much thrust an engine produces by passing it different amounts of fuel. Maybe the efficiency is best at a particular rate, but it'll work with a trickle or torrent.

Perhaps your space jump system requires 100 gigawatt-hours of electricity to fire. But you don't have to pipe that in all at once: the system can absorb smaller amounts of energy until it reaches its requirement.

On the introduction side, this lets you start new players off in a battered, badly-designed ship. Rather than trying to build a new ship from scratch, players can spend their first few hours repairing and upgrading, allowing them to learn how a ship works before trying to build one. This is a good solution because they don't have to be perfect: the player doesn't have to understand how to make things work in order to repair things. He'll repair things in order to understand how to make things work.

On the advanced skills side, players now have a lot more options on how they want to engineer their ships.

Do you shut down all other systems to get that fast charge on your jump drive? Do you put in additional heavy reactors, slowing your ship down in realspace for the advantage of a faster jump time?

Do you use thin fuel pipes, which are easy to work with but can't pump much fuel to your engines... or do you use the thick, annoying fuel pipes to supply your thrusters with overdrive capacity?

Multiply these questions times a thousand. Every system has soft tradeoffs. It works better if you do this or that better, but that requires other resources or space and so on.

Engineering is all about balancing tradeoffs and finding opportunities in constraints. Soft constraints are better for this than hard constraints. They let us do a lot more engineering, a lot more flexibly!

Just off the top of my head, those system optimizations can involve topological configuration (larger pipes), mass considerations (more reactors), temporal considerations (long boot times), intermittent optimizations (changing how things are laid out/enabled over time depending on requirements), and more.

Put in some soft constraints today!

No comments: