TiltedEvolution is a framework created to enable multiplayer in Bethesda games, currently supporting Skyrim Special Edition.
This branch (API-Together-1.8.7-8, tag v1.8.7-8) is a community playtest build of this fork. It is not an official Skyrim Together release. Please report anything below that misbehaves, ideally with two or more players and the client and server logs.
- Proximity voice chat: built in and relayed through the game server, so it needs no separate program or port. Uses Opus. Servers turn it on with
Voice:bVoip. Players pick an input device and Connect to voip in Settings, and can set per-player volumes and a noise gate from the player list. - Player-to-player trading: invites, offers, ready-up countdown, crafted potions and enchanted items, and a trade invitation setting.
- Name tags and privacy: name tags above players with on/party/off filters, "Known names" (players outside your party show as Stranger), floating chat lines above heads, and Swedish strings.
- Item drops (upstream #913, draft): dropped items are synced as server-tracked references. Other players' crafted potions spawn from their recipe.
- Mod animation sync and
/wave(upstream #879, DJLegends).
Gameplay:bAllowConsoleCommands(defaulttrue). Whenfalse, commands typed into the console are refused, but the console still opens for reading reference ids, and mods can still run commands.ToggleConsoleCommandsswitches it while the server runs.Voice:bVoip(defaultfalse): proximity voice chat.Gameplay:fGoldLossFactor: values above 1.0 are now a flat amount of gold lost on death.- Server settings can be overridden with environment variables (upstream #936).
- NPC ownership and inventories (upstream #932, miredirex): no stale updates after a missed transfer, no duplicate owners, outfits kept through assignment. Inventories wait until the NPC's body and process are loaded. A snapshot without worn items no longer strips a living NPC.
- Dead NPCs stay down when another player loads the cell.
- Exterior door and container locks sync across nearby cells.
- Large messages (big inventories, long mod lists) are no longer sent cut off.
- Sleeping or waiting advances the shared time (upstream #897).
- Weapon draw and sheathe state is restored when refused (upstream #898). Stale object replication bindings are cleaned up (upstream #891).
- Crash fixes: an activated object deleted before activation, a missing launched projectile, teleporting a remote actor into an unloaded exterior cell, and Papyrus natives that weren't ready at startup.
- Summons no longer get death items. Unresolved spells and shouts aren't equipped. Remote actors don't look crouched with different behavior mods. Torso-less remote players get an invisible body. Beast form leave and the Riften North Gate guard scene are fixed.
- Floating Subtitles can hook subtitles alongside Skyrim Together.
- Server list announces over IPv4 only.
- mimalloc secure mode: heap corruption crashes with a log in
logs\mimalloc_errors.loginstead of freezing. - Tag builds that aren't on master keep F6/F7 and the console. The console follows Skyrim Together Tweaks'
bEnableConsole.
To play Skyrim Together, go to the nexus page.
For general information, go to the TiltedEvolution Wiki.
Check out the build guide for setup and development info on the project. When writing code, check the CODE_GUIDELINES.md and make sure to run clang-format!
If you would like to report a bug please report them in the "Issues" tab on this page. Detailed and reproducible bug reports are of great importance for the development of the project.
Have some experience in C++, and want to help advance the project faster? Contribute!
- Check the issues, it's a good place to start when you don't know what to do.
- Fork the repository and create pull requests to this repository.
- Create pull requests to the "dev" branch, not to master.
- Try to keep your code clean, following the code guidelines.
- client/: Skyrim SE client: engine hooks, reverse-engineered game types and the sync logic.
- immersive_launcher/:
SkyrimTogether.exe, which starts the game with the client loaded. - immersive_elf/:
EarlyLoad.dllhelper DLL for the launcher. Detects if Mod Organizer 2 was injected first. - tp_process/: Worker for the CEF (Chromium Embedded Framework) overlay.
- skyrim_ui/: In-game UI, written in Angular/TypeScript.
- server/: Game server (
STServer.dll). - server_runner/: Dedicated server executable that hosts the server DLL.
- encoding/: Network message and struct definitions shared by the client and server.
- common/, base/: Shared utilities.
- components/: Shared modules (console/settings, ESP loader, resources, ImGui).
- tests/: Unit tests.
- GameFiles/: Plugins, scripts and assets shipped with the mod.
- Libraries/: Networking, hooking, reverse-engineering and UI libraries (git submodules).
- Tools/: Reverse-engineering and address scripts.
TiltedEvolution is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
