Wilden Dawn

Basic elements

By Robin Dowling · a year ago

I have also added basic elements, eg oxygen, sulphur, carbon, chlorine, iron etc, as elements in the world.

These elements were then added randomly to each organism, as a chemical composition, which together with the other genetic attributes make the organisms' definitions even more complex and varied.

Each element has an assigned amount of energy, based on which element it is. The sum of all element energies is used to calculate the organism's energy.

They're all organisms

By Robin Dowling · a year ago

I didn't want to have separate definitions for plants and animals. Or for there to even be a notion of that. I wanted the evolution to come up with that on its own, if that was what were to be randomly evolved over time.

Instead I added an attribute for whether the organism was motile or not. Motile, as in able to move around on purpose. What really is the difference from a Venus flytrap and a "walking stick" Phasmid? In terms of genetics.

A lot, I'm sure. But in the end, there is no natural genetic flag for plant or animal. These are just interpretations made by us humans.

Either way, I made all organisms be the same, but with different genetics, the motile genetic marker carrying heavily in the taxonomy classification, effectively dividing motile (animals) and sessile (plants) organisms into two different taxonomy domains.

Genetics in code

By Robin Dowling · a year ago

So, how do you assign genetics to an organism in code? That's what I asked myself at first.

I created an Organism class, and added a few attributes that I believed the organisms in my world ought to have. Things that define them and propagate naturally to offspring.

Fuzzy values for max possible age, values for how likely the organism is to want to reproduce, given the right circumstances, the maximum number of offspring, its max theoretical mass and density.

Stuff like that.

Taxonomy summary

By Robin Dowling · a year ago

The taxonomy functionality organizes and classifies organisms into categories based entirely on their genetic composition.

  1. No pre-made assumptions. The system does not rely on any predefined species or groups. It doesn't assume anything about what an organism is or where it belongs in the biological hierarchy. Instead, it uses only the genetic information provided to determine the classification.
  2. Completely deterministic. The process is entirely predictable and consistent. If you give the same genetic composition to the system multiple times, it will always produce the same classification and associated traits. There is no randomness or subjective interpretation involved.
  3. Grouping by genetic patterns. The system analyzes the organism's genetic makeup and sorts it into the classic taxonomy levels of categories, from very broad groups (like domain) to highly specific ones (like species). These groupings are determined by patterns and variations found in the genetic data.
  4. No external definitions. The system doesn't rely on existing species or taxonomies, and classifies organisms purely based on the input genetic data.

In summary, the taxonomy classification classifies organisms objectively and deterministically, driven entirely by their genetic composition without relying on predefined categories or external assumptions.

Deterministic taxonomy based on genetics

By Robin Dowling · a year ago

Each simulated evolution begins with a random initial seed. I wanted to avoid any preconceived model of the world and its evolutionary processes. For this approach to succeed, the taxonomy classification needed to be a deterministic generalization of an organism's genetics across all taxonomic levels, from Domain to Species.

I began by constructing a new Taxonomy class that accepts an array of numbers, with each value representing a component of an organism's genetic makeup. This genetic array is then transformed and reduced at varying levels of precision corresponding to each taxonomic level.

Through extensive experimentation with precision settings and transformation methods, I tried to find the ideal balance, a sweet spot that would yield a reasonable distribution of species based on the diversity of randomly assigned genetics across all organisms.

This reduction process organized organisms not only into species groups but also into progressively fewer clusters of genus, family, order, class, phylum, kingdom, and domain, each level encompassing larger populations within its hierarchy. Importantly, all groupings remained deterministically derived from the randomly assigned genetic foundations.

Finding an equilibrium that effectively sorted the vast array of organisms with their uniquely individual genetic profiles into coherent groups turned out to be more challenging than expected.

I was committed to avoiding manual classifications or special cases. The solution needed to be universally applicable across all possible initial random seeds, relying only on the input genetics and the varying precision thresholds for each taxonomic level.

Ultimately, the solution emerged with elegant simplicity: just a few lines of mathematical expressions and carefully balanced weights.

A single Taxonomy algorithm capable of sorting and classifying any collection of organisms with randomly assigned compositions of genetics.

Emergence of new species

By Robin Dowling · a year ago

