SKYRIM
OSA - Skyrim Ascendancy Engine by Ceo
Skyrim » User Interface
Added: 01/08/2016 - 04:50PM
Updated: 05/06/2017 - 04:37PM

14,996 Endorsements

v2.02 Latest version

198,722 Unique D/Ls

511,967 Total D/Ls

1,546,595 Total Views

Uploaded by CE0

Description

Last updated at 18:37, 5 Jun 2017 Uploaded at 18:50, 1 Aug 2016







OSA is an engine that adds on to Skyrim's potential in many ways. The heart of it is an animation framework that allows developers to have stronger control, effects, and usability in animated scenes. This ties in with OSA's PERSONA system that adds depth to character's personalities beyond what Skyrim provides.  Almost the entire OSA engine exists and runs in the UI of Skyriim which offers a lot of benefits as opposed to being run in Skyrim's papyrus. That gives all aspects of this project access to the UI for interactive displays, navigation and customization.
 
Shinji72 put together a very nice short video showcasing what OSA can do with some highlights on the first few modules and usage of the OSA engine.
Thanks Shinji and it's an honor as always. Hey! Don't forget to subscribe to Shinji's channel he's the best.










SKSE (Latest), SKYUI (Latest), FNIS (5.5 or greater)




Once you have the requirements install OSA with any mod manager program, run FNIS and you are good to go. Make sure you uninstall and remove any previous versions of OSA.







While OSA is based in actionscript, to build for any part of the OSA project requires no actionscript or scripting/programming whatsoever. It functions by reading text documents in XML and INI format which the engine is able to interpret. If you can type into text documents you have access to doing a majority of what this engine can do. Everything from animated scenes, facial expressions, voice and personallity are stored in text documents. In many ways you can think of OSA like an extension to the creation kit that adds new XML base form types.
 
 
The project primarily is the animation framework however to make the engine, specifically the PERSONA segment required setting some roots into Skyrim. While the UI has access to these things I will take the opportunity to apply the information that is gathered in other ways outside of the scope of just animation. PROFILE and MyOSA are examples of expansion and quality life segments. While these are out of the scope of animation they are outputting information for things OSA already has the foundation to connect with.

