Agents Discussion


On the subject of agents I think we’re all keen to move away from the little X’s however I don’t think it’s obvious how to move forward so I wanted to open a discussion about it.

We talked about just turning oxytoxy into a compound cloud but that has a couple of problems.

If you are vulnerable to your own oxytoxy that could make things quite complicated. For example we will have to write a pathfinder for the ai so it doesn’t kill itself too much. Will it be annoying for the player to have to swim around your own clouds?

If you are not vulnerable to your own oxytoxy then how do we display that? Does each species have a different coloured cloud? If so this will make the screen a crazy rainbow mess. Can we communicate “these are all oxytoxy but from different species” using only colours?

Moreover where are we going with the agents system in general? I can kind of see three ways forward:

  1. We work on some individual agents now (like slime / oxytoxy / signals etc) but then switch to a lock and key method later.

  2. We go straight from X’s to a lock and key method.

  3. We don’t do a lock and key method, keep things simple, and just do individual agents with single effects for the whole stage.

So what does everyone think about this? Where would you like to go in the long run? Do you have any ideas for oxytoxy, and other agents, affecting your own cell?

0.4.0 Gameplay Features

I mentioned on slack a while ago regarding the immunity of a species to its own toxins. There are very few (if any) examples of creatures in nature who are not immune to their own venoms. Not being immune would essentially be an evolutionary dead-end. With that in mind I am very much in favor of the lock and key method. This means species with sufficiently similar toxins would be essentially immune to one another’s attacks. However, the question is how do we illustrate the “closeness” of various toxins? I don’t think that different colored clouds is a good option because those are already used for compounds. Perhaps a good solution for representing toxins that allows the player some means of deciding if their own toxin is sufficiently similar for it to not pose an imminent threat is to simply render all toxins as the same color but to illustrate the difference between your own toxin and the other toxin via their intensity. If you have no toxins then they all appear a very menacing deeply saturated red (or purple or whatever). If you develop a toxin then you see your own cloud as a much less saturated version of the same color indicating that it will not harm you.


I suppose that I should add that the way i was picturing this was with agents essentially just doing straight damage to other cells. I think this should be relatively easy to implement in a lock & key fashion and we can always expand on it later. Naturally I’d eventually like to have agents that target specific organelle and species who can resist things without having stores of the agent themselves. But, for ease of implementation, I was thinking that cells w/o a toxin vacuole (since that’s what’s currently in the game) have a variable toxin_type = [0, 0, 0, 0, 0, 0] once the player cell acquires a toxin vacuole its toxin_type changes to be something like [1/sqrt(6), 0, 2/sqrt(6), 0, 0, 1/sqrt(6)] (note that the magnitude is 1). Suppose it attacks 2 different cells with its toxin. Enemy 1 has toxin_type = [1,0,0,0,0,0] and enemy 2 has toxin_type = [0,0,1,0,0,0]. The damage dealt to these enemies would be the magnitude of the difference between the cell’s toxin_type and the enemy’s divided by sqrt(2) times the base_damage.
In the example given above the player cell will deal approx 76% of the base_damage to enemy 1 and 42% to enemy 2.

What do other people think? Should I make a quick mock-up code for this sort of thing? Does anybody have a better idea for something we can implement easily and refine as we go?


Firstly I think the saturation of colour idea is nice, it’s very elegant.

Do you think it would work for all aggressive agents? For example rich, saturated red could mean “this agent will effect you a lot” and dull, washed out red could mean “this agent won’t effect you much” without giving away what the agent does? Presumably as a player you only need to know to avoid it, you don’t need to know upfront what it will do to you.

Secondly re locks and keys I wonder if from the players perspective it’s quite hard to operate. Like choosing a bit string is quite a lot like building proteins but it’s quite hard to think in 6 dimensions.

What if each lock and each key was a 2d vector and, as you suggest, the intensity of the effect could be proportional to the distance between them. That way we can plot them all on a 2d graph and the player can easily see where to place their key for maximum effect.

Here’s an image where the blue x’s are the lock coords and the red x is the key coords. Is this rather simpler to understand? Like is it more obvious which species the red key will effect?


That is definitely easier to display graphically to the player but allows less diversity in toxins.

I’m not sure which property is more important.


I think it comes down to how exactly we want to allow the player to edit their toxin. If they’ve got 2 knobs to play with for the 2D toxins then it’s very easy to understand how that would work. I’m personally in favor of a higher dimensionality because that opens the door for us to have each dimension actually have specific meaning in the future. Perhaps the first element targets the cell’s membrane, the second element causes the vacuoles to drain, etc. Either way once we have a basic system in the game it’s a fairly simple matter to change the dimensionality and we can start with an intermediate value (say 3 or 4) and see if people have a hard time understanding it.


