Author Topic: Changes 2.43 - 2.43.1d  (Read 9232 times)

Offline EricL

  • Administrator
  • Bot God
  • *****
  • Posts: 2266
    • View Profile
Changes 2.43 - 2.43.1d
« on: August 05, 2007, 04:00:47 PM »
This topic is just a place for me to keep track of the changes I make from one version to another, in this case from 2.43 to 2.43.1d. It is not the complete list of stuff in the next drop (yet) just the stuff I have completed to date. I will edit this post as I complete changes and start a new topic for each new release.

If there is a link to an interim release attached to this topic, it is a stable buddy drop which you are encouraged to try. Such 'between release' exes will have letters following the release version e.g. 2.43a.

If you have feature requests or bug reports for this version, please report those as separate topics in the Bug Reports forum and be sure to include the specifc version, a complete description of the behaviour and how it differs from what you expect and if possible, an attached sim file.

1) Slime was being displayed as shell and vice versa in the robot properties dialog.
2) A local Int valued variable in MakeSlime() and MakeShell() was causing a conversion error which could result in the asscoiated value of the Int valued memory location in the robot's mem array to be incorrect and not agree with the Single valued .Slime and .Shell maintained on the robot structure and displayed in the robot properties dialog.   Specifically, this would happen in cases where the sum of the sysvars mkslime and slime in a given cycle exceeded 2^15 (same for shell).   The result would be that actual slime would be capped at 32000 memory (as displayed in proerties dialog) but the associated mem location in the robot's memory would be 0.  Note that this fix will not retroactivly address this mismatch in pre 2.43a sims until a bot attempts to make slime or shell.
3) Upkeep() was properly degrading .slime each cycle on the rob structure, but not updating the asscoiated mem location for the bot.
4) LoadRobot() was incorrectly testing all of the locations in the mutations structure for valid ranges in order to determine if the mutations array was messed up from a prior compatability bug.  The problem is that not all the locations are used or initialized so basically the mutation rates for any and all loaded bots were getting set back to the defaults.  Now I initialize all the slots to valid values so that the messed up up test works correctly.
5) Long ago, the length of the Mutations Details string was stored in saved sim fils as an Int.  This caused serious problems (I.e. corrput sim files) when the length of the string exceeded 2^15-1 bytes.  Long ago, I wrote a bunch of code in the sim load routine to deal with this which basically stopped reading in the specific bot, truncated the mut details string and defaulted the rest of the bot properties yet to be read in which thankfully, was not many.  However, I neglected to update this section of the code to default additional features implemented since then.  These features included DisabledDNA, Disabled Reproduction, Disabled Vision, Disabled Movement as well as the saved values for slime and shell which come after the mut details section of the on-disk bot format.  I also had a bug in the logic I used to properly store the length of the details string in cases where it was longer than 2^15-1.   The end result was that if a sim was saved with bots that had a ton of mutation details, those bots would have random values for the above proerties when read back in.  Any non-zero value for DisableDNA in particular would prevent the DNA for the bot from executing and result in lots of strange things such as vales for things liek nrg and body as disaplayed in the bot properties dialog not matchign what the console says.  For example, in VB, True is implemented as an Integer of value -1 and "Not True" is the same as False.  But "Not some positive non-zero number" ends up being True!  This resulted in all sorts of screwy behaviour with some routines thinking the DNA was disabled and others think it was not, depending on how the code was written!  (Not .DisabledDNA vs. .DisabledDNA = True).   Now the bug is address and these properties are properly defaulted when and if this does ever occur.  Note that some saved sims may be corrupt and beyond the scope of this fix to repair.  I added a bunch of additional test logic in the bot load routine to test for .DIsableDNA being either True or False and so on, but if you saved with lots of mutations, then loaded, then saved again... well, I haven't tested it very well.  Let me know if you run into something.

2.43a Buddy Drop Download

