Difference between revisions of "Talk:Disable"

From the Oblivion ConstructionSet Wiki
Jump to navigation Jump to search
imported>DragoonWraith
(Disable DOES improve performance)
imported>Antares
 
(10 intermediate revisions by 4 users not shown)
Line 1: Line 1:
== PlaceAtMe and Disable==
[[User:DragoonWraith|<font face="Oblivion,Daedric Runes" size=3>D</font>ragoon <font face="Oblivion,Daedric" size=3>W</font>raith]] [[User_talk:DragoonWraith|<font face="Oblivion,Daedric" size=2>TALK</font>]] 13:28, 18 July 2006 (EDT): That's a temporary increase though. Disabled objects are unloaded from memory every so often, automatically.


:I heard this rumor a while ago, but I'm still not convinced. "Initially disabled" objects are not removed from the savegame. Objects that exist in an ESP or ESM (persistent or not) are not removed after you disable them, that's a fact that was extensively tested. Objects created by placeatme give you a reference to access them, the game would crash if you do so after the object is removed, and I doubt that Bethsoft made a garbage-collection-routine that just removes disabled objects that were created ingame without storing a reference to them.--[[User:JOG|JOG]] 13:40, 18 July 2006 (EDT)
::[[User:Gamall|Gamall]] 14:17, 18 July 2006 (EDT) :
::@ DragoonWraith : How often ? Did you test this ? Who provided this information ? I do hope the are unloaded from times to times (or when a limit is reached), but I'm not convinced. It is true that savegames seem to lose about 10 Kb every now and then, but nothing proves it is linked to disabled references being cleaned up.
::@ JOG : Try creating a reference with placeatme, use the console to get its reference, see to it that the zone you were in is discharged from memory, save, quit the game, go back to it, go back to the zone, use the reference, it will work. This proves references created with placeatme are saved. That and the significant weight increase in the savegames mentionned earlier.
:::So whether or not objects placed with placeatme and disabled are stored in the savegame is really not the issue anymore. ''They are''. The issue is whether or not saves are cleaned in the way DragoonWraith said, or any other way. They may be, and they may not be ; either way, I think this issue deserves much more attention than has been given to it this far.
[[User:DragoonWraith|<font face="Oblivion,Daedric Runes" size=3>D</font>ragoon <font face="Oblivion,Daedric" size=3>W</font>raith]] [[User_talk:DragoonWraith|<font face="Oblivion,Daedric" size=2>TALK</font>]] 15:51, 18 July 2006 (EDT): It was mentioned on this Wiki somewhere by a Beth employee... I think it was Ashileedo or Kkulman, I'll look around.
:[[User:DragoonWraith|<font face="Oblivion,Daedric Runes" size=3>D</font>ragoon <font face="Oblivion,Daedric" size=3>W</font>raith]] [[User_talk:DragoonWraith|<font face="Oblivion,Daedric" size=2>TALK</font>]] 15:55, 18 July 2006 (EDT): Found it; according to [[User Talk: Ashileedo#disable|Ashileedo]], disabled items will be removed:<BR>
::'''The danger is summong 50 iron swords at the wrong time and running out of memory. However, if you disable something that you've placeatme'd, I believe it gets thrown out -- I don't think right away, but our memory management code will clear it out when you hit your next load (though we'd have to check the code to be absolutely sure its at your NEXT load. But I am sure it does get cleared away. It most definitely will go away when the cell you summoned the objects in gets unloaded from memory). But the bigger risk here is if you placeatme something that is too expensive -- especially if player does it over and over and over again consecutively.''' --[[User:Ashileedo|Ashileedo]] 15:08, 7 April 2006 (EDT)


== Disable DOES improve performance ==
== Disable DOES improve performance ==


[[User:DragoonWraith|<font face="Oblivion,Daedric Runes" size=2>D</font>ragoon <font face="Oblivion,Daedric Runes" size=2>W</font>raith]] [[User_talk:DragoonWraith|<font face="Oblivion,Daedric" size=2>TALK</font>]] 21:37, 26 May 2007 (EDT): I think the line "do not depend on Disable to improve performance" is misleading. It does improve performance, by making one less thing for Oblivion to render. In many cases, the effect on performance of the graphics of an item is much greater than the effect of its script.
[[User:DragoonWraith|<font face="Oblivion,Daedric Runes" size=2>D</font>ragoon <font face="Oblivion,Daedric Runes" size=2>W</font>raith]] [[User_talk:DragoonWraith|<font face="Oblivion,Daedric" size=2>TALK</font>]] 21:37, 26 May 2007 (EDT): I think the line "do not depend on Disable to improve performance" is misleading. It does improve performance, by making one less thing for Oblivion to render. In many cases, the effect on performance of the graphics of an item is much greater than the effect of its script.
:I agree.  I've reworded the sentence to refer to savegame bloat. --[[User:Speedo|Speedo]] 19:12, 28 July 2008 (EDT)
I'm having a problem getting the collision of an object to turn off. Is it possible that the Disable command does not disable the collision of an activator? I'm sure I am right that the collision is not turning off since I have an invisible capsule around the player and when it is supposed to be disabled, i am still stuck inside. My code basically puts the capsule there, then disables it a few frames later. There shouldn't be any problem unless there is a problem with Disable. Any thoughts?--[[User:Omzy|Omzy]] 17:50, 1 June 2007 (EDT)
EDIT
I've narrowed my problem down to something excruciatingly simple. I was wrong in assuming Disable was the problem, and now it is clear that Disable does deactivate collision on activators.--[[User:Omzy|Omzy]] 07:04, 2 June 2007 (EDT)
==Issues With Spells==
Per the discussion started in [http://www.bethsoft.com/bgsforums/index.php?showtopic=863636 this thread] regarding disabling an object in the ScriptEffectStart block, and its effect on later blocks - I've done some testing.  On a script which had a duration of 5 seconds and all three Start/Update/Finish blocks the results:
'''Spell cast on NPC'''
*NPC is disabled
*Update block runs for 3 frames
*Finish block runs
'''Spell cast on container or door'''
*Object is disabled
*Update block runs for 2 frames
*Finish block does not run
'''Spell cast on NPC sitting in chair'''
*The NPC is ''not'' disabled, spell script runs normally
--[[User:Speedo|Speedo]] 19:12, 28 July 2008 (EDT)
== Disabling and Respawning ? ==
'''Will disabled actors respawn''' ? Right now, to remove actors from a particular cell, I move them to a remote cell. So if I disable them instead, will they respawn normally ? --[[User:Shademe|shademe]] 09:28, 12 September 2008 (EDT)
:What is wrong with just moving them to a remote cell? Seems to me to be the simplest option, or is what you are doing more generic and you can't really keep track of where many Actors were? I highly doubt that disabled actors will respawn because they are still technically alive just in another state of being.
:--[[User:Antares|Antares]] 23:10, 15 October 2008 (EDT)
:: Well, kyoma answered differently ! And to why I wanted to disable them, it's like what you said - I don't really want to track them... oh and btw, i was talking about ''disabling dead'' actors :) -- [[User:Shademe|shademe]] 03:18, 16 October 2008 (EDT)
:::Oh, well '''dead actors''' are a whole other kettle of fish my friend, I am not at all familiar with OBSE but surely it has some way of affecting the Respawn flag? Maybe instead you could set actor refraction and make them invisible and use the SetDestroyed function, that way they would never leave their death location. Getting them back alive again (ever) may prove to be a sight trickier. I've found out that scripting isn't doing what you think you want to do but rather making it look like you did.
:::--[[User:Antares|Antares]] 03:29, 16 October 2008 (EDT)
:: '''I've found out that scripting isn't doing what you think you want to do but rather making it look like you did.''' - Nice :) As far as I have seen, disabled, dead actor '''do''' respawn. Anyways, i'm just disabling a ref.; and I didn't use OBSE either. And AFAIK, the same thing happens when the cell resets.
The refraction and setdestroyed seemed to be a little too shabby to me. But I'm currently using the disable method and it works without hitches -- [[User:Shademe|shademe]] 03:35, 16 October 2008 (EDT)
:So you have a solution? I'm curious now, could be useful information.
:--[[User:Antares|Antares]] 05:07, 16 October 2008 (EDT)

Latest revision as of 04:07, 16 October 2008

PlaceAtMe and Disable[edit source]

Dragoon Wraith TALK 13:28, 18 July 2006 (EDT): That's a temporary increase though. Disabled objects are unloaded from memory every so often, automatically.

I heard this rumor a while ago, but I'm still not convinced. "Initially disabled" objects are not removed from the savegame. Objects that exist in an ESP or ESM (persistent or not) are not removed after you disable them, that's a fact that was extensively tested. Objects created by placeatme give you a reference to access them, the game would crash if you do so after the object is removed, and I doubt that Bethsoft made a garbage-collection-routine that just removes disabled objects that were created ingame without storing a reference to them.--JOG 13:40, 18 July 2006 (EDT)
Gamall 14:17, 18 July 2006 (EDT) :
@ DragoonWraith : How often ? Did you test this ? Who provided this information ? I do hope the are unloaded from times to times (or when a limit is reached), but I'm not convinced. It is true that savegames seem to lose about 10 Kb every now and then, but nothing proves it is linked to disabled references being cleaned up.
@ JOG : Try creating a reference with placeatme, use the console to get its reference, see to it that the zone you were in is discharged from memory, save, quit the game, go back to it, go back to the zone, use the reference, it will work. This proves references created with placeatme are saved. That and the significant weight increase in the savegames mentionned earlier.
So whether or not objects placed with placeatme and disabled are stored in the savegame is really not the issue anymore. They are. The issue is whether or not saves are cleaned in the way DragoonWraith said, or any other way. They may be, and they may not be ; either way, I think this issue deserves much more attention than has been given to it this far.

Dragoon Wraith TALK 15:51, 18 July 2006 (EDT): It was mentioned on this Wiki somewhere by a Beth employee... I think it was Ashileedo or Kkulman, I'll look around.

Dragoon Wraith TALK 15:55, 18 July 2006 (EDT): Found it; according to Ashileedo, disabled items will be removed:
The danger is summong 50 iron swords at the wrong time and running out of memory. However, if you disable something that you've placeatme'd, I believe it gets thrown out -- I don't think right away, but our memory management code will clear it out when you hit your next load (though we'd have to check the code to be absolutely sure its at your NEXT load. But I am sure it does get cleared away. It most definitely will go away when the cell you summoned the objects in gets unloaded from memory). But the bigger risk here is if you placeatme something that is too expensive -- especially if player does it over and over and over again consecutively. --Ashileedo 15:08, 7 April 2006 (EDT)

