PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Plugins mit PlaceAtMe?



Laulajatar
07.02.2009, 12:23
Hallo ^.^

Ich nutze ziemlich viele Plugins und nachdem ich neulich angefangen habe, sie alle mal sauberzumachen (Auslöser war eins mit dem schönen Recompile All Knopf) bin ich nun dabei sie zu durchsuchen, ob sie PlaceAtMe verwenden.

Meine erste Frage wäre, ob es "erlaubt" wäre, wenn ich was finde, es hier zu posten. Ich will natürlich kein Plugin schlecht machen, aber ich will mir auch nicht meine Spielstände ruinieren. Bei manchen würde ich aber auch gerne sichergehen, dass ich mich in der Funktionsweise der Skripe (theoretisch oder praktisch unbegrenzte Nutzung von PlaceAtMe) auch nicht täusche - wäre ja schade um das PI, wenn ich es umsonst deaktiviere.

Oh, und vielleicht kann mir jemand sagen, wie groß ein Savegame nach etwa 40 Spielstunden normalerweise ist, falls es da irgendwelche Werte gibt? Meines kommt mir schon sehr groß vor :\
(Auf jeden Fall größer als ein alter Spielstand mit 120 Spielstunden :eek:)

Funktioniert DeleteFullActorCopy auch bei mit PlaceAtMe erschaffenen Refs? http://www.multimediaxis.de/images/smilies/old/1/gruebel.gif

SirTroy
07.02.2009, 12:51
Ja, wenn du dir die ganze mühe machen willst und PlaceAtMe ersetzen willst, bitte sehr viel spaß ;) du müsstest für jedes PlaceAtMe eine Ref erschaffen und mit MoveTo ersetzen weil ja sonst etwas fehlt. Ich denke aber mal das nicht viele PlugIns PlaceAtMe benutzen.

Mein SaveGame ist 23 MB groß und ich spiele 20-30 stunden daran.

Nein mit DeleteFullActorCopy kannst du keine PlaceAtMe Refs löschen.

Magicflame
07.02.2009, 12:56
Was findest Du denn groß?
Ich habe mal bei mir geschaut: bei einem Charakter, der 44 Spielstunden hat und ca. 70 Plugins nutzt, ist das Savegame 2,12 MB groß.

Was ist denn das Schlimme an PlaceAtMe bei Plugins?
Ich verstehe darunter, daß man Dinge automatisch bekommt - ist das so gemeint?
Das dürfte eigentlich auf jede Belohnung zutreffen... :rolleyes:
Oder meinst Du etwas ganz anders?


@SirTroy: 23 MB?? :eek: Wie kommt das denn??
Selbst bei einem Charakter mit 95 Spielstunden bin ich noch knapp unter 3 MB. http://www.multimediaxis.de/images/smilies/old/1/gruebel.gif

Laulajatar
07.02.2009, 13:04
Meiner mit 40 hat schon 6 MB - mein alter noch ohne Plugins hatte bei 120 Stunden nur 5 MB. :( Na da miste ich lieber nun aus, ehe ich nen neuen anfange.

Und ich werde sie nicht ersetzen - ich werde die Dinger einfach deaktivieren ;) Kann mich nicht erinnern, dass mich jemand zwingt, die PIs zu nutzen.

Und wenn bei dir mir 23 MB alles läuft - Glückwunsch :eek: Ich will es nicht darauf ankommen lassen.

PlaceAtMe ist ein Befehl, der eine neue Referenz erzeugt, die jedoch im Savegame direkt abgelegt wird. Einmal macht nichts, zweimal macht nichts, aber wenn das jede Sekunde, bei jedem Laden oder jedem Beschwören auftritt, werden die Savegames riesig.

