Make your graphics sufficient to help you debug your object's behaviors (you to visualize the world situation and to be able to use the mouse to select one object to get information about its internal state and possibly the logic it runs)
Simple rectangles with a test entity type name inside it is good enough. Render a window into your world (which you can traverse with arrow keys initially)
Start deciding how complex your object behaviors will be, even NON sapient animals have conflicting goals that have to be resolved and you may be suprised by how much logic it will take to analyse the entities local situation figure which goals/solutions/actions are appropriate and pick the best one to carry out.
Figure out a common metric calculation for priority of the decisions (so you can use it across all the objects and then be able to reuse common behavior analysis and decision coding.
Make sure that periodicly the object's situation is reevaluated so it wont get stuck doing one thing when that thing is no longer the priority (this allows opportunistic behavior)
----------
start with plants which are largely reactive to their environmnet
then do animals that have basic survival behaviors
later harder will be objects that cooperate with each other (the complexity of their logic goes way up)
---
some file logging of execution of the behavior logic is a good idea so that you can trace what decisions were made (what the object saw as its situation and then the calculations to decide whats inmportant for it to consider an dthen to decide what to do ). I usually do this to a seperate window for one object Ive selected on the screen and add various control buttons to dump specific info about the object (including special debug code when I am trying to figure out what the logic doesnt do what I thought it would do)

Find content
Not Telling