Jump to content

[DEV] Skyrim Expanded Controls


CrEaToXx

Recommended Posts

Good Morning,
I'd usually not talk a lot about my development efforts, but I figured my current project may be to much of an advance, to simply embezzle it. You may or may not already know me as the developer of UI/Control based mods, like the "Widget Mod" for Skyrim, or "Rise of the Arrow Keys" for Fallout 4. As an oldschool Arrow Key Player, I'd always struggle with the lack of control configuration options in sandboxish Beth titles. Also...Hotkeys...both games need way more Hotkeys. So as a side suggestion to Beth. ES6 needs to have more Hotkeys...please!
However, since I just recently started another mod creation thrust, I figured a convenient way to expand on controls and hotkeys. Now you might think: "Yeah, nothing new here, we can do this already with Sky UI's MCM" etc. But I actually found a way to do this without the need of a MCM menu at all, and as replacement use the built in control config options in Skyrim. It turned out that you can basically just create new key assignments inside the Controlmap.txt, and then register those keys by using SKSE's GetMappedKey() function.
How is this relevant? Well, for sure, there isn't a difference if you configure a key in MCM, or the vanilla control setup, but for sure you can do this without major code bloat. Also, setting up keys in the vanilla control setup, will bake that key into the custom control map, and in return even further reduce necessary code inside Papyrus and/or Action Script. The only limitation is that you have to edit the control map. But I already figured a workaround, by adding "open keys", so anyone could use them in their own mods.
However, before I talk on, I want to show off a very early Alpha concept of what I'm trying to do here:
What you see is an edited version of Sky UI's Favorit Menu, with an additional row of hotkey slots. No .dll, no MCM, just proper usage of vanilla content and Papyrus to invoke certain AS functions. I might, or might not, at one point completely move over to use AS code for this, since it is way more effective than Papyrus. But I have to be honest, coding with AS, I'm still a bloody noob. This is primarly related to the fact, that it is very hard for me to see through all the various dependencies of extended AS scripts, and how/why/when SkyUI makes explicit use of Papyrus, and when it utilizes AS. Taking a look at FavoritesListEntry.as, and SkiFavoritesManager.psc, should give you an idea. For sure, you can't do this with a simple AS hacking tool like ffDec. Flash 6 is inevitable.
However, naturally when starting a new project all the ideas come flooding in, but for this mod I'd need to stay a bit more dedicated on decency, rather than following my experimental impulse to just try things to try them. This mod must be, and stay true, to what Vanilla Skyrim is, since it should work as a natural expansion, not necessarily a complete reconfiguration of already existing content. And that's exactly were you guys could help, since it is often hard for me to limit myself, and stay focused on what is rational for anyone, in contrary to what is useful and fun only for me. This mod in its final stage should be the one and only control mod you would ever need again.
It already combines Hotkey Mod, and Control Map unlocked. It could potentially import all my control/hotkey related mods to import default functions into the Controlmap.txt. See the list:
However, for now I want to try avoiding to make use of an MCM...but guess what, there might be a future solution for this as well. What I do right now for controls, I could pretty much do for anything UI related. Widgets, Menus, pretty much anything you can think of, could be used like this, and basically by combining both efforts you could naturally blend in new UI, entirely on screen configurable HUD(not the LiHud way, but actual mouse drag and drop), mod dedicated menus...the potential is limitless at this point.
Also, at one point I might start a dedicated Stream fo this over on Twitch if there is enough feedback and/or requests.
Have a nice one, and keep your hands clear...;)

 

Link to comment
Share on other sites



Ok, little update on progress. I'm still fiddeling around with all possible options, trying hard to process as much as possible with .as only. It turns out this is more and more evolving into a full fledged Favorit Menu/Controls-Rebuild Mod. Some gifis to show off new menu structure, Hotkey button art, and the entirely implemented controls configuration without MCM:





Link to comment
Share on other sites



Ok, so, it took some time, since I'd spend the whole week improving my skills with Actionscript code. And I'm amazed how much can actually be done internally without using any Papyrus code whatsoever. Basically I would use Papyrus only to invoke data, or to recieve custom mod events from Actionscript.




