Hi.. new to the forums. In my offtime I've recently been working on some ideas that I wanted to toss out there.. specifically I'm looking to know if what I'm doing has been done elsewhere. Not looking to try to reinvent the wheel if its been done.
Basically what I'm looking to do is create an enviornment in which objects persist, change, and evolve dynamically.. outside and independent of normal program flow. I've broken down an Object in my enviornment to 5 distinct features so far.
Metrics - Enviornmental information about any Object. An example... I'm looking to give Objects a decay time. If an Object hasn't been accessed within a certain time period... it gets unloaded on to disk and vice versa. I also want objects that have a lifespan. If they reach the lifespan.. the destructor is called and the object is destroyed.
Raw Data - Simply a chunk of data of a certain length that resides in the object.
Definitions - A definition will lay out the structure for a segment of Raw Data. This structure will be the location of its properties/methods, their name, and their size. Basically it'll act like a jump table into the Raw Data. An Object can have literally as many Definitions as you would like.
Input - This is the area dealing with Input to the object. By placing an object here.. the object then acts upon that Input changing it or using it in some way.
Output - This is the area dealing with Output to the object. A method can place 1 to N objects in output as needed.
To do this.. the enviornment would have two distinct databases. The Object Database and the Object Definition Database. Assuming a user needed an object the user would take a definition from the ODD and transfer it to the world whereupon a new object would be created based upon that definition. On creation an entry for it would be made and entered in the OD for it.
I know its a lot to take in.. but the root idea is that of persistant objects. Objects that don't go away, can be manipulated, and will change over time. Has anybody seen anything that really does this?