Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Topics - Numsgil

Pages: 1 2 3 [4] 5 6 ... 22
46
Bugs and fixes / Some bots are immortal? OPEN
« on: December 17, 2007, 10:27:43 PM »
Watch this sim run.  There's a single infected bot, lots of stupid veggies, and a single smart veggy with apoptosis (it kills itself if it detects infection).  After a while an equilibrium is reached between the apoptosis veggy and the dumb veggy repoping.

Until, after just a few seconds running, an immortal bot appears.  An apoptosis veggy with a viral infection, attempting to kill itself, yet not only not dying, but growing!  It doesn't spread the virus either, but I'm having a hard time deciding if this is because all the bots with this immortality have the virus inserted before the apoptosis gene, or if similar immortal bots are killed producing new viruses.  You can tell these immortals because they're the only ones shooting.

47
Suggestions / New versions know where to put themselves
« on: November 28, 2007, 03:28:25 PM »
It would be nice if when I run Darwinbots version 2.43QuadrupleZ, it could scan the registry, know where Darwinbots is installed, and copy itself there.  I'm pretty sure that the 2.1 installation makes a registry key, so it shouldn't be too hard to tap in to that, right?

I just get tired of saving new versions to disk, finding where on the disk they are, copying them, finding the Darwinbots installation folder, and pasting in to it.  Especially when I potentially have 3 or 4 computers running sims (I don't right now, but I do have 3 extra computers, so the time will come when I'll have time to set them all up with Darwinbots).

48
Darwinbots3 / Physics engine
« on: November 20, 2007, 08:57:53 AM »
I've decided on a physics engine to use.  I was on the fence as to wether I'd use a prebuilt engine or a custom one, but I've decided to at least start with a prebuilt solution.  If I need to later, I can always create a custom physics engine.  Anyway, Chipmunk2D is what I settled on.  I'm currently working on a .NET wrapper for it.  Bots will be rigid body capsules that can stretch/shrink themselves in limited ways.

You can see a youtube of the stuff Chipmunk can do on youtube.

49
Suggestions / Make/edit DNA files in program
« on: November 12, 2007, 05:11:37 PM »
This is something I've wanted for a while, back when I was tinkering with the VB code.  Just never got around to it.  Basically, I'd like to be able to edit a robot's DNA file inside the program.  Maybe a button in the settings form.  It could be as simple as calling notepad, or allow the user to specify the program to use.

I'd also like a way to open a new robot DNA file, copy text to it that I've copied from the beastiary, and save it.  The program would handle where to place the file (ie: it knows to place it in its robot directory).  Again, could be as simple as prompting the user for the robot's name, and making a new file in the Robots directory, and opening it with notepad.

I've just always found it inconvienient when I want to add a new robot to my robots directory, and especially if I'm working on a new bot.

50
Bugs and fixes / Bots with 0 body? RESOLVED 2.43r
« on: November 10, 2007, 04:05:51 PM »
I can't reproduce this, but in version p I saw a bot with 0 body floating around.  The robot console and info screen both said body -> 0.

51
Suggestions / Bugs with J
« on: September 24, 2007, 03:10:40 PM »
1.  When I DeleteAll species after restarting the program from the internet mode, and add in new species, and Start New, half of my settings don't take (including my new species list).  Extremely aggravating.  I still think that imported species should go in an importedspecies list that's seperate from the native species list, for exactly this reason.

2.  Veggy repop seems extremely buggy with internet mode.  I'll come back to my sim every now and then only to find that everything's dead because the veggies decided not to repop sometime during the night.

3.  I'll occassionally come back to my internet sim to find that it's Not Responding.  No idea or indication is given as to why, but I'll be it has to do with internet blocking.

4.  On another computer, I keep getting errors that save to error.sim, but when I load the saves into the program it runs just fine.  No idea what's causing it (I think it was an invalid index error), but just so that you're aware.

52
Bugs and fixes / Another infinite energy? OPEN
« on: September 22, 2007, 03:26:15 AM »
[attachment=650:attachment]
This is a sim where multiply has managed to get 10K bots going.  They all seem to have 2 body (reproduced as much as they could apparently), so I'm not 100% sure if this was just 1 or 2 cancerous individuals or what.  All I know is that the population spiked from about 20 to 10K in under 2000 cycles.

BTW, it would be nice if the cyc/sec counter switched to sec/cycle when appropriate.  0 cyc/sec doesn't tell me much, but 40 oe 50 sec/cycle tells me quite a bit.