TERMINOLOGY:

  • OSA: The Actionscript engine that runs everything that OSA does. It's primarily a system that loads and interprets XML and INI text documents to allow for lots of customization and detail. On it's own it doesn't do much except offer it's quality of life UI display features.
 
  • MODULES: Different the mods, modules are groups of animated scenes that load into OSA similar to putting a cartridge into your NES. (Actually it's closer to the Sonic and Knuckles cartridge for sega genesis where you could plug another sonic cartridge into the top of sonic and knuckles and be knuckles in prior sonics) Once installed they can be used in 3 ways, the player can bind them to a hot key (If they utilize 2 or less actors), the player can call any installed module from the targeting menu, third all OSA modules automatically get custom API made  that outside developers can call to make scenes happen, like an extension to the Skyrim aniimation library. Modules are ESPLESS and require no mastery to use through API.
 
  • PLUGINS: Plugins are expansion packs to a specific module. This allows large scale projects to be grouped into categories and allow you to take on more niche content without having to embed oddball things into the primary pack or sort different themes out so users can decide.
 
  • PERSONA: XML documents that hold enhanced personality data for NPCs. They come in a range of classes for different subsections of personality and are installed individually. NPCs can be given custom persona's just for them but if one isn't assigned OSA generates an automated persona based on all installed Persona data.
 
  • PROFILE: Sister system to Persona. PERSONA has an impact on sounds, expressions etc. PROFILE has no live impact and is meant to be an RP flavor text, story telling tool. It's an optional thing that's only used when the player inspects another actor IF they have a profile.ini associated with them. Profile will also override some of OSA's output, for example if your character is a nord due to limitations of Skyrim's race system but would like them to be distinguished as something else without going into the hassle of custom races you can use Profile for that.
 

 


Very little papyrus is used by OSA. It primarily runs in the UI of Skyrim which has some amazing benefits to being the platform for the engine. It's a much more powerful and efficient language then Papyrus and the UI get's it's own memory assigned to it free from Skyrim's papyrus that is basically uncapped. Actionscript can handle things with ease that would bring Papyrus to a halt.
 
The project has a two important principles: It's API and usage of scenes in OSA and the features of OSA do not require any mastery or slaving mods to OSA. Papyrus developers can leave OSA as an optional choice for their users and don't have to force them to download OSA. The benefit to this is not having to isolate a user base between those willing to download fnis, and OSA etc. OSA can be used as optional scene accents. The second major principle of this project is to be light weight, non-invasive and conflicting with other mods, and to be dormant when not in active use.






The heart of OSA is an animation framework, it's able to do more then papyrus ever could because it's run, timed and all is data is managed in actionscript. It can handle endless data and detail in it's streaming of xml documents. This is a development engine and does nothing on it's own in terms of animation. An OSA scene can simply play without the need for navigation. If it's a single one way scene, or based just on actor data and doesn't need player input. If you'd like navigation to be a part of your scene you can use a navigation panel to allow for visual player input in making choices. For now I have one style of navigation panel designated "NP1" shown here. I developed it with my own module in mind which is a very large scale one, so it needed a fairly heavy navigation tool. I'm working on developing lighter and alternative nav panels which can be used instead. Specifically an entirely text based one with no images, and some light weight one's for more fast paced scenes like combat. Nav Panels is the kind of thing where if you have very specific need outside of what OSA can currently do it might be best to just talk to me and I can work on a solution for what you need displayed.





Example from my own mod of the UI elements available to module developers for player interaction.


The scene menu on the right is a utility menu that can be optionally brought up by the user which all modules have access to. From here equipment and lighting can be configured, information can be displayed, and advanced forms of navigation like the Tag based ROULETTE or shut cut NAVIGATE can be applied. Some of these features require additional module set up to use/display and wouldn't be available in very basic modules.


 



The left panel above is the Module Library overlay. All installed modules are listed here and you can click any to adjust your set. The right panel shows the keybinding interface. In this case the user is Assigning OBroHugs to their Num0 key. Binding to key will only work on modules that have 2 or less actors. Different modules have different requirements on top of this to cast. For example some are positing sensitive and can only be cast from behind or in front of the target, they targets need to match the NPC type criteria. Creatures vs NPC in order the scene to trigger. Children are not allowed to ever be used in any kind of OSA scene regardless of intentions.




Example of the targeting menu. 1 of the player triggered options to begin a scene.

For scenes with more then 2 actors or for those not involving the player a targeting overlay can be brought up from the module library where you can select nearby actors as targets.


 


Any OSA modules get's the full power of OSA and can use all of it's features:

  • Since it's XML based you can start easy and add more complex things to your scene as you get more comfortable. The data can be added on as you go / have time.
  • Supports 1-9 actor scenes
  • Promotes seamless animation that is playerdriven but can also be used in a poser sense if seamless animation isn't your thing
  • Custom scaling at start of body scales to ensure the animation plays back for all users at the exact scales the animations were designed for. (optional but can be enforced if perfect alignment matters to your scene, the player does have a toggle to override this.)
  • Full face expression control, sound control, the ability to define the motif and themes of your scenes for actors to respond to as well as trigger timed events which will prompt an emotional reaction from the actor's persona.
  • Advanced triggers, like music, adjusting scales mid animation, casting spell visuals.
  • XML based IF checks to make your scenes adapt based on the data of the NPCs involved
  • Custom Automatic API for developers made for your scenes.
  • Knowledge of exact equipment slots to make animations exact using the ESG system.
  • Release expansion packs for your module in the form of plugins
  • Individually translatable 
  • In the case of seamless animations the scenes can be organized for the AI to be able to automatically navigate and travel between different positions on it's own. The player has access to this as well in their Navigation section of the scene menu as well as the Roulette Menu if they want to play scenes based on tags.
  • FUTURE: The ability to have scenes change actor count live, using the inspect key you'll be able to enter into scenes that allow JOINING and if you are in the scene will be allowed to invite more actors in the scene.
  • FUTURE: Stronger ability for the AI to manage seamless scenes. Easier access to rejection or alternate paths automated by criteria set in the persona's and scenes.



  

All OSA modules are called through the same API, which has a string where you enter the Module ID. The API doesn't require mastery/extending and  can be called from any papyrus script or fragment.  Your module also will get an automated installation check so developers can know if your module is installed and if not can adapt their content in different ways.








All the examples above are generated passively by the OSA persona engine. While you could achieve these same results for a screen shot by editing the actors just for one photo, OSA is constantly weaving together elements of the character's personality to make shifting, reacting, life like expressions that adapt to the scene and change live

Persona is what is special about OSA. Sticking two actors together and playing an animation is relatively easy in Skyrim, but having them come alive, with full control of their expressions, facial movements, voices, reactions, spells and cinematic effects is a bulk of the OSA animation project. While it might be hard to put your finger on it if you disable MOTIF and OSFX and try a familiar scene you will clearly see the difference with Persona turned off.


PERSONA OVERVIEW:

  • EYE DIRECTION: One of the easier things to implement but has the biggest impact on scenes by far in my opinion. The developer decides a series of eye directions per scene based on events that are taking place, and the persona of the actor decides how often they will be looking where and at what. Eye direction can also be in response to an action event, if something immediate happens that grabs their attention you can call the eyes to shift focus to that. 

  • FACIAL EXPRESSIONS: Animating for Skyrim gives 0 facial control to your actors, OSA uses a custom made engine I made that applies mfg consoles functions to give the developer entire control over the actors facial expressions, mouth and eye movement. 

  • PERSONA CLASSES: I've divided up the human personality into a number of expanding segments which I'm calling classes. Each Persona class for an actor can be set individually. These are arranged into 3 main groupings: Combat, Intimacy, General, this allows for NPC's combat skill and sounds to not have to be tied into their libido etc. 

  • MOTIF, REACTION, EMOTIONS: You can define exact timings of movements and reactions of the face and sounds to occur however OSA also has passive personality that actors have. These are mainly categorized as MOTIF, REACTION and EMOTIONS. MOTIF is their demeanor in different themes of scenes, REACTION is how they respond to exact revents, EMOTION is how they visually show the effects the motif and reactions are having on them. This effects the types of sounds and expressions they make and the rate at which they make those sounds and expressions. 

  • VOICE PACKS: Voice packs are divided up into the 3 main categories as the prior and subdivided into smaller classes. Handling both the vocal sounds they make and other sounds associated with them. 

  • SPELLS AND OTHER DETAILS: Pretty much all details fall under persona and are customizable, including things like the spell visuals they use when casting magic in scenes.

  • ANIMATION EVENTS: OSA can track animation events and respond to very rapid input from them. 

  • FUTURE: In the future more prefence based flags will become active in OSA, where scenes can be toggled and redirected based on the prefences of the actors, to allow things like visually rejecting certain actions, moving and behaving differently based on settings, adjusting their animation based on certain personal stats etc. 



 

Example of the PROFILE | Biography page



PROFILE is flavor and roleplay text that can be viewed by the player as a text based story telling tool the that OSA UI can display. It's an optional system that's only used if the player inspects another actor and only if that actor has a profile.ini written. No mastery of OSA is required, if the actor has a profile.ini then OSA will use it. Profile's can be made for custom followers and vanilla NPCs also, if the .ini is in place then OSA will find it, load it and have the ability to display, that's all it takes. You can safely pack a profile.ini with a custom follower, if OSA isn't installed it will do nothing but OSA will find it if it's there and use it. Persona can be viewed either from the scene menu or by putting your crosshairs over an NPC and hitting the inspect key.


Example of a Maxed out silly profile. They don't have to be this crazy they can be anywhere in between no data and this.





Example of the MyOSA equip menu, an example of ways to visually separate categories from entries (Squares vs circles). Styling, entires, and categories however are entirely up to the user. Clicking will equip directly from your XML document. MyAnimations function in the same way like a poser mod. 
 
MyOSA is the UI's ability to display and apply user-generated documents, giving fast access to your Skyrim stuff. For now I have 2 parts to MyOSA but plan to expand this a little further, an equipment manager and an animation manager. It's completely optional and only does anything if you turn it on and make the documents for it.MyOSA Overview:


  • MyEQUIP: A user-made XML list that you can equip the player or NPCs directly from, which can be categorized however you like. 

  • MyANIMATION: functions exactly the same as MyEquip except it plays animations. It's a text data poser mod without the need for rings. You can group your animations into categories however you like. They can play directly from the list on the player character or on a target. Note that MyAnim is different from the animation engine, the animation engine has lots of empowered features for animated scene creators where as MyAnim functions like a poser mode where it simply plays single animations. 

  • * MyEquip is a little off when used on targets. This is a hard limitation of the Skyrim exe that's very hard to work around. MyOSA must add the items to the NPC's before equipping them and when NPCs get items added they evaluate their outfit and redress to their default. For now you'll have to add the items first then equip them after they have the items you want however I have a fix coming for this soon.






                       



Example of ESG being applied to the INSPECT | EQUIPMENT menu 


The primary purpose of ESG is to allow for the animation engine to know exactly what types of clothing the user is wearing so it can play specific animations for different articles of clothing. OSA comes with a redressing module I animated myself which can be used by any developer if you see a need for NPCs to be redressing after your scene plays. With ESG you're able to custom make animations for almost any type of clothing and know what types the NPCs are wearing. ESG is a response to a hard limitation of Skyrim's slot system. While it's purpose might be vague without a lot of understanding into the workings of Skyrim I promise that it's a nessesity for complete accuracy in undressing and dressing animations. I'm sure you might have encountered something like this: You equip a pair of sunglasses and your character's pants wind up coming off when you put them on. That's related to the limitation that ESG works around. It does require the user to fill in a document saying what their slots generally are used for. To reach perfect performance it requires a little bit of work to conform your slots but generally will get the job done. ESG's data will be applied elsewhere in the OSA UI overlays, primarily with icon displays identifying the slots with their exact clothing type as opposed to "slots 30-60".



ESG being applied to the SCENE menu



      



Scorpion SK made the cpconvert.dll for the OSA project. It allows for text strings that papryus generates to be converted to non-english characters so that names of equipment, races and character names display properly in different regions. You'll have to configure the code page to your region in the cpconvert.ini for this feature to work.

  • OSA uses it's own translation system. Two separate documents,  a primary translation ini and also an "ESG" ini where you translate the clothing type names. The ESG ini is separate because it's not just for translation but gives users the chance to use the words they want for different clothing types.
  • Every module for OSA gets their own translation document as well to allow navigation text to move through your scene be readable by anyone.
 

       


OSA can calculate and display Earth measurement units for both height and weight of actors. I find this more immersive then "Height:1.0, Weight 75.0".  Earth units has it's own ini:

  • Metric or US display 
  • Adjust the Sky height to Earth Height ratio
  • Adjust the Height to Earth weight ratio, there's a separate entry for both Male and Female ratios.


      

The UI has a few easy to run output scans which just report back whatever it can gather on things. I'm open to ideas on this for further checks and comparisons that might aid users or developers in trouble shooting. It's main purpose is to help me trouble shoot OSA, for example a lot of users encounter visual glitches in animation due to having a mod overwrite their XPMS skeleton. REPORT will output this so it's easy to tell what's happening. Maybe this could aid other developers or users. 

  • Live check for XPMS being the active skeleton.
  • The UI displays technical information on actors and their scales for quick access to that info.
  • Outputs all installed DLLs and Script versions relative to OSA as well as other things that i've had time to enter. 
 








The way the UI works in actionscript was one of the main challenges of this project, actionscript brings power to the engine but the disadvantage it has is that it can't save any data with your game. When you load / reopen Skyrim the UI has to start over from scratch. In a sense this is also a blessing because it reduces bloat to nothing except the few properties that are kept for keybinds etc in a quest script. The UI gets data in 2 ways. It pulls a small amount of papyrus information from relevant actors, for example when you inspect an actor or start an OSA scene with an actor it requests some basic papyrus details from them and sends that to the UI. The rest of the data OSA access is xml / ini based documents for persona, scene data, profile data etc. It access these by streaming them on an as needed basis, unless you are in a scene or inspecting an actor OSA is dormant.  While the system is lightweight thanks to actionscript it is complex due to it's scale. This is an early release and it's possible things might go wrong. Please let me know as I'm very interested in making this as strong as possible. The good news is if a bug does happen you can fix it by saving and loading or starting skyrim back up since nothing here is permanent due to the temporary nature of the UI, it gets a fresh reboot everytime.






I receive the comments quite often that this can completely change Skyrim and bring a whole new level of interaction to the game. I believe this is true however I fear interest in Skyrim is low due it's age, and the release of FallOut 4 doesn't help. I hope that people will attempt to use this system to make modules for it to help me expand the scene library. We can open completely new things for Skyrim, from interactive special moves in combat to special unique scenes. In the end it's my hope that a nice library of animated scenes are generated that can serve papyrus story tellers and the user if they simply just want to tell their own story. OSA has a number of levels and skill sets which can develop for it. It's an important to know that despite how fancy the elements might appear that all interaction with OSA is simply filling out fields in text documents to be customized the way you want. There's no scripting, no papyrus, no Creation Kit skills needs at all. (Voice Packs take a little creation kit to get the audio into Skyrim.) Here's a list of somethings if you're interested in contributing:
 
  • I am an active developer and the OSA engine is extremely flexible. A lot of the features in OSA are in their infancy and I'm very interested in getting feedback from users and developers on what they'd like it to do. This applies to PROFILE the most as since it's roleplay text I can do basically anything you want with it, but for any aspect of this project I will work to include features you need. What the project could encompass is very wide so while I might have a list of a bunch of things to do in my head, it just keeps growing. Giving me focus by telling me exactly what you need or would like help me expedite features into the engine that people will want to use. 
  • Animators of course to make their own modules that use the OSA system. I'm an animator myself but have limited time and i feel this project could become amazing with help expanding the themes OSA can cover. 
  • Mod Developers to use the OSA api to call OSA modules. OSA has a very simple easy to connect with API that doesn't require mastery. You can use OSA scenes as accents if the user has OSA installed and if not an alternative way to handle the scene be used. You don't have to force your users to commit to OSA and can freely link OSA scenes without worrying about isolating parts of your user base 
  • Persona's are text based using the xml format. Any text editing program can adjust them. They can get very intricate if you'd like. If anyone wants to give a go at adjusting the timings of sounds, the expressions, the reactions and visual emotions of actors in the scenes then expanding the persona library would be a huge help.  
  • If you can't animate but can enter text into a document, a lot of Skyrim animators have burnt out and left Skyrim but have left their animations as open resources, if you'd like to take their animations and apply it to the OSA system by making scenes out of them that would be amazing, depending on the type of content you could divide them up into a bunch of small modules or if it's all related make a module that's a large web of animations. 
  • OSA uses voice packs for all kinds of voice and other sounds divided into segments. Each can be custom made, if you're interested in working with voice and sound files then expanding on OSA's sound packs would greatly help the project. I'm overseeing the the two default full voice packs OGuy and OGal and working a bit on some packs based on the default voice types of Skyrim like FemEven tone but the more sound packs it gets the better it will be. 
  • I could use some help making premade XMLs for people intimated by data entry to use for the MyEquip and MyAnim based on popular equipment and animation mods, if you wind up making one for yourself that's a set from one mod for example please post it others can use it.


DOWNLOADS:

  • MyEquipDemo is a working xml document that has some vanilla skyrim equips in it, for testing / demonstrationMyAnimDemo is a working xml document that has some vanilla skyrim animations in it, for testing. 
  • CamillaProfile gives Camilla a silly fake profile for testing 
  • OSADemoMod is an absolute minimal 2 scene module for OSA, for demonstration, if you want to play with your own animations it's most likely best to just start canabalizing the Demo Mod and changing things that make sense, seem clear, overwriting animations etc. I'll have docs soon. OSA can do a hell of a lot more then this, The example is to show the basics you need to have the module run.












Morra's Poser Pack

Morra has put together a large portion of poser packs that are on the LL community site to use the MyAnim segment of the engine as well. It's both adult and non-adult posing. Morra is taking on just about every known pose pack it seems and updating daily, however some of the pose packs are hard content so I'm worried to link directly to it on nexus. They've put a ton of effort into it and done an excellent job putting together an amazing resource like this already. It is a very clear demonstration of the ease of MyAnimation over the prior ring system. You can find it on LL and it will turn up in a google search.















Guides currently being written, either the links will not work or they will go to the WIP page that might be very rough, or lose notes for now.











  • OSA created by Ceo

With tremendous support from the core OSA team:

  • Kinky

  • Migal

  • Pipdude

  • Proxy86

  • Scorpion SK

  • SF

Public Relations

  • Mysterious Guy
  • LucasHM

Localization

  • Scorpion SK

Promotion

  • Shinji72 | Skyrim WATCH"


Special thanks to the contributors who wish to remain anonymous,
OSA beta testers and all supporters, vocal and silent, of the OSA project.