Post by kalbaern on Jan 7, 2011 22:54:22 GMT -5
Inorder to keep down both lag and resource counts in the module, please follow the guidelines below whenever possible. If not, some submissions may to either be "kicked back" or their addition to the module delayed while they are adjusted.
Placeables: All placeables that are not useable must be set to both PLOT and STATIC unless they have some sort of animation other than lighting. Placeables with animations (moving glowy/sparkly effects, fountains, etc... ) should be set to PLOT only. Campfires, chandeliers, wall torches, street lamps, etcc... all should be both PLOT and STATIC. Chairs, benches, couches and most seating should also be both PLOT and STATIC. Seating type placeables will have "seats" added to them after importing if you haven't done so already. While this uses more objects on maps with them, it also allows for closer placement of chairs to tables and we can usually have 2-3 seats on most couches and benches that would only seat one most times.
All placeables should also be checked for both scripts and inventory. Placeables in the toolset prefixed with "*" are preset to be both PLOT and STATIC now and stripped of any scripts. Those lacking this prefix are either unupdated or purposely useable (chair, couch, etc... ).
Many container type placeables contain treasure scripts. Even if they are not made useable, if they are destroyed by an errant fireball or even a DMs "destroy object widget" they are likely to spawn loot. So setting them to PLOT and STATIC is imperative. Please check and delete any scripts they may have attached to themselves. The Bioware Standard Pallette is rife with placeables that if used in building will cause issues. Make doubly sure you check and set these manually when using them. All placeables used in an area that are set as both PLOT and STATIC should have an "*" as a prefix for easier checking later.
Old CEP lighting often contains a heartbeat script. It's imperative we find and remove these constantly. (In excessive of 2,000 such placeables have been fixed as of this posting and its beginning to become mind numbingly tedious ) Typical scripts to delete are "zep_torchspawn" and "zep_torch" though other variants exist as well. If you are using a placeable with a script attached to it and aren't sure, please ask someone.
Setting a placeable to PLOT: When you set a placeable to PLOT, you are telling the game that it cannot be damaged. So PCs lobbing area damaging spells and effects won't destroy your pretty Inn's interior or inadvertantly destroy a placeable wall and move into a map area circumventing traps or enemies unplanned. Placeables do not respawn (unless specifically scripted for such) and care needs taken so a setting/scene is not accidentally destroyed by PCs or even NPCs IG.
Setting a placeable to STATIC: When you set a placeable to static, it means that the information regarding it's appearance is sent to the client when they first transition/login to the map it is on. Placeables not set as static do this as well, but ... they further retransmit appearance data everytime a PC comes into a line of sight to view the object. This causes two issues. Firstly, it ties up the server's CPU transmitting the data packets needlessly (which interupts AIs, AoEs and other processes resulting in lag) and secondly, it increases client side lag as it also forces them to constantly reload appearances that were already loaded to begin with. This applies to any object that is not being made as USEABLE. The only objects that should be set as USEABLE are interactive ones such as loot containers or levers to activate something or any object who's description and name you wish to show IG to add flavor like a merchants sign or a "Dusty Tome" placed on a wizard's desk for "flavor".
In essense, setting a placeable to STATIC makes it just a part of the tileset and helps cut both the server and client side overhead to run the game.
Pathfinding IG and Placeable Locations: Placeable objects that are not floor covering or visual effects are obstructions to movement, AKA "pathfinding" IG. Pathfinding is further calculated one "square" at a time (the red lined segments found on most maps in the toolset). Objects blocking movement that cross these "red lines" in the toolset count as one object/obstruction per line crossing. So a table that stradles a "red line" counts as one object in two different map sections and requires alot more CPU to calculate movement around. An object sitting where two red lines intersect would be calculated four times and if combat is ongoing, it can confuse the AIs and create huge lag spikes. Sometimes crossing a "red line" is required when building, just make sure its neccessary and do it as seldom as possible. Exhaust tileset options before using placeables as well. Tileset obstructions are generally much easier for the game engine to calculate (though ramps and slopes are both exceptions at times).
Area TAG/RESREFs: When creating a new area in the toolset, name it as you wish the RESREF to display. This means also using lowercase letters and no spaces or punctuation marks. DO NOT use whatever default name appears when you create an area. This can cause a generic name, tag and resref to be used and when your area is imported, it could overwrite and erase a pre-existing map. To further ensure compatability, always build in the most recent module copy you can get. Area names and tags can be later editted (though the tag should always exactly match the resref and is best left as is) in the area properties. Resrefs however are set when the area is created and cannot be changed easilly (you can create a copy of a map and then edit the resref, but its much more efficient to do it right in the first place).
Other Area Properties: Presetting lighting along with using as many tileset features as possible both go a long ways to setting the mood of an area as well as helping to keep our lag low. Most builders work in the toolset with lighting disabled, toggling it on off gives a decent idea for a preview before walktesting it. Make sure all areas are thoroughly walk tested still.
Please make sure that a skybox is selected for every outdoor area. Some players leave them disabled, but just as many leave them on and they can add a great effect to most settings. Hilly and mountainous terrain are so much prettier with a mathing sky as a backdrop. There's even an Underdark Cavern roof you can use where applicable. Since skyboxes can only be viewed IG, someone importing your area(s) is unlikely to actually catch it if not set.
Day/Night music and sound effects along with a battle music track being selected not only can add greatly to the mood, they are often not checked by whoever may be importing your work into the latest module version. So please choose what you believe best fits your areas and set them for us.
Select a load screen for each area. Just like lighting and music, what the players "look at" while your map is loading for them can help preset the "mood" of each area. Yes, there's only so many to choose from and rarely one that seems "perfect", but select one none-the-less.
I wanted to use "X" placeable and it's nolonger on the pallette: First off, sorry. Trimming some of the pallette options is a crucial step in lag reduction though. The fewer items on a modules pallette, the lower the resource count and we'll have less overhead and lag as a result. Secondly, reducing pallettes also makes DMs much, much, MUCH, less the lag beasts they are themselves.
So "something" is now missing, what do you do?
If you're a DM IG, make a request on this forum and a builder will try and see that your favorite tree, rock, pile of corpses or whatever is missing is readded to the pallette for you ASAP.
If you're a Builder, ... tough. We builders have other options at our disposal. Can't find your favorite tree anymore? There's likely one that is close and just not the right size or lacks the rock pile at its base, etc... . Paint one down that is close and open its properties and modify it. Need 30 more trees just like it? Right click to highlight the modified one then use "CTRL + C" to copy it. Now use "CTRL + V" to paste a copy whenever you next Left click with your mouse. Since all placeables need to be PLOT and STATIC for the most part, this is still a faster method of ensuring they are when building. This is especially useful for most of the placeables on the standard pallette.
How many placeables per area can be used here?: There is no set limit aside from common sense normally. Too much or too many of anything is never going to be a good thing though. There's always a price to pay as each placeable use increases the memory a map takes up in shear size within the module. Scripts like area cleaners have to also check each object in and area and then determine which are actually going to be "cleaned". So the more placeables we use in any given area, the more the CPU has to grunt and groan while processing them.
So use placeables sparringly, but not to the point that the area lacks the "feel" you are aiming for either.
Along with how many placeables we use in each area is how many use different appearances. A heavilly wooded area that uses 30 different tree appearances and has only 60 trees total is going to be laggier than one using only a dozen different appearances and 120 trees total. Why, because each client only needs to load a dozen and not thirty appearances there is why. This also helps the server in two more ways. Firstly, the appearance data sent is a smaller package and secondly, objects that block movement IG have to be calculated during both a PC and a NPCs movement (pathfinding) and by using fewer variations (appearances) we've fewer different sizes of objects blocking movement which helps the pathfinding calculations.
How can I tell which placeables on the pallette are preset as both PLOT and STATIC?: Placeables that are preset this way will be found prefixed with a "*" as in "*Small Pine Tree" or "*Fountain, 4 Spouted". Placeables without should be thoroughly checked in their properties when used to ensure they get set properly and all scripts are removed. If you create your own placeables or modify existing ones, it'll help others if you also apply the "*" as a prefix to the ones you use in your areas. This will assist the other builders who may be reviewing areas here to optimize them.
Tileset Animations: These should be kept to a minimum. What are they? They are the animations or visual effects that certain tiles have enabled on them. These are generally either falling leaves from trees or smoke from a building's chimney. Both should be used sparringly if at all on most maps. Water falls also carry animations, but will refuse to be disabled even if turned off in the toolset, so you can safely ignore those. The lag caused by these animations is minimal to the server and mostly creates client side lag. Unlike skyboxes, tile animations cannot be disabled by the players so please, use them only as needed.
Traps: Trap triggers may be preplaced by builders, though they will normally be used as guidelines by whomever imports the area(s) into the main module. We use a custom "semi-random" trap system here on SFS which requires special steps taken to employ properly and preplaced traps will merely pinpoint areas to best use our custom ones in.
Encounters and/or Creatures: Due to our multiple custom factions used here, we cannot accept areas that contain preplaced creatures or even encounters at this time. In many ways this is beneficial as "we" can then scale it ourselves to better fit its theme and adjoining areas. This also alleviates any questions regarding which AI templates to use, adding redundant custom gear to the item pallette, etc... .
Doors and other Transitions: Unconnected doors will need to be double checked and all scripts removed from them. Doors with no intended current use will also need to be set as PLOT and LOCKED and KEY REQUIRED TO UNLOCK. Leave the keys tag filed blank though. Doors and transitions connecting on the same map or same set of areas with a multi map submission may be pre-connected. Do not make transition connections to any existing maps for a submission though. Include a memo via PM or Email explaining where you desire the transitions connected instead.
Custom or Modified Scripts: No custom or modified scripts will be accepted with a submission here without first getting permission from myself.
Some tricks to use the above building techniques more efficiently:
1) After creating your map, either edit it to be larger or use a clear space to create any custom placeables you'll be needing. If you need 8 chairs for a setting and the one you want isn't on the pallette, then place any chair and open its properties and edit it. Then you can just use "CTRL+C" to copy it and then repeatedly use "CTRL+V" to paste your copies where reguired.
2) If you're designing several maps that will use many of the same placeables, you might consider adding a new blank map just for pre-building custom placeables on and delete it later. An example would be a crypt setting where you plan on having multiple levels using the same tombs, statues or debris. Premake them in a seperate area (or expand an existing map to make them in) and then create all of your placeables. You can after making them do a mass copy by holding down your left mouse button and starting in an upper corner of your grouping, draw a box by dragging the mouse over them. Release the button and all of your placeables should now be highlighted. You can now use your copy/paste functions to copy and paste them enmass.
3) Avoid creating any custom placeables in/on the pallettes themselves. This will cause the placeables to also be added to SFS's own pallettes after your map(s) are imported. Instead, always find something on the pallette that is of the same general type and edit it. The only exceptions should be placeables that are either called and created in a script somewhere or placeables that respawn when destroyed and placeables DMs have specifically requested to be added to the pallettes.
4) When a flickering flame is needed, use the "no glow" versions found on the Standard Pallette/Visual Effects. These look like the normal flames, they just do not change the static lighting in an area and are far, far less laggy. Generally, if you set the area lighting properly, few if any will ever notice the difference. Some CEP placeable appearance options also use the suffix "no ambient" to denote the same option for them. The "No Glow" options for NPC appearances are a whole other matter and shouldn't be confused with those similarly named as placeables.
5) When working with sloped terrain, avoiding trees with roots and/or rocks at their base will make setting them far easier. The same would apply to most large placeables as well. Often, you'll need to manually adjust a placeables "Z" Axis up or down (normally down) to blend it smoothly into a slope. If you lower a placeable below its default height when placed, they often no longer block movement and PCs can walk through them. There's a custom trigger we use here that can block movement. It's found on our Custom Trigger pallette under Custom/Generic Trigger/Stop. Use the "Stop" trigger to outline any placeable or group of placeables you wish to block PC movement through. NPCs can still waqlk through this trigger as blocking their movement during combat will cause them to become stuck. So place encounters and their spawn points with care.
6) Though it is rare, some placeable appearances cannot be set to STATIC in the toolset. The "Worm's" placeables along with some of the 1.69 tree appearances fall into this category as well as both the Bioware and CEP "mythalars". They all have animations that if set to static will cause a crash anyhow. Since they cannot be set to STATIC though, using them in smaller maps and sparringly is the best suggestion.
Placeables: All placeables that are not useable must be set to both PLOT and STATIC unless they have some sort of animation other than lighting. Placeables with animations (moving glowy/sparkly effects, fountains, etc... ) should be set to PLOT only. Campfires, chandeliers, wall torches, street lamps, etcc... all should be both PLOT and STATIC. Chairs, benches, couches and most seating should also be both PLOT and STATIC. Seating type placeables will have "seats" added to them after importing if you haven't done so already. While this uses more objects on maps with them, it also allows for closer placement of chairs to tables and we can usually have 2-3 seats on most couches and benches that would only seat one most times.
All placeables should also be checked for both scripts and inventory. Placeables in the toolset prefixed with "*" are preset to be both PLOT and STATIC now and stripped of any scripts. Those lacking this prefix are either unupdated or purposely useable (chair, couch, etc... ).
Many container type placeables contain treasure scripts. Even if they are not made useable, if they are destroyed by an errant fireball or even a DMs "destroy object widget" they are likely to spawn loot. So setting them to PLOT and STATIC is imperative. Please check and delete any scripts they may have attached to themselves. The Bioware Standard Pallette is rife with placeables that if used in building will cause issues. Make doubly sure you check and set these manually when using them. All placeables used in an area that are set as both PLOT and STATIC should have an "*" as a prefix for easier checking later.
Old CEP lighting often contains a heartbeat script. It's imperative we find and remove these constantly. (In excessive of 2,000 such placeables have been fixed as of this posting and its beginning to become mind numbingly tedious ) Typical scripts to delete are "zep_torchspawn" and "zep_torch" though other variants exist as well. If you are using a placeable with a script attached to it and aren't sure, please ask someone.
Setting a placeable to PLOT: When you set a placeable to PLOT, you are telling the game that it cannot be damaged. So PCs lobbing area damaging spells and effects won't destroy your pretty Inn's interior or inadvertantly destroy a placeable wall and move into a map area circumventing traps or enemies unplanned. Placeables do not respawn (unless specifically scripted for such) and care needs taken so a setting/scene is not accidentally destroyed by PCs or even NPCs IG.
Setting a placeable to STATIC: When you set a placeable to static, it means that the information regarding it's appearance is sent to the client when they first transition/login to the map it is on. Placeables not set as static do this as well, but ... they further retransmit appearance data everytime a PC comes into a line of sight to view the object. This causes two issues. Firstly, it ties up the server's CPU transmitting the data packets needlessly (which interupts AIs, AoEs and other processes resulting in lag) and secondly, it increases client side lag as it also forces them to constantly reload appearances that were already loaded to begin with. This applies to any object that is not being made as USEABLE. The only objects that should be set as USEABLE are interactive ones such as loot containers or levers to activate something or any object who's description and name you wish to show IG to add flavor like a merchants sign or a "Dusty Tome" placed on a wizard's desk for "flavor".
In essense, setting a placeable to STATIC makes it just a part of the tileset and helps cut both the server and client side overhead to run the game.
Pathfinding IG and Placeable Locations: Placeable objects that are not floor covering or visual effects are obstructions to movement, AKA "pathfinding" IG. Pathfinding is further calculated one "square" at a time (the red lined segments found on most maps in the toolset). Objects blocking movement that cross these "red lines" in the toolset count as one object/obstruction per line crossing. So a table that stradles a "red line" counts as one object in two different map sections and requires alot more CPU to calculate movement around. An object sitting where two red lines intersect would be calculated four times and if combat is ongoing, it can confuse the AIs and create huge lag spikes. Sometimes crossing a "red line" is required when building, just make sure its neccessary and do it as seldom as possible. Exhaust tileset options before using placeables as well. Tileset obstructions are generally much easier for the game engine to calculate (though ramps and slopes are both exceptions at times).
Area TAG/RESREFs: When creating a new area in the toolset, name it as you wish the RESREF to display. This means also using lowercase letters and no spaces or punctuation marks. DO NOT use whatever default name appears when you create an area. This can cause a generic name, tag and resref to be used and when your area is imported, it could overwrite and erase a pre-existing map. To further ensure compatability, always build in the most recent module copy you can get. Area names and tags can be later editted (though the tag should always exactly match the resref and is best left as is) in the area properties. Resrefs however are set when the area is created and cannot be changed easilly (you can create a copy of a map and then edit the resref, but its much more efficient to do it right in the first place).
Other Area Properties: Presetting lighting along with using as many tileset features as possible both go a long ways to setting the mood of an area as well as helping to keep our lag low. Most builders work in the toolset with lighting disabled, toggling it on off gives a decent idea for a preview before walktesting it. Make sure all areas are thoroughly walk tested still.
Please make sure that a skybox is selected for every outdoor area. Some players leave them disabled, but just as many leave them on and they can add a great effect to most settings. Hilly and mountainous terrain are so much prettier with a mathing sky as a backdrop. There's even an Underdark Cavern roof you can use where applicable. Since skyboxes can only be viewed IG, someone importing your area(s) is unlikely to actually catch it if not set.
Day/Night music and sound effects along with a battle music track being selected not only can add greatly to the mood, they are often not checked by whoever may be importing your work into the latest module version. So please choose what you believe best fits your areas and set them for us.
Select a load screen for each area. Just like lighting and music, what the players "look at" while your map is loading for them can help preset the "mood" of each area. Yes, there's only so many to choose from and rarely one that seems "perfect", but select one none-the-less.
I wanted to use "X" placeable and it's nolonger on the pallette: First off, sorry. Trimming some of the pallette options is a crucial step in lag reduction though. The fewer items on a modules pallette, the lower the resource count and we'll have less overhead and lag as a result. Secondly, reducing pallettes also makes DMs much, much, MUCH, less the lag beasts they are themselves.
So "something" is now missing, what do you do?
If you're a DM IG, make a request on this forum and a builder will try and see that your favorite tree, rock, pile of corpses or whatever is missing is readded to the pallette for you ASAP.
If you're a Builder, ... tough. We builders have other options at our disposal. Can't find your favorite tree anymore? There's likely one that is close and just not the right size or lacks the rock pile at its base, etc... . Paint one down that is close and open its properties and modify it. Need 30 more trees just like it? Right click to highlight the modified one then use "CTRL + C" to copy it. Now use "CTRL + V" to paste a copy whenever you next Left click with your mouse. Since all placeables need to be PLOT and STATIC for the most part, this is still a faster method of ensuring they are when building. This is especially useful for most of the placeables on the standard pallette.
How many placeables per area can be used here?: There is no set limit aside from common sense normally. Too much or too many of anything is never going to be a good thing though. There's always a price to pay as each placeable use increases the memory a map takes up in shear size within the module. Scripts like area cleaners have to also check each object in and area and then determine which are actually going to be "cleaned". So the more placeables we use in any given area, the more the CPU has to grunt and groan while processing them.
So use placeables sparringly, but not to the point that the area lacks the "feel" you are aiming for either.
Along with how many placeables we use in each area is how many use different appearances. A heavilly wooded area that uses 30 different tree appearances and has only 60 trees total is going to be laggier than one using only a dozen different appearances and 120 trees total. Why, because each client only needs to load a dozen and not thirty appearances there is why. This also helps the server in two more ways. Firstly, the appearance data sent is a smaller package and secondly, objects that block movement IG have to be calculated during both a PC and a NPCs movement (pathfinding) and by using fewer variations (appearances) we've fewer different sizes of objects blocking movement which helps the pathfinding calculations.
How can I tell which placeables on the pallette are preset as both PLOT and STATIC?: Placeables that are preset this way will be found prefixed with a "*" as in "*Small Pine Tree" or "*Fountain, 4 Spouted". Placeables without should be thoroughly checked in their properties when used to ensure they get set properly and all scripts are removed. If you create your own placeables or modify existing ones, it'll help others if you also apply the "*" as a prefix to the ones you use in your areas. This will assist the other builders who may be reviewing areas here to optimize them.
Tileset Animations: These should be kept to a minimum. What are they? They are the animations or visual effects that certain tiles have enabled on them. These are generally either falling leaves from trees or smoke from a building's chimney. Both should be used sparringly if at all on most maps. Water falls also carry animations, but will refuse to be disabled even if turned off in the toolset, so you can safely ignore those. The lag caused by these animations is minimal to the server and mostly creates client side lag. Unlike skyboxes, tile animations cannot be disabled by the players so please, use them only as needed.
Traps: Trap triggers may be preplaced by builders, though they will normally be used as guidelines by whomever imports the area(s) into the main module. We use a custom "semi-random" trap system here on SFS which requires special steps taken to employ properly and preplaced traps will merely pinpoint areas to best use our custom ones in.
Encounters and/or Creatures: Due to our multiple custom factions used here, we cannot accept areas that contain preplaced creatures or even encounters at this time. In many ways this is beneficial as "we" can then scale it ourselves to better fit its theme and adjoining areas. This also alleviates any questions regarding which AI templates to use, adding redundant custom gear to the item pallette, etc... .
Doors and other Transitions: Unconnected doors will need to be double checked and all scripts removed from them. Doors with no intended current use will also need to be set as PLOT and LOCKED and KEY REQUIRED TO UNLOCK. Leave the keys tag filed blank though. Doors and transitions connecting on the same map or same set of areas with a multi map submission may be pre-connected. Do not make transition connections to any existing maps for a submission though. Include a memo via PM or Email explaining where you desire the transitions connected instead.
Custom or Modified Scripts: No custom or modified scripts will be accepted with a submission here without first getting permission from myself.
Some tricks to use the above building techniques more efficiently:
1) After creating your map, either edit it to be larger or use a clear space to create any custom placeables you'll be needing. If you need 8 chairs for a setting and the one you want isn't on the pallette, then place any chair and open its properties and edit it. Then you can just use "CTRL+C" to copy it and then repeatedly use "CTRL+V" to paste your copies where reguired.
2) If you're designing several maps that will use many of the same placeables, you might consider adding a new blank map just for pre-building custom placeables on and delete it later. An example would be a crypt setting where you plan on having multiple levels using the same tombs, statues or debris. Premake them in a seperate area (or expand an existing map to make them in) and then create all of your placeables. You can after making them do a mass copy by holding down your left mouse button and starting in an upper corner of your grouping, draw a box by dragging the mouse over them. Release the button and all of your placeables should now be highlighted. You can now use your copy/paste functions to copy and paste them enmass.
3) Avoid creating any custom placeables in/on the pallettes themselves. This will cause the placeables to also be added to SFS's own pallettes after your map(s) are imported. Instead, always find something on the pallette that is of the same general type and edit it. The only exceptions should be placeables that are either called and created in a script somewhere or placeables that respawn when destroyed and placeables DMs have specifically requested to be added to the pallettes.
4) When a flickering flame is needed, use the "no glow" versions found on the Standard Pallette/Visual Effects. These look like the normal flames, they just do not change the static lighting in an area and are far, far less laggy. Generally, if you set the area lighting properly, few if any will ever notice the difference. Some CEP placeable appearance options also use the suffix "no ambient" to denote the same option for them. The "No Glow" options for NPC appearances are a whole other matter and shouldn't be confused with those similarly named as placeables.
5) When working with sloped terrain, avoiding trees with roots and/or rocks at their base will make setting them far easier. The same would apply to most large placeables as well. Often, you'll need to manually adjust a placeables "Z" Axis up or down (normally down) to blend it smoothly into a slope. If you lower a placeable below its default height when placed, they often no longer block movement and PCs can walk through them. There's a custom trigger we use here that can block movement. It's found on our Custom Trigger pallette under Custom/Generic Trigger/Stop. Use the "Stop" trigger to outline any placeable or group of placeables you wish to block PC movement through. NPCs can still waqlk through this trigger as blocking their movement during combat will cause them to become stuck. So place encounters and their spawn points with care.
6) Though it is rare, some placeable appearances cannot be set to STATIC in the toolset. The "Worm's" placeables along with some of the 1.69 tree appearances fall into this category as well as both the Bioware and CEP "mythalars". They all have animations that if set to static will cause a crash anyhow. Since they cannot be set to STATIC though, using them in smaller maps and sparringly is the best suggestion.