I think a prototype of the “pick your agent screen” might really help.

Imagine I have just added an agent gland and it’s asking me to enter the code / key for that agent.

Assume for now that the only thing the agent does is damage, proportional to how well its key fits the lock.

How do I make this decision? What am I looking at? How are the possible keys displayed (graph? list? chart of some kind?)? What info do I have on other cells locks (can I see all cells locks or some part of their locks or do I have no info)? etc.

I think it’s got to be reasonably simple because the player might have several agents and they might adjust their codes quite a lot so it can’t be hugely complex.

If you fancy thinking about it having something to play with would be awesome. Just to kind of have the experience and see if it’s a cool choice.


I might get around to that sometime this weekend. Having an editor window to adjust the properties of a specific organelle is worth doing though because we can use the same template if we want players to be able to specialize other things as well.

Edit: Pushed a basic prototype for 3D toxins. since we force magnitude to equal 1 it’s easily represented in 2D space.


I was thinking a bit more about this.

Having agents be a protein the player designs is a cool feature. I think microbes predominantly communicate and interact with the world via proteins so if we can model that then it could be a powerful, realistic feature.

I wondered if, as a player, if what you would really want is to be able to specify what the agent does and not what it’s code is. So I might want to say “this cell is too fast to catch, give me an agent that powers down it’s flagella” rather than saying “I want an agent with code 01001010, let me know what that does”.

So here’s a diagram for a possible menu system where you select which agent to program, which cell it will primarily effect and which organelle it would primarily effect and then the game tells you what the code of that protein would be and what other effects it would have. I feel like that’s reasonably straightforward to operate, but it does mean you can’t make an agent that’s 50% targeted to one organelle and 50% to another. Can you imagine using it? Does it make sense?

The lock on the left would let you spend MP to reset your locks on your organelles to reduce the effectiveness of other cells agents.

What do you think about “alien base pairs”? So instead of “ACGT” we could pick 2,4 or 6 random letters to be that planets basecode and then display the agents to the player in that code. Whatever is happening under the hood (like bit strings / code distances etc) may not be of much interest to the player and we could hash it in to an alien dna string.


I like the idea of having players decide what they want things to do and then the game doing all of the rest behind the scenes. However, there are likely to eventually be hundreds or even thousands of species so I think that the agents shouldn’t target “Species 1 mitochondria” but instead it should target mitochondria in general. Using a 6 digit string for instance we can say mitochondria damaging is the first element. If a cell has agent [1,0,0,0,0,0] then they specialize entirely in shutting down the mitochondria and trying to paralyze their prey by preventing ATP production so that they can then approach and kill it via engulfment or a straw. However, being so specialized, all a cell needs to defend against such a thing is some [1,0,0,0,0,0] proteins of their own. On the other hand say a cell wants an extremely general agent that has many effects but doesn’t do any of them particularly well. Their code would be [1,1,1,1,1,1]/sqrt(6) and this would be effective at damaging any specialist (against the first cell I mentioned only 1/6 could be resisted) or undefended cell while having the added benefit of providing the cell with a general antitoxin to defend against anything thrown at it albeit not extremely well. The effectiveness of your agent will still vary from cell to cell due to the potential presence of an agent of their own or due to their organelles. If you specifically target mitochondria then you will have no effect on cells that only have chloroplasts, if you generalize then some of your agents effects are useless against a cell without flagella, etc.

This is the idea I had in mind when I said



If we had one agent per organelle, one that shuts down flagella and one which shuts down chloroplasts etc. And you could choose whether to fill your agent gland completely with one of them or with a mixture of several of them. Would that be equivalent to the system you’re proposing?

Like [1,0,0,0,0,0] would be an agent gland completely filled with mitochondria agent and [1,1,0,0,0,0]/sqrt(2) would be half and half mitochondria and flagella agents?

That’s one of the options that was mentioned in the op. I think it’s clearer than a bit string approach and easier to operate, however I think it’s less deep.

Also with anti-toxins would it ever really be worth developing them? If species 1 has a good agent that kills me would I not be better getting an agent that kills species 1 rather than trying to stop them killing me? In the sense that a good offence is the best defence.


I’m proposing that the “anti-toxin” for species 1 is to copy species 1’s toxin. That way you’ve improved your offensive capabilities against all species that don’t have that toxin and are now immune to species 1’s toxin.

that’s exactly the thought I had.