Framsticks Changelog

What's new in Framsticks 4.0

Feb 11, 2015
  • General: support for multi-threading; a few experiments have multi-threaded versions
  • General: 32-bit Mersenne twister used as a random number generator
  • General: files with genotypes, settings, scripts, 3D objects, etc., are now in the data subdirectory
  • General: genetic f0 support for Part shapes other than a ball: cuboids, cylinders and ellipsoids; examples added to theater in the genotype viewer (-g) mode
  • General: fixed enforcing states of channeled neuron outputs
  • General: when a genetic operation fails, more details are provided in the Geno's info field about reasons of failure
  • General: invalid genotypes resulting from f1 crossing over have a chance to be corrected
  • General: correction procedure for f1 genotypes properly handles whitespaces in the list of neuron inputs, and can correct more invalid cases: ,, and ,]
  • General: Added geometric properties of a Model (volume, surface area, sizes and orientation)
  • General: updated open source, including genetic converters and operators: the 3D turtle f9 encoding and a new Foraminifera fF encoding
  • General: The name of the Sf (Smell food) neuron changed to S1 (Smell population #1) and introduced neuron S0 (Smell population #0). See smell_0.neuro and smell_1.neuro
  • General: sources are now 32-bit and 64-bit compatible; linux and macos binaries are 64-bit
  • General: ParamInterface::load() warns on unknown fields while loading files
  • General: hundreds of other fixes and improvements
  • WinGUI: in wireframe display mode, Parts and Joints are shown as simple meshes, not just points and lines
  • WinGUI: the GUI no longer shows the total number of simulation steps. Instead, it shows "checkpoint data" for each thread, which, in case of the "standard" experiment, is the number of creature evaluations. Checkpoints may be defined in a different way in other experiment definitions, and may publish other kinds of data
  • WinGUI: hover mouse over the status line in the top right corner to see a summary of status fields for each simulator (thread)
  • WinGUI: updated toolbar icons and status labels
  • WinGUI: GUI and Theater are now high-DPI aware
  • WinGUI: "Body & brain" windows display "genotype"/"creature" text in their captions to reduce confusion on what they show
  • WinGUI: fixed file extension associations (.gen, .sim, .expt)
  • WinGUI: in the genotype edit window, the genotype is shown in bigger font when it is short
  • WinGUI: fixed displaying crossing over operations in the phylogenetic analysis window
  • WinGUI: added support for Unicode international characters
  • WinGUI: updated exporting world and creatures to POV-Ray
  • FramScript: new functions make old-style functions that used static gene pool/population/genotype/creature indexes obsolete
  • FramScript: new syntax for loops: for(elem in container) enumerates all elements of Vectors, GenePools, Populations, and other relevant objects
  • FramScript: var can be used inside the first for expression: for(var i=0;i

New in Framsticks 3.2 (Feb 11, 2015)

  • General: muscles encoded in a "new" way in f1 genotypes now behave as in "old" f1 (this concerns their default "power" and "range" properties)
  • General: warnings are displayed when properties are assigned values out of allowed range
  • General: minor improvement in the "add neuron" mutation in f1 (only affects the "N" neuron)
  • General: added options to control determinism in ODE simulation
  • General: a number of other improvements
  • WinGUI: the "Mutate" button in the Genotype window works again
  • WinGUI: continuous rotate works in the OpenGL body view (just like in the wireframe view)
  • WinGUI: fixed an extremely rare problem with the "FPS" choice listbox
  • FramScript: floating point notation with positive exponent now handles the "+" sign (you can write 1e5 or 1e+5)
  • FramScript: fixed break and continue that would not work in nested loops in some situations
  • FramScript: fixed Genotype.mutate() that did not work (regression caused by this change)
  • FramScript: fixed a bug in the Genotype-to-Model relationship
  • FramScript: the behavior of String.split and String.split2 is now consistent with the documentation
  • FramScript: three neurons with specific short names (*, |, @) can be accessed as neuadd_Constant, neuadd_Bend_muscle, and neuadd_Rotation_muscle
  • FramScript: constants in scripts have much higher precision when used in calculations
  • FramScript: files can be saved in subdirectories of the scripts_output directory
  • FramScript: goto no longer supported; it was dangerous in some cases
  • FramScript: added deepVectorCopy.script in the scripts_sample directory - an example code of vector "deep copy"
  • FramScript: fixed parsing "\\"
  • Server: extensions, fixes and improvements in the networking protocol

New in Framsticks 3.1 (Apr 17, 2012)

  • General:
  • fixed order of neural inputs in the f1 genetic encoding
  • fixed a rare hang-up in the "Inverse-proportionally to fitness" deletion method
  • mutated connection weights are unlimited (previously the range was -10..10) [source]
  • another approach to allowed ranges of mutated values (was: absorb, now: reflect) [source]
  • added new script: neuro_inspection.script, useful for analyses of selected neural states and NN dynamics in a creature
  • added new script: regular_shapes.script, generates sample shapes: truss, sponge, tower, grids and meshes
  • the Delay and Threshold neurons now accept any number of inputs
  • fixed extremely rare 'invalid write access' exception when a neural probe window was closed
  • in NN diagrams, non-default values of neural properties are displayed in tooltips
  • improved layout of NN diagrams
  • higher resolution panoramas in OpenGL views
  • Pulse neuron (impulse generator that supports randomness) added in the scripts_sample subdirectory
  • most neurons have dedicated symbols now (added symbols for Delay, Threshold and others)
  • new option to add Gaussian random noise to neural outputs
  • in settings files, GenotypeGroup and CreaturesGroup are now changed to GenePool and Population
  • 'boids.expdef' and the corresponding theater show now feature obstacle avoidance
  • a number of other improvements
  • WinGUI:
  • Signals view settings are now accessible from the context menu in the World window
  • fixed exporting to POV-Ray: it would crash when the "robot arm" was in use
  • when seeding population, names of genetic encodings are displayed
  • the FPS set in the "Artificial world" window is adjusted more accurately
  • FramsTheater: no longer displays unnecessary warning when a neuron is selected
  • in *.script files (a.k.a. macros), function main() should be used as an entry point. Free (outside of functions) code should be avoided to ensure compatibility with Framclipse
  • FramScript:
  • new UserScripts class allows to call any of the *.script macros
  • new classes: CreatureSettings and NeuronsSimEnabled
  • it is now possible to iterate all Dictionary keys and/or values. This feature was previously documented but not implemented
  • three new ways of accessing NeuroClass: NeuroClassLibrary.getClass(name), Neuro.classObject, NeuroDef.classObject
  • onKill() event names changed to onDied()
  • checking the genotype for errors in Geno and Genotype objects is now more consistent
  • occasionally, memory addresses of some variables were incorrectly displayed as 00000000 (it was rare and harmless)
  • improved detection of some types of errors in scripts
  • standard_loadsave.inc now much more versatile, can handle any number of gene pools and populations
  • users can now easily create custom icons for script neurons

New in Framsticks 3.0 (Apr 17, 2012)

  • General:
  • added another simulation engine - ODE - for accurate mechanical simulation
  • physical simulation can be disabled/enabled on a per-object basis (Population.bodysim and Creature.bodysim)
  • simple single-Part agents are now easier to handle using enhanced script Creature object: moveLocal and rotateLocal (manage agent movement in its local coordinates), and drive and localDrive (enforce constant speed bypassing physical simulation). Creature.orient, Creature.localToWorld, Creature.worldToLocal are available for more sophisticated uses
  • touch receptor (T) can now act as a proximity sensor in the Block world environment (previously it only handled the flat world). The detection range is adjustable. The change only affects the proximity aspect, touch detection works regardless of the environment. Custom sensors similar to T can be created using the enhanced WorldMap.intersect function (now it also returns the intersection distance)
  • self-collisions (within a creature body) can occur when using the ODE simulation engine. If enabled, creatures with self-colliding genotypes are not born, and others will have their sticks collide during lifespan
  • substantial extensions in the 'standard.expdef' - new options include multiple evaluation, logs with average and best fitness, stagnation detection with automatic stopping and saving best genotypes
  • added 'boids.expdef', a classic simulation of 3D flocking behavior
  • added 'learn_food.expdef', an experiment definition that illustrates lifetime knowledge sharing and its influence on finding resources and exploration/exploitation of the environment
  • added 'framsbots.expdef'
  • added brainSimplifier.script (a macro that removes all neurons that do not influence effectors in brains)
  • added new genotypes (models3d.gen file) converted from existing 3D objects
  • added 'Extended mutation info' parameter in Genetics: allows to store information about used mutation method (method ID or name) for each mutated genotype
  • fixed standard placement: creatures were shifted
  • new OpenGL style, spooksticks
  • new OpenGL style, standard-stress: shows stress on joints in MechaStick
  • in the 'standard' OpenGL style, creature names can be displayed near creatures ("Show names" option)
  • in the 'whitevoid' OpenGL style, options added to hide neurons, to adjust stick width and to show a plane of body symmetry
  • added Body disturbance and Initial movement parameters that can add random noise to creatures built (see Simulation parameters. Creature: Imperfection)
  • added Minimal joint length and Maximal joint length parameters (see Simulation parameters. Creature: Body constraints)
  • advanced mechanical simulation parameters added at World: ODE Parameters
  • in ODE, sticks can be boxes, not only cylinders
  • added countermeasures against "never steady" creatures: "Kill if no stabilization after" option and adjustable distance threshold in population settings
  • validation of f0 genetic encoding can fix too long joints
  • fixed genetic f0-->f0 conversion (last line of the source genotype was lost)
  • fixed revroulette method (influences Delete genotypes:Inverse-proportionally to fitness). Results were bogus in some situations and the program could hang up
  • adjustable neural network simulation speed (number of NN simulation steps per one mechanical simulation step)
  • separate "sampling period" setting for the stabilization phase
  • items found in the class browser search are now sorted alphabetically
  • high resolution timers used in all applications
  • lots of other improvements and fixes
  • WinGUI:
  • the manipulator in the wireframe view is drawn as a well-known "robot hand" again
  • better visualization of food items ("balls") and single-Part creatures (/*0*/p:) that were previously invisible
  • you can save all vector images (NN schema view, body view) as a vector SVG file
  • in the "Simulation Parameters" window, settings for similarity and neurons are moved to a new "Creature" group
  • fixed centering of all windows so that Windows task bar location and size is considered
  • fixed size of the tiny "up/down" controls in all parameter windows (could be too large if a specific font size was selected in Windows)
  • errors in f0 genotypes are no longer reported multiple times
  • handles any number of groups (gene pools, populations) properly
  • supports deleting any group (earlier: only the last group)
  • fixed crash when using manipulator and exporting frames to POV-Ray
  • new POV-Ray graphics style: 'ghost'
  • improved the 'autumn' POV-Ray graphics style
  • improved the 'wookie' POV-Ray graphics style
  • updated and added sample files to the distribution povray\ subdirectory
  • fixed POV-Ray export: joints (sticks) of specific orientation would disappear for some creatures
  • Signal object facilitates inter-creature communication. Can be used in NN control (see the fireflies.show and custom neurons: light.neuro and seelight.neuro) and in more sophisticated scripting (boids.expdef)
  • FramScript:
  • new classes for simplified 3D manipulation: XYZ (3D vector) and Orient (3D orientation matrix), see boids.expdef for a sample code
  • reference operator (&) enables passing variables "by reference". See Ref object for a sample code
  • onMouseClick/Move/Unclick handlers in the .show and .expdef scripts. See playwithfood.show for a sample code and explanation.
  • fixed a bug in small constant numbers - e.g. Simulator.print(0.000003) would output 3
  • new: estimation of bilateral symmetry of Models and Creatures - see the Symmetry class and calcSymmetry.script in the scripts subdirectory)
  • new class: Shapes, to define objects appearance in the "wireframe" view (see also springSticks.script in the scripts subdirectory)
  • new sample script that prints coordinates of Parts for all creatures (see the printCoords.script in the scripts subdirectory)
  • fixed bug in Neuro.fields for custom neurons (the most recently created instance of the neuron object could only be accessed)
  • added Simulator.eval(src) function which evaluates in runtime simple FramScript source code
  • added toString fields in Vector and Dictionary. You will see contents of these arrays when converting them to string
  • added Neuro.def, Neuro.joint, Neuro.part, MechJoint.part1, MechJoint.part2 fields (references to NeuroDef, MechJoint, MechPart)
  • added MechPart.vz
  • added Creature.index
  • added LiveLibrary.findCreatureAt(point,vector)
  • added GenMan.getSimplest(format), returns the simplest Geno for a given genetic encoding
  • added Simulator.beep(), Simulator.sleep(millis), Simulator.sound(Hz,millis)
  • new, more comprehensible collision masks (see Population.selfmask and Population.othermask)
  • collision masks can be changed during simulation
  • new on[GroupName]CrCollision event (called only once per creatures pair) - can be used instead of the old event (called for each pair of colliding sticks) to improve performance
  • added "neurons:" field in .expdef script files. This field specifies neurons to be loaded together with the experiment definition. This feature can be used for developing neurons relying on a specific experiment definition. The default value for the "neurons:" field (assumed when the field is not specified in expdef) is "std,*.neuro", which loads all standard neurons and all custom neurons from *.neuro files (as did all previous versions of Framsticks).
  • default values defined in expdef's properties (prop:...) and state variables (state:...) are no longer ignored
  • estimating (dis)similarity of Models moved from the GenMan class to the new Similarity class
  • added new formats for time (%t and %T) in class String. String.format("%t",Math.time) returns current time formatted like "Sun Apr 29 19:22:02 2007", while "%T" gives "2007-04-29 19:22:02"
  • added functions: Math.atan2(y,x), Math.pow(a,b), Math.min(x,y), Math.max(x,y) and Math.sign(value)
  • LiveLibrary, GenotypeLibrary, CreaturesGroup, GenotypeGroup have been renamed to Populations, GenePools, Population, and GenePool. Many other functions have also been renamed for consistency. See the 'rename.sh' script in the scripts_sample subdirectory if you need detailed information.
  • FramsTheater:
  • new menu and window system - no longer based on a context menu
  • 'Demo mode' - switch between shows at predefined intervals (usage: theater "ShowManager.switchmode=2;", see switchmode, switchtime, switchshows in the ShowManager class)
  • Framsticks Viewer is now included in the Framsticks Theater (see the -g switch). There is no separate "viewer" application
  • double right mouse click and shift+right mouse click can be used to access additional user actions
  • new, automatic control of simulation speed
  • added 'boids.show', a classic simulation of 3D flocking behavior
  • added 'fireflies.show', a simple example of inter-creature communication using custom neurons
  • added 'learn_food.show', a show that illustrates lifetime knowledge sharing and its influence on finding resources and exploration/exploitation of the environment
  • added 'framsbots.show'
  • added beat (sound) to the 'dance.show'
  • FramServer: Framsticks Server is no longer a separate application. The CLI (Command-line Interface) can act as a server, see the -n option
  • FramServer: added hierarchical and combined queries with the "+" sign, like
  • get /simulator({expdef,running},/populations/groups/+/creatures/+({name,energy},/(parts{x,y,z},joints{p1,p2})))
  • FramServer:
  • introduced version 4 of the server protocol and a new "request_id" command
  • no longer breaks large data chunks on Windows
  • other improvements and fixes
  • Web site:
  • New server, CMS-based site and forum
  • New movie: autumn style and rigid body simulation

New in Framsticks 2.11 (Apr 17, 2012)

  • General:
  • gravity can be adjusted (World parameters)
  • new option to prevent building a creature if its genotype is not entirely correct (Error reporting/Fail on warnings)
  • in all experiment definitions, new option to control initial orientation of newborn creatures
  • three new OpenGL styles (football, space and laboratory)
  • fixed an old problem with 3D objects disappearing occasionally in the OpenGL view
  • fixed (for compatibility) the neuroanalysis.expdef
  • fixed rare problem in neuroanalysis.expdef: square_root(small_negative_number)
  • fixed behavior of experiment definitions loaded one after another
  • added the "mazes" experiment definition to evaluate (and evolve) creatures moving between two specified points in a maze
  • added the "evolution demo" experiment definition that visually shows the mechanisms of evolution (selection, mutation, crossing over, fitness, optimization)
  • added the "text writer" experiment definition (as well as the fonts.gen file) to display moving texts built of letter-like creatures
  • defined default values for the most important simulator parameters
  • the simulator is now reset to its default state before changing or reloading experiment definitions and before loading experiments. A parameter in the Files section can be used to restore the old behavior. The simulator can also be reset to default on demand (from the GUI or script)
  • OpenGL standard.style sets brightness of creatures according to their energy level
  • OpenGL matrix.style assigns random colors to food pieces (depicted as computers)
  • fixed occasional "Invalid FP operation" bug when displaying creature models in OpenGL
  • fixed 'f0' mutation bug for "change part position" operation (it returned only -1..1 absolute coordinates)
  • fixed 'f0' rare mutation bug which caused an invalid memory access when the Joint was deleted from the Part-Joint-Part genotype
  • fixed 'f0' rare bug which might cause an invalid memory access when removing a neural connection
  • fixed 'f1' mutation parameters (probabilities for neural weights and neural properties were mixed)
  • neurons can now provide 2D drawings to illustrate how they work. This new 2D probe accompanies the standard signal-versus-time probe
  • forced (from genotype) initialization of neural state 's' for N and Nu neurons is now immediate (previously, the state has been initialized only after the neuron started working)
  • fixed bug in the Delay neuron (scripts/delay.neuro file)
  • fixed bugs in the experimental VEye neuron, and enhanced its capabilities
  • added an experimental visual-motor cortex ("VMotor") neuron for VEye
  • new, general-purpose "i" property in neural connection (available in f0)
  • mutation in 'f0' can respect the "delete inhibit" and "modify inhibit" tags in neural connections
  • command-line simulator fixed so that it stops when the experiment is finished (as in neuroanalysis.expdef and standard-eval.expdef)
  • performance sampling period is now strictly obeyed (previously, sampling periods could be shorter when the performance calculation was suspended and re-enabled during simulation)
  • random heightfield map now uses the whole available area (previously, it was clipped)
  • sample elevation maps added: heightfield_Europe.sim, heightfield_NAmerica.sim, heightfield_Moon.sim
  • new genotypes available in the *.gen files
  • this file (history) is now an XML file
  • type definition syntax for properties slightly changed: "type[subtype] min max default ~enum~..." instead of "type min max [subtype] ~enum~..."
  • internal windows (used by probes and charts) can no longer get lost outside of the visible area when the parent window shrinks
  • other improvements and fixes
  • FramScript:
  • nested functions are reported as errors
  • variable scope for declarations inside if/else/for/while is properly limited, which helps in detecting bugs like this: if (1) var x; x=3; (undefined variable 'x')
  • Simulator.load now resets the simulator state to default
  • Simulator.import does not switch the experiment definition unless the new flag (64) is used
  • Simulator.save and Simulator.export can be used in any context in the script, but are restricted to the "scripts_output" directory
  • Simulator.import's "flag" argument is now optional
  • Creature and Genotype event functions are no longer required to preserve values of LiveLibrary.creature and GenotypeLibrary.genotype; they are maintained automatically
  • fixed bug in object.[expression]=expression;
  • fixed usage of (object_expression) instead of (object_expression!=null) - which also fixes the Sf neuron
  • fixed bug in expression.member+=..., expression.member*=... etc.
  • added Neuro.fields which provides access to custom neuron fields in Creatures
  • scripting neurons have their default public fields set according to their extended "prop: type" value
  • new Model.numconnections field (analogous to Genotype.nncon)
  • neuron connection information and weights can be retrieved from NeuroDef objects (i.e. from the Model), see NeuroDef.getInput... methods
  • MechPart orientation available for scripting
  • String.split returns null for the null argument
  • scientific notation (1e23) is now supported in scripts and string-to-number conversions
  • hexadecimal notation (0x...) is recognized during string->integer conversion, as in x=1+"0xA"
  • Creature.rotate(rx,ry,rz) function added
  • Creature.buildproblems field added
  • "style" object renamed to "VisualStyle"
  • new *_model_update functions for *.style files
  • new field, VisualModel.color, can be used to paint the whole model
  • new fields: VisualModel.style, VisualModel.args, VisualModel.getArg can be used in *.style scripts
  • new field, VertexBuilder.twosided, to create two-sided polygons easier than with Material.disable(GL.CULL_FACE)
  • new functions in the Math object
  • new "creaturescircle.script" macro, which arranges living creatures in a circle, and puts the tallest in the middle
  • fixed problems with @include used in visual style subdirectories
  • fix: in script-defined neuron files, public and private fields can be declared in any order
  • WinGUI:
  • added an option to reduce the number of genotypes by identifying the best subset of representatives
  • the Body & Brain animations are no longer stopped when the simulation is running but stopped by some modal window
  • fixed occasional "Division by 0" bug when displaying hints for neurons in big neural networks
  • Each "Export current scene" for POV-Ray regenerates the world.inc file
  • added the 'povray' subdirectory with sample *.pov files and various rendering styles (standard, robot, planet, matrix, etc.)
  • new POV-Ray rendering styles: autumn (chestnuts and matches) and wookie (from Star Wars)
  • a message is displayed when trying to probe a non-living neuron (genotype-based instead of creature-based)
  • the 'scripts_output' subdirectory is automatically created during installation
  • FramsTheater:
  • added new "evolution demonstration" and "text writer" shows
  • the simulator state is reset to default before a new show is loaded
  • the new DynaChart2D class is available (for X/Y charts). See the reproduction.show for an example
  • all show definitions have been adjusted to use the new and safe Simulator.import instead of Simulator.load
  • the "Quit" menu item is automatically added if a show doesn't supply its own "quit" property
  • Documentation:
  • added the official Framsticks tutorial
  • added summary of all experiment definitions and their settings
  • enhanced FramScript classes documentation
  • Web site:
  • FramScript syntax highlighting configurations available for some editors
  • FramScript beautifier available

New in Framsticks 2.10 (Apr 17, 2012)

  • General:
  • muscles obey forced (neuroprobe) stimulation
  • OpenGL height field ground is now rendered properly (was shifted by one unit)
  • in 'standard.expdef', superfluous creatures/food items are removed following the population capacity value that has been set
  • added 'standard-eval.expdef', an experiment definition which accurately evaluates all loaded genotypes one by one
  • charts can be drawn in the 'reproduction.expdef' (added Simulator.checkpoint() call)
  • mutation in f0 can respect the new "delete inhibit" and "modify inhibit" tags which can be set individually for each Part, Joint and Neuro
  • crossing over in f0 preserves bodies when parent bodies are identical
  • camera rotation using mouse click fixed (would sometimes ignore mouse control)
  • "NN random initialization" parameter now really influences the initialization
  • added an experimental vector eye ("VEye") receptor
  • world size limit increased to 1000 units
  • other improvements and fixes
  • FramScript:
  • operators ++, --, +=, -=, *=, etc. work in all cases: with variables, object members and globals
  • more detailed runtime error reporting (null objects, field/function mistakes)
  • Vector.clear() and Dictionary.clear() bugs fixed
  • Dictionary.find(), Vector.find(), Vector.avg() and Vector.stdev() added
  • division by zero errors are handled by the Framsticks Virtual Machine now
  • renamed "cam" to "TrackingCam" (only affects the *.show files)
  • Simulator.autosave() name changed to Simulator.checkpoint() - used for performance sampling for charts, and for autosave
  • matrix.style rewritten using FramScript (FVM assembler was earlier used)
  • WinGUI:
  • fixed a bug when using manipulator intensively, which would sometimes cause an exception
  • teleportation is blocked while using manipulator on a creature
  • FramsTheater:
  • fixed a problem of retaining old show settings when a new show is selected
  • fixed a problem of disappearing "Visual style" submenu
  • more OpenGL visual styles
  • manipulator can be used to grab creatures
  • added the "dance", "race" and "touch of life" shows
  • "presentation" show instead of "walking" and "swimming" shows
  • "F" key can be used to display/hide the current frames per second rate
  • show improvements
  • Documentation:
  • attributes and functions are sorted alphabetically

New in Framsticks 2.9 (Apr 17, 2012)

  • General:
  • 'creation placement' option added in "standard.expdef" (possible values are 'Random' and 'Central')
  • "standard-tricks.expdef" file added as an example of advanced fitness customizations and forced creature movement
  • "standard-log.expdef": similarity reports and gene pool dump added
  • "standard-maze.expdef" file added as a sample of simple maze experiment
  • all *.gen files with genotypes are based on the Framsticks Experimentation Center checkout
  • connection weight for muscles is now effective, which may affect compatibility of some genotypes
  • muscle input signal is now reduced to the [-1,+1] interval (affects only rare input neurons with weight>1.0)
  • Genotype's "Copies" changed to "Instances" (better name)
  • statistics averages take into account the number of genotype instances now
  • OpenGL 3D large worlds are no longer clipped
  • OpenGL ground plane is rendered lower so that creatures are more visible
  • in OpenGL styles with dedicated subdirectories, the style file name must be "this.style"
  • improved generic mutation procedure for integer and floating point properties
  • fixed a bug in mutation of integer neuron properties (which caused "Invalid FP operation" message)
  • f0 mutation will not add parallel neuron connections now
  • f1 proportional crossover redesigned: preserves the number of parent neurons in children
  • f4 mutation probabilities are now more clear and user-friendly
  • new, general-purpose "i" property in Part, Joint and Neuro objects (available in f0 and scripting)
  • "M"-type map allows for more flexible world heights definition
  • bug fixed (genetic operations referring to the scripting neurons)
  • Vstyle can be changed after the creature is built (but before it is displayed)
  • #include "filename" can be used in any framsticks format files (gen, sim, expt, expdef, etc.)
  • genotype user1/2/3 fields are no longer skipped when reading files
  • NN layout function improved
  • Class Browser provides more detailed information about functions and object fields
  • beautified all FramScript source files
  • other improvements and fixes
  • FramScript:
  • @include "filename" available
  • new operators: % (modulo), > (shift right)
  • do...while loop available
  • fixed the "return inside switch" bug
  • (object_expression) can be used instead of (object_expression!=null)
  • ClassName.* notation introduced for static object references
  • added function references ("call" and "function" operators)
  • pointers to functions available
  • access to Simulator.time added
  • neuron definitions can be reloaded
  • files can appear immediately, without closing the File object (File.createDirect/appendDirect/flush)
  • numerous extensions of classes (Creature, Geno, Model, File, String, and many others)
  • File.createDirect(...) allows to save directly to a file within the "scripts_output" subdirectory
  • advanced random generators available in the Math object
  • Dictionary object fixed
  • functions can have multiple names ("function a,b,c()")
  • UserEvents are now in FramScript - no VM assembler (see scripts/standard_events.inc)
  • senseCreaturesProperty can be used for Vectors (eg. "user1[7]")
  • Genotype 'user' field values handled properly when operating on Genotype
  • new "onUpdate" events (analogous to onKill and onBorn events)
  • better protection against some programming errors
  • WinGUI:
  • improved program behavior when it is invoked from another directory
  • performances of individuals are now refreshed for all populations
  • performances of individuals can be sorted
  • the number of genotype instances is now reported in the caption of the gene pools window
  • when resizing columns, all groups (gene pools/populations) are affected now
  • added the "Console" window for entering FramScript commands directly
  • keyboard shortcuts can now be used to show/hide windows
  • simulator statistics charts added
  • simulation speed can be limited by the frames-per-second setting in the World window
  • added "Save" button for "memory files" generated by Framsticks in runtime
  • performance charts can be cleared
  • selecting individual Parts is now supported in Body&Brain windows, and mapping to corresponding genes is handled
  • FramsView:
  • more command-line arguments, including many visual style options
  • FramsTheater:
  • first official release!
  • Documentation:
  • numerous updates
  • introduced argument names and types for procedure calls
  • Web site:
  • numerous updates
  • new "blocks-style" movie

New in Framsticks 2.8 (Apr 17, 2012)

  • the Messages window is cleared every 500 messages
  • fixed exporting of the World window OpenGL images
  • when any of the world scene exports is enabled, "[exporting]" appears in the title bar
  • improved f0 crossing over for f0 genotypes with relative ("delta") joints
  • f0 crossing over now tries to repair offspring with exceeded maximal joint length
  • beautified all genotypes in .gen files
  • added "Validate" GUI command for genotypes (forces genotype validation; should not be generally needed)
  • mouse wheel and middle-button drag control zoom in FramsView
  • Ctrl-C and Ctrl-Break are handled in scripts (onBreak) and command-line ("simulate until interrupt")
  • fixed the \" problem in the FramScript compiler
  • improved handling of global variables in FramScript
  • added unary minus operator in FramScript
  • added String.format function in FramScript (works like sprintf())
  • fixed bug in Math.time under MS Windows (was going in reverse direction)
  • fixed "save file" ("sa") bug in command-line
  • new version of Framsticks Experimentation Center (FEC) site available
  • Framsticks_Manual.pdf available, containing the most important HTML reference pages
  • new movie available on the web site (fuzzy control)
  • web site and documentation updates
  • many other improvements

New in Framsticks 2.7 (Apr 17, 2012)

  • fixed displaying "user fields" in genotypes
  • ChMux (channel multiplexer) neuron fix
  • ChMux_Test source added as an example ("chmux.neuro" file)
  • neural network drawing can be configured in Body windows (none/neurons only/full)
  • "standard-log.expdef" file added as an example (logs all genetic operations)
  • fixed different green OpenGL textures for different stick assimilation levels
  • added toHTMLshort action in GenMan (returns a shortened genotype as colored HTML)
  • added more detailed descriptions for neurons
  • other improvements and fixes

New in Framsticks 2.6 (Apr 17, 2012)

  • fixed syntax problem with unknown ID while rendering some *.pov files
  • fixed invalid memory access when enabling POV-Ray export
  • fixed "matrix" OpenGL style
  • added FramScript documentation (contexts, classes, ...)
  • "arena" and "matrix" OpenGL style source files translated from FVM assembler to FramScript
  • improved refreshing gene pool data in some cases
  • other improvements and fixes