6)  TmpOpts.Toroidal was getting set to true in F1 mode but TmpOpts.Updnconnected and TmpOpts.Dxsxconnected were not.  Now they all are.
7) Implemented Virus Immunity.  Virus shots will have no effect on any member of a species which haws virus immunity checked (specified on the species tab on the options dialog).  This should help evolved virus spreading bots zero from infecting hand coded veggies or other shepard style bots in zerobot or other evo sims.
8) For some strange reason, the Best Bot menu item wasn't wired up.  The button bar button worked, but not the menu.  Fixed now.
9) Disable Ties option moved to the Objects menu to make room for more controls on the options dialog.
10) Implemented Species Diversity graph.  It graphs the number of subspecies within a species.  That is, the number of unique genomes with a "species".   A unique genome is one that has directly or indirectly (via an ancestor) experienced one or more mutations unique to itself or has been infected (or had an ancestor infected) by a virus which again, of which it is the sole extant representitive.   Thus, each virus infection and each mutation can be thought of as forking the phlygenic tree, creating a new branch with a unique genome.  Currently, self imposed gene deletions are not counted as a separate subspecies.
11) Virus infection now updates mutation details and the mutation count.   In effect, being infected by a virus is a type of mutation.
12) Movement vectors now have arrowheads on them so as to avoid confusion with ties.
13) NEW SYSVARS.  .totalbots (401) and .totalmyspecies (402).  See this topic for further information.   These sysvars are currently always enabled, even during leagues, pending consensus on this matter.

2.43b Buddy Drop Download

14) Fixed a bug in species diversity graphing.  The subspecies array wasn't species relative.  Could result in over or undercounting of subspecies.
15) First pass at F1 Internet Mode.

2.43c Buddy Drop Download

16) Addressed a crashing bug with teleporter velocity and F1 Internet mode.
17) Simualtor now silently auto-creates the necessary local file system directories for F1 Internet mode if they don't exist.

2.43d Buddy Drop Download

18) The Cost Multipler wasn't getting set to 1 when the F1 default costs were selected (non league mode) .  Now it is.  This was probably screwing up some newbies...
19) Graphs now support up to 40 series, not 10.
20) Graph values now displayed next to series key.
21) Graphs now auto-sort for largest series value on top.
22) Fixed Long-> Single conversion bug with large series value display. This was the root of the strange graph display problems we have had forever.
23) General graph cleanup.
24) Graphs now don't cause unreferenced control fault when the 41st series is added.   It simply replaces the 40th.
25) Put in place some limits on multi-bot tie based nrg transfer.  First, a bot must have been the one that created the tie in order to initiate the sharing of nrg on it.  .sharenrg is ignored on ties the bot did not create.  Second, the amount of nrg transfer is now constrained by the body of the bot iniating the sharing in the following way.  A bot giving nrg away can't give more away than what he has in stored body (body, not body x 10).  Similarly a bot taking nrg from another can't take more than he has in body.  Note the asymmetry.   A bot can push as much nrg as he wants into another, indpendent of the size of the other, subject to his own body size.  Similarly, a bot can only take as much from another as the size of his own body allows.   Size matters.  The bigger you are, the more you can give or take from another.  Small multi-bots can only tie feed or give away small amounts.  Larger bots can give away or tie feed more.  This should help larger bots defend against a few multi-bot mosquitos (but a large enough swarm can still pull you down).  Thirdly, you can now take 100% of the total nrg (subject to the constraints above).  Before it was capped at 99% of the total but this could lead to strange cases where a large bot wanted to tie feed from a small one but would instead end up giving that small bot nrg because the smaller bot represented <1% of the nrg to begin with!  And lastly, there is now an nrg cost to multi-bot tie sharing.  The bot that initiated the sharing pays an nrg price of 1% of the amount actually transferred independent of the direction of transfer.  The passive bot in the sharing pays no nrg price for the transfer.

2.43e Buddy Drop Download

26) Closed an infinite nrg bug in multibot nrg sharing.  Bots coudl give away more nrg then they had in their last cycle of life.
27) Implemented the Internet populations graph.  It will display the total population of bots in all the distributed sims runnign in Internet mode.

2.43f Buddy Drop Download

28) Address issues listed here.

2.43g Buddy Drop Download

29) A bug in the changes listed in 25 above resulted in .numties not being updated correctly for bots with only one tie they did not create.  This coudl result in the tiehooke routine not executing in some cases, the most visual result being very long ties not being deleted.
30) Addressed an issue with nrg retrun shots.  The velocity of the impacted bot was not being added correctly to the velocity of the return shot.  THis onyl impacted nrg shots.  Returned body shots were working correctly.
31) Tweaked how internet population files work so that the graph now reflects changes to the local population between internet uupdates.  Helps smooth out the graph and address issues non-intuitive issues where the local population for a species could appear to exceed the global population.
32) Intenet log window title now displays number of sims connected into the megaverse.

