The reason I didn't want to go that route was in case the client forced us to use two alias zones instead of one (for instance, if telling it to zone to "tutorial" when already in that zone didn't do anything). That would then mean that players would have to have two copies of all the third-party zones, one coded for "tutorial" and one for "cshome", for example. That would make things messy for the people creating the zones as well as for the players. With this setup we only need one set of zone files and we have more flexibility (such as if SOE takes out the ability for the client to load the tutorial zone or if we're forced to change the name of the alias zone(s) for some reason).
The new S3D code doesn't automatically uncompress the file data, but only uncompresses it if a program requests a pointer to that data. That way, ZoneProxy can load the S3D file, rename the files, and write it out again, but skip the uncompress/recompress process. This makes re-coding happen very quickly.
WC
Edit: I just had an interesting idea. Since ZoneProxy can re-code *any* zone, I could set it up to back up the original alias zone and re-code it as ncessary. For instance, let's say that "tutorial" is the normal alias zone; the program could have "zoneproxy_orig" set as the designated backup zone name, and, when starting up, if that zone doesn't exist on the player's PC it could copy the tutorial zone over to tutorial_orig and re-code it. Then, if the player really wants to zone to the original tutorial zone (or the original version of whatever the alias zone is), ZoneProxy could grab zoneproxy_orig, re-code it back to tutorial, and tell the server that it's done. This would mean that the server would have to treat zoning to the alias zone the same as zoning to third-party zones, but would also mean that *any* zone could serve as the alias zone, not just unused ones. SOE could remove tutorial or cshome and it wouldn't matter.
Edit #2: Further thinking on this, in the case of backing up alias zones, re-coding isn't strictly necessary. ZoneProxy could simply copy the zone files to a different name. This might be desirable since the player could then always manually restore the files in the event of a problem. The server should never know about the backup names, but should simply give ZoneProxy a "SetZone" command with the alias zone name (e.g. tutorial) as the argument. ZoneProxy could check the zone name against it's alias zone name, and if it matches could simply copy the backups over without re-coding them.
|