Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

V1.7.0 #742

Merged
merged 90 commits into from
Nov 23, 2024
Merged

V1.7.0 #742

merged 90 commits into from
Nov 23, 2024

Conversation

RobbeBryssinck
Copy link
Member

@RobbeBryssinck RobbeBryssinck commented Nov 23, 2024

Changelog 1.7.0

  • 🎉 Added experimental sync for custom animations/behavior mods such as those made for Nemesis or Pandora
  • 💢 Fixed some of the most common crashes when entering locations as a party member, or teleporting to the party leader
  • Fixed a rare crash when a player tried to relinquish control of an NPC
  • Added /settime chat command; requires admin rights to use
  • Expanded server-side scripting capabilities; this includes more Lua bindings for server modding
  • Made the 'Reveal Players' feature more user-friendly; the effect can now be activated from the F2 menu
  • Improved door sync between players
  • Updated Vilkas script to be more compatible with general magic effects
  • Fixed a bug that didn't allow the use of bound arrows/weapons near other players and occasionally caused crashes
  • Fixed a bug where a player's attributes would not properly synchronize
  • Fixed a bug that prevented third-party crashloggers from generating crash logs; tested on CrashLoggerSSE & Trainwreck
  • Fixed several bugs that caused F2/RCtrl UI to not appear; the UI should now show up much more consistently
  • Fixed a bug that caused STR UI framerate instability
  • Fixed black screen and crashing on Nvidia GPUs
  • Fixed STR logo in the main menu for Anniversary Edition
  • Fixed a bug that caused Spanish and Turkish translations to not load
  • Added an option to specify Skyrim's exe path via a command-line argument; example usage: SkyrimTogether.exe --exePath C:\Path\To\Game\SkyrimSE.exe
  • Updated error message regarding the use of the wrong version of the Address Library
  • Updated Turkish translation

absol89 and others added 30 commits August 24, 2024 17:40
…bat mods

When a magic or explosion hit is registered it adds to the trainer counter instead of resetting the quest stage, doesn't matter which player or character hits Vilkas now.
…arious crashloggers to work with STR.

CrashHandler is always constructed now, but is IS_MASTER aware and disables minidumps when IS_MASTER is true. Unless you turn the flag back on with a debugger.
Rebased to current /dev
Made the fix a bit safer by only catching EXCEPTION_ACCESS_VIOLATION, at the risk of not getting crahs dumps/logs for a few obscure and infrequest crash types. This is consistent with when crash dumps were triggered before this PR.
…cter that the remote system is obviously not authoratative for.

From the code comment:
Only accept spawn position and inventory updates if not for local player
The remote system is simply not authoritative for this info, and trying
to take it from the remote can result in concurrent update corruption
That's the real problem, either s_pRemoveAllItems or s_unequipAll
have async behavior themselves or undocumented behavior that
causes concurrency issues.
…hread-logging

Better logging for debugging distributed multithreaded apps.
Fix cell-change crash caused by use-after-free of BGSAttackDataMap
…rkaround

Exception handling fix so SetUnhandledExceptionFilter works
…spawn data looping back to themselves."

This reverts commit ed79bf1.
…yerCharacter that the remote system is obviously not authoratative for."

This reverts commit 49bfc73.
Fix cell-change crash from SetActorInventory() calling s_unequipAll followed by s_removeAllItems
…728)

Black screen fix still applies. Dynamic invocation is needed in order not to link `d3d11.dll` at compile-time (compile-time linking breaks ENB and other mods that use d3d11.dll as a proxy)

Co-authored-by: rfortier <[email protected]>
STR is up against the limit, using 62 of a hardwired 64  boolean behavior vars to be synced. This fix removes the limit before it becomes a barrier.

Since "unlimited" will bite us, note the base code has some lengths encoded in 16-bit ints that will bite eventually. Trying to sync even a fraction of that many will cause problems, though.

Reimplemented the Boolean long long as a (bit) Vector. This made all vars (bools, ints, floats) vectors, so some code simplification of the wire protocol is accessible.

The Booleans are just passed "as is," no attempt to detect which ones changed as the space required to send the delta is more than just sending the bits.

Overall impact on wire protocol: sending humanoids will be slightly longer, as the 64-bits available is almost full. But that's longer by a byte (or maybe two since I used String to simplify the code).

Everything else sent will be shorter and less overhead.

There's no avoiding iterating the bits of the Vector<bool>. But the overhead when translating the array of <bool> to an array of bits and back is about the same.

There was a bunch of extra overhead if Serialization::WriteBool() were to be used, so optimized that part out.

Overall, should be better on the wire, and neutral-to-better on CPU.

2nd commit msg:
Reworked creating and applying Behavior variable diffs and serializing them. Simpler, easier to read, should usually save bytes on the wire.
…that it's a Vector; initial load-in animation variables might be empty.
…odded behavior. We want to detect this at runtime (like Edho did) so we can merge the STR team's behavior vars with the modded behavior vars (and not require mods to know what the STR devs picked to sync). This will also give substantial version independence, where this feature should work with multiple versions of STR.
Solve player 1st person woes

Lighten intrusion into STR main body (References.cpp)

Fixed sorting of AnimationGraphDescriptor behavior variables, this will help when Pandora is more widely adopted (and stops reordering behavior variables, maybe we can get to mod order independence).

Added failList of modded behavior lookups that fail, so we don't repeat expensive failed calls. Even some built-in ones can fail, like wisps.

Deleted dead code, marked some I'm not sure about for deletion.

Update README.md with a decent description of the content and goals of the fork.

Cleanups, comments about how it works.
Move SkyrimTogetherReborn\behaviors directory up a level to SkyrimTogetherRebornBehaviors. This gets modders out of the business of changing things in SkyrimTogetherReborn directory, and should make it it easire for mod authors to patch.

Created default behavior mod directories for the supported creatures, so modders don't have to find hashes or signatures, they can just drop in behaviorvars they need.

Translated Code\encoding\Struct\* files using code generation PowerShell script. Eventually will run automatically. Eventually may get STR Dev permission to eliminate it.

Now when finding modded behavior with game base behaviors, translates the "old" numeric BehaviorVar values back to strings, then looks up the string to get the new numeric value. This means mod developers no longer need to know which variables STR Devs require.

Better warning messages when lookups fail to aid hunting down the issue.
…game (lower case "speed"). If we get a miss on Speed try again with "speed".

If this is the only one, this is a safer fix than going to case-insensitive search, which could have its own issues.

Raised the log level to Error for these sorts of things.
Support remembering the modded humanoid/Master hash so exiting a beast modes can return to that (vs. a force-plug of the original unmodded behavior).
RobbeBryssinck and others added 28 commits November 3, 2024 13:52
Updated Vilkas script to be more compatible with general magic effects
The call to retrieve the Actor:: can fail, so avoid the crash.
Duration is set to 6 seconds
…the UI

This commit also fixes menu clipping on smaller screen sizes (like 1280x720)

Part of the work was originally done in #634 (commit 39776df)

Co-authored-by: Robbe Bryssinck <[email protected]>
This allows the function that explicitly removes magic effects to sync when applied to a player
Cherry-pick to newest /dev branch needed to move Actor::RemoveSpell to Actor.cpp
Made the 'Reveal Players' feature more user-friendly
Set up automated CI for outputting weekly builds
Make exception handling PR 705 fully compatible with IS_MASTER
CI update: correct artifact versioning, tags trigger, xmake deps caching
@RobbeBryssinck RobbeBryssinck merged commit 02ec3a4 into master Nov 23, 2024
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

8 participants