Program Group: GSaLife.86g Name: Glabrous slyme Prototype (Pseudonym for cyberCritter) Author: Ronald Bynoe Version: 14.17.48.01 (to date.) Machine: TI-86 Language: Basic Size: 14652b (on the calculator, about) Date: 01/04/7D0 Readme #6.8 ========================== PLEASE NOTE: This is a pre-release informational text. The program is written, I am currently putting the final touches on it. If you downloaded this off of ticalc.org please tell me what you think of the idea. I will be uploading the program in Feburary. This is not intended to be used as a readme file, rather it should be used as a guide to creating artificial life programs. Historically A-Life has been restricted to mimicking our perception of the world around us, also generally AI has been either ignored, or put in as a token effort. I hope to remedy these two flaws in A-Life and AI by merging the two seamlessly into a new type of IRL emulation: Synthetic Environmental Creation. A programming type where a complete artificial environment is created as accurately as possible, and a critter, or several are placed in this synthetic environment and allowed to "live." This SEC development will encompass the whole range of animal behavior, and some specifically human traits as well, such as emotions, instincts, biological structuring, and most of all, inference intuition and thought. SEC is also based on the law of biogenesis and is written from the view of a Creationist. ================================================================ OVERVIEW: This program started out as just a test, but now has grown into a full-blown A-Life experiment! The program is based on the List GENOME, in it is all the information about the world, the critter, and the critter's state. the first 16 or so elements are restricted to use as the critter's genetic code, (with the exceptions of Genomes 8 & 9) I like to view the genetic code as follows: Each List element is a gene, each gene is made up of a value which is a chromosome that determines something, and each chromosome is made-up of codon sets and/or nucleotide sequences, usually 3 (like real DNA). So far though, I have only converted the Gender gene into this format, it is stored in chromosomes, for more information see the "GENDER DESCRIPTION" part of this document. My next project (after completing the breed function) will be to convert the color variables from getky codes into nucleotides. For an example, the color "red" is currently stored as "83" the getky code for "R" standing for "RED". I wish to change this to, say, 111, which in turn would stand for say, Thymine/Cytosine/Thymine, or even more specific, the amino acid that codes for the red color would be arginine. See my color section for more detailed color information. ============ BASES: ============ Guanine=0 Cytosine=1 Adenine=0 Thymine=1 Uracil=0 0-Guanine---Cytosine-1 1-Cytosine--Guanine-0 0-Adenine---Thymine-1 1-Thymine---Uracil-0 The first digit of a codon that is a #1 will be Thymine. The second digit of a codon that is a #1 will be Cytosine. The third digit of a codon that is a #1 will be Thymine again. The first digit of a codon that is a #0 will be Adenine. The second digit of a codon that is a #0 will be Guanine. The third digit of a codon that is a #0 will be Adenine again. Each digit is one nucleotide. each codon (or triplet) is made up of three nucleotides. Each chromosome is made up of one codon. Each ribosome is made up of two chromosomes. mRNA=GENOME(15) ================================================================ THE GENOME LIST: Genome is stored in a List: Version: 14.16.48.01 GENOME(1): Gender: Drone (Sterile), Male, Female {0.1,1.0,1.1} GENOME(2): Dominant Color: Red, Yellow, Blue, White see "COLOR SCHEME" {83(111),102(110),52(101),94(010)} GENOME(3): Recessive Color: red, yellow, blue, white {111,110,101,010} GENOME(4): Dominant Size: Now used to modify GENOME(14) Health is partially determined by over/underweightness. overweight is worse then under weight. {Random or user defined} GENOME(5): Recessive Size: See above, slightly less subtraction than the Dominant Size. {Random or user defined} GENOME(6): Dominant Texture: Smooth, Rippled, ?? {84,64,??} GENOME(7): Recessive Texture: smooth, rippled, ?? {84,64,??} GENOME(8): X Position, shows where on the world grid the critter is at. {starts as 0 changes as critter moves.} GENOME(9): Y Position, see above. X axis, Y axis. {starts as 0 changes as critter moves.} GENOME(10): Lifespan: user defined (should be >= 125 for best performance, but must be <210} GENOME(11): UserProof {allowed beats to be skipped before death} {usually==4} GENOME(12): UserProof {strength of organ; number of tries to get a glitch worked out before sent to organ} {usually==5} GENOME(13): UserProof {defines late middle age; weakens organ by one or two beat(s) GENOME(12)} {usually==45} GENOME(14): Health, composed of different genetic makeups, mainly UserProof but if "+" sign is hit, the proto-critter is fed +19 points. Every contraction requires -5 and every relaxation of the muscles adds +4, thus it must be fed (although death would probably occur after normal Lifespan has expired. Also, each beat -.2 energy and every skipped beat is -15 or -10 energy.) GENOME(15): UserProof: A Back-up of the Health gene (see above GENOME(14)). Used in reset function in the menu Gene, Reset. See menu map below. GENOME(16): UserProof: The STOP codon, signals end of Critter genetic code. fpart is a generation counter. {100110101.X Where X is the # of Generations, begins with 1.} GENOME(17) Tells the program whether or not to detect a saved game state in fStat. {1 is yes to save game, 0 is no to save game} GENOME(18) N/A (move info to start here? or move everything from GENOME(16) up one and add a max lowest/highest health level gene) ================================================================ VERSION # DECODED: The version number is defined as follows: number of programs. number of genes. size of GSßBody as in Version: 11.14.24.06 That means that this older version of proto-Critter has 11 programs in it, 14 genes, and GSßBody is 2,406 bytes. Note that if GSßBody size is > a two digit number, it is separated by a "." so thus "2,406" bytes is converted into "24.06". Please note: Early versions of my program used the entire on-calc group as the last 2 digit sections of the version #, thus a version # of: 11.13.64.47 would mean a version that has 11 programs, 13 genes, and a total group size of 6,447 bytes in it. ================================================================ COLOR SCHEME: GENOME(2) is the dominant color register, any value stored in it is automatically considered first (D). GENOME(3) is the recessive color register, any value in it is recessive (r). These two Genes, along with others give my critter's DNA a "diploid" make-up rather than a "haploid" one, if this means nothing to you then ignore it. :) As well as there being dominant/recessive gene markers, certain genes in those are pre-disposed to certain traits. They are as follows: 83==red--dominant by nature 102=yellow--dominant by nature 52==blue--dominant by nature 94==white (no pigment)--recessive by nature As well as the above, the color mixes are as follows (note: if the color begins with a capital letter it is assumed that the color is in the Dominant genome, and if it is lower case it is assumed that it is in the recessive genome. And the Dominant one is always placed first unless stated otherwise) Please understand that although many colors can be shown, they do nothing for the program, and are just for displaying a friendlier code for people, and to prepare for it's being ported to C++ and using full color sprites. :) Total possible colors: 13 Total possible 1st generation colors: 9 All possible 1st generation color combinations: Red+red=RED (Pure) Red+white=red (impure) Red+blue=purple (phase 1) Red+yellow=orange (phase 1) Blue+blue=BLUE (Pure) Blue+white=blue (impure) Blue+red=purple (phase 2) Blue+yellow=green (phase 1) Yellow+yellow=YELLOW (Pure) Yellow+white=yellow (impure) Yellow+red=orange (phase 2) Yellow+blue=green (phase 2) All possible IN-BRED color combinations: all above white+red=pink (impure) white+blue=sky blue (impure) white+yellow=cream (impure) white+white=albino (a rare unstable impure mutation) All impure colors are bad, an albino cannot breed a Dominant color back into the Dominant slot, thus it would be a hereditary disorder. I haven't made it do anything bad yet. Whenever white is in the dominant position, all chromosomes are recessive and when a critter with white in GENOME(2) is breed with any other critter, the white one is automatically overwritten because it is the only chromosome that is always recessive. I am soon going to change these getky code representations to real codon sets based on my overview above. When I am done with them, the colors will be coded as follows: each codon will code for one color. The ribosome will contain two codons (chromosomes or dDNA triplets) the first will be for the dominant color, the second will be for the recessive color, they will be separated by a "." decimal point. All possible codons: color name codon: binary representation-nucleotides--amino acid Red codon: 111-TCT--arginine Blue codon: 101-TAC--methionine Yellow codon: 110-TCA--serine white codon: 010-ATG--tyrosine novalue codon: 001-AGT--serine---------possibly mut. brown. novalue codon(2): 100-TAG--isoleucine--possibly mut. black. dead codon: 000-AGA--Serine STOP codon: 011-ATC--STOP codon ================================================================ GENDER DESCRIPTION: The gender is evaluated as follows: the X chromosome is defined as either 001 or .100 (1, .1) the Y chromosome is defined as either 000 or .000 (0, .0) thus a male (XY) would be stored as (001.000 or just 1) and a female (XX) would be stored as (001.100) A mutant from a mistake in genetic transfer could be (YX) or (000.100 or simply .1) or (YY) or (000.000) but (YY) can't work yet, only in theory (try 0.0 on your calculator, it just gives you 0.) ================================================================ INCLUDE PROGRAMS: The only run-able program is GSßBody.86p!!!!! "(NSAP)==can Not be a Stand Alone Program" #) name--------size in bytes--description. 1) GSßBody-----3764--Main program, runs all the others. Also known as simply "the program", all references to "the program" refer to all 15 of them working together. (SA) 2) GSßInfo-----480---Displays the Genetic code when "2" or "TEST" is pushed. (SA) 3) GSßMove-----1300--Moves the critter one movement per beat. (NSAP) 4) GSßInner----341---Contracts the inner muscle. (NSAP) 5) GSßOuter----394---Contracts the two outer muscles. (NSAP) 6) GSßBoom-----253---End of life of critter (reason: natural causes). (NSAP) 7) GSßBOOM-----260---End of life of critter (reason: skipped too many beats). (NSAP) 8) GSßboom-----257---End of life of critter (reason: lack of energy). (NSAP) 9) GSßBeat-----336---Beats the organ once. (NSAP) 10) Genome-----2887--Displays the genome string in english. (useless as a SA) 11) GSßSkip-----138---Skips the Inner muscle once. (NSAP) 12) GSßSKIP-----136---Skips the Outer two muscles. (NSAP) 13) dDNA--------1036---Creates a semi-random genetic code. (SA) 14) dDNAedit----1976--Allows the user to create their own genetic code. (SA) 15) GSßBreed----1094--Allows two calculators to "breed" their genetic codes to produce a unique, yet similar offspring using many Punnett (spell check) squares which replaces the calculator with the female GENOME (kinda like dying in childbirth). (SAish) CREATED/ USED VARIABLES: 1)GSßV----33----String of the current version of the program, created when it is run. 2)GENOME--164---List containing the genome. 3)fStat---64----Stores temp vars in Q/Sve. ================================================================ MOVEMENT ICONS: This will tell you what the different icons in the bottom left hand corner of the action box represent. <- is moving West -> is moving East (up arrow) is moving North (Down arrow) is moving South <-(up) is moving north/west ->(up) is moving north/east <-(down) is moving south/west ->(down) is moving south/east (filled box) is staying stationary (no energy consumed) * is stationary eating (+19 energy) + is stationary eating (+24 energy) ================================================================ MENU MAP: The menus are as follows: Start: begin running program, doesn't work until a gene is created. If it detects a saved simulation it will bring you to a "load" screen. Gene: brings you to sub menu New: user defined genome Reset: Replaces GENOME(14) with GENOME(15) thus restoring the critter's health, to where it was when the sim was started. Also resets X axis and Y axis, GENOME(8) and GENOME(9). BACK: previous menu Breed: Transfer genetic information between 2 calculators Auto: semi-rand gene (faster than New) View: displays raw genetic information in the form of: Gene element # Gene Value Help: Brings the user to a two page short introduction, and instruction section. Con't: Continue a saved game (see below, unfortunately cleared graph screen messes this up, and I have no room left on my calc to store a pic!) Quit: Brings you to a sub-menu/prompt: SAVE: Quit and save temp. variables so game can be "Continued". Back: Go back to the main menu without quiting. QUIT: Quit without saving. (deletes all vars 'I think'. Saves mem on very full calc!) Exit key will exit any operation and either bring you to main menu or previous operation (as in displaying the genes) Unless you are in a menu or at a pause/prompt. Once it is running, you don't really do anything yet. ------------------------------------------ CORRECTION: ------------------------------------------ You now push + to "feed" it. ooh, wow! ;) * You can push 2 (TEST) to display GENOME and then Con't to return to the program. Start will auto detect saved sims as well. * 11/15/99: You can also go into the "Gene" sub-menu, create "new", for the age type in: 122082 (my b-day) and continue as usual, then press "start." This cheat is great for beta testing. * In the "Gene" sub-menu in gender, pressing the 5th element will create a sterile, drone critter. Although I don't know why you'd want to... * In the "Gene", "New" sub-menu in "color define" (#1) the 4th element is "white" in the Dominant position, and in color (#2) the 5th element is "white" in the recessive position. ================================================================ ERR MENU: A relatively new feature I have decided to implement is a "line 7 error." In it the program will attempt to tell you why it wont let you do something, or what you did wrong. Albeit this is not much more helpful, or even less so than TI's own error system, it seemed necessary because several things can go wrong with program execution at a given place, in this section I will give the err numbers, the given message, approximate place where the error may occur, and a better reason than the one liner that the program gives you. Err #: "calc description"--program found in--detailed description. 01: "Not implemented."--GSßBody--This function has not been added to the program yet, or has been added, but not finished. 02: "* Insufficient DNA. *"--GSßBody--this error shows that either the data stored in GENOME is not enough elements long, or some of the information is invalid, you usually get this when you try "Start" or "Load" with an hand edited GENOME or one that has been used before incorrectly. 03: "Detected: Saved Sim."--GSßBody--When you try pressing "Start" and the program detects information that could be from a previous critter, it will ask you what to do, this is a good safety feature so you don't accidentally overwrite that "special" critter. :) 04: "Gene Not Supported"--dDNAedit--you entered a value for creating a GENOME(x) that is outrageous, or would allow you to "cheat". 05: "No sex change!"--GSßBreed--It may sound bad, but what it's saying is that you are attempting to breed two calcs w/the same gender (i.e. Male with a Male) or with a mutant that is sterile. 06: N/A (Error Version perhaps? Signals your GENOME is too old, or that you are running mismatched program sets?) ================================================================ SCREEN MAP: The upper left hand portion of the screen is the Gene viewer, it displays a simplified representation of GENOME. The upper right hand portion of the screen is the Monitor window, from it you can see the total beats, total skipped beats, title, and the current state of the muscles. The lower portion of the screen is the Action Box, and as it's name implies, it shows the action of the critter. It displays the health of the critter in it's top left corner, it's position in it's bottom left corner, an "easter egg" in it's lower middle portion, and a little metronome in the left center. ================================================================ BACKGROUND: about the lame name. I needed an operating name so I chose Glabrous slyme, it will be a good description of it when completed (look it up), maybe I'll keep it as the scientific name or something. My brother suggested a more user friendly name so I gave it the common name of CyberCritter or something, it's not set in stone yet. The Greek "ß" (beta) in the name of all the include programs signifies beta even though this is really alpha software (This is shown in the program comments but the comments also denote that this is GSaLife, or Artificial-Life). My software company will be called Amega Software or CyberGenesis Productions. I need a graphics designer, ASM programmer, and someone in AP biology. Also many debuggers, an HTML author, and "constructive" criticism! :) ================================================================ FUTURE: *Energy, (mostly done) spent with movements and beating muscle (e-mail for sketch of critter), replenished with food like in Bug 'Fest. *Graphics, well ok, not so soon. *More genes, current genes activated. (size genes completed: 9/2/99) (shape genes removed, position genes activated: 9/21/99) *More fun, user interaction. *Chemicals, for food, and dDNA construction. *Change genes from numbers to actual chemicals. (obviously relies on above!) *GENOME List encryption, not necessary, but nice, at least should store the genes and chromosomes as codon sets, like the gender ones so far. *All current programs combined into one master one! *Optimizing the speed of execution. (currently one one beat (approx)=2.4² sec.) *Optimize the size of the programs! 14k+ is too much!! *A readable readme file!! (*nudges* Ryan P.) *Artificial Intelligence. Would have a field of vision that would let it see the "fixed point" food cells. It would move towards food based on how hungry it is, maybe add emotions? *Add a breed over the link cable function (program started as of 10/4/99, just haven't finished it yet) It would be added to the "Gene" sub menu, 4th slot. *Create Lite version, all programs in one large one, remove dDNAedit, GSßInfo, and use DelReals instead of DelVar(. Then use Zip86 to shrink it more. *Combine GENOME(2) &(3), and GENOME(4) & (5), (6) & (7), and (8) & (9). *Create emotion state gene. based on the critter's health level, atrophy gene (yet to be decided upon), and maybe more I hope. (emotion will be rated on a parabola: vertex=(110,1) y-int=(0,0), x-int=(250,0) it is a frown, 1 is maximum happy, 0 is very depressed. .5 is complacent sad=X<.5