An API feature that I and, I believe, a huge number of people would find helpful is the following: model references.
[size=4]Comparable Feature in Another Engine[/size]
In Unreal Engine 4, you get a feature called Blueprints. This, essentially, allows you to construct a “class” using things called “components,” and what you place in the “workspace” are references to that Blueprint. This means that, even if you have 9001 references in your “workspace,” editing the Blueprint changes each of those references to be up-to-date.
[size=4]Why This is Helpful[/size]
Well, let me use an example: trees. In my survival games, I like to not use a randomly generated map. Having the same map allows players to grow attached to certain locations and have “favorites,” bringing a personality to the game that a procedurally generated game could never have. Therefore, I put trees on those islands by hand. However, say I want to add a certain piece of data to trees? Well, darn, I’ve already placed 34 and I have to tediously add that *Value or Script object to each one. Not fun.
If, instead, we had Model References, I could store my one, single tree and make 34 references to it. Then, if I wanted to change every tree I’ve ever placed, I could just, you know, edit one thing and every reference would update.
[size=4]What I Would Want This to Look Like[/size]
Models gain a new context-menu option: “create reference.” Doing this would create a ModelReference object.
The ModelReference object acts a lot like the model. It has one new property: ReferenceName. ReferenceName tells the ModelReference to look for a Model in ServerStorage with the same name as its value. (It may be prudent to add an entirely new ReferenceService designed only to contain models used as references.)
If a ModelReference can find the model to which its ReferenceName refers, it will visualize itself as a “ghost version” of the model it refers to. A ModelReference has its own CFrame, and the “ghost version” is visualized as if the model had been moved to that CFrame using :SetPrimaryPartCFrame(). (This, of course, makes it necessary that all models that are referred to must have a PrimaryPart). ModelReferences can be moved around like normal models.
The “ghost version” of a ModelReference is always kept up to date with the content of the model to which it refers.
While the game is simulating, any and all ModelReferences are instantly replaced with a clone of the model that it refers to, meaning that ModelReferences could be instantiated into the game during simulation and still work.
[size=4]Final Thoughts[/size]
This is a very nice, very helpful feature that I think that everyone would like to have. I have definitely not detailed the ideal solution, but I hope that I’ve given you guys (the engineers at ROBLOX) a good idea of what should be done. All in all, I rely on your expertise to make the best features for this engine.
Thanks for reading and please show your support by thanking this post and posting on this thread to keep it bumped!