I wasn't running the latest version.  This is version I.

53
Darwinbots3 / Bots as soft bodies
« on: September 11, 2007, 07:48:38 AM »
I've been thinking some more about the way actual multicellular organisms are constructed.  This lead me to realize that the physics engine needs to treat bots as something like a bean bag.  Highly deformable, without too much bounce.  That way bots can pack together to form a lattice, or stretch and shrink to produce movement.

A little research led me to look at this.  (Zombies and gory 1st person.

It's not quite what I was originally thinking, but it does look pretty nice, and it allows for fracturing.  Bots could literally take a bite out of another bot, and it wouldn't be too hard to have nrg shots be actual pieces of flesh floating around the sim.

I'm not sure yet if it addresses my original concern for multibot concerns, so I still need to work through how multibots would work with something like this.  And it looks like their exact implementation is patented; I don't know what sort of complications this poses.

Either way, looking for people's thoughts.  Brainstorm away

54
Bugs and fixes / Problems with 2.44f
« on: September 09, 2007, 08:00:56 AM »
1.  Veggies don't seem to respawn.

2.  I was having weird issues with custom costs not "sticking" on the costs form.

3.  Internet population stats add the species to the species list, even when they're not on your computer.  When you restart, you get a "what the heck file is this?" message.

4.  Something is seriously wrong with shots.  The returned energy shots' vectors are screwed up.  Two dogfighting bots will leave a trail of white shots.  That's a clear indicator that something with the vectors is screwy.  This might be a long standing issue that I'm just now noticing.  I'm fairly certain that 2.37 was working correctly in this regard, though I can't test it for some reason (2.37 isn't running, I probably need to set up a seperate install location for it.)

5. Doesn't seem to be forward compatible with 2.43.  Try running 2.43 and you get some odd "type mismatch' error.  I think it has to do with the internet settings file, but I don't know for sure.

55
Darwinbots3 / DNA command line interpreter
« on: September 07, 2007, 02:39:12 AM »
I've been working on the DNA module for the last few weeks, and this is the result.  It's a command line interpreter for DNA.  You can type in any DNA commands, and it will calculate them and show you the resulting stack.

Everything in the DNA should appear to work on a base 10 system.  The stack has capacity for 9 digits (though this may increase in  the future if I can find a clever way to multiply two longs without overflowing).  A bots memory has a capacity for 4 digits.  Memory exists between [0, 999].  Values outside this range are absolute valued and then modded into range.

Some commands may behave a little differently than you're used to.  Sqrt for instance.  I'll try to build a detailed in-console help system sometime in the future, but in the mean time, don't be afraid to ask questions.

Codules, chromosomes, and other features aren't coded yet.

I've implemented the in-place condition programming I talked about in another thread.  stores and codule calls (not implemented yet, but it will be) will still pull values from the stack, but nothing will happen if the top value on the bool stack is false.  An empty bool stack is treated as true.

Values will fizzle (not pull values from the stack, and do nothing) if there aren't enough values on the stack.

Things should be pretty robust, but I got a bit sloppy near the end of my work and I still need to go back and do some stronger testing.  Be aggressive in your testing, and question anything that doesn't look right to you.

This is the full command list:
  • add, sub - basic arithmetic, nothing fancy
  • mult - multiplies two numbers and then uses only the 9 least significant digits.
  • div - A divide by zero returns 0.  Division always truncates the result, which is unusual to most other commands.
  • mod - A divide by zero returns the original number.  Mod always obeys the law a * n + b = r where a is the division result, b is the mod result, n is the divisor, and r is the original number.
  • sqrt - returns the signed sqrt of a number.  That is, -25 sqrt returns -5
  • max, min - returns the maximum or minimum of a pair of numbers
  • swap - swaps the top two values in the stack
  • rand - returns a random number between (val, 0] or [0, val) depending on if val is positive or negative.
  • abs - returns the absolute value of a number
  • sgn - returns the sign of a number as either -1, 0, or 1
  • neg - returns the negative of the top value on the stack.
  • inc, dec - increments or deincrements the memory location pointed to by the top value in the stack.
  • ref - returns the value of the memory location pointed to by the top value of the stack
  • sin - returns the normalized sine of a number.  This is actually a little weird, but basically a full circle is 1080 degrees (1080 is close to 1000, and has many integer denominators), and sin returns values in the range [-1080,1080]  No cosine, since its so easy to convert a sine call to a cosine call using trig identities.
  • atan - A binary operator that basically computes tan(angle) = y/x, or mirrors atan2 in most programming languages.
  • store - operates like one would expect from experience with DarwinbotsII, however values are modded down to the 4 digits that memory stores.
  • dup - Duplicates the top value on the stack.
  • Comparisons - All 6 standard comparisons (> < >= <= = !=) are present.
  • Logic - and, or, xor, not are all present
  • true, false - the constants true and false are recognized
  • stop - turns off DNA execution.  DNA after it is basically ignored.
  • start - starts the DNA executing again, and clears both the bool and integer stack
  • dub, swab - mirrors the functionality of dup and swap, but for the boolean stack (note the p's are replaced with b's for "bool")