2.43h Buddy Drop Download

33) Old population files now get deleted to avoid issues where sims join Internet Mode then don't run for a while.
34) Changed Internet Mode session handling to minimise the tiem period during which a session is active.  Should help with connection problems and increasing number of sims that can connect into Internet mode.
35) Internet Teleporters don't get loaded from saved sim files.  You must switch a sim into Internet mode manually.
36) The Internet Populations graph menu item is disabled unless in internet mode.
37) When a bot of a species not already present in a sim teleports into a sim, that species will be marked as native if a DNA file for that species exists locally.  This will allow for veggy repopulation of bots in sims which did not start with veggies in internet mode.  Also addressed some species list update glitches.
38) General Internet Mode cleanup.  Switchign out of Internet Mode now deletes the server side population file, makes the status lights invisable and hides the log and Internet population window.  Quitting DB while in internet mode now also deletes the server pop file.
39) Graphs now support 1000 data points.
40) Graph series that have no non-zero data points in the set of 1000 data points are automatically removed when there are more than 10 series total.

2.43i Buddy Drop Download

41) Addresed Internet mode invalid array element crash when > 30 organisms in the megasim.  MaxSpecies is now 75 and flex.last() has the right protection.
42) Veg repopulation now randomly selects from all Native veggies.
43) Added Disable Mutations check box.
44) Fixed bug where veggy repop would occur on the first cycle after a sim was loaded independent of the veggy population.
45) Addressed an issue with saved teleporters which could result in multiple internet teleporters.

2.43j Buddy Drop Download

46) Robot names in population graphs no longer display the .txt file extension.  Looks better.
47) Fixed array index crashing bug with internet species array.
48) Changed slime and shell routines to always convert nrg at 1:10 and to allow unmaking.  Changed F1 costs accordingly.
49) Fixed issue with Internet Log window not staying on top.
50) Capped all substance manufacturing at 100 per cycle.
51) The current sim is saved as Saves\lastsim.sim at exit time.  If this file exists, it is loaded and run automatically when DB is started.
52) Moved the specieis list initialization code to the options dialog load routine from the activate routine.  Should address loss of focus issues with the species list.
53) Addressed a bug where the starting bot position reset button was incorrectly initializing the starting postiion boundaries.  Would cause crash in cases where the startign position box wasn't clicked.
54) I made recent changes to unload the options dialog instead of hide it to address other bugs.  This was causing problems for leaguemode since that code referenced the LeagueName control directly.  The league code now references a global var which gets set to the league name before the options dialog is closed.  League Mode should work fine now.
55) Implemented Internet Sim Populations graph

2.43k Buddy Drop Download

56) Clicking on a species in the species list was causing the speccol click event to fire which in the cause of a custom color, would cause the color to get reset to green.  Now the Speccol event checks to see if it is being fired due to a click in the species list or an actual color choice by the user.
57) Fixed a crashing overflow bug in setAimfunc where two .mem locations were being added together without first being converted to singles.  Probably only impacted evosims.
58) Finially dove in and fixed the messed up way the options dialog loads.  Everything is hung off the Load event now, not the activate event, and simopts is copied to tmpopts.  Lots of duplicate assignment now, but it should work much better and be easier to fix bugs going forward.
59) Some new interesting graphics added in place of the old "smily" mode.
60) PERF.  Now when zooming, bots and ties not being displayed are not drawn.  Makes a significant difference when zoomed.

2.43m Buddy Drop Download

61)Broke Teleporter loading from sim files with a change designed to prevent re-loading of the internet teleporter. Fixed now.
62)  The "Coming From" thing on the bot properties dialog is now called "Last Sim" and "Unknown" is now "Local".
63) Regarding teleportation of veggies through teleporters with veggy filters when part of multibot clusters, I made the change to prevent transitive teleportation of through cells in a cluster which do not have multibot status. This will have an impact on saving of bot clusters as dbos, the "Kill Orgamisn" menu item as well as the way clusters of bots are transported from one side of the field to the other in torroidal sims.   If a bot is a multibot, then all the bots to which it is tied will be transported/teleported/killed/saved indpendent of their multibot status but their ties will only be followed to further bots if they are themsevles multibots. Got it? Good.  Note that this will allow a multibot to carry non-multibot individuals from one side of the field to the other or through a teleporter - even a veggy through a veggy fliterred teleporter. Think of it as the cow getting teleported with some grass in it's mouth. That grass comes along for the ride, but any bugs on the grass get left behind.
64) Implemented a timer based timout for internet operations.  Should prevent sims from hanging in Internet mode.
65) Fixed leauges to pass the correct league name to the league routines.  Another case of a control on the options dialog being referenced after the dialog was unloaded.

