Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
Tags

DonaldKronos

29
Posts
A member registered May 27, 2018

Recent community posts

Here's another article on the subject, which goes into more detail. https://forum.unity.com/threads/the-truth-about-fixedupdate.231637/

According to what I gather from the discussion at https://stackoverflow.com/questions/41063608/why-are-computer-game-physics-engin... it appears that Unity would be deterministic within a given installation if time is calculated within the program without reference to real time. That is, because background processes may cause the computer used to take a different amount of time to do the same thing on different occasions, synchronizing Unity to the actual time can cause velocity calculations to give different results in otherwise identical situations.

"The part that is not under my control is Unity’s physics system, which could have something to do with the issue."

Yes, Unity's physics engine is not deterministic. That would be the source of the behavioral not being deterministic since the behavior is dependent not only on the neural network but on the inputs to the neural network which in this case may vary from one run to another due to the physic engine not being deterministic.  Personally, I like it that way, because it gives us a look at how the neural network reacts, rather than simply how it once reacted.

How about negative fitness scores? For example, if a movement of +x counts as 100% fitness, then a movement of -x would count at -100% fitness. It appears this is already being done internally, but simply not displayed. This would allow creatures which move in the wrong direction to still be compared, so that badly wrong could be distinguished from slightly wrong.

Hey, Keiwan... How about a feature to ignore the first second or the first n seconds of the simulation with regard to the fitness criteria? 

In other words, the recorded starting position or other condition with which to compare for fitness calculations would be reset for each member of a batch (or generation) after the chosen number of seconds, one time, to reflect the creature's position or state at that time rather than what it was set to at the beginning of the simulation. This would eliminate (or at least partially eliminate) things like scoring an immediate fall to the right as good running skills, since the fall would generally happen in the first second or two. The setting could default to 1 except when the time per batch is set to 1 second (or less) in which case it would be turned off (set to zero). It could be changed from the Pause screen to any non-negative number which is smaller than the number of seconds per batch.

Actually, Keiwan, if you started with a set of possible inputs for all modes and then simply didn't bother to stimulate the inputs that have no value in a given task mode, it should be possible to have the neural network learn any of the tasks with the same basic configuration. Also, adding the fitness criteria as an input would allow the creature's neural network to evolve the ability to incorporate that input and in a sense be able to switch between learned tasks. Adding another input (or inputs) that categorizes or somehow "describe" the environment or elements of the environment, would allow the neural network evolution to also evolve accommodation for applying the same fitness criterion to different environments.

Allow selection of fitness environment and fitness criteria in various combinations. For example, running criteria (movement to the right) in the climbing environment. (Which might just already be measuring movement to the right, but it what the only example I could think of while making a video and thinking about other things and reading what I'm writing at the same time so that my video will hopefully be more interesting.)

Ability to inhibit mutation of certain parts of a creature, so that evolving structure from generation to generation would not involve mutating those specific features. This would not limit gene exchange when producing offspring.

Ability to lock parts of the neural network, so that mutations will not occur in those specific neural network locations. This would not limit gene exchange when producing offspring.

Environment viscosity, to enable flight or swimming. That is, add optional simulation of air or water or whatever "substance" one might consider the creatures to be moving inside of. A viscosity setting could allow adjustment of such simulated substance to act as air or water or perhaps even something like tar or quicksand.

Gravity adjustment and/or other environment adjustments.

I'm suggesting the use of the term "evolation", as an extension of the family of words including "simulation" and "emulation". The word "evolation" is formed from "evo" used as a prefix and "lation" meaning local motion or local disturbance and indicating a local system of change. Indicating a system of evolutionary relation as conforming to, generated by, or viewed from the perspective of local conditions.

(to meynckens.paul) Me too. (I also agree.)

Suggestion: GROSS MUTATIONS --- This is mainly meant as an extension to my BODY EVOLUTION suggestion, but could be implemented with or without it... although it wouldn't make nearly as much sense without it. The idea is that is bodies were inherited rather than only the neural networks, once in a while a body could have a mutation that connects a muscle between two bones (preferably which are connected to each other by a joint, though they wouldn't have to be) or could have a muscle deleted, or perhaps even have a short bone added dangling from an existing joint, or a bone added between two existing joints. Most such mutations would be detrimental, so such "GROSS MUTATIONS" would be turned off by default, but if switched on they would be allowed to happen, the detrimental ones would likely be quickly weeded out. Neutral ones might end up with a few offspring, and the rare beneficial mutations might even end up dominating the population. :) This might actually be very beneficial in terms of autonomously eliminating useless extra weight (such as an unneeded "head" which the brains are not stored in anyway) or muscles which do more harm than good with regard to a specified fitness task.