In addition, number constants are recognized, as are custom labels (and sysvars in the future, though it's not implemented yet).  Instead of "10 .up store", you can now do "10 up store".  In addition, a new feature called Explicits allows you to combine the location and action for memory (and eventually codule) manipulations.

For instance, "10 up store" can be done as "10 .up".  The period prefix is now associated with storing instead of label lookup.

And something like *.nrg is now done as *nrg (Trying to do *.nrg will result in a syntax error).

For all explicits, labels and number constants are treated the same.

Lastly, I've set up functionality for something I'm calling Metatags.  Metatags are information about the DNA that needs to be processed before the DNA is parsed.  Like preprocessor commands.  So far the only one is def.  You can use it like you're used to to register a custom label.  def labelname 10 would cause labelname to push 10 onto the stack whenever it's encountered, for instance.  I might later add in some inline macroing as well to allow people to construct their own custom commands that work the same as the default ones.

Requirements: You'll need .Net 2.0.  Nothing else is needed.  Download it here.

Use:
Here's a quick example of using the command line interpreter. Type enter at the end of each line, in the order given, and watch what happens:

10
20
add
def mylabel 100
mylabel
100 .mylabel
*mylabel
mylabel ref
start
50 .mylabel
50 *mylabel add mylabel sub

The program is included as an attachment at the end of the post.

56
Darwinbots3 / About Darwinbots3
« on: September 07, 2007, 02:04:14 AM »
Edit: see next post

Darwinbots3 is a new version of Darwinbots I'm working on that will start from scratch and build on the techniques I've been practicing for the last year or so.  Pretty much every aspect of the program will be redesigned to some extent or another.

On the tech side, the program will:
  • Be written in C#.  I'm going to be heavily using C#'s superior error handling, reflection, IO, GUI, and networking abilities.  If nothing else, there should be more descriptive error messages to debug.
  • Be module based.  The modules can operate independantly of one another, which allows them to be used independantly of the main program as well.  A DNA unit tester is in the works, for example.
  • Be unit tested, which will (hopefully) mean the program will be more stable from Day1, and allow easier modifications without breaking older features.
The program will be hosted on an SVN server I rented for my own personal use several months back.
  The SVN can be anonymously viewed here, however note that it currently doesn't contain anything of interest (I haven't been updating to it regularly).

For any programmers interested in working on one aspect or another with me (I highly encourage this), I'll be trying to set up an introduction article in the next few days that explains code dependancies, downloading from the SVN, coding practices, etc.  There are, unfortunately, a great many steps that a novice programmer would need to accomplish to get the code compiling that might not be immediately obvious (I'm working hard to minimize this effort, however).

Lastly, I expect this project to take somewhere between one to two years to finish.  However, due to the nature of the methods I'm using (unit testing, modules), I'll routinely set up mini releases that demonstrate some aspect of the program, probably every month or so that I'm working on Darwinbots and not something else.

57
Bugs and fixes / Maybe an infinite energy exploit
« on: September 06, 2007, 06:50:48 AM »
The Predator5 bot in the internet sim seems to be impossibly hardy.  I had veggies getting no energy, and I'd plop down 40 every thousand cycles for food.  Standard costs.  I come back and there are 10K of em.  Brought my poor old ancient backup computer to a stand still.

Restarted, and I set age costs to 10 nrg/cycle.  Just a few cycles in Predator has managed to quadruple it's initial download population.  The energy in the sim has quadrupled too.  Either it's some sort of exploit, or it's doing something very clever that I'm not getting.  There just isn't any energy in the sim to exploit.  So how the heck is it growing?

58
Evolution and Internet Sharing Sims / Numsgil's evolution challenge
« on: September 02, 2007, 12:19:28 AM »
Somewhat related to what Eric has done, I'm putting forward a challenge for evo sims.  No prize offered, though.

