Honestly I use .ini files along with level editing saving and loading I use hash tables as a varible container for each object that needs pvs because they are easy to set up at runtime. I also made a plugin that makes for easy loading back in for the .ini file and recently modded it to be able to load values into a hash table attached to an object as long as they are in containers.
the problem with hash table it there is no way to easily Identify the object unless you did something like 1name = sprite1 1x=36 1y=24 1z=3 wich could get tedious especially if you wanted pvs to be loaded as well.
with an .ini file every thing is grouped nicely and easy to go load and loop through.
[1]
oid=1
x=34
y=36
z=3
a=130
speed=160
range=30
all those values are easily loaded into the runtime with one event
-foreach group- create object (ini.currentgroup,oid), at (currentgroup,x), (current group y) on layer (currentgroup, z) at angle current group,a.
--for each Item
--current item =/= a,x,y,z,oid-> hash table insert key STR(currentItem), with value ini.value(currentgroup, current Item)[/code:l2poat0l]
Thats pretty close the the sytax I just got off a 12 hour shift at work I have a cap where I tested this and it worked perfectly ill see if I cant dig it up for you ( you would need to install my plugin though)