Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.
Quelldateien prüfen
Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.
Mit Codex oder Claude installieren Kopieren Sie diesen Prompt, fügen Sie ihn in Codex, Claude oder einen anderen Assistant ein und lassen Sie die Skill-Seite prüfen und installieren.
Ein direkter Befehl überspringt den Prüf-Prompt. Prüfen Sie die Quelle, bevor Sie ihn ausführen.
BepInEx-based multiplayer co-op mod for Subnautica 2 with synchronized gameplay, adaptive scaling, and decentralized peer-to-peer networking
triggers
["how do I install the Subnautica 2 co-op mod","set up multiplayer for Subnautica 2","configure Deep Synergy mod","troubleshoot Subnautica 2 multiplayer sync issues","create a co-op session in Subnautica 2","integrate OpenAI narration with Subnautica mod","adjust difficulty scaling for Subnautica multiplayer","fix BepInEx plugin conflicts in Subnautica"]
The Deep Synergy Multiplayer Mod transforms Subnautica 2 into a synchronized cooperative experience using the BepInEx modding framework. It implements deterministic session synchronization, adaptive difficulty scaling, shared inventory systems, and peer-to-peer networking without requiring central servers.
Key Capabilities:
Deterministic state synchronization across multiple clients
Adaptive dynamic scaling based on player count
BepInEx IL2CPP plugin architecture for Unity runtime hooks
Decentralized peer-to-peer networking with NAT punch-through
Optional OpenAI/Claude API integration for narrative generation
# Set API keys via environment variablesexport OPENAI_API_KEY="your-openai-key-here"export ANTHROPIC_API_KEY="your-anthropic-key-here"# Enable in synergy_profile.json# The mod will automatically use these keys when api_integration.enabled = true
Console Commands
Access the BepInEx console by pressing F1 in-game (default keybind).
Session Management
# Start a host session
/start_server
# Join existing session
/join_session <session-code>
# Example: /join_session 9B2A-4C7D-E8F1# Leave current session
/leave_session
# Display session status
/synergy_status
Gameplay Controls
# Adjust difficulty scaling (temporary override)
/synergy_scale <multiplier>
# Example: /synergy_scale 1.5# Override world seed
/seed_override <seed>
# Example: /seed_override 8251# Force inventory sync
/force_sync inventory
# Teleport to player
/teleport_to <player_name>
API-Powered Features
# Trigger AI narration (requires OpenAI enabled)
/api_narrate "<context>"# Example: /api_narrate "exploring the underwater caves"# Generate creature lore (requires Claude enabled)
/api_lore <creature_id>
# Example: /api_lore reaper_leviathan# Generate base name suggestions
/api_name_base
Code Examples
Custom Plugin Integration
If you're developing additional BepInEx plugins that interact with Deep Synergy:
using BepInEx;
using BepInEx.IL2CPP;
using DeepSynergy.API;
using UnityEngine;
namespaceMyCustomPlugin
{
[BepInPlugin("com.myname.custommod", "Custom Mod", "1.0.0")]
[BepInDependency("com.deepsynergy.core", BepInDependency.DependencyFlags.HardDependency)]
publicclassCustomPlugin : BasePlugin
{
publicoverridevoidLoad()
{
// Get Deep Synergy session managervar sessionManager = DeepSynergyAPI.GetSessionManager();
// Subscribe to session events
sessionManager.OnPlayerJoined += OnPlayerJoined;
sessionManager.OnPlayerLeft += OnPlayerLeft;
sessionManager.OnStateSync += OnStateSync;
Log.LogInfo("Custom plugin loaded with Deep Synergy integration");
}
privatevoidOnPlayerJoined(PlayerInfo player)
{
Log.LogInfo($"Player joined: {player.Name} (ID: {player.PeerId})");
// Send custom data to all clients
DeepSynergyAPI.BroadcastCustomData("MyCustomPlugin", new {
message = $"{player.Name} joined!",
timestamp = System.DateTime.UtcNow
});
}
privatevoidOnPlayerLeft(PlayerInfo player)
{
Log.LogInfo($"Player left: {player.Name}");
}
privatevoidOnStateSync(SyncEvent syncEvent)
{
// Handle synchronized state updatesif (syncEvent.Type == SyncEventType.InventoryUpdate)
{
Log.LogInfo($"Inventory synced for player {syncEvent.PlayerId}");
}
}
}
}
Programmatic Configuration
using DeepSynergy.Config;
using Newtonsoft.Json;
using System.IO;
publicclassConfigManager
{
publicstatic SynergyProfile LoadProfile(string path)
{
var json = File.ReadAllText(path);
return JsonConvert.DeserializeObject<SynergyProfile>(json);
}
publicstaticvoidCreateDefaultProfile(string path)
{
var profile = new SynergyProfile
{
SessionName = "New Session",
MaxPlayers = 4,
DifficultyScale = "adaptive",
ResourceMultiplier = 1.0f,
OxygenConsumption = 1.0f,
CreatureSpawnDivider = 1,
EnablePvp = false,
SharedBlueprints = true,
Network = new NetworkConfig
{
UseNatPunchthrough = true,
Port = 7777,
MaxLatencyMs = 200,
SyncIntervalMs = 50
}
};
var json = JsonConvert.SerializeObject(profile, Formatting.Indented);
File.WriteAllText(path, json);
}
publicstaticvoidUpdateScaling(float multiplier)
{
var api = DeepSynergyAPI.GetSessionManager();
api.SetDifficultyMultiplier(multiplier);
}
}
Custom API Integration
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;
publicclassNarrativeEngine
{
privatereadonlystring _openAiKey;
privatereadonly HttpClient _client;
publicNarrativeEngine()
{
_openAiKey = Environment.GetEnvironmentVariable("OPENAI_API_KEY");
_client = new HttpClient();
_client.DefaultRequestHeaders.Add("Authorization", $"Bearer {_openAiKey}");
}
publicasync Task<string> GenerateNarration(string context)
{
var request = new
{
model = "gpt-4",
messages = new[]
{
new { role = "system", content = "You are a narrative engine for Subnautica 2, providing immersive journal entries." },
new { role = "user", content = $"Generate a brief journal entry about: {context}" }
},
max_tokens = 150,
temperature = 0.8
};
var json = JsonConvert.SerializeObject(request);
var content = new StringContent(json, Encoding.UTF8, "application/json");
var response = await _client.PostAsync(
"https://api.openai.com/v1/chat/completions",
content
);
var responseJson = await response.Content.ReadAsStringAsync();
var result = JsonConvert.DeserializeObject<dynamic>(responseJson);
return result.choices[0].message.content.ToString();
}
}
Common Patterns
Hosting a Session
# 1. Configure your profile# Edit BepInEx/config/synergy_profile.json# 2. Launch game# 3. Open BepInEx console (F1)# 4. Start server
/start_server
# 5. Share the generated session code with friends# Example output: "Server created: session code = 9B2A-4C7D-E8F1"
Joining a Session
# 1. Launch game# 2. Open BepInEx console (F1)# 3. Join using session code
/join_session 9B2A-4C7D-E8F1
# 4. Wait for sync to complete
/synergy_status
# Look for "State sync: 100% complete"
Monitoring Session Health
# Check connected players and latency
/synergy_status
# Example output:# Connected peers: 3# State sync: 100% complete# Average latency: 45ms# Inventory hash: 0xFA342B1E
Adaptive Difficulty Adjustment
# View current scaling
/synergy_status
# Temporarily increase difficulty
/synergy_scale 1.5
# Reset to profile defaults
/synergy_scale 1.0
Troubleshooting
Connection Issues
Problem: Cannot connect to host / "Connection timeout"