2.43n Buddy Drop Download

66) Increased range of possible bot sizes when not using fixed radii.  See This Topic.
67) Zoom in/out speed using button bar buttons now matches mouse wheele speed (5% per click).
68) Implemented preliminary infrastructure for the Physics Egrid.
69) Fixed Teleporter loading from saved sims.

2.43o Buddy Drop Download

70) Tweaks to Inernet Mode communicaiton to hopefully improve connection failures
71) Overflow from nrg shots now goes to body automatically
72) Changed nrg shot percentages.  Now 95% nrg, 4% body, 1% waste.
73) Now partially visible bots are displayed when zoomed or when crossing field border.
74) FName removed from saved DNA file to address issue with file name conflict.  Temp fix.
75) Pressing the cancel button on the new sim common file picking dialog no longer crashes.
76) Local out directory now emptied when enterring Internet Mode.
77) Back pressure now applied to the outbound Internet teleporter when too many bots get teleportered out between uploads.

2.43p Buddy Drop Download

78) Some randomness added to veggy reproduction.  In prior versions, when the veggy population fell below the threshold, all veggies were allowed to reproduce that cycle, resulting in the actual veggy population spiking to potentially twice the specified limit.  Now I allow a random 10% of veggies to reproduce each cycle the population is below the threshold.
79) Clicking on the sun button will now toggle the sun.
80) Cleaned up the Internet Mode button and status indicator.
81) DB will now enter Internet Mode automatically when restarted when there is no lastexit.sim.  This is primarily for newbies so that their first start up does something interesting.  
82) Conditionals are now allowed in the body of genes and can impact the success of memory operations within the gene body.
83) The commands True and False have been added.

2.43q Buddy Drop Download

84) An attempt to read in the lastexist settings for new installs when no settings file exists was causing the options dialog to load and over write the simopts structure with an empty tmpopts, causing many of the internal default settings to end up 0.  Now I avoid clearing the species list in cases where there is no settings file to load, which prevents the options dialog from loading in the newbie path, preserving the internal defaults.
85) I now delete the popuatlion *.del files after pop file download.  This should clean up Internet populations and sim lists when users come and go without requiring a restart.
86) Major changes to ties as described here.
87) .tielen and .tieang now work correctly.
88) bots or corpses with body < 0.5 now disappear from the world.  This avoids rounding issues in refvars.
89) Bug fix to the new conditional paradyn.  The Cond statement was not clearing the boolean stack.  Thus the result of boolean operations in the gene body of gene N were being ANDed with the conditions in the N+1 gene in determining whether to fire the N+1 gene.  Now Cond clears the boolean stack.

2.43r Buddy Drop Download

90)  Addressed the "Error 5" crash on the newbie path when disabling internet mode.  Neglected to add "Internet Mode" to the main window title bar and the attempt to delete it was causing the crash.
91) Another newbie path fix which prevented internet graphs from being enabled.  Form1 was being access before it was loaded.
92) Non native species are no longer saved in settings files.  This should avoid the popups asking for the DNA files when loading a settings file initally saved in internet mode.
93) Clicking on teleporters now ignored in internet mode
94) Graph windows and the log window now no longer top most.  

2.43s Buddy Drop Download