Der Hinweis dazu ist hier (http://cs.elderscrolls.com/constwiki/index.php/PlaceAtMe) im CS Wiki zu finden.

DWS
07.02.2009, 13:23
Savegame Bloating? Eigentlich geht das unter 10MB doch noch. Massive Datenblasen sehen anders aus: 20MB und aufwärts.
Tool zum Entfernen: http://wrye.ufrealms.net/Wrye%20Bash.html#RemoveBloat

Bei mir (gazillionen von Mods) :
12 Spielstd. ~ 6MB, bewegt sich später um die 15MB. Das hängt auch ab von dem Respawns-alle x Tage-Faktor (und durch wie viele zu speichernde Zellinhalte man sich so bewegt), der z.B. in Francescos und anderen Overhauls umgestellt werden kann.

Laulajatar
07.02.2009, 14:58
Na Datenblasen findet das bei mir auch nicht http://www.multimediaxis.de/images/smilies/old/1/gruebel.gif

Oh, doch, ganze 4 - aber kein Wunder, hab schon wieder n paar Mods deinstalliert.

Dafür bin ich mit dem Durchsuchen meiner PIs fertig und habe ein paar gefunden, die PlaceAtMe nutzen - und ein paar, die es offensichtlich wirklich dauernd nutzen. Damit bin ich nun 2 PIs los und hoffe, dass ich was von merke. Darunter welche, von denen ich es nicht erwartet hätte oo 100% sicher bin ich mir nicht bei Skriptinterpretationen, aber für ein paar grafische Spielereien brauch ich nicht 1000de Refs in meinem Savegame. Und bei anderen weiß ich, was ich vermeiden sollte (Beschwörungen etc.)

Sicher, 6 MB ist noch nicht schlimm, liegt vielleicht wirklich nur an den vielen Plugins. Mein letzter Char hatte zum Schluss weit mehr als die 120 Stunden und ich war nicht annähernd mit allem durch. Ich will nicht in 100 Stunden dann vor einem Problem stehen, wenn ich es jetzt schon verhindern kann. Ich bin ein sehr langsamer Spieler, 200 Stunden dürften das hier mindestens werden wenn ich mal die Zeit dazu habe.

Mir gehts eben um den übermäßigen oder überflüssigen Gebrauch dieser Funktion. Whatever. Ich bin froh, zwei gefunden und deaktiviert zu haben, werde ein Auge auf meine Savegamegröße haben und poste hier lieber keine Namen, ehe ich mich noch irre und irgendeinem PI unrecht tue :rolleyes:

Danke für eure Antworten!

Black Cobra
07.02.2009, 15:11
So ich habe auch mal bei mir geschaut bin bei 209 Spielstunden :D und der Save ist ca 11 MB groß bei ca 50 installierten mod´s also ich finde den auch nicht übermäßig groß.

Greets
Black Cobra

DWS
07.02.2009, 17:27
Oh, doch, ganze 4
Das ist nichts. Die würde ich wahrscheinlich nicht mal entfernen.

Hier schreibt dev_akm einiges interessantes zu PlaceAtMe, ziemlich weit oben:
http://www.bethsoft.com/bgsforums/index.php?showtopic=628331&st=0&start=0

Also, eine Schwarze Liste würde ich auch nicht machen, aber wie und womit findet man solche Mods am besten?

Laulajatar
07.02.2009, 21:00
Jap, deswegen... das "ganze 4" war meine schriftlich vermutlich nicht so ganz zu erkennende Version von Ironie. Da lass ich die Finger von der Funktion, das steht ja in der Wrye Readme selbst. Unter 200 oder so sollt man es garnicht tun.

Wie "man" sie findet, weiß ich nicht. Ich habe meine 180 im CS geladen und die Textsuche nach "PlaceAtMe" gemacht :D Die Skripte rausgesucht und die FormIDs verglichen und die PIs rausgesucht und dann überprüft (oder es versucht) ob es häufig benutzt wird. Schlecht - alle paar Sekunden, OnLoad, Beschwörung etc. Akzeptabel, wenn auch nicht sooo nötig: Einmalig in Bosskämpfen etc. Nervtötend: Noch in Skripten, die aber garnicht mehr verwendet werden ;)
Wobei ich dafür theoretisch jedes Plugin verstehen müsste - was ich vor allem in so kurzer Zeit sicher nicht fehlerfrei hinbekomme. Deswegen die Sorge falscher Verdächtigungen.

