2005-09-03 13:06:12 UTC
I think your program is a cool idea. At the moment I have a deadline at the end of the month and dont have the time to do non-work related things. But after that I may look at it again. I am interested in the software design side of this project to have an extentable platform where others may contribute their stuff.
Now some random remarks:
- The description of the webside is very technical. Although your target audience are people able to read java code the description should be organized differently. Say what it is and what it does, then where the idea came from and after that the technical blurb.
- Turn.cheat is a nice idea. But maybe for research reasons someone wants to alter properties, e.g. reduce mass to simulate some kind of disease. So altering the properties is not a cheat but a control instrument.
- What is the model behind all this? Is a individual a bag of properties or is it only an ID and properties like species and gender are extrinsic to the individual? At the moment both concepts seem to be present which neither very easy to understand nor scalable IMHO
- I would suggest to use the Listener pattern a lot to decouple things. If something in the model changes, the listers are informed and may react. SurvivalIO is the right way but may be more specific so views (or other parties) may react only to things they are interested in. To reduce event instanciation costs an event object may be reused with the explicit API not to rely on its persistence after notification of listeners. There should also be an interface EventSource which allows to limit event notifications on some events. This is the base for a control view which manage event notifications and adjust them to reduce cpu load.
- you mentioned others may contribute. Propably you know all this but OSGi is a plugin framework to allow an application to load/unload plugins at runtime and define services which others may use. A crippled example is eclipse put pure OSGi is more dynamic, slim and easy to use.
- a more generic entity system would be handy, e.g.entites have properties (key-value pairs) and some actions which have target entities and manipulate the properties of the target entities. With this scheme action could be objects instead of direct method calls.
- I do not understand the rule system. The Rules class seems to have constants which describe individual properties but are applied to every individual. Should a rule describe what is possible in the world (mass > 10000kg is impossible) or are they specific to individuals/species and describe which actions must/may be carried out by them?
- You speak of your interests in darwins theories. Do you know Typogenetics? Its a artifical genetics system introduced in the book "Gödel, Escher, Bach" by Douglas Hofstadter. It uses simple string manipulation to evolve new genes.
My thoughts carried me away, I hope some of them are useful to you.
Ricky