Suggestion: BODY EVOLUTION --- Okay, so technically the body of a creature in this evolution engine evolves as its designer adds changes to it, but I would also like to see an option to turn on (or off) the inclusion of body mutations in the breeding process which might move a joint a little bit in some direction, switch an attribute on or off such as EXTRA SOLID on a bone, or "UNBENDABLE" on a joint. One such change should not make the resulting offspring structurally incompatible with other offspring of sufficiently similar creatures, so the body could then be included in what's inherited and perhaps exchange "genes" when reproducing in a similar way to what's currently done with the neural networks.

Suggestion: COMPETING CREATURES --- I would like to see a way that a user could clone a creature and modify its clone and then test the fitness of both at the same time, with a way to switch back and forth or cycle through the creatures intended to compete in the same activity. Offspring would generally be of one or the other, usually avoiding breeding of neural networks between different body types, but if enough of the parts could be matched up to consider them structurally compatible with each other, their bodies could even be occasionally be included in the process of breeding, producing offspring with, potentially, physical and mental features from both parents. Perhaps the most fit of such hybrids could even be made available in the creature building area.

Suggestion: SENSITIVE JOINTS --- I would like to see a way to set joints to be sensitive to touching the ground, such that touching the ground would decrease the creature's fitness score. This is based on a suggestion by Whitefox2 about being able to place a ground sensor in bones, and is also an extension of my own idea of being able to set attributes such as flexible bones, extra solid bones, unbendable joints, and so on, which would allow the user to tweak specific details about a creature other than the starting arrangement of how its parts are arranged. This feature would offer a way of discouraging a creature from collapsing onto the ground when asked to climb, or and discouraging certain parts (such as an intended "head") from being used as feet.

Suggestion: STRETCHY/SPRINGY BONES --- I would like to see a way to give bones a "STRETCHY" or "SPRINGY" attribute which would make those specific bones less solid than the way they normally are in the Evolution program.  Such an attribute would allow a user to tweak the physics a bit with regard to certain parts of their creature.

Suggestion: EXTRA SOLID BONES --- I would like to see a way to give bones an "EXTRA SOLID" attribute, to reduce the tendency of bones to apparently change length under pressure. This would offer a way of making structures with more predictable behavior. What I mean by this is easier to explain by example. I've seen YouTube videos in which people talk about using "triangles" as if they are immutable shapes. This way, they could be... without messing with the usual behavior of ordinary "bones" in the program.

Suggestion: UNBENDALBE JOINTS --- I would like to see a way to give specific joints an "UNBENDABLE" attribute, so that it would effectively allow the user to fuze two or more bones into one "bony structure" with a specific shape and more than one place that muscles can be attached.  As an example of how some people might use this, I've seen several YouTube videos in which a person tries to give their creature a "head" which immediately collapses and flops around. LOL! This way they could make a head that at least doesn't collapse. Flopping around is a separate issue. :)

I like this, Whitefox2, but I'm thinking a slight variation of it would be better, so I'm going to post my variation in a separate reply and credit you with the original idea. I already upvoted this suggestion. Please look for my "SENSITIVE JOINTS" suggestion (which I will write after I post this reply to you) and consider upvoting it as well. :) Thanks.