Disable DOES improve performance[edit source]

Dragoon Wraith TALK 21:37, 26 May 2007 (EDT): I think the line "do not depend on Disable to improve performance" is misleading. It does improve performance, by making one less thing for Oblivion to render. In many cases, the effect on performance of the graphics of an item is much greater than the effect of its script.

I agree. I've reworded the sentence to refer to savegame bloat. --Speedo 19:12, 28 July 2008 (EDT)


I'm having a problem getting the collision of an object to turn off. Is it possible that the Disable command does not disable the collision of an activator? I'm sure I am right that the collision is not turning off since I have an invisible capsule around the player and when it is supposed to be disabled, i am still stuck inside. My code basically puts the capsule there, then disables it a few frames later. There shouldn't be any problem unless there is a problem with Disable. Any thoughts?--Omzy 17:50, 1 June 2007 (EDT)

EDIT I've narrowed my problem down to something excruciatingly simple. I was wrong in assuming Disable was the problem, and now it is clear that Disable does deactivate collision on activators.--Omzy 07:04, 2 June 2007 (EDT)

Issues With Spells[edit source]

Per the discussion started in this thread regarding disabling an object in the ScriptEffectStart block, and its effect on later blocks - I've done some testing. On a script which had a duration of 5 seconds and all three Start/Update/Finish blocks the results:

