https://github.com/splitux-gg/eos_sdk_emu-splitux
https://github.com/splitux-gg/eos_sdk_emu-splitux
eos-emulator splitux
Last synced: 6 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/splitux-gg/eos_sdk_emu-splitux
- Owner: splitux-gg
- Created: 2025-12-03T20:46:35.000Z (7 months ago)
- Default Branch: main
- Last Pushed: 2026-01-10T05:17:19.000Z (6 months ago)
- Last Synced: 2026-01-11T01:34:57.576Z (6 months ago)
- Topics: eos-emulator, splitux
- Language: C++
- Size: 6.44 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# EOS SDK Emulator - Splitux Fork
Fork of [psfree/eos_sdk_emu](https://github.com/psfree/eos_sdk_emu) for use with Splitux local split-screen multiplayer.
## Splitux Integration
Built DLLs go in `dist/` for copying to splitux:
```
dist/
├── win64/EOSSDK-Win64-Shipping.dll
├── win32/EOSSDK-Win32-Shipping.dll
└── linux64/libEOSSDK-Linux-Shipping.so
```
---
# Nemirtingas Epic Emulator Redux (Upstream)
Full credit to Nemirtingas, whose original work provided the essential foundation for this emulator. Although his original repository was taken down, his influence remains crucial to this effort.
# Debug log levels
This is a project to try to understand how the eos api works under the hood.
Valid debug levels: (only in debug version)
```
TRACE: Very verbose, will log DEBUG + All functions enter
DEBUG: Very verbose, will log INFO + Debug infos like function parameters
INFO : verbose , will log WARN + some informations about code execution and TODOs
WARN : not verbose , will log ERR + some warnings about code execution
ERR : not verbose , will log FATAL + errors about code execution
FATAL: not verbose , will log only Fatal errors like unimplemented steam_api versions
OFF : no logs , saves cpu usage when running the debug versions
```
# Internals - Any reference to "config file" is the emulator config file: NemirtingasEpicEmu.json
- **The config file is generated if it is missing**. If you're lazy to build one or copy the example, just don't do it, the emu will do it for you. **You might want** to create a simple json with only { "username": "MyAwesomeUsername" } to let the emulator know who you are and generate a consistent id.
- { "username": "DefaultName" }: it is used to generate your epicid if you want to (see "epicid" entry below). Some games use it to set your in-game username, some don't (like civilization 6).
- **[MUST BE UNIQUE][AUTO GENERATED]** { "epicid": "156abc156f1c5487f91c" }: is generated if it is missing or invalid. An epicid is invalid if it does contain non-hex chars (Anything not 0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f) but it **can** start with 0x (the hex prefix)
- If the "epicid" is missing or invalid, it will be generated based on some rules
1. Your username is "DefaultName" ( "username": "DefaultName"), the epicid is generated randomly. (it prevents users that doesn't setup correctly the emu to have duplicated epicids)
2. Your username is not "DefaultName" ("username": "SomethingGreat"), the epicid is generated using your username as a seed making it the same whatever you do. (Playing another game, another computer)
3. If it is not invalid or missing, it will be left untouched, so you can modify it to any **valid** epicid you want
- **[MUST BE UNIQUE][AUTO GENERATED]** { "productuserid": "156abc156f1c5487f91c" }: is generated if it is missing or invalid. Is it used to identify a peer on the network allowing multiplayer. An productuserid is invalid if it does contain non-hex chars (Anything not 0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f)
- If the "productuserid" is missing or invalid, it will be generated based on some rules
1. If the product user id is invalid or missing, it will be generated with the appid + epicid as a seed.
2. If it is not invalid or missing, it will be left untouched, so you can modify it to any **valid** epicid you want
- { "appid": "CrabTest" }: This **will** be used to search friends and lobbies that use the same appid. It can be retrieved on https://epicdata.info/items/ For example, for Satisfactory experimental, search for Satisfactory and click on the main game's item. The appid is in the "releaseInfo", the "appId" field.
- { "savepath": "xxxxx" }: it is used to decide where your "cloud" saves, achievements, items, dlcs go. It has 1 special value:
1. { "savepath" : "appdata" }:
- On Windows, saves will go in: %appdata%\NemirtingasEpicEmu\
- On Linux, saves will go in: $XDG_DATA_HOME/NemirtingasEpicEmu or $HOME/.local/share/NemirtingasEpicEmu if $XDG_DATA_HOME is not set in the env.
- On MacOS, saves will go in $HOME/NemirtingasEpicEmu
2. { "savepath": "something" }: (savepath can be empty like { "savepath": "" }), saves will go in the directory specified by savepath, relative to the game's working directory. In the example, it could be "game dir"\something\NemirtingasEpicEmu or "game dir"\NemirtingasEpicEmu.
- { "disable_online_networking": true|false }: it will try to disable all **online** networking, not lan or vpn. This prevents games to go on the internet. If your game crash and you've set this to true, try to set it to false. I use my own solution to override the classic network functions, it can be buggy.
- { "enable_overlay": true|false}: For **for future use**, it will allow you to have an overlay like the EOS social overlay, invite people to games and receive notifications like achievements unlocked.
- { "gamename": "DefaultGameName" }: If the gamename is "DefaultGameName" or missing, the emulator will replace it with what the game provides it.
- { "unlock_dlcs": true|false }: This will try to enable all dlcs/items that the game requests. If the game wants more infos on em it might not work. (Like unlock_all_dlcs on a steam emu, some need you to provide the appid = name).
- { "log_level": "OFF|FATAL|ERR|WARN|INFO|DEBUG|TRACE" }: Decides how verbose the emulator will be, for debugging purpose. Defaults to OFF
- { "language": "en" }: Sets the user language. It follows the ISO639 language codes. Search on the web for your language code if needed. Defaults to "en".
- { "custom_broadcast": "192.168.200.255" }: Sets an IP subnet for custom broadcasts. If your LAN software does not allow broadcast messages (ex. nebula), you will need to provide the subnet of your IP range. The last number is ignored and can be any value from 0 to 255
# Building with windows for dummies
- Install Visual Studio 17 2022. You want C/C++ app support.
- Install pwsh. Open powershell and run: winget install --id Microsoft.PowerShell --source winget
- Install vcpkg: https://learn.microsoft.com/en-us/vcpkg/get_started/get-started?pivots=shell-powershell . Follow the bootstrap instructions.
- Run "vcpkg install protobuf", "vcpkg install nlohmann-json"
- Install cmake for windows. Open cmake-gui and point it to the source code. Create a separate build folder if you want and point it to that.
- Hit configure. Choose "Specify Toolchain file for cross-compiling". Choose ..\vcpkg\scripts\buildsystems\vcpkg.cmake
- Hit "Add Entry" Add "X64" as a string set to "ON".
- Hit Configure, then Generate. Then hit Open Project
## 32bit
-Same initial steps
- Run "vcpkg install protobuf:x86-windows", "vcpkg install nlohmann-json:x86-windows"
- Open cmake-gui
- Hit configure. Choose "Specify Toolchain file for cross-compiling". Choose ..\vcpkg\scripts\buildsystems\vcpkg.cmake
- Hit "Add Entry" Add "X86" as a string set to "ON".
- Hit Configure, then Generate. Then hit Open Project
- If it throws an error change VCPKG-TARGET-TRIPLET from x64-windows to x86-windows . After that, try the above step again to generate.