95) There was an inadvertant limit on reproduction.  Bots age < 10 were prevented from reproducing.  This limit has now been removed.
96) Addressed the integer overflow between large radius cells in multibots using .tielen described here.
97) Addressed an issue where .mrepro was usnignt eh percent from .repro described here.
98) If .repro and .mrepro both are positive in the same cycle, the code now randomly chooses which one to respect.
99) Zooming in is now prevented past the point where visiblew or visibleh would drop below 100.  This prevents downstream overflow problems in the drawing routines.
100) oldCostX now round trips through sim files.
101) Cleaned up some (more) problems where references to controls on the options dialog was causing it to load where it shouldn't have, triggerring some strange behaviour in the species list.  Now the dialog only loads when it should and the species list is populated there in the load.  SpeciesNum is used now also instead of loopign through until a null species is found.  Much better.
102) The Make Poision routine was mistakenly using the .mkvenom memory location for the amount to make, effectivly breaking poison.

2.43t Buddy Drop Download

103) Virus immunity is over ridden in internet mode.  All bots can be infected while in internet mode.
104) Added custom input string handler that looks for comma separators in number strings and converts them to decimals.  Wired this up to the costs dialog.
105) New operators:
clearbool  - clears the boolean stack
dropbool  - drops the first value off the boolean stack
clearint  - clears the integer stack
dropint  - drops the first value off the integer stack
106) Implemented the Make New Species menu item on the Robots menu.  This will create a new species from the bot with the focus.
107) Addressed a bug with loading settings files.  THe species list from simopts was overriding that loaded from the settings file.
108) Virus insertion now occurs following a random gene in the target bot instead of at the end of the genome.  A line in addgene() was overriding the postion and setting it at genenum.
109) Intenret Mode connection improvments.  I now unload the inet control when the connection times out.
110) Added integer overflow protection to the veggy repopulation input fields.
111) If the veggy population is below 90% of the target population, then all veggies are allowed to reproduce.
112) The cost multiplier is now allowed to go negative.

2.43u Buddy Drop Download

113) New stack operators:
dupbool - pushes a duplicate of the top value on the boolean stack onto the boolean stack.
swapbool - sawps the top two values on the boolean stack.  Does nothing if stack contains only a single value
dupint - pushes a duplicate of the top value on the integer stack onto the integer stack.
swapint - saps the top two values on the integer stack.  Does nothing if stack contains only a singel value.
114) Make New Species now recursivly iterates through extant descendants of the selected bot and changes their species.  Note that it is possible that some extant descendants will not be changed if an intermediate descendant is no longer living at the time Make New Species is selected.
115) Make New Species also changes the species of any extant bot with a subspecies distance of 0 or 1 from the selected bot and it's descendants.
116) Slime degredation now makes values < 0.5 equal 0.  Prevents tiny slime that never degrades and downsteam issues with display guages.
117) All display guages now treat values < 0.5 as 0.  Should help perf when running with guages.
118) New stack operaters:
overint - pushes a duplicate of the second to the top value onto the integer stack.
overbool - pushes a duplicate of the second to the top value onto the boolean stack.
119) Integer stack operators now have short name synonyms.  I.e. overint == over, dupint == dup, etc.
120) Implemented ancestor lists on extant bots.
121) Can't click on internet teleporter.
122) Internet teleporter no longer teleports corpses.
123) Creating internet teleporter manually disabled.
124) Added a poision resource guage (didn't exist before) and made it yellow and changed slime from yellow to black.
125) Added overflow protection to the starting nrg field on the species tab.
126) Added the Allow Multiplier to go Negative checkbox on the Costs dialog.
127) Starting position for new speceis created from importation is now be the entire field to distribute repopulation.

2.43v Buddy Drop Download

128) xpos and ypos are now scaled by the fieldsize and will work for fields of any size though resolution at short distances on very large fields may suffer.  For field dimensions larger than 32000, the values they return are now in units of 1/32000th of the field width or height.  For fields with small dimensions, the behaviour in unchanged.  Note that dist still returns the actual distance in fixed, not scaled field units.
129) Completed shape visibility.  Now shape corners and other cases are all handled correctly for eyes of any width.
130) .refxpos and .refypos now return the closest point of the shape in the focus eye.
131) League dialogs no longer try to be top most all the time.
132) Gene numbers for .delgene and .mkvirus now use identical code for DNA parsing.  A new gene begins on a cond, a start or an else in all cases except for the case of the first start or else following a cond.
133) DNA tokinization now accurate and respects new gene numbering
134) Gene activations dialog tweaked.  Genes with cond sections now indicated as triggerring when cond section is true even when no stores are performed by the gene.
135) Fixed numbering on gene activatiosn dailog for genomes with > 25 genes.

2.43w Buddy Drop Download