I'd like someone to take either Animal Minimalis, or another bot that can beat Animal Minimalis in an F1 match, and evolve it.  The number of mutations must be greater than or equal to the original DNA length of the bot.  You "win" if your evolved version can beat the original in an F1 match.

To the best of my knowledge this has never been done.  I had a sim going using Enitor Comesum, but the end result was significantly weaker than the original, despite what I thought were some strong selective pressures for combat.

59
Bugs and fixes / Some niggles
« on: August 11, 2007, 06:19:45 AM »
Just some things for Eric to work on or not.  Things I've noticed.

Any graphs relating to energy don't seem to be displaying their data correctly.  I just get a flat line even when it's clear that the energy should be moving around.  Other graphs seem fine though.  Seems my bug is specific to my sim from what little testing I've done.

Find best bot isn't working in my sim or any other apparently.

When veggies body grows (set the nrg/body distribution half way for veg feeding) they just start to overlap instead of pushing away from each other.  Could have to do with my sim having friction.  I know this is an issue relating to physics, and the fix is to revamp the physics engine a little, so take it or leave it.  I was able to fix it at least a little by having brownian motion break up the veggies when they're smaller (Brownian motion doesn't really work on large bots.  But that's more from design).

Mutation rates aren't balanced.  Point mutations in particular are probably 10 times as likely as any other type of mutation to occur.  The fix would be to change Point mutations to represent 1 in X0000 instead of 1 in x000.

There are several mutation types that have been deactivated in the program because they were too buggy when I released it way back when.  Amplificiation for instance.  Would be nice to add those back in and patch their holes.

When you zoom way out, it used to be that bots would turn into solid color dots and their eyes would disappear.  Not sure what happened to this.
Suggestions:
Not really the forum for this, but I'd like to keep everything together.

It would be nice if graphs (these should be pretty easy):

1.  Were always collecting data, so I didn't have to open a graph and leave it open for a while to see what's up.
2.  Graph data was saved over the entire length of the simulation, and the entire length of a simulation's data could be viewed in the program.  There are some extremely long occurring patterns I can seem every several hours, but I have no way to check what their frequency is since the graphs barely contain the pattern itself.
3.  You could export that data as either a comma delinieated spreadsheet or, even better, an XML.  To make graphs in excel.  (ooo perty )
4.  Veggy repop events were recorded in some way, so I could know when my veggy line died out and had to be restarted (I'm trying to coevolve my veggies with my bots instead of just plopping food down in the sim with them)
5.  And if you can figure it out, I'll echo comments from others: it would be nice if graphs were MDI children of the main window, and the drawing area was sizable.  Sort of like how simearth works, if you ever played with that. (I still do from time to time).  I played with this at one point, but never got it working right.
6.  I'd like a new graph that totals all the invested energy in body, nrg, shell, slime, etc. for a species (as well as an average per individual).  I think it would give me some valuable information for detecting changes in fitness.

If all the bots in a sim die out, it would be nice if the sim could try to load up from an earlier autosave in a long running sim.  Maybe change the seed if it was user set before.  And also record how many of these dead ends occurred as part of the whole simulation (some sort of alternate timeline for the graphs.)

It would be nice if there was a way to save the simple family tree of all the bots in a sim.  Something as simple as A descended from B, but saved for all bots living and dead.  That way I can see how far back various branches of my bot are to each other.  It's a hack since it wouldn't record virus evolution, but not all evo sims have viruses so I'm willing to try this idea out.

Some sort of overlay in a sim so you could somehow see how geographically dispersed a bot's family is.  Maybe something like a voronoi diagram with each cell colored based on how closely related the bot in that cell is.  This is probably a bit ambitious.

My goal is to be able to take a running sim, crunch the numbers, and come up with 1 or two dominant strains to try and examine for changes from the original.  But with a bit of fuzzyness.  That is, I don't care too much if 30 have 1 mutation and 20 have another.  I'm more interested in family lines.

It would be nice if there was an option, when a robot died, to convert its body into nrg and have the bot explode in a poff of nrg shots.

Last, something to tell in the robot info what a bot gained in energy last cycle, and what it lost from costs.  Just looking at the nrg reading go up and down doesn't tell me what a bot's costs are compared with the energy it's receiving.

60
Darwinbots3 / Combat System and other things
« on: July 25, 2007, 07:04:17 AM »
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.

Pages: 1 2 3 [4] 5 6 ... 22