Code center > Bugs and fixes

Changes 2.43 - 2.43.1d

(1/13) > >>

EricL:
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

EricL:
Bump.  2.43a released.

EricL:
Bump.   Version 2.43b released.

2.43b Buddy Drop Download

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.
--- End quote ---

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.

EricL:

--- 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.
--- End quote ---

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.

--- End quote ---
Not currently.  It mearly records the virus length.  I could add it if there is interest.

Navigation

[0] Message Index

[#] Next page

Go to full version