Jump to content

IPC to Shells

Recommended Posts

So I pitched this big lore change for synthetics over here and I mentioned that there would be a few mechanical changes to make the whole deal work better.

Strictly speaking, none of these mechanical changes are necessary for the lore to work, but they are what I was thinking while I was writing the lore, and I do intend on implementing them, so I thought I’d write them out.

I mentioned three big ones, IPC’s becoming ‘Shells’, laws being attached to brains and not to bodies, and an AI access code system. After thinking about this, I think the IPC modification is the most important of the three, and gives the greater return on investment, so that’s the one I’ve written out below and is the one I intend to start working on.

IPC’s Become ‘Shells’

I’m still not entirely sold on the name, but the idea is that the mechanics for IPC's will be absorbed by something called ‘Shells’.

Shells will have identical mechanics to an IPC. The same overheating, the same mechanical bodies, with a few cosmetic changes.


  1. You will be able to pick the kind of brain that exists inside the artificial body. The choices are a posibrain (like existing IPC’s) or an MMI containing a brain from one of our sapient species (whitelisting required as appropriate).
  2. You will be able to pick whether or not your character has paint (each body part will be paintable individually), no paint (bare metal), or has synthetic skin, fur, or scales.
  3. You will be able to pick whether or not your character has a tail.
  4. You will be able to pick your head, with a variety of non-television options.
  5. If you have synthetic skin on your head, you will be able to define hair and eyes like you would an organic character


Synthetic skin will also be an option for organic characters with artificial limbs.

Shells with synthetic skin will be clearly identified in Examine as non-organics. The technology isn’t flawless yet.

Synthetic skin (and paint) will take damage as the limb takes damage. Repairing the limb will not necessarily repair the synthetic skin or paint. You’ll need a repair items from robotics to do that.

Shell bodies will be constructable on station, though they will be more expensive to build than tool-robots.

Why do this?

In addition to the rule of cool, there are a number of people already playing full replacement cyborgs with synthetic skin. This will allow those people to match the game mechanics to their fluff.

I think it will also inspire some interesting new characters, and provide a lot more visual variety for our synthetic crew members.

This will also allow IPC’s to be rebuilt when they're killed, and also let robotics to build entirely new crewmembers from posibrains, much like botany does with diona.

In addition, it will provide a viable alternative to cloning for organic crewmembers, which will offer some interesting roleplaying opportunities.

How expensive is this to implement?

Creating new IPC heads and adding the option to spawn the different kinds of brains is very easy.

Making the synthetic skin and paint work properly will be more challenging, as the code for robotic organs is very weird. Rather than being a subclass, the functionality for robotic organs contaminate regular organ code all over the place. It’s very frustrating.

Due to byond’s awkward lack of mixin classes, I expect I’ll have to tear out all the biological info for organs into a separate parallel datum called ‘tissue’, and then make generic organ objects that defer functionality to their tissue’s. That’s going to be time consuming and prone to bugs, but would ultimately allow us to easily implement new organ types. One could create crystal, nanomaterial, or energy organs easily with such a system, using a minimal amount of code.

Another advantage to this would be to allow for variable quality robotic organs, or organs with special properties.

Link to comment

Its not so much about coding as it is getting things right. The most challenging part would be to code menu by which all of this is selected. Otherwise just a swap of damage overlays and using pre-existing sprites in a recolor, not much else needed. That being said, I can provide sprites. Also, I've been working on hairstyles and IPC heads.

Link to comment
I wonder if this is related to that post I made a week ago


Totally! I credited you in the other post but not here. My apologies, this was Nik's idea.


please only have this be optional


I've tried to make it clear, but people keep thinking that the synthetic skin will be obligatory or something. That is not the case.

You will still be able to look like an IPC, you will be able to have a posibrain and you will have absolutely identical mechanics (with the possibility that taking damage will scratch your paint).

This is adding options, not taking any way. Big TV head robots guys are sticking around. Have no worries.

Link to comment
  • 2 weeks later...

Hey critsybear! It's not dead! I've got most of it finished, though the ui for customizing yourself is going to be just dreadful for the first version.

What do I mean? I mean that you can now have synthetic skin, fur, or scales for robotic limbs, or custom paint jobs. I have the ability to pick the type of brain, but it's still not spawning properly. All this was annoying to do because the icon construction code is really awkward. It's going to be slower than before because it requires more blend events but I think that will mostly affect things only at the very start of the round. I won't be able to know for sure until I can test with a full server. I think it will be ok.

I still have to make the covering objects, so you can repaint yourself, and I have to hook the coverings to damage so they can get scuffed or ripped off. Smileydemon is helping me update the icons. The tv screen icons for ipc heads included the head in them for some reason? So he's stripping that out for me, and I need to make a greyscale copy of the human/Tajaran/unathi so that the colours match better.

