These are all rather inter-related concepts. I think they mesh well; we'll see how they flesh out under scrutiny.
[you]Substances[/you]First, there's basic substances. These were discussed before: (
here)
- nrg - As now-- keeps a bot alive and is the currency actions are paid with. A bot can only keep so much nrg on hand, though. Nrg is massless, volumeless, and otherwise exists more as an abstraction than a physical substance.
- Waste - Waste is produced whenever nrg is used to fuel a process (move forward, etc.) and from the metabolization of poison and venom. It's also massless and volumeless. As now, it can cause Alzheimers if it builds up in too great a quantity.
- Poison and Venom - Also massless and volumeless. Works very similarly to how they do now (more later). A bot needs to metabolize poison and venom into waste to remove the effects (effects do not wear off over time).
- Fat - a longer term nrg storage solution. Fat has medium density. Probably comporable with how body works now.
- Muscle - denser than fat. Muscle also has an nrg upkeep every cycle that needs to be paid. Muscle is the engine that bots use to do pretty much anything. The more muscle a bot has, the easier it is to perform multiple tasks in a cycle, or give stronger efforts.
- Chloroplasts - Very volume-y (makes your bot get really bloated) and heavy. Animals can build chloroplasts but it'll make it harder to move (F = mass * acceleration, remember) and a larger target (more on this later). Chloroplasts turn light a bot receives into nrg.
- Shell - Mostly as now-- protects against shots.
- Slime - Mostly as now-- protects against ties.
In general, bots can only build or destroy substances slowly. A bot would find it difficult to quickly drop 90% of its fat into nrg during a fight. My goal with Fat is to differentiate between nrg available for combat and nrg stored for long term survival (so that a victor of a battle has a prize. This will make sense later in the post).
[you]Vision distance[/you]It'll mean using a better space partitioning scheme, but basically a bot has the potential to see forever away. However, bots can't see objects that have an
apparent size that is too small. This threshold probably also relates to how big the bot is itself. Very small bots can become so small that they're all but invisible to a larger bot. Very large bots can become so large that they're visible from everywhere on the field. The idea here is that it encourages niches. Very small bots can easily prey on larger bots without being noticed. Of course, they're also going to have a hard time doing much damage to a larger bot.
I'm not totally sure how I'm going to handle aggregate size, like a field of 100 veggies that's too far away to see individual veggies but close enough that you should see a green smear. But I remember reading about various algorithms so I don't think this should be too impossible.
[you]Vision information[/you]The present method of refeye and myeye will be replaced with a more superficial system. You can tell the following about a bot just through vision:
- relative velocity
- distance (or maybe just use apparent size and have no depth perception at all. Not quite sure. You could try to just keep moving towards another bot until you bump into it.)
- in/out pairs
- target's shell and slime (but not poison and venom)
- angle from bot's eye to target bot (this and distance basically give you polar coordinates for the other bot)
- angle target is looking
- if the target is tied to anything
- if the target is shooting
- size (radius or diameter)
- nrg (maybe. Might be neat if there isn't an easy way to tell if something is dead or not)
Maybe some others depending on new features. The basic idea is that the amount of information you can gather from another bot just by looking depends mostly on its observable characteristics. Snooping for more private details (like how much nrg the other bot has) requires other methods. I'm imagining in/out being used as the primary conspec recognition system.
[you]Size[/you]Instead of having 100 nrg be a hard and fast amount, the 100 instead means a supply of 100/1000. As a bot gets physically larger, its capacity for nrg, muscle, fat, just about anything gets larger with it. So a very small bot looking at a huge bot basically sees an infinite supply of nrg. If a small bot had 100 muscle and grew 10 times larger, it would read a drastically smaller amount of muscle. It's actual muscle hasn't changed, but it's relative amount has.
In this way, artificial limits like we have on body right now (32000 capped) can be removed. All the controls scale with the bot as they get larger. You could have a bot with 4 billion chloroplasts. And since a bot's radius increases with the cube root of volume, even gargantuan bots aren't going to be unimaginably bigger. The simulation and user can handle it. (A bot with 4 billion fat might only be 100 times larger than a bot with 1000 fat).
It also means that keeping your bot 20% muscle 30% fat, at 78% max nrg capacity, etc. is very easy. Absolute amounts don't matter much.
On the other side, where things get very tiny, we'd probably want to set up some sort of minimum bot size (the DNA has a physical size maybe).
[you]Combat[/you]This would represent a rather large change.
Shots get streamlined. The familiar -1 shots become a strictly attrition weapon. Instead of returning nrg shots, they just lower the target's nrg. Your goal with these combat shots is to kill your opponent. Venom becomes the "special" feature for shots, and works largely like it does now (see the discussion of poison below. Venom works the same, only it can be shot). Shots can be stopped with shell. Info shots get replaced by ties, as described below.
Ties are also streamlined. Each bot gets one tie it can form (though unlimited ties can form to it from other bots). Each bot has total control over its tie. Its victims can't hijack the tie. Ties are used to suck nrg from an opponent. It can also read and set memory locations (replaces info shots. Sort of like ties can do now, but more versatile. You can read and write to multiple memory locations in a single cycle). Ties are stopped with slime. Also, if killing your opponent is your goal, shots are much more effective at reducing an opponents nrg levels. Though you don't get the change to play with your opponents internal memory.
The third attack type is phagocytosis (consuming your opponent whole). A bot can draw another bot into itself to be digested. Instead of just feeding on the target's nrg like ties, a bot can digest the victim's fat, muscle, etc. A potentially huge source of nrg. If the victim was alive, it has a very good opportunity to inflict some serious damage, since the inside of a bot isn't protected with shell or slime. Bots can also try to eat just a small portion of a corpse (you can't divide a living cell of course. Probably just swallow the whole thing if it's alive). If a bot doesn't like something its eaten, it can empty things from its stomach (regurgitate).
Bots can also consume bits of shapes to build nests and hideouts. A bot would swallow some portion of a shape in front of it, carry it outside the nest, regurgitate it, and then continue the process.
Poison isn't really a defense against being eaten, but it can make the bot that ate you rather sick. Instead of how it works now, poison would work more like present venom. You can make a memory location store any value you want. Bots can also have multiple types of poison in them at once, waiting to be eaten. The poison is realeased as the predator begins digesting the poisonous victim. The effect on the predator is related to how much poison is in its system. Very large bots can handle more poison than very small bots. Poison's effect is to weight a memory location towards a set value after the DNA has run.
Bots can metabolize poison into waste, but it takes nrg to do and takes up some muscle that could have otherwise been spent attacking, growing, etc.
[you]Muscle[/you]The amount of muscle a bot has determines how much nrg it takes to do a given task. In addition, if a bot tries to do too much in a cycle, it has to push its muscles beyond their optimal level and pays more nrg for it.
Basically, the less a bot does in a cycle, the more efficiently it does it. And the more muscle it has, the more efficiently it does it. But muscle has an upkeep cost so you can't afford to do a large task
too slowly.
[you]Viruses[/you]Instead of drifting shots, I'm imagining sticky particles. When a bot produces a virus, it sticks to the surface of the bot. When another bot collides with the infected bot and touches the virus particle, it gets infected. Bots can also get infected by having its tie touch a virus particle, or eating an infected bot. But basically, some form of physical contact is needed to spead a virus.
Viruses would also be cheaper to produce, and multiple viruses could be being built at the same time.
[you]Still needs work[/you]I'm still working on drawbacks for shell and slime. At the moment, I'm playing with the idea of having shell inhibit growth or shrinkage. A bot would have to molt the shell off if it wanted to grow or shrink. Having shell just be really massive as it is now also works well.
Slime washing away every cycle doesn't work as well. I'm open for suggestions. The ideal drawback would influence a bot in a way that isn't always negative, and impacts the bot in ways outside of just nrg consumption.
Also, I'm not sure about a primary defense against viruses. We could just use slime like it does now, but I'm not sure I like the idea of loading more onto slime than what it has right now. We could invent a whole new substance just to counter viruses, but I'm not sure I like that idea either.
[you]Conclusion[/you]This is still raw. It hasn't been playtested, so there could be some hugely unbalanced elements. Please comment on anything you feel is missing or could be done better.