Jump to content

Photo

SKSE


904 replies to this topic

#251
Jonas801

Jonas801

    Enthusiast

  • Members
  • PipPip
  • 192 posts

Great post! I wish could buy you guys a beer or just something little. For all this work you doing, you deserve it imo. :wink:


Edited by Jonas801, 06 December 2016 - 06:25 PM.


#252
Chesko

Chesko

    Resident poster

  • Supporter
  • PipPipPipPipPip
  • 6,385 posts

 

  • So I guess I will be writing some form of regression/unit test plugin again so that we have something to test against each build to be sure we haven't broken anything. I had one of those for OBSE back when we only had a hundred or two functions. It took forever to write and keep up to date.

 

 

 

Not sure if this helps or not, but I wrote a unit / integration test framework for the Papyrus side. If it might help, please feel free to use it! And thank you for all your work!



#253
badpeoplesuck

badpeoplesuck

    Enthusiast

  • Premium Member
  • 150 posts

Awesome!!! You are awesome!



#254
behippo

behippo

    Regular

  • Members
  • PipPip
  • 81 posts

 

 

  • So I guess I will be writing some form of regression/unit test plugin again so that we have something to test against each build to be sure we haven't broken anything. I had one of those for OBSE back when we only had a hundred or two functions. It took forever to write and keep up to date.

 

Not sure if this helps or not, but I wrote a unit / integration test framework for the Papyrus side. If it might help, please feel free to use it! And thank you for all your work!

 

 

Thanks Chesko, I will take a look. If I remember correctly back in Oblivion days I had a special room that I had activators on that would trigger a bunch of things and dump info out to the SKSE console output. But that was so long ago at this point. Lilac looks promising.



#255
behippo

behippo

    Regular

  • Members
  • PipPip
  • 81 posts

On an /r/skyrimmods thread today I provided a simplified explanation of what SKSE does to help explain what my latest update meant. For everyone's edification I'll reproduce the content here.

I can try to simplify some. The Creation/Gamebryo engine is built in C++ as a collection of classes which represent the game world, the things in it, and the framework needed to organize it. What SKSE does is essentially document and expose that internal game engine so that we can extend the scripting capabilities. 
 
Think of it as translating a novel. We have to figure out the table of contents, the chapter boundaries, and understand the concept of pages, paragraphs, sentences and words. But to do a good job we also need to identify the setting, the characters, what happens to them, and where in the book that happens.
 
So in SKSE for Skyrim classic we identified and documented 897 classes in our translation. Some of those classes represent the framework in the game. The DataHandler, for example, is like a glossary or index at the end of the book, and lets us find almost any object in the game (each weapon, spell, NPC, piece of furntiture, Perk what have you.) There are also classes which represent these objects in the game - you can think of them as chapters or paragraphs depending on how important they are.
 
In addition to translating the novel, we also found interesting tidbits of information. So we highlighted specific words and phrases so we can get back to them (3rd sentence of the 4th chapter of the book - which is found on page 54.) These are the 221 addresses in memory that we have to update. These are basically bookmarks to help us find the important or interesting objects in the game. They include things like the player character object, the object under the crosshair, where the glossary is.
 
Finally we also decided to make it easy to access these individual pages, sentences and words. So we shoved the translation online and set up a webpage to lookup and even change the words in the book. These are the 769 functions we provide in our papyrus extensions. Some of them let you just ask for pieces of data (what is the name of this object) and others let you modify that data (change the damage of this weapon, set the name, create a new object entirely.)
 
Note that we never had a full translation of the novel. There are some chapters or paragraphs where we only have a little idea about what is going on. But it is enough to carry on the gist of the story, and our search and modification functions are useful so we published anyway.
 
So that is SKSE as it relates to Skyrim. Each time a new edition of the book comes out it is printed a little differently. The general structure of the novel is the same, but what is found on each page is slightly off. So our bookmark for the third sentence of the fourth chapter is no longer found on page 54, it may be on page 53 or page 55 now. This change can happen for each of our bookmarks. That is why with each new build of the game we have to re-find our bookmarks and there is a delay getting SKSE out the door. But usually nothing else has to change - just our bookmarks.
 
So that brings us to Skyrim Special Edition and SKSE64. What happened is that BGS chose to put out a new edition of the Skyrim Novel. They choose to revise the novel with some new chapters, and they also decided to use a larger font for a lot of key words of the novel. So to get SKSE64 out the door we have to do a complete re-translation of the novel. Much of our translated framework is still useful in general, we just need to update it. 
 
In particular where we didn't have a complete translation of the novel before, we're not sure where the new font might have made things much bigger. So we have to look over those unknown areas and discern how much bigger they are and re-find all of our bookmarks.
 