Die Warnung beim CS Wiki kenne ich ja. Englische Tutorials bzw. das, auf das er sich bezieht, nicht. Da ist auch nichts mehr von zu finden (oder ich bin zu blöde), aber der Thread ist auch schon ein Jahr alt. Vermutlich ist es inzwischen bekannter.
Würde aber erklären, warum ich bei einigen ZauberPIs dieses Problem gefunden habe. Der Spellcaster, vermutlich ein Gegenstand, wird mit PlaceAtMe gerufen. Ich kannte es vorher nur mit MoveTo und hatte damit keinerlei Probleme, auch im eigenen PI, wo ich es verwendet habe, nicht.

Eine "schwarze Liste" war auch nie meine Absicht!
Wie gesagt, ich will ganz sicher kein PI schlecht machen, allerdings finde ich es auch schade, dass es so schwer ist einen Fehler zu melden, (der in diesem Fall vielleicht sogar das Savegame auf Dauer schädigen könnte) ohne gleich der Buhman zu sein oder doof angemacht zu werden :\ Hatte ich auch schon.

Würde sowieso lieber rauskriegen, ob ich auch nicht falsch liege.

Low Post
08.02.2009, 00:21
Beschwörungen gehören imho auch schon zu den schwereren Fällen, da die theoretisch unendlich oft genutzt werden können.

Wenn das nur einmal im ganzen Spiel vorkommt sollte das wirklich keine Probleme machen, bei jedem Scriptdurchlauf wird das ganze dagegen schon problematischer. Vor allem, wenn es sich um Globale (Quest) Scripte/Scripte auf Persistant References handelt, da diese eigentlich durchgehend ablaufen.

In den meisten Fällen lässt sich das auch durch einen MoveTo-Befehl lösen, was aus SaveGame-Bloating-Gründen dann auch eindeutig zu bevorzugen ist.

bg2408
08.02.2009, 09:32
Kleiner Hinweis zu PlaceAtMe: PlaceAtMe sorgt für Probleme bei persistenten Objekten (z.B. Activators). Hingegen gibt es keine Probleme mit temporären Objekten (z.B. Kreaturen, die keine "Quest Items" sind). Die Furcht vor PlaceAtMe ist ein wenig übertrieben - denn einmal so gesagt, Oblivion selbst nutzt PlaceAtMe für temporäre Objekte alle Nase lang, ohne Bloat zu erzeugen ;).

MODIFIED
08.02.2009, 14:49
Kleiner Hinweis zu Placeatme:
Es gibt immernoch keine Quelle, welche BG2408's Theorie bestätigt.

Eine Referenz eines bestehenden Objektes, welche über ein Plugin eingefügt wird wird wieder entfernt, wenn das zugehörige Plugin wieder deaktiviert wird.
Wird diese Referenz aber im Spiel über ein Skript, Konsolenbefehl etc. mittels Placeatme eingefügt, bleibt sie im Spiel wie jedes andere Objekt auch, egal ob dies nun QuestItems sind oder nicht.

http://cs.elderscrolls.com/constwiki/index.php/PlaceAtMe

Es ist definitiv auch nicht richtig, das Oblivion selbst temporäre Placeatme's alle Nase lang erzeugt.

Rung
08.02.2009, 15:01
Also,

dass die Angst vor PlaceAtMe übertrieben ist, ist sicher, denn die Funktion selbst ist weder schädlich noch irgendwie spielzerstörend. Wenn man weiß, wie man damit umzugehen hat, ist sie sehr nützlich.
Den einzigen Stolperstein, den die Funktion legt,muss man als Modder natürlich kennen. Dieser Stolperstein ist der Fakt, dass man mit der Funktion persistente Objekte erzeugt. Diese Objekte werden im Spielstand verankert. Das gilt nicht nur für die mit PlaceAtMe erzeugten Objekte, sondern für alle persistenten Referenzen, somit auch für Türen, Fallen und Questobjekte, auf die extern zugegriffen wird.
Das ist solange kein Problem, wie man die Funktion nicht exzessiv benutzt, wie eben bei Beschwörungen oder früheren Versionen der Ernteplugins.

