- Core War
- Programming Games
- Darwin
The first known predatory self-replicating organisms never found their way out of the confines of the unwieldy IBM 7090 mainframe computer in the bowels of AT&T's Bell Labs in New Jersey. These beasts were the digital warriors in a gladiatorial game called Darwin.”
Levy, Steven. Artificial Life: The Quest for a New Creation 1992.
Darwin is a programming game invented by Victor Vyssotsky in August 1961. The initial version was implemented by Douglas McIlroy on an IBM 7090 at Bell Labs. The aim of the game is to write a program to eliminate all opponents and be the most prolific replicator.
Specification
Programs are loaded into an area of memory known as the arena. Each species has a defined starting point and a number of protected locations. The smallest species has the advantage of running first. Darwin's Umpire provides functions to probe memory, reserve memory and kill opponents. Functions are called with an address and the identity of the calling species. If the address is protected, control transfers to the program at address.
Function | Description |
---|---|
probe(address,id) | Return the start/end of the memory block at address and the identity of its owner |
claim(address,id) | Reserve memory at address. Must be preceded by a probe |
kill(address,id) | Deletes the program at address. Must be preceded by a probe |
The complete specification is available in Darwin, a Game of Survival of the Fittest among Programs [mirror]. Details are also available for the ISU Darwin System.
History
Several rounds of Darwin were played between Douglas McIlroy, Robert Morris and Victor Vyssotsky. The smallest program which could replicate, find and kill opponents was about 30 instructions. Douglas McIlroy invented an immortal program in 15 instructions which could find and kill but wasn't capable of reproducing.
Robert Morris created the program which ultimately won the game, a 44 instruction program with an adaptive strategy. When Morris's program found the top of an opponent it probed a small distance inside. If it found an unprotected location the same distance would be used in future. Otherwise it would choose a new distance.
Ten years later McIlroy wrote to ℵ0 who implemented his own Umpire on the Atlas Titan at Cambridge University. ℵ0 went on to write the first published description of Darwin in the Computer Recreations column of Software — Practice & Experience. The article inspired a number of Darwin systems including one implemented by Charles T Wright on an IBM System/360 at Iowa State University.
Software
Two versions of Darwin by Gerald A Edgar are available, DARWIN80 for Z80 CP/M systems and DARWIN68K for the Apple Mac. DARWIN80 was implemented in 1983 and updated to version 1.3 for publication in Computer Language. An x86_64 version of Darwin was released by Chen Steenvoorden in 2019.
- DARWIN80 1.3 (7 March 1985) - umpire.txt
- DARWIN68K 0.3 (16 April 1987) - darwin.dsk, Darwin_Umpire_0.3.sit manual
- Darwin x86 (23 June 2019) - darwin-x86.zip
Organisms
- Mole and Swiftie are available for DARWIN80.
- Mole is available for DARWIN68K.
- Mole and Kill are available for Darwin x86.
References
- Darwin: A Game of Survival and (Hopefully) Evolution. New Jersey: Bell Telephone Laboratories, 1961.
- Software — Practice and Experience 2 (Jan-Mar 1972): 93–96. . "Computer Recreations: Darwin."
- Computer Lib / Dream Machines. Self-published, 1974. 49. "Survival of the Fittest."
- The CoEvolution Quarterly. (Summer 1975): 141. "Survival of the Fittest."
- Scientific American (May 1984): 14–22. "Computer Recreations: In a game called core war hostile programs engage in a battle of bits."
- Computer Language (Apr 1987): 79–86. "Darwin: A survival game for programmers."
- Artificial Life: The Quest for a New Creation. New York: Pantheon Books, 1992. 317–319. .
- I might be old enough to have played DARWIN. Usenet newsgroup rec.games.corewar, 5 Nov 1998. .