Jump to content

Scripts / Script instances


pinky6225

Recommended Posts

Posted

Was curious what a script instance is, it shows up in the save game tool and as I've just upgraded a few mods i thought i'd check

 

level 1 character standing in the LAL prision with 167 mods

 

Capture1.jpg

 

level 81 character standing in falksaar general shop in amber hold

 

Capture2.jpg

 

154528 seems a lot, the save is playing fine but as that seems 100k more than a newbie save i was wondering if their is an actual limit i'll eventually reach as well

Posted

The "ScriptInstances" are script that are actually attached to an object (an NPC, a weapon, etc.)

They consume memory, yes. But usually only a few KB. And the code for the scripts is not stored for each instance (it is actually the number of "Scripts")

An instance of a script may consume further memory to store the local variables (pointers to objects and native variables like Int, Float, Bool.)

But also in this case usually it is just a little bit of memory.

 

The scripts that are actually consuming power are the one that are active.

Posted

@CPU

 

Thank you for explaining that it's something I've wondered about as well.

 

On a separate what exactly are References, I noticed that they creep up as the game progresses but sometime they decrease as well?

Posted

I have no idea abut what references are. Sorry.

Posted

that's your interactions with your load order

 

 

SHdvgy2.jpg

 

 

you pick a flower, it get in the save

you do a quest, it get in the save

you talk a npc, the dialogs used get in the save