Suggestion: ADD MUSCLE ON/OFF TO NEURAL NETWORK --- I don't know whether the muscles are simply set to push r pull at full strength or have different levels of push and pull (which I think would be much better, though more computationally intensive), but they do seem to be always either pushing or pulling. I would like to suggest that the neural network should be able to opt to turn a muscle off completely, so it would still have it's passive springy tendency toward its original length but would neither actively push nor actively pull. When set to show "EXPANDING" in blue and "CONTRACTING" in red, neutral or turned off could be shown in purple.

So do I. :)

Suggestion: ADD OPTION TO UNDO LAST CHANGE --- Sometimes it's difficult to get delete or adjust something placed or connected differently than intended, especially when a muscle gets misplaced among other muscles... so it would be nice to have the option to undo something like that directly.

Suggestion: ADD RUN TO THE LEFT (AND RUN EITHER WAY) --- I would like to suggest changing the name of the "RUNNING" exercise to "RUN TO THE RIGHT", and then adding in a "RUN TO THE LEFT" which would score fitness based on how far to the left a creature managed to get and "RUN EITHER WAY" which would score fitness based on maximum absolute distance from the starting point. I think this would be great for illustrating that it is the evolving neural network which ultimately achieves the specified task and not the specifics of the body design (although the body does have to at least have the potential).

Suggestion: START WITH A LOW OR ZERO INCLINE AND SLOWLY INCREASE IT --- For the climbing exercise, I would suggest in the first generation that the floor should have the jagged edge that will be needed later on, but should be level or a very shallow slope. I think completely level would be better if fitness it rated based on left-right movement, but if the fitness score is actually based on altitude then small incline would be needed in order to measure fitness at all. For later generations the slope would increase a little at a time until it reached its maximum, which should probably be the slope currently in use. When to increase the slope could be every generation, or every 10th generation, or when a large enough percentage of the population manages to make some reasonable progress. If increased every generation, the increase in slope should be almost imperceptible. My suggestion would be to first try increasing it every 10th generation. That way, early success will come more easily and can be improved upon by those members of the population that inherit it.

(1 edit)

Suggestion: START WITH OBSTACLE VERY SMALL AND SLOWLY INCREASE ITS SIZE --- For the obstacle exercise, I would suggest in the first generation that the obstacle (or ball rolling on the floor) should be about the size of a joint object. After that, it would increase in size slightly in future generations until reaching its maximum size, which should probably be the size currently used. When to increase the size could be every generation, or every 10th generation, or when a large enough percentage of the population manages to avoid it completely. My suggestion would be to first try increasing it every 10th generation. That way, early success will come more easily and can be improved upon by those members of the population that inherit it.

Suggestion: ALLOW USER TO EDIT A NEURAL NETWORK --- First, I would like to suggest that a way be added to edit the neural net of the "best creature" (the one with the highest fitness score) and inject that edited neural-net genome into the population (perhaps replacing the member with the lowest fitness score. Even if what they're given the option to edit is nothing more than the binary representation to edit, with no explanation of what any bit or group of bits might represent, at least they could try stuff and see what happens.

Hi Keiwan. I really did NOT want to create an account here, but I see no other way to make suggestions. I have several of them. I'm easy to find on YouTube or Twitter (@DonaldKronos) if you wish to talk. I don't know if you will see this, but upvotes are not a good way to judge how well an idea is liked, because those posted later will have been seen by fewer people and had less time to accumulate upvotes. Even so, I'll post a few, each in their own reply in this thread, so that people can upvote them if they choose to, as you have suggested... and I will also look through the HUGE list of replies and try to find some to upvote as well. I don't know if links are allowed here, so I won't link to my YouTube channel, but I have featured your Evolution program in a few videos already.