Difference between revisions of "PlaceAtMe"

621 bytes added ,  11:20, 20 March 2008
imported>DragoonWraith
(→‎Console Use: removing section - true of every function, does not belong here)
imported>Haama
Line 18: Line 18:
==Warning: Repeated Use Causes Save-Game Bloat==
==Warning: Repeated Use Causes Save-Game Bloat==


When PlaceAtMe creates a new reference to something, that reference is added to the savegame, and in most situations it cannot be removed. If PlaceAtMe is used in a script which can repeat an arbitrary number of times (i.e. every time the player does a specific action), the script will result in save game bloat.
Objects created with '''PlaceAtMe''' become part of the savegame file and slightly increase its size. However, those slight increases add up and can become huge when '''PlaceAtMe''' is continuously used. Once the savegame file is around 10 megs problems start to creep up, including extended load times, increased game instability and CTDs, and at extreme levels, considerable performance loss and an inability to load the game.


Save game bloat has been linked to extended load times, increasing game instability, and at extreme levels, considerable performance loss.
As a rule of thumb, it's OK to use '''PlaceAtMe''' a finite number of times (i.e., a quest script that runs once and creates 20 '''PlaceAtMe''' objects). It's not OK if your script can potentially use '''PlaceAtMe''' an infinite number of times (i.e., a Summon spell that creates a new creature with '''PlaceAtMe''', an activator/button that creates a new sword).


Therefore, avoid PlaceAtMe in any situation possible. Use [[MoveTo]] on persistant references instead of the [[PlaceAtMe]] / [[Disable]] couple.
With some careful planning, you can use different functions and avoid these problems. For instance, for summonings you can create a persistent creature, place it in a remote cell in the CS, and when the spell is cast use '''''CreatureRef.[[MoveTo]] player''''' (note that there's more to summoning, but that avoids the '''PlaceAtMe''' problems). If you need an object to appear, create and place it in the CS, make sure it's "Persistent" and "Initially Disabled", and use '''''ObjectRef.[[Enable]]'''''.


Most of the time, MoveTo will prove at least as convenient as PlaceAtMe. However, if really ''need'' to use PlaceAtMe in your mod, it would be fair to indicate that fact in your mod's Readme file.
If you really ''need'' to use PlaceAtMe in your mod, it would be fair to indicate that fact in your mod's Readme file.


==Getting the Created Object's Reference==
==Getting the Created Object's Reference==
Anonymous user