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 - Endy

Pages: 1 ... 6 7 [8]
106
Darwinbots Program Source Code / Questions on Ceil and Floor
« on: March 07, 2005, 05:01:29 PM »
Thought of this code while converting Din, but can't seem to make it work correctly. :unsure:

A B sub sgn 0 floor  = 1 if A>B

A B sub sgn 0 ceil -1 mult = 1 if A<B

May be the dna itself, I've tried to check it but the sheer size of it is overwhelming right now. I suspect the ceil and floor commands are responsible. Possibly the new free store ability is causing some stack effects, and messing up the genes as a result but I would think Nums would have the values still be cleared from the stack.

Any help would be great,

Endy B)

107
The Gene depository / New ID system
« on: March 07, 2005, 01:29:37 AM »
I'm not real sure if even Nums knows this, but .thisgene when viewed by an opponent, actually shows the last active gene in the genome.

Once I realized this it was simple to make an ID system based on it. For same species recognition must have the same number of genes and same last active gene. Fortunately this worked well with Nums' idea of a constantly active viral defense at the end. Even if this value is discovered by another bot it requires constant storing in-order to maintain the deception. A further advantage is that the enemy would be hindered in effectively defending against viruses.

cond
*.robage 0 =
start
.thisgene .memloc store
stop

cond
*.eye5 50 >
*.memval *.genes !=
' must be both active and same number as last gene
start
-1 .shoot store
stop

cond
start
' little constant viral defense gene doubles as ID gene
*.genes .delgene
*.thisgene *.genes sub dup div
mult *.robage sgn mult store
.genes inc
stop
end


Endy ;)

108
Dead-End and Solved Suggestion Requests / Perfect Identification
« on: February 24, 2005, 05:01:22 PM »
Any thoughts of having a *.refdnalen and *.refgenes? Thought about this when working with vtimer and how it is unique for each bot. Would allow near perfect identification of another bot. Let me know your thoughts on this.

Endy ;)

p.s.
Is something off with the mem/tmemlocs/val? It almost seems like they are not being refreshed correctly or something.

109
Tips and Tricks / Tips
« on: February 21, 2005, 02:10:36 AM »
First off your Bot [you]must[/you] be able to reproduce fast as possible without sacrificing too much strength advantage in the process. Too fast and the babies are sitting ducks, too slow and the other bot could outreproduce yours waiting for when the bot is weakest to strike.

Next the bot needs to combine shot/tie-attack types in such a way as to acheive the most advantage when feeding from another bot. The best combo I've seen is using body shots with a tie-feeding attack for the veggies. If your fighting with another species you have to have your bot make an assessment based on the bot's defenses (slime, poison, shell) and decide which attack is best. Nrg shots will penetrate shell but trigger poison, while body shots will be blocked by the shell but not trigger poison.

Tiefeeders need to be especially careful since it is relatively easy to reverse the flow of nrg. This can be diminished somewhat with good coding but the best advice is to use *.refties to select what you TF from. If it is 0 then you probably have a veggie. If it is one then the bot is likely to be a shot-bot and only uses ties for repro purposes. If it is greater than 1 than the bot is either some sort of multi bot or another TFer; if multi then it is "generally" safe to TF but if it is something like Helios than you had better rethink your strategy, if it is another TFer then it is better to go with shots instead.

Then there is efficent hunting techniques. The use of a single .aimsx/aimdx command to cover all the possible turn values. Quite truthfully this was pioneered by PY and then the rest of us borrowed from him. Just take a look at Din(a sort of mishmash combo bot, that combines some of the best abilities of the others.)
While complex this method saves massive amounts of energy, which can be put to far better uses like, for example, utterly destroying your enemies.

Metabilism, no not that discussion taking place elsewhere, but the process of converting body to energy and back again. Here is the basic math: Plants initially contain about 1000 body and some 5000 nrg. But since each body point counts for 10 nrg points there are some 10000 units of nrg locked away there, largely unused by your opponents.

Now that you have it you need to decide at what level to maintain your body at or even inc it during a fight. If your body is maintained too low your bot will be noticably weaker against opponents and children will be virtually defenseless. If it is too high your bot will slow down perhaps too much to compete with the more agile bots sitting directly on its tail.

Defenses, while these are varied there is one important thing to remember,
Never let the cost exceed the gain. Your bot's energy is limited and trying to over-defend will ironically cause it to destroy itself without the opponent ever getting a shot or tie in. There is also the question of counter attacking with viruses, venom, or poisons. My advice is do not try to attack any one target but to randomize your attack pattern to target several different major memcell(shoot, tienum, and repros, memcell 50) are some of the best.

Last take a look at other top bots and the SG's. These are treasure troves of valueable genes and coding strategies (make sure to give credit where due, it makes people happy getting an honorable mention for something they've racked their brains to think of). While this will take time to adapt for your own use, but the bennefits are worth it. When you find something you like test your bot against itself(add something like *.eye5 *.eye5 sub dec) to double check if it is actually working like you want it to.

Have fun designing your own top bot. B)

Endy ;)

110
The Gene depository / Handy Genes
« on: February 21, 2005, 12:52:43 AM »
Here is my little contributation. Value freezing using inc/dec. This technique allows you to "freeze" values or to raise or lower a number to a value and then freeze it.
This is best used for when you need a value at a constant number, but without the cost of continously storring it.

' Basic method to demonstrate
' Will keep .tieloc at -1 permanently
cond
start
.tieloc *.tieloc *.tieloc div mult inc
.tieloc dec
stop

' More complex method demonstrates freezing
' at a value with .ploc=7
cond
start
' When *.ploc = 7 dec by 1
.ploc *.ploc 7 sub 1000 mult add dec
.ploc inc
stop

Primarily these are for use with SG's but I'm sure you all can find other uses for them. Unfortunantly some of the more desirable values (shoot, .tieval, up) don't allow this, so you may have to do some searching for the ones that do.

Feel free to post your own finds here. Eventually any bot posted is fair game, so the real challenge is in the use of these codes to build a true top bot.

Endy ;)

Pages: 1 ... 6 7 [8]