More Power!

Work continues today on the power system.

I think I've got a working set of code to emulate power needs on a ship, and I'm now in the process of filling-in some content to test it. And since seeing it makes it easier to explain, here's what I have so far:


Comes in trusty Weyland Yutani blue!

The above room is a continuation of the air pump simulation from a few days ago. To recap: an air tank (orange cylinder) is to the right of an air pump in the wall, which gathers gas from the room to its left, and pumps it into the tank. The new part are the snaking blue conduits and the battery in the lower right (below the light).

As described yesterday, ship items are going to need power, and to get it they'll request power from points specified in their data. If the thing under that request point has power, it's delivered to the requester, and it runs for one more turn. If not, the requester shuts down until it can have its power needs fulfilled again.

In the example room above, the air pump needs some kWh per "turn," something like 1 kW/h. So when the pump is ready, it checks its nearby points for power input. Assuming one of those points is the tile to the right, we find a conduit, air tank, and floor there. Since the conduit is the right type, it tries to get power from that.

The conduit, however, has no power stored, so it requests power from its nearby points. Since this conduit is an "L" shape, it tries to get power from the tile "south" of it. That, in turn, tries to get power from the conduit to the right, and so on until we reach the battery. Since the battery actually has power stored, it deducts from its charge (if any), and sends a message back up the chain about how much it gave. Assuming we have enough to fulfill the pump's request, the pump triggers another "turn's" worth of action until it makes the next request.

So far, I think this'll work. It'll allow distant power sources to supply components around the ship. It also allows power to reroute around faults in the path, in case one of the conduits is damaged. More importantly, I'm hoping this will be one of the "fun" bits of ship building: planning system layouts, power needs, redundancies, etc. Then, setting the ship loose and watching it succeed, or more likely, fail.

Spectacularly :)

One of the risks of this system is performance. Each power cycle is a series of connection requests, possibly many for complex layouts. And this could eat into performance. However, I'm hoping that by keeping the rate of requests for power limited, it won't kill performance. E.g. if each item on the ship requests power once per second, that shouldn't be too bad. And if power fails on the ship, a 1-second lag time to shut-down of connected equipment won't be unrealistic.

The other, more scary, risk is that this won't be fun. I was reading Tynan Sylvester's AMA today on reddit, and one of the things he discusses is the core of a game's design. He warned against adding complexity to compensate for lack of fun, or not identifying the fun soon enough. He explained that core game concepts should be identifiable as fun early on, and can be reached by trimming out excess fat over and over until there's one irresistible experience.

I'm not sure that I'm doing this very well. I mean, I expect to enjoy this, but it's not enjoyable right now. Heck, there's not much to do besides build. And maybe watch funny AI bugs. It's no more a game than a Lego set. An unfinished, glitchy Lego set.

Then again, I think I'm building towards an experience I already know I like. Namely, Prison Architect or Rimworld within the context of a spaceship. It'll have differences, but a lot of the fun I have in those games is coming up with a new design for a prison/colony, and testing to see how well it works in practice. That's the core experience, and it may be that it cannot exist without a certain minimum number of interacting systems.

Which I guess Tynan also admits in his StarCraft example. One can strip out a lot in SC to reach the core, but the core still has several parts. 4 unit types, AI for the units, a map with resources, and an opponent. I can probably narrow down the number of systems I have to a minimum, and add code to test it with a crew in space. Maybe that should be a "game jam" goal I set for the near future?

Worth serious thought.


Malacodor's picture

Let all energy consuming devices check for all connected energy sources and write them in a list. Whenever a device needs energy it can access the sources in its list directly. Recalculations (outside of build mode) are only necessary when a conduit is damaged.

Regarding the fun in ship building, you shouldn't worry too much. I think you're headed in the right direction.

Ran around with a clown mask before it was cool

matsy's picture

My thoughts exactly.

Asthepanda2iscool2's picture

I think that you're heading in the right direction fun-wise. One thing you should keep in mind is that there are a lot of people who like complex games. Although there's also a lot of non-creative, Lego hating people. Maybe you could counteract this by having a set amount of ready made ships that players could buy (which I doubt you haven't thought of yet). Really you just need diverse encounters so that the game doesn't get old after the first campaign/killing spree.

Rar! Rar rar rar! Thanks for reading :)

Flubberj's picture

Hey, so I want to apologize upfront for the nature of this question, but may I ask what you're doing? I've spent awhile sifting/skimming over a lot of your blog posts and I can't seem to pin down when you finished up with neo scavenger (a game I absolutely love to death and have put in a little over 130 hours on) and when you began working on this really cool looking project. I've really only seen you call it neo scavenger in space, but this looks like it's something a lot more than that. Honestly, I'm just a huge fan of your work and whenever this, or basically any other game you make in the same vein as neo scavenger, releases you most definitely have a customer in me. This seems like a great idea and I'd really like to know more.

Sorry for the ramblings, thank you for your time and absolutely phenomenal work.

I am that low life scum that hunts down a scavenger, laughs as he tries to surrender, beats him to death with my club, and eats his gummy bears before moving onto the next sucker.

Malacodor's picture

Currently it looks like "The Sims: Space". The big topics so far have been toilets, fridges and drama. Dan also hired an artist, but we haven't seen much of him, yet.

Ran around with a clown mask before it was cool

dcfedor's picture

@Malacodor, that's a good idea. It might increase memory a bit, but that's probably preferable to constantly chugging the CPU unnecessarily.

Re: fun factor, it's good to hear you guys agree it should be fun. I think there's a fair number of folks out there that just enjoy building things, so I suppose even if the game is a flop, the "toy" aspect might be worth it for them. But I'll definitely still be trying to add gameplay on top of the Lego aspect.

@Asthepanda2iscool2, pre-made ships are definitely on the to-do list. Even if players don't need them, NPCs will!

@Flubberj, fair question :) I'm hoping to have the website redesigned soon, and part of that will include a more official section for the various games and their statuses.

Malocodor's hit pretty close to the mark with his "Sims in Space" summary. The elevator pitch I've been using is "Prison Architect mixed with Firefly/Starflight." Namely, building a complex spaceship from functional parts, adding crew, and watching them and the ship fall apart as they try to make ends meet around the System. It still takes place in the NEO Scavenger universe, except this will be cut-off from Earth due to orbital debris from the collapse.

As for NEO Scavenger, work continues on the mobile port, which is also the new engine that will serve as the basis for NEO Scavenger "2."

Dan Fedor - Founder, Blue Bottle Games

ra1's picture

When there is not enough power to run all systems, it is intuitive (and somewhat realistic) to assume that items nearer the power station would stay powered, while those farther away would loose power. A registry of powered devices would have to store distance to closest power source to make this work.

dcfedor's picture

This is true, and I'll probably add something like that as things get more sophisticated. In the meantime, if they just fizzle out at random, that'll be a good stopgap solution. Kinda like Rimworld.

But yeah, there are some nifty things that can be done with the tile registry now that it's setup. Things like distance to power source, or even powering things not adjacent to main conduits (like Sim City, Rimworld, or Prison Architect do it with mini power branches).

Dan Fedor - Founder, Blue Bottle Games