The mod began as a small SKSE plugin that introduced the core feature - true directional '360°' movement. Then I realized that it needed a custom target lock component because the available mods wouldn’t play right with it. Still, my vision couldn't be 100% realized with the use of current mods, so I kept adding more custom features that I felt were still related either to the core idea or to the other, already included changes. I tried to make each of them feel like it fits the vanilla game as much as possible.
Along the way, the goal of the plugin changed into modernizing Skyrim's TPP gameplay to be a bit more like contemporary action RPGs. The plugin name stuck, however, and I couldn't really come up with a better one that didn't sound too generic.
I ended up with this huge list of features, learning a lot on the way. And here we are, with a plugin that's pretty much a third-person gameplay overhaul/UI mod. Hope you enjoy it as much as I do.
DOES NOT WORK ON ANNIVERSARY EDITION YET - UNLESS YOU DOWNGRADE THE EXE
Read the sticky in the posts section.
- Move and attack in any direction while in third-person perspective
- Target lock tailored specifically to work with the directional movement
- Animated target lock reticle widget with a healthbar; can also be displayed without target lock on the current enemy, following vanilla logic
- Projectile aim support (prediction/homing) during target lock
- Mounted directional movement and camera fixes
- Swim up/down with the sneak and jump buttons
- Boss health bars
- Supports both keyboard & mouse and controller
- Everything is done through SKSE, can be installed/uninstalled anytime
- Modular and flexible - all features can be disabled and configured through MCM
Unlike other attempts to achieve '360° movement', this is not faked through clever animation/behavior modifications. The rotation of the player character is actually changed, and thus, melee, sprinting, and everything else works correctly.
The speed of the player character's rotation to input direction can be configured and has different multipliers for the various states the character can be in.
By default, it's set up to enforce attack commitment after the weapon swing (disable character rotation), but you can swiftly rotate during the attack wind-up. Paired with a combat behavior overhaul like SkySA or ABR that locks movement during attacks, and some good attack animation pack, it makes the game feel almost like a modern action RPG. You can configure each rotation multiplier individually if you don't like this approach and prefer the vanilla gameplay, or just want to tweak some of the values.
During target lock, your character faces their target automatically. The camera yaw and pitch are also adjusted. The camera lock does not simply attempt to keep the target in the dead center of the screen, it's a bit more sophisticated to avoid awkward camera angles and nauseating movement when you're too close to the target (although I'm still not 100% happy with the angles).
You can switch targets by moving your mouse, scrolling the scroll wheel, or moving the right thumbstick on your gamepad. You can also optionally bind custom keys that will switch the current target.
You can sprint during the target lock in any direction to quickly adjust your position.
The camera adjust speed and the pitch offset that attempts to keep the target in the upper half of the screen are configurable. It works perfectly fine with SmoothCam, which I recommend very much.
The player character looks at their current target or the dialogue speaker. Without a target, the character's head will subtly follow the camera's direction.
The 'headtrack random targets in range' vanilla feature for the player that normally happens with headtracking without an enforced target has been disabled, so you don't turn your head at a random NPC while running through town, because that usually looks silly.
Other headtracking mods should theoretically be compatible. This plugin will override their targets but not overwrite them, due to the headtracking target priority system in-game that's normally inaccessible to Papyrus. Only the camera headtracking feature requires you to disable similar options in other headtracking mods because it's on a lower priority.
There is a Nemesis patch included that will fix some issues caused by all headtracking mods. Read this article for an explanation.
Your current target (which is either the actor targeted by the target lock, or, if enabled, the 'soft target' that would appear below the compass) has an animated widget with a small health bar floating above their head. It has a few different types of enemy difficulty indicators (including enemy level display), a damage counter and it also shows recent damage dealt on the health bar. Every feature can be configured or disabled.
You can choose between two types of aim support during target lock. There's predictive aim that takes into account the current target velocity and will aim the projectile at the predicted enemy location, but can miss if they suddenly change direction, or you can enable homing projectiles, which almost guarantees the projectiles will hit. You can also disable the aim support, which will temporarily unlock the camera during target lock, so you can aim freely. Each option can be applied separately for arrows/bolts and spells.
Certain enemies you encounter will be automatically detected as bosses and the mod will display their health in a form of a big, static bar on your screen.
Admittedly, the feature doesn't really have much to do with the initial core concept of the mod, but the target lock widget needs to be aware of the bosses so it doesn't display a redundant target bar, so I decided to pack everything together and try to keep TDM as modular as possible. Even if you only care about this one feature, you can install TDM and disable everything else.
The boss bar shares most of the features with the target lock widget, however they can be configured independently. The screen position can be freely changed through the MCM, and there's an option to displace the subtitles upwards if you're placing the bar at the bottom of the screen.
There's a maximum of three boss bars that can be displayed during fights with multiple bosses. In case you're fighting even more bosses at once, a queue will form, and after one of the currently displayed bosses is defeated, another will take their place.
The boss detection is a flexible system that allows configuration by the user and the creation of compatibility "patches". It uses .ini files placed in Data/SKSE/Plugins/TrueDirectionalMovement. It will read all the .ini files in this folder, so you can have multiple .ini files that won't conflict and will not require manual merging. Feel free to create and upload custom .ini files to add compatibility to mods that aren't handled correctly by default. The default configuration file should hopefully handle most of the cases and is hopefully self-explanatory.
The boss detection logic works like this:
- Check the NPC blacklist. If the NPC's BaseID is included, the NPC will not be treated as a boss even if they fit any following criteria.
- Check the race. If the race is included in the .ini, the target will be treated as a boss. By default, it mostly includes dragons and dragon priests.
- Check the NPC's BaseID. If it's included in the .ini, the target will be treated as a boss. I've added several named enemies there, though I'm sure I could have missed something.
- Check if the NPC is defined in the current Location's LocRefTypes configured in the .ini. By default, I've added the 'Boss' LocRefType. In vanilla, it's used to mark boss enemies at the end of a dungeon. Mods like Vigilant seem to add most (if not all) bosses correctly as the Boss LocRefType so they should be automatically supported. However, Bethesda also has marked NPCs like vendors as bosses of their homes, so a boss bar will appear when you attack them. This might not be desirable, which is why I added a blacklist. I did not fill it up, however, besides adding one merchant as an example.
If you want to add something to the .ini, instead of editing the base one included with the plugin, make your own .ini file (preferably with a unique name so it won't conflict with any other) and include only the new stuff, with the [BossRecognition] header. The plugin will read all the .ini files found in the folder and merge everything together.
A blacklist containing vendors and such is available here. You can also treat it as an example of a separate custom .ini, in case my description was unclear.
You can now fully rotate the camera on a mount. The mount/dismount animations will no longer change your camera angle and zoom and you'll also be able to rotate the camera while they play. A seemingly minor change that makes using a mount much less annoying. I recommend grabbing a mod that tweaks the horse rotation rate because by default it's very slow and clunky.
A small feature that allows you to swim up and down by pressing the jump and sneak buttons. Can't be "True Directional" without up and down, after all. The player character's pitch is now also changed while swimming.
Extract the archive into the game Data directory, or use your mod manager of choice.
Run Nemesis and select the True Directional Movement patch there.
If your character is a Khajiit or an Argonian, consider downloading this tail behavior edit that fixes tails moving erratically when turning quickly.
I tried to keep the plugin modular. For example, if you're only using the boss bars, you don't need to worry about incompatibilities with unrelated features.
- Compatible with SmoothCam, which is very strongly recommended.
- Compatible with CGO.
- Compatible with SkySA.
- Compatible with Improved Camera Beta 4.
- Compatible with Immersive First Person View. You have to install the optional detector plugin available on IFPV's page.
- Should not be used with 360 movement animation/behavior mods. During target lock, all the vanilla animations are used so you face the target properly.
- There's a compatibility patch for Movement Behavior Overhaul.
- Incompatible with other lock-on mods.
- Soft incompatibility of the health bar widget with Floating Health Bars (will display two bars for the current target).
- TK Dodge has hardcoded dodge direction to input, so the dodge direction can be wrong depending on your current character rotation. I suggest using other dodge mods (like The Ultimate Dodge Mod, or ideally Distar's upcoming one that will use my SKSE dodge framework). To be perfectly compatible, a dodge mod should set the 'TDM_Dodge' behavior variable during a dodge, like described in the 'Info for mod authors' section below.
- The dialogue features can be incompatible with some features in Alternate Conversation Camera. Tweak settings in both mods to achieve compatibility. You probably want to change the dialogue mode in TDM.
- Better Power Attack Direction Control has been updated and is now fully compatible.
While the mod has been tested for quite some time now by multiple people, I'm sure some issues have slipped through. When reporting any, please describe them clearly, ideally with a way to reproduce them. In case of crashes, please provide a crash log. They're actually really useful in the case of SKSE plugins.
As for feature requests, suggestions are welcome, but please understand that it's ultimately my vision for the mod and I can just disagree with your ideas. Treat suggestions as what they are and please don't expect me to actually implement them.
- Legendary Edition version?
- Is it compatible with CGO?
- Is it compatible with SkySA?
- Is it compatible with [Mod requiring Nemesis/FNIS]?
- Is it compatible with [Mod name]?
- The dialogue menu doesn't appear and gets stuck!
- My HDT physics freeze when this mod's widgets are visible!
- I can't interact with menus when this mod's widgets are visible!
- I believe this mod caused my game to crash!
- The rotation during attacks doesn't work correctly with an animation mod I'm using!
- What's the HUD retexture in the gifs?
Please read the mod description and carefully explore the options in the MCM. A few times I've been asked about a feature that's already been implemented as an option in the MCM.
- When you suddenly change the movement direction, a behavior notify event with the name 'TDM_Turn180' is called.
- During the target lock, a behavior boolean variable 'TDM_TargetLock' is set to 'true'. There's also a dummy spell effect applied to the player during target lock that can be used by DAR conditions: HasMagicEffect("TrueDirectionalMovement.esp" | 0x000804)
- To properly handle dodges, the plugin checks the 'TDM_Dodge' behavior variable. A dodge mod should set it to 'true' while dodging. (It turns out there's a bit more to this, contact me if you want to add support, I'll write it up here later)
- The attack phase recognition relies on certain vanilla animation events being sent, but it also triggers on some custom ones. If you want to precisely control the timing of the attack phases in your moveset (and thus, which rotation multiplier gets applied), add these events to your animations:
- 'CastOKStart' / 'preHitFrame' will set the attack state to Start.
- 'weaponSwing' / 'weaponLeftSwing' will set the attack state to Mid.
- 'HitFrame' will set the attack state to End.
- 'attackStop' will set the attack state to None.
- Custom events named 'TDM_AttackStart', 'TDM_AttackMid', 'TDM_AttackEnd', 'TDM_AttackStop' will also control the attack state. Mysteriously named events 'MeleeTrace_Right_Start', 'MeleeTrace_Left_Start', 'MeleeTrace_Right_Stop', 'MeleeTrace_Left_Stop' will also be recognized.
- The custom events described above require the Nemesis behavior patch to be installed.
If you're a mod author and want to add some compatibility with your mod, let me know and we'll see what can be done. I've tried to make TDM as compatible with everything as possible.
The SKSE Team for SKSE.
Ryan for the invaluable CommonLibSSE, the CommonLibSSE plugin template, A Closer Look which I used as a template for an MCM-configurable SKSE plugin, and QuickLootRE which I used as a template for an SKSE plugin with UI elements.
All the Skyrim reverse engineers that share their work, and everyone that shares their SKSE plugin source. Without it, I couldn't learn how to do any of this.
dunc001 for helping me learn how to make a nice widget.
Distar, Loki, alexsylex, MikeNike, NickNak, and everyone else from the Discord servers that have helped with testing and suggestions.
Parapets for the help and ideas regarding the move to MCM Helper.
MikeNike for the gifs and Mern for the thumbnail and MCM logo.
Everyone involved with LockonSSE as I'm using parts of the code for my target lock.
Homing projectile code is using code snippets from Auto Homing Missile.
I found out which function to use to convert worldspace position to screenspace thanks to Expired's Floating Healthbars.
Projectile prediction from here.
The Decompiled UI sources thanks to which I could closely inspect vanilla game UI to create my widgets.
Free Look sparked the idea for this plugin.
Sovngarde font has been used in the mod description.
You May Like Also