You seem to be mixing the concepts.
*Programming languages* define *data structures* that store *data* in memory.
These *data structures* can be further assembled into *objects*, and each *object* open specific *data structures* to the *environment* that we call *properties*, and *properties* can have small processing routines embedded in them that return *values*, which are called *methods*.
Actor *classes* are blueprints that are used to create Actor *objects* based on the *properties* and *methods* they include.
if you want to modify the Actor *class*, you add a *property* or *method* to it.
Or, you can just rewrite it completely and add the properties and methods you want.... the problem is, the rest of the program will still be looking for the original ones and most likely crash.
Adding, you can add whatever you want to a class directly, even in run time, as long as it doesn't affect what's already declared for it that is already running.
If you want to add something without modifying the existing structure, you can *alias* methods, which is basically redirecting the program to run your code and then go back to the intended point before the modification without breaking the original flow.
If you mean to create a new *ACTOR* (character), you can, even directly, and even in run time.
........you just run the corresponding code manually as the interpreter runs it.... just like that.
I believe the simplest skeleton to create a new actor is basically something like:
Code:
chr = Actor.new()
chr.property = valueX
chr.property2 = valueY
chr.property3 = valueZ
....
chr.propertyN = valueN
$object[index] = chr
where $object is the database and index is a non-used slot in the database.
you invoke the copy of the Actor class skeleton by Actor.new(), then set up the basic properties, and then copy the finished object over to the database and save it.
(very basic language-generic explanation)