All told, I have another four hours or so of work left before I can reeeeally justify putting up a pull request. There's some fiddly junk with hairstyles and dismembered heads that might be irritating to make work properly. That will hopefully get finished sometime this weekend.

Glad you're still interested.

Link to comment
  • 2 weeks later...

Oooohkay. Little update to this.

I've done the sprite work for IPC's. Their 'hair styles' now do not contain their head, and are now affected by the 'hair colour' option. This means you can have an orange robot with a blue face-screen. Hurrah!

I have the paint objects working as well, so you can get repainted. That took a sizable amount of time and I still don't have proper sprites for those. I'll try to get that done tonight.

Brain surgery now gives you a proper posibrain or mmi when you do it to shells, and it works whether or not your head is attached to your body. This was fantastically irritating to make work.

The paint covering system still isn't linked to damage yet, and the preview images in the character creation window are borked all to hell when you're working on a machine character. I really want to replace that character creation window entirely because it is awful, but that's beyond the scope of this project.

One thing at a time.

So, to recap, the major things left to do are:


  1. fix the preview icon for shells and cyberlimbs (this is going to be annoying and tedious)
  2. create proper sprites for the spray can and the paint cartridges


Aside from that... I'm almost done.

Link to comment

I'd show you guys. I would. But there aren't really a lot of visuals going on here. Almost all the work I've done is back-end.

There's pretty much no way to take a picture of 'Hey! You can pull MMi's out of shells now'. Or 'the preview_icon's clothing code has been compressed from 800 lines of repetitive and confusing nonsense to 250 lines of data and eight lines of code.'

I guess I can show multicoloured shells though. I'll look at getting some pics of that later.

Also I finally tracked down the last of the preview icon bugs. It still only updates about every two modifications for some reason, but that's a problem with the way we're sending icons, not the preview code itself, and I don't have a good idea how to fix it.

Link to comment

OK! So I captured a bit of the process of painting an IPC.

Please ignore the random squares all over. Those are the crappy temporary art for the paint cartridges.

So here's my IPC roboticist character. This is what shells look like with no paint. They're the default cyborg right now, but I wouldn't mind if someone made a thin robotic endoskeleton sprite to replace it with.

You can start with paint, skin, fur, or scales at round-start, but I decided to start with bare metal to show you what it looks like.




Here's me half way painted. Paint makes you look like the traditional IPC model.




Here's me fully painted with a TV screen. Note that the screen has a different colour than the rest of the body.




I decided I would show you how the synthetic skin works too. Here's me half way covered in synth skin. A happy side benefit of the way the blending system works is that it's very tricky to exactly match human skintones with synthetic skin, even when you're trying. Most shells will end up looking like Data from Star Trek; a little flat and weird looking.




And here's me finishing off fully covered in synth skin and wearing a jumpsuit.




Taking too much damage to a bodypart will remove the coating. The amount of damage it takes to lose the coating is pretty low right now, but that can be tweaked later in play.

The coating items themselves are pretty cheap, but to make skin you'll need one level of biology research, for fur or scales you'll need two.

Cybernetic limbs on organic characters can also be painted or covered in synthetic flesh. If your groin is covered in fur or scales you'll get a tail. Your choice of hair styles will be determined by the coating type covering your head. If your head is covered in paint you get the IPC screen's.

Link to comment

Oh god, please let this be added in. I can finally dump my bullshit explanations and snowflake stuff for Katelynn if this is added. I've pretty much been playing her as this since I made her.

Edit: Also, this gives me a good reason to make an IPC application once it's implemented.

Edited by Guest
Link to comment

So I have good news and bad news.

The good news is that I am/was mostly done.

The bad news is that getting up to date with the development branch has just started hard crashing. Dream Daemon just stops working. I have no idea what's causing it. The whole thing just stops working.

Infrequently, it will spit out errors about the anomaly analyzer before crashing, but nobody's touched that junk in any recent changes, so it's just a reflection of some other problem elsewhere.

I've reached out to skull, but if he can't think of anything, I'm going to have to laboriously merge each file across one at a time, testing each one to figure out when it breaks, then grope blindly as to where the memory leak is coming from because, of course, there's no debugger for byond.

It's going to be incredibly time consuming and irritating. Fuck all the things.

With a debugger, this would take literally ten minutes. Without it, it's going to take days.

Link to comment

Fffffffffuuuuck. OK I tracked it down.

It looks like the file where I defined all the different jobs preview clothing was very close to hitting some undocumented and unrecorded limit for the number of entities defined in a single file? I'm not sure. There were two functions that I eventually tracked the problem down too, but I'm honestly not sure why they were the problem specifically. Splitting those files into smaller pieces seems to have made it work, but dang that was irritating.

Fixing memory leaks without a debugger is like trying to do surgery over the phone.

OK. So I need someone to help me test IPC construction tomorrow, as that's the only thing I can't test on my own. After I do that, I'll put up a pull request.

Link to comment
This topic is now closed to further replies.
  • Create New...