136) Forgot to modify the routines which calculate genelength and geneend to handle the new definition of a gene.  Caused serious leakage of virus shots.
137) Integer overflow addressed in xpos calculation.

2.43x Buddy Drop Download

138) Virus insertion position now recorded in mutation details when infection occurs.
139) Changes to eyevalue calculations as described here.
140) Added global mutations disabled settings.
141) Changed behaviour of .mrepro so that it mutates even when organisim has mutatiosn disabled.
142) Tweak to retruned nrg shot formula to match retruned body shot formula.
143) .genes sysvar now updated correctly.

2.43y Buddy Drop Download

144) Addressd a bug in GeneEnd() which was messing up .delgene
145) An eyes vision distance is now a function of it's width as described here.
146) Values of 32000 and -32000 are now allowed to be stored to bot memory.
147) Tweaks to eye value curve to better approximate legacy values.
148) Tweaks to IM communication in an attempt to address connectivity issues.

2.43z Buddy Drop Download

149) .sexrepro reimplemented as described here.
150) Addressed crash when graphs are resized to small dimensions.
151) Address free nrg bug with bots turn back and forth accross a .aim of 0.
152) Program now prompts to resume lastexit.sim.

2.43.1 Buddy Drop Download

153) Addressed a bug in accessing the turn cost.  The cost was mistakenly being calculated as the value of .aim and assessed indepenent of any turn the bot was or was not making.  

2.43.1a Buddy Drop Download

154) Handful of perf enhancements.  Shot array compaction now uses more effecient sperm/virus DNA copy routine, new sperm shot creation does also, vision now has special case code for bots which don't change their eye widths.

2.43.1b Buddy Drop Download

155) Had an overflow bug in the vision perf change.

2.43.1c Buddy Drop Download

156) Fixed a vision bug introduced by the perf changes where wide eyes could see things farther away then they should.
157) Address serious perf issue with crossover algorithym.  .sexrepro shoudl not slow thigns down much now.
158) Slime could be made if slime was 0 at virus insertion time.
159) Perf enhancements to virus insertions.  dnalen now maintained on shots.
160) spermDNA and bot fertilization state now saved in sim files.

2.43.1d Buddy Drop Download
« Last Edit: May 08, 2008, 11:19:50 AM by EricL »
Many beers....

Offline EricL

  • Administrator
  • Bot God
  • *****
  • Posts: 2266
    • View Profile
Changes 2.43 - 2.43.1d
« Reply #1 on: August 06, 2007, 11:01:29 PM »
Bump.  2.43a released.
Many beers....

Offline EricL

  • Administrator
  • Bot God
  • *****
  • Posts: 2266
    • View Profile
Changes 2.43 - 2.43.1d
« Reply #2 on: August 24, 2007, 01:37:44 PM »
Bump.   Version 2.43b released.

2.43b Buddy Drop Download
Many beers....

Offline Numsgil

  • Administrator
  • Bot God
  • *****
  • Posts: 7691
    • View Profile
Changes 2.43 - 2.43.1d
« Reply #3 on: August 25, 2007, 01:43:00 AM »
Quote from: EricL
11) Virus infection now updates mutation details and the mutation count.   In effect, being infected by a virus is a type of mutation.

Does it record what DNA the virus had?  I hadn't thought of it till now, but having the full virus code recorded somewhere would make analyzing evosims easier.

Offline EricL

  • Administrator
  • Bot God
  • *****
  • Posts: 2266
    • View Profile
Changes 2.43 - 2.43.1d
« Reply #4 on: August 26, 2007, 03:06:28 PM »
Quote from: Numsgil
Quote from: EricL
11) Virus infection now updates mutation details and the mutation count.   In effect, being infected by a virus is a type of mutation.

Does it record what DNA the virus had?  I hadn't thought of it till now, but having the full virus code recorded somewhere would make analyzing evosims easier.
Not currently.  It mearly records the virus length.  I could add it if there is interest.
Many beers....

Offline EricL

  • Administrator
  • Bot God
  • *****
  • Posts: 2266
    • View Profile
Changes 2.43 - 2.43.1d
« Reply #5 on: August 29, 2007, 07:44:29 PM »
Bump 2.43c released.

This version includes my first pass attempt at a new Internet bot sharing paradym based on teleporters.  In particular, this release includes a first pass at F1 Internet mode.

