Starke Von Oben Posted September 14, 2009 Is there a list of do's and dont's for Polyobjects? What are the limitations of them, and how can level designers work around these limitations? Currently experiencing problems with them in my current level. I'm trying to make a T-corridor to a cell block with lots of Polyobjects for the doors. It all works fine until I start putting polyobjects on the southern part of the corridor, then I get that nasty error where you can see the Polyobject through the wall as It moves into it. What is this error? 0 Share this post Link to post
Starke Von Oben Posted September 14, 2009 Also regarding the movement angle of the polyobject, what are the relative numbers for north, south, east and west? It seems that 64 moves the object north. What are the numbers for the other ones? 0 Share this post Link to post
Starke Von Oben Posted September 14, 2009 From my experiments it seems to be determined as to where you place the sectors with the polyobject. In that case, what is the best advice with regards placing the polyobject sector? What do mappers usually do? 0 Share this post Link to post
LogicDeLuxe Posted September 14, 2009 Starke Von Oben said:From my experiments it seems to be determined as to where you place the sectors with the polyobject.You mean the sector where you build them? Usually, it is as close as possible to the spot where the polyobjects appear in the game, so you can easily find them in the editor, but this certainly is not a requirement. Use a polyobject aware nodebuilder, which makes sure the sector where the polyobject appears won't be split. Make sure, the sector where the polyobject appears is convex. (Otherwise, a split is unavoidable.) If you still get glitches, zoom in the automap and watch closely if the polyobject crosses any linedefs. 0 Share this post Link to post
Starke Von Oben Posted September 14, 2009 LogicDeLuxe said:You mean the sector where you build them? Usually, it is as close as possible to the spot where the polyobjects appear in the game, so you can easily find them in the editor, but this certainly is not a requirement. Use a polyobject aware nodebuilder, which makes sure the sector where the polyobject appears won't be split. Make sure, the sector where the polyobject appears is convex. (Otherwise, a split is unavoidable.) If you still get glitches, zoom in the automap and watch closely if the polyobject crosses any linedefs. My nodebuilder is zdbsp, I assume that's polyobject aware? What is covex? I know for a fact no linedefs are being crossed. It seems to be dependant on where I place the polyobject sectors. Is it allowed or possible to allocate all polyobjects (such as doors) in one sector? Or does that cause errors? I am not doing this currently. 0 Share this post Link to post
LogicDeLuxe Posted September 14, 2009 Each polyobject should appear in its own sector. You can build as many as you like in the dummy sector though. If you could upload an example, someone might take a look to find out what causes the problem. 0 Share this post Link to post
Blargharghargh Posted September 14, 2009 http://en.wikipedia.org/wiki/Convex_and_concave_polygons Convex means that it doesn't come back in on itself. The difference between a t shaped polygon and an O shaped polygon. The images on the page should quickly illuminate what I mean. 0 Share this post Link to post
Gez Posted September 14, 2009 Angles: 0 is east, 64 north, 128 west, 192 south. That's Byte Angle Measurement (BAM) with east as the reference point. Limits of polyobjects: 1. cannot be concave, that it is to say, they cannot have a cavity. (See? Etymology is useful!) 2. must remain always in the same subsector (a subsector being a convex subpart of a sector, as created by the nodebuilder) and cannot share this subsector with another polyobject. Eternity, however, has overhauled the polyobject code to remove limit #2. I think limit #1 still applies. 0 Share this post Link to post
Creaphis Posted September 14, 2009 Gez said:Eternity, however, has overhauled the polyobject code to remove limit #2. I think limit #1 still applies. Correct. 0 Share this post Link to post
Quasar Posted September 14, 2009 LogicDeLuxe said:Use a polyobject aware nodebuilder, which attempts to keep the sector where the polyobject appears from being split. My corrections in italics. Polyobject-aware nodebuilders can at best test other available partition lines instead of picking one that splits a polyobject sector. If none such is available, then there's nothing it can do. It is easy to create hypothetical situations where other polyobjects cause an exhaustion of available node lines that will not split any other polyobjects. Because of this ultimate futility, a system such as dynasegs is necessary to guarantee proper behavior in all situations. 0 Share this post Link to post
DaniJ Posted September 14, 2009 Starke Von Oben said:Is there a list of do's and dont's for Polyobjects? What are the limitations of them, and how can level designers work around these limitations? Are you asking regarding vanilla Hexen or perhaps a port such as Doomsday, Eternity or ZDoom? Each handles polyobjects somewhat differently. Consequently, what is a "do" for vanilla Hexen may not mater in the slightest in a port. Doomsday for example handles polyobjects entirely differently. For example, polyobject linedefs are completely ignored during the internal BSP and "glnode" build process. 0 Share this post Link to post
Starke Von Oben Posted September 15, 2009 Thank you all for your help and advice. I just learned from this site (http://zdoom.org/zdkb/polybld.html) that it's best to do the polyobjects last, after the level has been built so I'm going to do that instead. If the error still persists I'll upload the level for your advice. Thanks again! 0 Share this post Link to post
Starke Von Oben Posted September 15, 2009 One more thing: Can you have key activated polyobjects, or do you need to code this in yourself as a designer? 0 Share this post Link to post
Quasar Posted September 15, 2009 To make it require a key you would need to use the ACS_ExecuteLocked (or LockedExecute?? 6_9) line special instead of the normal Polyobj_* special. Then call the Polyobj special from inside your script. 0 Share this post Link to post
Starke Von Oben Posted September 15, 2009 Quasar said:To make it require a key you would need to use the ACS_ExecuteLocked (or LockedExecute?? 6_9) line special instead of the normal Polyobj_* special. Then call the Polyobj special from inside your script. Now I'm getting out of my depth! ACS execute locked? I've not come across this yet. Help! 0 Share this post Link to post
Gez Posted September 15, 2009 Quasar said:To make it require a key you would need to use the ACS_ExecuteLocked (or LockedExecute?? 6_9) LockedExecute. http://zdoom.org/wiki/ACS_LockedExecute 0 Share this post Link to post