you open a coffer, its inventory get in the save (even if you don't pick anything)

you get close to a npc and he start moving, he get in the save

 

 

the 1510 from obis are leveled lists, maybe some perks or others things

a anti breaking save measure, that is useless, adding/removing mods can and will break the save

obis npc aren't put in the save, if i remove the esp, those leveled lists will try to load npc that are no longer in the load order (result is bandits that don't have heads, and aren't animated)

Posted

@CPU

 

Thank you for explaining that it's something I've wondered about as well.

 

On a separate what exactly are References, I noticed that they creep up as the game progresses but sometime they decrease as well?

 

Uhm... it's a little complex to explain what a reference is. Let's say that you have a memory region containing some data and a pointer variable. When the pointer variable actually points to the memory region it "refers to" that memory region and becomes a reference to it. So, besically a reference is a pointer that points to an actual memory region containing data.

 

If we are talking about Oblivion and its scripting, you call reference (or ref) a pointer to an object, being it a Base Object or a World Object. BUT when you talk about a reference in Oblivion scripting you almost always think about the World Object (in Wikipedia you found it as objectRef, or PlayerRef). I don't know if this explanation is enough. If you have questiosn feel free to ask.

 

BTW, there's a relation between a Reference and an Instance The reference (pointer) refers to an instance (actual object in memory).

Posted

 

@CPU

 

Thank you for explaining that it's something I've wondered about as well.

 

On a separate what exactly are References, I noticed that they creep up as the game progresses but sometime they decrease as well?

 

Uhm... it's a little complex to explain what a reference is. Let's say that you have a memory region containing some data and a pointer variable. When the pointer variable actually points to the memory region it "refers to" that memory region and becomes a reference to it. So, besically a reference is a pointer that points to an actual memory region containing data.

 

If we are talking about Oblivion and its scripting, you call reference (or ref) a pointer to an object, being it a Base Object or a World Object. BUT when you talk about a reference in Oblivion scripting you almost always think about the World Object (in Wikipedia you found it as objectRef, or PlayerRef). I don't know if this explanation is enough. If you have questiosn feel free to ask.

 

BTW, there's a relation between a Reference and an Instance The reference (pointer) refers to an instance (actual object in memory).

 

 

Hello, the actual "References" you are talking about (Like the Properties) are stored in the ScriptInstance space.

And if you look at the numbers of the "References", they are too few to be this.

 

I dug in the savegames, but I was not able to understand the "pointers" (???) for the few references.

 

Posted

 

Uhm... it's a little complex to explain what a reference is. Let's say that you have a memory region containing some data and a pointer variable. When the pointer variable actually points to the memory region it "refers to" that memory region and becomes a reference to it. So, besically a reference is a pointer that points to an actual memory region containing data.

 

 

Ahh thanks, that makes sense. If I'm understanding correctly it's effectively the same as a pointer that points to a stack position in RAM.

 

Posted

 

 

Uhm... it's a little complex to explain what a reference is. Let's say that you have a memory region containing some data and a pointer variable. When the pointer variable actually points to the memory region it "refers to" that memory region and becomes a reference to it. So, besically a reference is a pointer that points to an actual memory region containing data.

 

 

Ahh thanks, that makes sense. If I'm understanding correctly it's effectively the same as a pointer that points to a stack position in RAM.

 

 

 

Sort of.

All pointers for scripting are stored inside the ScriptInstances.

 

A ScriptInstance contains: the pointer to the object holding the script; all the values for all the variables (including pointers to complex objects like Arrays and Actors, and Spells, etc.); all the pointers to the super-scripts (the extended scripts); all references for Properties. The current execution point of the script; the status of the script is any; the events that are registered (not the ModEvents from SKSE, these are stored elsewhere.)

 

It does not contain the actual code; it is in "Scripts"

 

The "Reference" line in the savegame log is for sure some sort of pointer; but I have no idea of what reference is.

Posted

 

 

@CPU

 

Thank you for explaining that it's something I've wondered about as well.

 

On a separate what exactly are References, I noticed that they creep up as the game progresses but sometime they decrease as well?

 

Uhm... it's a little complex to explain what a reference is. Let's say that you have a memory region containing some data and a pointer variable. When the pointer variable actually points to the memory region it "refers to" that memory region and becomes a reference to it. So, besically a reference is a pointer that points to an actual memory region containing data.

 

If we are talking about Oblivion and its scripting, you call reference (or ref) a pointer to an object, being it a Base Object or a World Object. BUT when you talk about a reference in Oblivion scripting you almost always think about the World Object (in Wikipedia you found it as objectRef, or PlayerRef). I don't know if this explanation is enough. If you have questiosn feel free to ask.

 

BTW, there's a relation between a Reference and an Instance The reference (pointer) refers to an instance (actual object in memory).

 

 

Hello, the actual "References" you are talking about (Like the Properties) are stored in the ScriptInstance space.

And if you look at the numbers of the "References", they are too few to be this.

 

I dug in the savegames, but I was not able to understand the "pointers" (???) for the few references.

 

 

I can't really answer to you question without seeing the actual data.But I can give you some ints. Every object in Oblivion (and perhaps in Skyrim) has a code associated in the form of MMXXXXXX where MM is the number of the MOD in the MOD order list and XXXXXX is the number of the object inside the mod. in tghe savegame you don't need to save those, unless they are somehow modified (i.e. you move a book inside a room or you open a door). BUT!

MM should be the ID of the MOD (8 bits) but if you think it's not the case inside a savegame. Because, if you add a MOD or change the loadorder, this byte will lose its meaning. Therefore, in the savegame you should have some translation table that tells the game which mod that specific ID is referring to.

 

Another consideration is (as you are referring to scripts), that variables in scripts are themselves objects. Therefore, you'll have a list of pointers that references each of those variables. And not just the pointers. You must have also the actual value contained in the variable. I remember some bugs in Oblivion if you delete a variable in a script associated to a quest because of that.

Posted

 

 

 

I can't really answer to you question without seeing the actual data.But I can give you some ints. Every object in Oblivion (and perhaps in Skyrim) has a code associated in the form of MMXXXXXX where MM is the number of the MOD in the MOD order list and XXXXXX is the number of the object inside the mod. in tghe savegame you don't need to save those, unless they are somehow modified (i.e. you move a book inside a room or you open a door). BUT!

MM should be the ID of the MOD (8 bits) but if you think it's not the case inside a savegame. Because, if you add a MOD or change the loadorder, this byte will lose its meaning. Therefore, in the savegame you should have some translation table that tells the game which mod that specific ID is referring to.

 

Another consideration is (as you are referring to scripts), that variables in scripts are themselves objects. Therefore, you'll have a list of pointers that references each of those variables. And not just the pointers. You must have also the actual value contained in the variable. I remember some bugs in Oblivion if you delete a variable in a script associated to a quest because of that.

 

 

You are completely right about the first statement (the ids and the mods.)

 

Both Oblivion and Skyrim are based on the GameBryo architecture.

 

Inside a script, the variables can be:

* basic values (boolean, int, float)

* Objects as pointers to GameBryo objects (Actors, Quests, etc.) -> Just the ID (or the run id) of the object is stored

* Structured objects (only Arrays in my knowledge), the actual array definition is stored, and a pointer to array is stored in the variable

 

The first two are in SriptInstance, the third is in a special area of the save game.

Another item is the actual values of the properties associated with a ScriptInstance associated to a world object.

 

 

Let me be clear: in the very first post, in the tree of "what is in your game" there is a line called "References" with a very small number associated with.

Is this "Reference" that I have no idea about what it is.

 

Cheers.

Posted

Let me be clear: in the very first post, in the tree of "what is in your game" there is a line called "References" with a very small number associated with.

Is this "Reference" that I have no idea about what it is.

 

Cheers.

 

 

I can try to guess. If you don't change something ingame it's not saved in the save. In example, if you don't open a door, that door is not reported inside the savegame because it's in its initial state. Of course I'm referring to in game objects. it can include also enemies you fight... But you are right... the number is too small to contain those item.

 

Posted

Probably it will remain a mystery. Until some reverse-engineer will post what they are.

Posted

 

The "Reference" line in the savegame log is for sure some sort of pointer; but I have no idea of what reference is.

 

 

probably some stuff that is going on without being rendered

 

 

RUW7VYl.jpg

 

 

0 at the start of the game

7 when the carriage arrive

0 inside helgen

10 at a random save

76 in the one above

 

have 2 c04glenmorilwitchheadscript in the ref of last save

that's the heads to remove werewolf form, old stuff

maybe farkas and vilkas want to be cured (they didn't ask anything)

Posted

 

 

The "Reference" line in the savegame log is for sure some sort of pointer; but I have no idea of what reference is.

 

 

probably some stuff that is going on without being rendered

 

 

RUW7VYl.jpg

 

 

0 at the start of the game

7 when the carriage arrive

0 inside helgen

10 at a random save

76 in the one above

 

have 2 c04glenmorilwitchheadscript in the ref of last save

that's the heads to remove werewolf form, old stuff

maybe farkas and vilkas want to be cured (they didn't ask anything)

 

 

I still have no idea about where are they used in the game.

Sorry.

Archived

This topic is now archived and is closed to further replies.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...