So that is what we are doing. Retranslating the new edition, documenting important changes, and re-finding our bookmarks. As we cover a new area we can build the new functionality in our web page about the book. Once enough useful information has been verified, we'll publish our page and continue working.
 
Hopefully that gives a more understandable context for those who are not as versed in the programming details?


#256
ebonyblade2000

ebonyblade2000

    Journeyman

  • Members
  • Pip
  • 45 posts

Thanks for all your work I'm still playing the original Skyrim because I'm waiting for you guys for a release update, keep up the good work.



#257
memlapse

memlapse

    Faithful poster

  • Premium Member
  • 1,671 posts

@behippo

 

That was an extraordinary explanation.  I'm a former teacher and current solutions architect.  You have a gift.



#258
carrrpenter

carrrpenter

    Regular

  • Supporter
  • PipPip
  • 88 posts

Thanks behippo for the explanation. Appreciate your teams work.



#259
Glass0Alice

Glass0Alice

    Journeyman

  • Supporter
  • Pip
  • 43 posts

I cant wait for you guys to find  magic sauce that gets your first usable version out.  Id love to donate a little if anyone has a link to a page for that kind of thing.



#260
Almostfaceman

Almostfaceman

    Regular

  • Premium Member
  • 95 posts

 

On an /r/skyrimmods thread today I provided a simplified explanation of what SKSE does to help explain what my latest update meant. For everyone's edification I'll reproduce the content here.

I can try to simplify some. The Creation/Gamebryo engine is built in C++ as a collection of classes which represent the game world, the things in it, and the framework needed to organize it. What SKSE does is essentially document and expose that internal game engine so that we can extend the scripting capabilities. 
 
Think of it as translating a novel. We have to figure out the table of contents, the chapter boundaries, and understand the concept of pages, paragraphs, sentences and words. But to do a good job we also need to identify the setting, the characters, what happens to them, and where in the book that happens.
 
So in SKSE for Skyrim classic we identified and documented 897 classes in our translation. Some of those classes represent the framework in the game. The DataHandler, for example, is like a glossary or index at the end of the book, and lets us find almost any object in the game (each weapon, spell, NPC, piece of furntiture, Perk what have you.) There are also classes which represent these objects in the game - you can think of them as chapters or paragraphs depending on how important they are.
 
In addition to translating the novel, we also found interesting tidbits of information. So we highlighted specific words and phrases so we can get back to them (3rd sentence of the 4th chapter of the book - which is found on page 54.) These are the 221 addresses in memory that we have to update. These are basically bookmarks to help us find the important or interesting objects in the game. They include things like the player character object, the object under the crosshair, where the glossary is.
 
Finally we also decided to make it easy to access these individual pages, sentences and words. So we shoved the translation online and set up a webpage to lookup and even change the words in the book. These are the 769 functions we provide in our papyrus extensions. Some of them let you just ask for pieces of data (what is the name of this object) and others let you modify that data (change the damage of this weapon, set the name, create a new object entirely.)
 
Note that we never had a full translation of the novel. There are some chapters or paragraphs where we only have a little idea about what is going on. But it is enough to carry on the gist of the story, and our search and modification functions are useful so we published anyway.
 
So that is SKSE as it relates to Skyrim. Each time a new edition of the book comes out it is printed a little differently. The general structure of the novel is the same, but what is found on each page is slightly off. So our bookmark for the third sentence of the fourth chapter is no longer found on page 54, it may be on page 53 or page 55 now. This change can happen for each of our bookmarks. That is why with each new build of the game we have to re-find our bookmarks and there is a delay getting SKSE out the door. But usually nothing else has to change - just our bookmarks.
 
So that brings us to Skyrim Special Edition and SKSE64. What happened is that BGS chose to put out a new edition of the Skyrim Novel. They choose to revise the novel with some new chapters, and they also decided to use a larger font for a lot of key words of the novel. So to get SKSE64 out the door we have to do a complete re-translation of the novel. Much of our translated framework is still useful in general, we just need to update it. 
 
In particular where we didn't have a complete translation of the novel before, we're not sure where the new font might have made things much bigger. So we have to look over those unknown areas and discern how much bigger they are and re-find all of our bookmarks.
 
So that is what we are doing. Retranslating the new edition, documenting important changes, and re-finding our bookmarks. As we cover a new area we can build the new functionality in our web page about the book. Once enough useful information has been verified, we'll publish our page and continue working.
 
Hopefully that gives a more understandable context for those who are not as versed in the programming details?

 

you%20rock_zps6nyyrtqv.jpeg





Reply to this topic



  


Page loaded in: 1.262 seconds