Wenn ich aber ein Objekt habe, das ich auch per Hand als persistente Referenz einfügen würde, wäre es theoretisch kein Unterschied, wenn ich das stattdessen mit der PlaceAtMe-Funktion tun würde.

PlaceAtMe wird in Oblivion schon recht oft genutzt. 31 mal, wie man hier (http://cs.bethsoft.com/constwiki/index.php/List_of_function_appearances_in_scripts#PlaceAtMe_.2831.29)sehen kann.

bg2408
08.02.2009, 15:13
Kleiner Hinweis zu Placeatme:
Es gibt immernoch keine Quelle, welche BG2408's Theorie bestätigt.Die Quelle bin ich. Und so ziemlich jeder weitere "fortgeschrittene" Modder aus den Bethsoftforen der placeatme die letzten Jahre experimentell untersucht hat.

Du willst Quellen? Such in den Bethsoftforen nach placeatme *shrug*.


Wird diese Referenz aber im Spiel über ein Skript, Konsolenbefehl etc. mittels Placeatme eingefügt, bleibt sie im Spiel wie jedes andere Objekt auch, egal ob dies nun QuestItems sind oder nicht.Temporäre Objekte werden, sofern nicht in einer .esp / .esm verankert, beim Cell Reset entfernt. Egal, wodurch die entstanden sind.


Es ist definitiv auch nicht richtig, das Oblivion selbst temporäre Placeatme's alle Nase lang erzeugt.Obliviontore? Shambles? KoO-Obelisken? Um einmal drei Beispiele zu nennen...

MODIFIED
08.02.2009, 16:02
Ok, ok

Hab es gerade mal getestet.
Eine Referenz geplaced, getötet, RefID notiert (ff014042), Zelle verlassen, 4x24 Std. gewartet und ich kann nicht mehr mit moveto hinteleportieren

Scheint tatsächlich entfernt worden zu sein und sich nur auf persistente Objekte auszuwirken.

Entschuldigt die Behauptung eines Moddingnoobs, welcher nicht jahrelang Zeit für experimentelle Studien für ein Spiel verschwendet hat. :D

Naja egal, wende mich nun wieder dem GECK zu.

Laulajatar
14.02.2009, 22:13
Alles, was ich je glaubte, verstanden zu haben, verstehe ich nun nicht mehr ;)
Es wäre ja auch zu einfach, wenn man einfach sagen könnte "PlaceAtMe" ist böse.

Wie ich es immer verstanden hatte, ich weiß auch nicht, warum: Mit PlaceAtMe eingefügte Dinge bringen ihr BaseObjekt in den Spielstand mit. Selbst wenn die Referenz entfernt wird, bleibt der BaseObject Eintrag im Spielstand erhalten. Inzwischen gehe ich davon aus, dass ich das falsch verstanden habe.

Ich möchte es einfach nur verstehen und auf gar keinen Fall irgendeine Meinung oder irgendein PI angreifen. Das nur äh... eventuell nochmal und vorneweg.

Nehmen wir mal an, ich habe ein Plugin, das ein alle 2 Sekunden laufendes Questscript hat, das jedes mal wieder einen Gegenstand per PlaceAtMe beim Spieler platziert damit der einen Zauber sprechen kann. (Lässt sich auch wunderbar mit MoveTo lösen, ich weiß, habe ich inzwischen selbst dort eingebaut.)
Ich habe mir gerade meine Savegames angesehen. Ich habe einen Spielstand, nach dem ich eine Menge Plugins, darunter auch dieses, aktiviert habe. Und ich nutze die Statistikfunktion über Spielstände von Wrye Bash.