Spell cast on NPC

  • NPC is disabled
  • Update block runs for 3 frames
  • Finish block runs

Spell cast on container or door

  • Object is disabled
  • Update block runs for 2 frames
  • Finish block does not run

Spell cast on NPC sitting in chair

  • The NPC is not disabled, spell script runs normally

--Speedo 19:12, 28 July 2008 (EDT)


Disabling and Respawning ?[edit source]

Will disabled actors respawn ? Right now, to remove actors from a particular cell, I move them to a remote cell. So if I disable them instead, will they respawn normally ? --shademe 09:28, 12 September 2008 (EDT)

What is wrong with just moving them to a remote cell? Seems to me to be the simplest option, or is what you are doing more generic and you can't really keep track of where many Actors were? I highly doubt that disabled actors will respawn because they are still technically alive just in another state of being.
--Antares 23:10, 15 October 2008 (EDT)
Well, kyoma answered differently ! And to why I wanted to disable them, it's like what you said - I don't really want to track them... oh and btw, i was talking about disabling dead actors :) -- shademe 03:18, 16 October 2008 (EDT)
Oh, well dead actors are a whole other kettle of fish my friend, I am not at all familiar with OBSE but surely it has some way of affecting the Respawn flag? Maybe instead you could set actor refraction and make them invisible and use the SetDestroyed function, that way they would never leave their death location. Getting them back alive again (ever) may prove to be a sight trickier. I've found out that scripting isn't doing what you think you want to do but rather making it look like you did.
--Antares 03:29, 16 October 2008 (EDT)
I've found out that scripting isn't doing what you think you want to do but rather making it look like you did. - Nice :) As far as I have seen, disabled, dead actor do respawn. Anyways, i'm just disabling a ref.; and I didn't use OBSE either. And AFAIK, the same thing happens when the cell resets.

The refraction and setdestroyed seemed to be a little too shabby to me. But I'm currently using the disable method and it works without hitches -- shademe 03:35, 16 October 2008 (EDT)

So you have a solution? I'm curious now, could be useful information.
--Antares 05:07, 16 October 2008 (EDT)