Bascially, putting a sim - any sim - into Internet mode creates a teleporter which will teleport bots out into the cloud and teleport in bots from others also currently running in the same internet mode.  The idea is that down the road, there will be additional internet modes, some with enforced restrictions on sim config or the type of bot that will be teleported, much as it is with leagues.  I plan a multibot internet mode, a zerobot internet mode, etc.  F1 is the first.  I call it F1 since it is a total free for all.  All bots, be they plants, corpses or 50 cell multibots will be teleported but unlike F1 league mode, there are no restrictions on sim config.  A tiny pond mode sim or a giant planet eater sim can be placed into F1 internet mode.  Obviously some bots will do better in some environments than in others.   That's part of the fun.

Some things to note:

You need not configure server, password, etc.  That is all taken care of internally.  Just hit the toolbar button.
You must give yourself an internet nickname.
The teleporter will switch to intrasim mode if the server isn't available.
Yes, bots you send out can get teleported back in to the same sim without ever landing in someone else's sim.  This will happen all the time when you are the only one running in internet mode.
It is possible for bots to get duplicated in failure situations.
Bots might sit on the server for awhile if connectivty goes away, but they should not get lost forever.
The Intenet log window is quite useful to watch.
I'm still working on the perf aspects, polling intervals, etc.  Suggestions welcome.


This version does not collect global population statistcis though that is something I plan to do.  If I do this right, then over time, designing a bot that obtains the highest population in the F1 megasim will become the premier goal for bot builders.  I plan to create a web page on the site (as well as maybe build something directly into the simulator) which will provide real-time info on bot populations in the connected F1 megasim as well as info on number of individual connected sims and so on.  For now, the population graph will tell you what's in your own slice of the F1 megaverse...

Connectivity may still be flacky here and there.  As above, the teleporter will switch to intrasim mode if the server is unavailable (and back again once connectivity is restored).  I've put in some connection resilency, but it may still be a little funky.  In particular, if you run multiple sims in F1 Internet mode on the same machine or on different machines behind a NAT device, you may see the connection come and go.

So, have fun.  Fire up a sim full of your best bots and give it a try!  Please report any and all bugs in the bug reports forum.  Questions and design comments are welcome on this thread.
Many beers....

Offline EricL

  • Administrator
  • Bot God
  • *****
  • Posts: 2266
    • View Profile
Changes 2.43 - 2.43.1d
« Reply #6 on: August 29, 2007, 08:28:09 PM »
I forgot one really important thing.  This version does not auto-create the subdirectories needed by F1 Internet mode.  

In the Transfers subdirectory of your DB install point, create a subdirectory named "F1".

In the F1 directory you just created,  create two more, one named "in" and one named "out".  

That's it.  You should be good to go!
Many beers....

Offline Numsgil

  • Administrator
  • Bot God
  • *****
  • Posts: 7691
    • View Profile
Changes 2.43 - 2.43.1d
« Reply #7 on: August 29, 2007, 11:32:20 PM »
I'll download it and try it out.  I'm curious what/where the server is/what  network topology you're using.  Is it a home computer with a static IP?  A rented server space?  Or some sort of peer-to-peer matcher?

Offline EricL

  • Administrator
  • Bot God
  • *****
  • Posts: 2266
    • View Profile
Changes 2.43 - 2.43.1d
« Reply #8 on: August 30, 2007, 12:36:03 AM »
Quote from: Numsgil
I'll download it and try it out.  I'm curious what/where the server is/what  network topology you're using.  Is it a home computer with a static IP?  A rented server space?  Or some sort of peer-to-peer matcher?
It's FTP based to a folder in the FTP share on darwinbots.com.  Not the most reliable thing in the world, but it works.  Sort of.  The account name and password are buried in the exe and not exposed in UI.  Soemone coudl sniff it, but it woudl be work.  We should probably create a specific share with separate credentials for this at some point.

Bascially, the teleporter spools to the local out directory.  Then every X cycles (X=100 unless cycles/sec > 5, then X=500) up to 10 .dbos are FTPed down from the server share to the local in directory where the are teleported in and then up to 10 .dbos in the local out directory are FTPed up.  There's some logic for reties and backoffs and deleting stuff non-transactionally.  Poor-mans client-server architecture....  but it should get through most firewalls and proxy servers....