Neue ObjectRef Basen
Null Bases: 4
Count IRef BaseId
8728 000049F4 1A003422 604 kb

Bei diesem Spielstand vor allen Plugins fehlt dieser Teil. Danach kann man sozusagen zusehen, wie das mehr wird. Ich habe eben mal den Spielstand geladen und bin so eine Minute auf der Stelle rumgehoppst. Dabei ist die Zahl von 8713 auf 8728 gestiegen. Ohne dieses eine Plugin nicht. Also habe ich mich brav in die Ecke gestellt und 6 Tage (5 Tage Respawn) gewartet. Das Savegame ist merklich kleiner geworden, aber diese Zahl nicht: inzwischen 8744.
3422 ist auch die FormID dieses Gegenstands im CS. Bedeutet das also nicht, dass diese ganzen sinnlosen Gegenstände bis ans Ende aller Tage disabled in der Gegend rumstehen? Oder zumindest irgendetwas bleibt? Das inzwischen immerhin 600kb groß ist?

Wrye Bash zeigt ja nur ab 100 Stück an. Wenn ich per PlaceAtMe ein "paar" Mal Gold herbeischaffe, taucht dann auch
222 0000022F 0000000F 11 kb dort auf.

Auch nach 6 Tagen warten in einer anderen Zelle verschwindet dieser Eintrag nicht http://www.multimediaxis.de/images/smilies/old/szuck.gif

Wenn ich dieses Plugin nun entferne, lade und speichere, dann werden all diese Dinger zu Nullreferenzen:

Neue ObjectRef Basen
Null Bases: 8925
Count IRef BaseId
222 0000022F 0000000F 10 kb
8921 000049F4 00000000 618 kb

Die könnte ich theoretisch entfernen, oder? Aber auch das ist ja nicht ganz so sicher.
Und wenn PlaceAtMe Dinge aus der Oblivion.esm hinzugefügt hätte, ginge es doch nicht, weil die nie zu Nullreferenzen werden?


Dann wollte ich mal Kreaturen testen. Bin in die Herberge zum Kaufmann gegangen, weil die grad in der Nähe war.

Wenn ich rumstehe - Spielstand 5797 kb.
Habe 20x 3 Kreaturen über einen PI - Zauber mit PlaceAtMe beschworen.
Spielstand 5846 kb, sind alle gekillt und disabled in meiner Zelle.
51 Kreatur-Referenz von der Wrye Bash Statistik, vorher: 2023, nachher: 2083. Da sind sie. Und zwar direkt im Save: 553 Streamsave_2.ess.
Beim Zellenwechsel in eine vorher unbesuchte Zelle wird der Spielstand 5851 kb groß +- n bisschen, je nachdem wer grad mit drinrum steht. Und wieder den Respawn abwarten.
Und warten. Und ... nix. 10 Ingametage später noch immer:

553 Streamsave_13.ess
2083 Total

Auch wenn ich sicherheitshalber nochmal sonstwo warte, die verschwinden nicht. Würde das nicht auch bedeuten, dass irgendetwas dauerhaft da ist?

Natürlich ist so etwas bei einer einmaligen, zweimaligen oder irgendwie begrenzten Sache ziemlich egal, das sind kaum Datenmengen. Angenommen es wären alle 60 Obliviontore der MQ? Alle Endgegner einer Questmod? Selbst das ist dagegen lächerlich wenig. Aber Beispiel eins mit den immerhin 8000 Refs in ca. 10 Spielstunden? :\ Das wären, wenn das so weitergeht, in 100 Stunden 6 MB - das ist mehr, als mein gesamter Charakter vorher hatte! Und das vollkommen sinnlos - wie ich ausprobiert habe, geht es wunderbar mit MoveTo. Oder ein Beschwörungszauber, den man andauernd, in jedem Kampf nimmt.

Was mir dann aufgefallen ist:

Dann habe ich testweise 250 Ratten in meine Zelle geholt - Spielstand wurde mit einem Mal 600 kb größer. Sobald ich sie verlassen habe etwas kleiner, nach einem Respawn der Zelle jedoch ist er exakt wieder so klein wie zuvor!

Der Unterschied zu den beschworenen Ratten und denen, die ich über die Konsole geholt habe: Die beschworenen standen nicht auf "Respawn" - sondern sogar auf "Quest Item" -, die normalen schon!


Zu guter letzt habe ich mir 111 Äpfel auf die Straße geholt, die Statistik angesehen: Die 111 Äpfel tauchen auf. Habe ca. die Hälfte von ihnen aufgehoben und sie tauchen an dieser Stelle nicht mehr auf, waren ja dann weniger als 100.
Der Objekt-Referenz Abschnitt sagt mir:
Vorher: 9275
Nach PlaceAtMe: 9386
Nach Aufheben: 9314
Also verschwinden sie, sobald ich sie aufnehme, offenbar wieder.

Was ich daraus schließen würde, ohne viel weiteres Hintergrundwissen: Mit PlaceAtMe geholte Gegenstände und Kreaturen verhalten sich exakt wie jede andere auch. Die Gegenstände bleiben einfach da, wie es jeder andre auch tun würde. Die Kreaturen werden nur dann entfernt, wenn sie normalerweise auch verschwinden würden. Was bei Quest Item ja nicht der Fall ist. Wie "gefährlich" PlaceAtMe also ist liegt einzig und allein an der Art der Verwendung, aber es gibt durchaus "gefährliche" Plugins da draußen.



Bitte sagt mir, wenn ich irgendetwas übersehen, vergessen oder falsch interpretiert habe. Ich kann nur versuchen, mir einen Reim auf die Zahlen zu machen, die ich vor der Nase habe.
Mir ging es nie um jedes PlugIn, das auch nur einmal PlaceAtME benutzt sondern nur um... naja, sowas.

(Und wahrscheinlich habe ich gerade 2 Stunden für etwas verschwendet, das irgendjemand längst getestet und irgendwo hingeschrieben hat, das ich nur nich gefunden habe ^w^)

Edit: *im englischen Forum rumwühl* Der Fehler bei meinem anonymen Beispiel ist schon lange bekannt und behoben, aber es geht mir hier ja auch um das Beispiel... dass ich zu doof war, eine korrigierte Version zu finden, ist ja mein eigenes Problem.)

nnw
19.02.2009, 06:57
:) Ja.

Laulajatar
19.02.2009, 08:57
Damit sie in der Welt rumstehen und nicht in deinem Inventar? oo

Angenommen du skriptest ne Szene, wo dir 100 Äpfel auf den Kopf fallen :D Oder jemand Geld zuwirft. Oder... oder...

bg2408
19.02.2009, 20:46
[snip]Zuviel Text um gezielt zu antworten, daher generell:

Es gibt persistente und nichtpersistente Objekte. Nichtpersistente Objekte können persistent gemacht werden, während persistente Objekte immer persistent sind.

Klassisches Beispiel: Ein Activator versus eine Leveled List. Wird ein Activator mit PlaceAtMe eingefügt, bleibt er ewig im Spiel (persistent). Eine Leveled List erzeugt eine Kreatur und ist dann weg (nicht persistent).

Aber: Natürlich ist das erst aus dem Save heraus, wenn die Zelle resetted ist! Solange eine Zelle nicht resetted ist, bleibt das, was dort vorgefallen ist (inklusive z.B. hinzugefügter nichtpersistenter Objekte) im Spielstand. Klaro - ansonsten wäre es ja wie bei Sacred2, du tötest einen Gegner, speicherst, lädst, und der Gegner steht wieder lebendig neben dir.

Wird ein Mod entfernt, gehen alle darauf beruhenden Refs verloren -> Nullrefs.

Heißt, soweit ich deinen Post verstanden habe, alles richtig erkannt!