Here are some general API suggestions:
Add an Entity super class to everything within 3D space.
Entity.SetPosition(:vector3)
Entity.SetRotation(:rotation)
Entity.PlayTimeline(:keyframes, :easingMode)
Entity.GetPosition():vector3
Entity.GetRotation():rotation
Entity.CancelTimeline()
Entity.Destroy()
Entity.IsValid()
Entity.PlaySound(:audioAsset):sound_handle
Entity.CancelSound(:sound_handle)
Remove Device dependency. Devices should only be required for collision/overlap purposes. Verse shouldn’t just be a more limited alternative to devices, it should be a complete substitution.
Adding, checking, removing inventory items should not require an entity in the world. Add an inventory module.
Player.GetInventory():player_inventory
PlayerInventory.AddItem(:fort_item, amount: int)
PlayerInventory.RemoveItem(:fort_item, amount: int)
PlayerInventory.HasItem(:fort_item, amount :int)
Make GetPlayspace() a global function, since there only is a single playspace.
Add a @description attribute that accepts a string, so ppl hovering my class fields in the property inspector can get a tooltip.
Add a @visibleIf callback, so I can show/hide editable fields on the fly.
Add a basic persistence API. The SavePoint device doesn’t even exist in Verse, so every action needs to be hooked up with a trigger, which is the worst imaginable way to handle something, that should have native Verse API instead.