I also learned how to create custom motion .xml's, but the engine is tricky to say the least. Fiddeling and customizing in Flash is one thing, but actually getting a decent and fluid motion done, is not a laymans job. It may very well be because that stupid thing is bugging out. However, for now I cope with the fact, I'm to stupid and low level to further any development into this direction. Here's a screeni for the new feature ideas:





As I said, it took some time to understand how to properly code in Actionscript, but now that I did...the language is pretty close to Papyrus. What you see on the screenshot is a function that will alow you to toggle between "ammo equipment focus", switching in between the best ammo available, or the last ammo equipped. The torch function will apply a simple "drop lit torch" function. Right now I'm working on toggleable "auto potion consumption", and there's enough room for more ideas. Here's a general list:




- complete integration of Widget MOd, rather using menus, to keep the HUD as immersive as possible, since I figured in "real gameplay", those realtime Widgets can be quite obtrusive



- Minimap...special version of a minimap actually, though only showing close by area. Advantage? Well, you could open the map menu anyways, right? Yeah, but the fav menu loads way faster because of it's low size, and a mnimpa for a quick peek should be ok?



- show attributes, derrived attributes, and skill info...quasi a one stop "show it all" "character menu"?



- import all functions into the fav menu, that can no longer be supported by key setup? Yeah, during development I figured there actually is a limit of 255 bindable keys. This includes all possible keys, in all menus, during life gameplay, on all platforms, and for all control devices...as a "dirty hack" solution, I could pretty much remove any of the controler keys, and by that, make an abundant amount of hotkeys available. But let's be honest...during gameplay I figured, I wouldn't need more than 15-20 hotkeys, since at one point the key would be so far away on the keyboard, accesing the function via menu was way more convenient



- apply a key setting to directly access general stats tab



- general unequip functions as buttons?



Target Info: quasi a Skyrim V.A.T.S...I already have a actor shader available from oneof my other mods, from there all you'd need would be to call for target info when pointing with the crosshair at your target



- full integration of Frostfall and RNAD



- fill integration of multi follower support aka follower info stats


Link to comment
Share on other sites

Ok more update. Go here for a visual update:

 

https://www.nexusmods.com/skyrimspecialedition/images/68565?BH=3

 

Things that worked out good, was importing all information available from the SkyUI defines.as file. This includes ActorValues, Forms, FilterTypes etc. But there are things that are not available. F.e. I tried to mimic a Morrowind style menu entry, like seen here:

 

https://i.imgur.com/KkArX.jpg

 

Trying to import information about faction affiliation, and player birthsign. I did however not found a way to import that information without using a Papyrus array, formlist, and a while condition trying to GetAt. the corresponding spell. The problem is, that while condition took such a long time, it would totally outpace the build up of the FavoritsMenu.swf, rendering it extremely sluggish. I do already have an idea how to catch the spell(birthsign) exclusivley from inside ActionScript, but trying to catch those specific factions the player could be affiliated with, seems to be impossible. Such "faction" form does not exist inside any thing SkyUI/SKSE related C++ or AS files. Or I'm just to stupid to see it.

 

On another note: I might have finally found a way how to build new perk trees...like "real" perk trees, not the mimic way Chesko does it. Also either importing a skill/class menu snippet into the race menu, or build a skill/race menu completely from scratch, that could be fired after the user build his race is totally possible. Think of Morrowind/Oblivion style character building. All of that is possible without using any part of MCM. MCM would only be dedicated to what it was actually build for: configuring Mods.

 

I might release something like an extended "UI extension", SkyUI "extension" ressource menu build. But right now I'm nowhere near this, since my current build quickly build up a somewhat "difficult to overview" state. I would often need to derive from one to another function, loosing focus on what actually should be finalized first. The problem is just, I'm afraid to lose all this precious ideas if I don't fiddle with it.

Link to comment
Share on other sites

Yo, this sounds really exciting! I was so happy when found the controlmap file but it's a bit restrictive in bindings for some weird reason and I'd love to know of a more flexible way to expand button inputs.

Link to comment
Share on other sites

  • Recently Browsing   0 members

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