Fixed a crashing bug just now.  2.43d coming within the hour...
Many beers....

Offline EricL

  • Administrator
  • Bot God
  • *****
  • Posts: 2266
    • View Profile
Changes 2.43 - 2.43.1d
« Reply #9 on: August 30, 2007, 01:24:07 AM »
2.43d Buddy Drop Download

Now silently creates local file system directories necessary for F1 internet mode.
Many beers....

Offline Numsgil

  • Administrator
  • Bot God
  • *****
  • Posts: 7691
    • View Profile
Changes 2.43 - 2.43.1d
« Reply #10 on: August 30, 2007, 04:09:07 AM »
The version I ran froze after about an hour.  Otherwise it worked fine, even with my less than reliable connection.

Unfortunately, our GoDaddy account only has one FTP name/password combination, so using this as a long term solution is out.  I was playing around with setting up a Database to handle internet sharing, and have a PHP form that the program silently fills out and submits to upload a bot, and a similar form that the program can use to request a bot to be downloaded.  I'm pretty sure it's possible, but I don't know enough PHP or SQL to work it out.

Offline EricL

  • Administrator
  • Bot God
  • *****
  • Posts: 2266
    • View Profile
Changes 2.43 - 2.43.1d
« Reply #11 on: August 30, 2007, 11:34:13 AM »
It would be lovely if we could use a folder the site can easily get to for future stats gathering and display on the site.  I'd like to have the sim drop population turd files that drive a stats page for a start.  Is there a possibility of getting accitional FTP accounts/credentials?  I'll pay for it if it's reasonable.

Failing that, I have a hosted FTP share we can move to for awhile.

I'd love to move to a real client-server architecture at some point, but if we write a server, we have to manage it.  The nice thing about file serving is that there is so little to go wrong server side...  You just have to work within the limited client-server semantics...
Many beers....

Offline Numsgil

  • Administrator
  • Bot God
  • *****
  • Posts: 7691
    • View Profile
Changes 2.43 - 2.43.1d
« Reply #12 on: August 30, 2007, 08:48:07 PM »
It all just comes down to money.  An actual server can be rather expensive.  Even just an FTP dump might run a little money.  I think the better solution is to find a way to hook up one of our 10 free SQL databases on the webspace to the program in some way.  After all, we're just looking for something to dump files into and out of.  PHP and SQL seem a fine solution for this.

This is alot of why I'm moving to .NET in the new version.  It has some very nice web interfacing controls.

Offline Testlund

  • Bot God
  • *****
  • Posts: 1573
    • View Profile
    • Games And Electronica
Changes 2.43 - 2.43.1d
« Reply #13 on: August 31, 2007, 12:37:25 PM »
Nice to see you back on this project again, Eric! I had no idea there were so much left to fix!

I'm sitting here thinking if I should go ahead and download the latest fix or wait until I've reached 50M cycles and then start a new sim with the best bots. I'm at 46716865 cycles right now, still running 2.43. Maybe loading a complete sim will break it in the latest version, because so much have been changed.

The new sysvars looks very cool! I'm thinking maybe the bots could evolve to use those in more ways than one.

 
"God is an ever receding pocket of scientific ignorence." - Neil DeGrasse Tyson

"God is a kid with an ant farm" - Constantine

Offline EricL

  • Administrator
  • Bot God
  • *****
  • Posts: 2266
    • View Profile
Changes 2.43 - 2.43.1d
« Reply #14 on: August 31, 2007, 03:31:29 PM »
Quote from: Testlund
Nice to see you back on this project again, Eric! I had no idea there were so much left to fix!

Nice to be back.  Not too much to fix, but lots of cool new features....  


Quote from: Testlund
I'm sitting here thinking if I should go ahead and download the latest fix or wait until I've reached 50M cycles and then start a new sim with the best bots. I'm at 46716865 cycles right now, still running 2.43. Maybe loading a complete sim will break it in the latest version, because so much have been changed.
I would be very surprised and disappointed (in myself) if 2.43d does not properly load and run your evo sim.  That would be called a bug.  I know of no post 2.43 changes that would impact the physics any evolved bots have come to rely upon....  Go ahead, give it a try.

Your gonna love F1 Internet mode....
Many beers....