@Dohman, we do have a similar system planned, where James will be able to define what rooms are considered attractive hunting grounds! Keep in mind that we're doing two things here, we're making a terrarium-like thing for sure, but also a game, so we are going to use some tools to shape the experience. For example it's more fun to encounter lizards in actual rooms rather than narrow corridors and stuff like that, and it also makes more sense for them to hang out there, which is why we're going to have them gravitate towards certain areas. Once that happens though, the dominance struggle will set in and some of them might have to settle for less attractive territories.
When it comes to the actual nutrition web part of the ecosystem, we're not doing that. There might be some starvation-like mechanism down the road, probably manifested in an increasing desperation for food, but we're not aiming to make a proper simulation of an ecosystem - it would just not be possible to keep it stable, and the effort would be humongous with really no payout in terms of player experience. As a scientific research project or something I'd love to go down that road, but here we're aiming to create an experience rather than an accurate simulation.
@AxezDNyde thanks! The refraction stuff is a little detail in the shader, the idea was that it was supposed to make stuff look wet, but I don't really know if it accomplished that haha! It still makes the environment looks more dynamic and alive though, so it'll stick around

@Christian, yup, they have different degrees of aggression towards members of the same breed and members of other breeds. Right now it looks like this:
EstablishRelationship(CreatureTemplate.Type.PinkLizard, CreatureTemplate.Type.PinkLizard, new CreatureTemplate.Relationship(CreatureTemplate.Relationship.Type.AgressiveRival, 0.4f));
EstablishRelationship(CreatureTemplate.Type.PinkLizard, CreatureTemplate.Type.GreenLizard, new CreatureTemplate.Relationship(CreatureTemplate.Relationship.Type.AgressiveRival, 0.15f));
EstablishRelationship(CreatureTemplate.Type.PinkLizard, CreatureTemplate.Type.BlueLizard, new CreatureTemplate.Relationship(CreatureTemplate.Relationship.Type.AgressiveRival, 0.2f));
EstablishRelationship(CreatureTemplate.Type.PinkLizard, CreatureTemplate.Type.WhiteLizard, new CreatureTemplate.Relationship(CreatureTemplate.Relationship.Type.AgressiveRival, 0.25f));
EstablishRelationship(CreatureTemplate.Type.GreenLizard, CreatureTemplate.Type.PinkLizard, new CreatureTemplate.Relationship(CreatureTemplate.Relationship.Type.AgressiveRival, 0.2f));
EstablishRelationship(CreatureTemplate.Type.GreenLizard, CreatureTemplate.Type.GreenLizard, new CreatureTemplate.Relationship(CreatureTemplate.Relationship.Type.AgressiveRival, 0.8f));
// EstablishRelationship(CreatureTemplate.Type.GreenLizard, CreatureTemplate.Type.BlueLizard, new CreatureTemplate.Relationship(CreatureTemplate.Relationship.Type.AgressiveRival, 0.2f));
EstablishRelationship(CreatureTemplate.Type.GreenLizard, CreatureTemplate.Type.WhiteLizard, new CreatureTemplate.Relationship(CreatureTemplate.Relationship.Type.AgressiveRival, 0.05f));
EstablishRelationship(CreatureTemplate.Type.BlueLizard, CreatureTemplate.Type.PinkLizard, new CreatureTemplate.Relationship(CreatureTemplate.Relationship.Type.AgressiveRival, 0.3f));
// EstablishRelationship(CreatureTemplate.Type.BlueLizard, CreatureTemplate.Type.GreenLizard, new CreatureTemplate.Relationship(CreatureTemplate.Relationship.Type.AgressiveRival, 0.15f));
EstablishRelationship(CreatureTemplate.Type.BlueLizard, CreatureTemplate.Type.BlueLizard, new CreatureTemplate.Relationship(CreatureTemplate.Relationship.Type.AgressiveRival, 0.45f));
EstablishRelationship(CreatureTemplate.Type.BlueLizard, CreatureTemplate.Type.WhiteLizard, new CreatureTemplate.Relationship(CreatureTemplate.Relationship.Type.AgressiveRival, 0.25f));
EstablishRelationship(CreatureTemplate.Type.WhiteLizard, CreatureTemplate.Type.PinkLizard, new CreatureTemplate.Relationship(CreatureTemplate.Relationship.Type.AgressiveRival, 0.15f));
EstablishRelationship(CreatureTemplate.Type.WhiteLizard, CreatureTemplate.Type.GreenLizard, new CreatureTemplate.Relationship(CreatureTemplate.Relationship.Type.AgressiveRival, 0.05f));
EstablishRelationship(CreatureTemplate.Type.WhiteLizard, CreatureTemplate.Type.BlueLizard, new CreatureTemplate.Relationship(CreatureTemplate.Relationship.Type.AgressiveRival, 0.35f));
EstablishRelationship(CreatureTemplate.Type.WhiteLizard, CreatureTemplate.Type.WhiteLizard, new CreatureTemplate.Relationship(CreatureTemplate.Relationship.Type.AgressiveRival, 0.25f));
EstablishRelationship(CreatureTemplate.Type.GreenLizard, CreatureTemplate.Type.BlueLizard, new CreatureTemplate.Relationship(CreatureTemplate.Relationship.Type.Eats, 0.25f));
EstablishRelationship(CreatureTemplate.Type.BlueLizard, CreatureTemplate.Type.GreenLizard, new CreatureTemplate.Relationship(CreatureTemplate.Relationship.Type.Afraid, 0.25f));
But it still needs a lot of balancing, this is just something I quickly threw together. When the individual treats come around that will weight into it as well, some individuals might be more aggressive etc. In general this system could need some refinement, with separate parameters for a bunch of stuff, but it seems good enough for now!
@DarkWanderer, yeah there is occasional actual biting and stuff. Particularly if they end up fighting in a very enclosed area it might get bad. The white lizards actually won't be eating the blues, that was just a mocked up situation for fun. But in general, yeah, they have some knowledge about who's bigger, and they should be taking that into account even more as the system gets a little polish.