All species have the potential to evolve into new species. This isn't due to some inherent function designed for species evolution, but rather through random mutations in the genetic makeup of each newly born organism.

What we recognize as a species is essentially a generalization of individual genetic profiles, a shared abstraction among organisms whose genetics are sufficiently similar.

Mutations, in their role of creating new species, cause an organism's genetic profile to diverge enough that it no longer aligns with any previously classified species.

The organism naturally differs from others because of its distinct genetic composition. These differences manifest based on which genetic markers have mutated and to what degree.

Species, as a concept, is merely a label we as observers apply to organisms to categorize them and establish a framework for predicting their appearance and behavior. In the fundamental view of physics, we are all simply organisms with an extensive spectrum of genetic compositions.

This principle also forms the foundation of our evolution simulation.

More on this in the next post.

Genetics

By Robin Dowling · a year ago

As pretty and modularized and extendable as my species taxonomy code was, it was all backwards.

I was wrong in assigning taxonomy willy nilly. Taxonomy is not given to an organism in nature. It should instead be deterministically interpreted based on the organisms' genetics.

Given a set of genetics, an organism should inherently be classified as a given species.

An organism's species is not assigned somewhere in a natural database, it is deduced, based on something else. Species, and the full taxonomy of an organism, is not given to it at birth. It is simply a way of grouping organisms based on a shared, but extremely varied, chemical setup - genetics.

There is no notion of different species in nature. To nature, all organisms are simply organisms with different genetics. Different chemical compositions.

Although no two organisms will ever have an identical chemical composition, groups of organisms have a similar composition. Similar enough for them to look alike, and behave alike. For them to be able to produce viable offspring. For them to even be attracted to each other to be able to attempt reproduction in the first place.

What are species?

By Robin Dowling · a year ago

One of the first problems to solve was how to make different species.

What is a species, actually?

I had to read up on taxonomy, the study of grouping animals and plants. It's such an interesting read. I learned a lot about the history of taxonomy, all the way from Aristoteles, to Carl von Linné, to DNA sequencing.

Wrong path

Quite naively, I started building classes in javascript for all the levels of taxonomy. Domain, Kingdom, Phylum... all the way down to Genus ans finally Species, all extending their respective parent class. It was very neat and clean.

I then built an Organism class and assigned a taxonomy to a list of ~1000 randomly generated organisms, happy to see that each Organism had a full taxonomy dependency from Species up to Kingdom, all randomly assigned, while maintaining their hierarchal dependencies.

I was thinking of ways to transfer this transfer the taxonomy to an Organism's offspring, and how new species would evolve. It was pretty to see all these organisms with their assigned species. An ordered chaos following simple rules.

But it felt rigid. And wrong.

More in the next post.

Not replicating existing animals

By Robin Dowling · a year ago

I want the world and the evolution to be completely random, and not based on things we see in our own evolution. No giraffes, no hippos, cocker spaniels and no pterodactylus. I'm not replicating existing animals.

I'm actually not replicating the concept of animal either. The simulation simply features organisms with basic traits, and then the evolution itself takes care of the rest. If an organism evolves into something with a long neck that moves about on four long legs and consumes parts of another tall stationary organism, then I'm here for it.

An evolution in the simulation may very well produce something completely different, just as viable as a giraffe is in our evolution. That's what's so much fun about this. It makes no assumptions about what should happen. Things just happen because of logical behavior in a deterministic, but highly unpredictable, environment.

You may have theories about whether our universe is deterministic or not, and about the immense philosophical implications of both options.

So do I.

Object oriented programming in a functional era?

By Robin Dowling · a year ago

The components in the evolution simulation are built in an object oriented paradigm. I mean, what better use of object oriented programming than creating a world with a multitude of similar but individually unique entities?

All components of life in the simulation are based on a shared entity type, that holds id, energy, position and lite cycle.

The entity component itself builds on and basic energy component that controls different types of energy in each entity, eg chemical energy, kinetic energy, nuclear energy, thermal energy.

Higher ordinal components of life in the simulation, such as organism, basic elements and conditions are all based on the entity component.

This hierarchy makes it easy to manage all entities in the world, and have them existing on the same playing field, while giving some of them different characteristics and capabilities.

Nothing in this segmentation dictates species. Species are dictated entirely on genetics.

More on that later.