Idea: quick area loading times in pw without tilecount (in the set file) issues
#1
Posté 08 octobre 2011 - 11:08
we all know, especially the tileset creators which like quantity, that area loading time increases with the increase of tilecount (the overall number of tiles available in a set file), they directly linked, and this can even cause issues like crash or sreen freeze in the client. from my experience:
1-500 tiles: excellent
501-1000 tiles: good
1001-1500 tiles: average
1501-2000 tiles: bad
2001-2500 tiles: very bad
2500+ tiles: epicly bad
so, here is the idea: create an utility that creates, given an area created with a full tileset (lets say 10000 tiles, for sure there will be issues in the toolset, im not even sure if the engine can suppurt such huge amount, but thats not the point, the point is the tileset has a HUGE amount of tiles, giving almost infinite variations and a ****load of groups), the util should create a new set file wich has in its list ONLY the tiles that are used in the area.
of course, every single area will need its dedicated set file, and the util should be able to revert the process, so to say to switch back the area to the original set file, so it can be re-editable in the toolset for modifications.
basically we'd be able to use the full tileset when building in the toolset but, while playing, we'd get really small dedicated set files so to drastically reduce area loading times.
im no programmer so i just give this idea that should be veeeery useful for pws, not even aware if there is some engine limit that will make this just a non-sense
#3
Posté 08 octobre 2011 - 11:42
So, that means that the .set would always require the full list of tiles up to the highest tile used in a particular area. So, say you painted a group, and that group contained a tile referenced in the original .SET as tile 10,001. You would need a duplicated .set that STILL contained that many tiles.
Basically, a complete waste of time and effort.
You could, theoretically, re-edit the new .SET to lower the tile count, but then you would have to do a search and replace on all the changed tile number references from original .set to the new .set.
Once that is done, you would have to keep a list of what was changed, so that you could revert the .are file to the original settings just so that you could re-edit the area with the full tileset.
All of that considered, makes this an idea with no real usage.
#4
Posté 08 octobre 2011 - 11:53
#5
Posté 08 octobre 2011 - 11:53
1-create areas in toolset, save the module
2-run the util on the module: it automatically extracts and processes the are files, modifies them and creates dedicated set for each area (maybe using tag or blueprint info), stores the stuff that changes so to make the process revertible!! updates the module and stores the freshly created set files into a dedicated hak.
all this is possible, the problem may be if the game engine allows only a certain amount of set files in game (in toolset its not important since we'd be always using the mother one)
#6
Posté 08 octobre 2011 - 11:58
Ouch. That's disappointing.
So a utility that streamlined the .are and the .set (and the haks - basically "compiling" the add-on content of a mod so that players need only download what is actually used), would be a great deal of trouble for little or no gain. :-/
Well, it's not the first turkey I tried to teach to fly. :-P
<...stiff upper lip>
#7
Posté 09 octobre 2011 - 12:06
That said however... smaller tilesets with an aesthetic focus are better. The hak doesn't fill up your hard drive. The area loads more quickly. The aesthetics tend to be better. Wildwoods for example is a very nice tileset for more reasons than just aesthetics. Its relatively small and doesn't try to be anything but a forest.
Modifié par henesua, 09 octobre 2011 - 12:09 .
#8
Posté 09 octobre 2011 - 12:06
#9
Posté 09 octobre 2011 - 12:10
#10
Posté 09 octobre 2011 - 12:13
#11
Posté 09 octobre 2011 - 12:17
I love Wildwoods :-)henesua wrote...
...Wildwoods for example is a very nice tileset for more reasons than just aesthetics. Its relatively small and doesn't try to be anything but a forest.
<...til he remembers something unpleasant>
#12
Posté 09 octobre 2011 - 12:38
already tested time ago, if you write into your set file that tile 2 is empty tile then you see empty tiles e n wrote...
shadow, can you test this thing and see what happens when the client uses a different version of the set file of the server?
the walkmesh is however server-side so you cant luckily use this in order to move through walls
but I suspect that if even single file in set file would be missing it will crash client
#13
Posté 09 octobre 2011 - 12:44
s e n wrote...
shadow, can you test this thing and see what happens when the client uses a different version of the set file of the server?
Depends on what the differences actually are.
Anything NEW on client side would be ok, but anything NEW on server side would crash it.
By new, I mean additions to exisiting.set, NOT a renumbered version, ie a version where a specific tile's location is different that what the server has.
It's too bad that the .ARE doesn't use/save tile NAME instead of it's numbered reference point in the .set file. I think the design reason was that they originally intended the .SET to be a 2da type of file with column data instead of grouped row data.
Any tileset that is over 12-1500 is way too large. There really is no way to save area load time as the server must search the entire .set to find the tiles referenced, then pull the .wok file from that huge hak and ship that off to the client, that along with all the placeable, trigger, and creature data. The biggest slow down on large .sets is searching for, and sending the .wok data. (Client doesn't need a wok, it is built from the tile mdl file while loading for sp, and in MP mode, it is sent byt the server REGARDLESS of client side hak contents.)
By the by, patch 1.69 raised the maximum TOTAL allowed tilesets to 100.
#14
Posté 09 octobre 2011 - 12:27
Bannor Bloodfist wrote...
By the by, patch 1.69 raised the maximum TOTAL allowed tilesets to 100.
ahh, I thought it was still 50, But even at 100 If you had a .set file per area you wuold be limited to 50 areas.
#15
Posté 09 octobre 2011 - 12:57
#16
Posté 13 octobre 2011 - 07:06
Say... you want to work with the DOA rural/city stuff with all it's expansions, but you don't need the city tiles for a certain area. And you just need city and fields (and not forest, swamp, and coast) for another area. You could make three SET files. One with everything in it, one without the city tiles, and one without the forest, swamp, and coast stuff.
As far as I remember tiles are referenced by their file name in the SET file, so I don't see why that couldn't work. No programming involved, although you could ask yourself if the task of making the separate SETs is worth the gain...
#17
Posté 13 octobre 2011 - 12:34
Just a ghost wrote...
Couldn't you turn this idea around and make multiple set files all referencing the same common batch of tiles?
Say... you want to work with the DOA rural/city stuff with all it's expansions, but you don't need the city tiles for a certain area. And you just need city and fields (and not forest, swamp, and coast) for another area. You could make three SET files. One with everything in it, one without the city tiles, and one without the forest, swamp, and coast stuff.
As far as I remember tiles are referenced by their file name in the SET file, so I don't see why that couldn't work. No programming involved, although you could ask yourself if the task of making the separate SETs is worth the gain...
Right and wrong at the same time.
a .set file is scanned (read by the engine) by number first, then finds the tilename located at that number. So, renumbering doesn't work. You can't build the area with a tile that is physically the same tile name but in a different location (number) in the .set file wihtout crashing the toolset and game. (Note, that you CAN reference the same tile name in more than one location, so it can have a different number and work, BUT, if you are adding new numbers to an already overly large tileset, you are defeating the stated purpose) So, if you make the set smaller, by removing tiles, then they are renumbered to match their new locations in the .set file. Once that occurs, you can't switch back and forth between the two different .set files.
Your idea is the exact thing he asked. The answer remains the same. The game engine can only use a MAXIMUM of 100 .SET files, regardless of the tiles used in those sets. When you consider that NWN by default provides 26 .SET files as part of the main game resources, you are left with 74 expansion sets that you can use. Why would you want to waste those on re-using the same basic tileset over and over again?
Your better option would just be to build with smaller sets to begin with. A huge tileset, with over 1200 tiles, is just a waste. Most especially for a PW. Since by engine constraints, you are better off with 16x16 areas or smaller, having to choose between 2000+ tiles for a maximum paint of 256 of those, you are obviously wasting by a factor of 8-10 already. Granted, in a large tileset, a large number of tiles are not "chosen" by group/feature choice, but are needed to make the various terrains work together (terrains and crosser combinations etc), you still have a large number of groups/features that never, or seldom get used anyway.
Having a very large tileset only serves one real purpose, and that is to reduce the total number of haks required to get the tiles in use. But, since you can combine multiple tilesets into the same .hak file, then it truly serves no real purpose and having a single .set file with 2000+ tiles only slows the engine down. The HAK size doesn't make that much of a difference, as the game resources come in huge .BIF files anyway. The issue occurs when reading the .set to find the tile(s) referenced in the area, then finding the associated .WOK file (server side) to send to the client. This was a special request made by server admins, to prevent folks from having custom haks on their own pc's that would allow folks to walk through walls, doors, etc, by having a custom tlle with it's own locally loaded .wok that would allow such behaviour. It has plusses in that it prevents folks from corrupting a walkable/non-walkable area, but it does require that the server spend a lot of time searching for, then sending, the wok data to the client.
Servers are the ONLY reason to have a separate .WOK file, as a SP mod, doesn't neeed the .wok file, it can actually build the wok on the fly when it loads the tile mdl file. It will read a .WOK if it exists(this will override the one included in the mdl, but downside is that there is no way to compile a wok, so it actually has to load the mdl (complete with compiled built in wok, then read a txt file wok and compile it which is another slowdown), but it can also build it on the fly, EXCEPT in a client/server instance. For that, the server MUST send the wok to the client.





Retour en haut






