- Sending on a background thread (the game thread blocked whenever the TCP buffer was full, e.g. while uploading the save); small frames are batched - Server save requests: routine saves wait for a calm moment (not while driving fast) and are announced; urgent flag from server 2.10.5 - Dynamic built-in font for all MSCO GUI (Unity logged hundreds of "Font size and style overrides" warnings with stutters) - Admin VEHICLE tab rescans every 30 s / after actions instead of every 5 s; time/weather FSM search less often - Reused buffers for Build/Frame/Poll (less garbage, fewer GC pauses) - Hitch log: GC and save detection, count of hitches between reports - Show Bolt Size 1.0.1: finds the FPSCamera (Camera.main may be missing), uses MSCO's shared FSM list instead of FindObjectsOfType every 2 s Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MSCO – My Summer Car Online
Multiplayer-Mod für My Summer Car. Spiel mit bis zu 3 Spielern zusammen – per Steam-Einladung (P2P) oder auf einem dedizierten Server aus dem Server-Browser. MSCO läuft eigenständig, ohne MSCLoader (Start über Unity Doorstop); MSCLoader wird beim Spielen mit MSCO blockiert.
- Mod: dieses Repository
- Dedizierter Server: MSCO-Dedicated-Server
- Keymaster & Serverliste: MSCO-Keymaster – live unter https://msco.mbm.wtf
- Launcher (installiert und aktualisiert die Mod): MSCO-Launcher
- Download: https://msco.mbm.wtf/download
Features
Verbinden
- Launcher im Hauptmenü (Vollbild, automatisch skaliert): P2P-Seite, Server-Browser und Favoriten; mit – einklappen, dann ist das Startmenü des Spiels wieder bedienbar
- P2P über Steam: HOST GAME, Freunde einladen, Beitritt über die Steam-Freundesliste (max. 3 Spieler)
- Server-Browser: Suche, Filter (Steam / Non-Steam / volle ausblenden), Ping, Server-Profil (Besitzer, Version, Laufzeit, Spieler), lokale Server auf diesem PC werden automatisch gefunden
- Direct Connect per Adresse, JOIN-Links von der Website (
msco://) starten das Spiel und verbinden direkt - Favoriten mit Herz und Kurzname, schnell wechseln mit
/switch <kurzname> - P2P: neues Spiel oder weiterspielen – der Host startet ein frisches Spiel oder lädt seinen Spielstand
- Server ohne Steam („Non-Steam“) werden unterstützt; Versionen passen, solange die ersten zwei Stellen gleich sind
- Nach einem Kick/Bann ein Fenster mit dem Grund; nach Welt-Reset oder Server-Neustart verbindet man automatisch neu
- Der Host-Spielstand wird beim Start automatisch an alle übertragen; der eigene Spielstand wird vorher gesichert und nach dem Spielen wiederhergestellt
Synchronisiert
- Spieler als echte MSC-Menschen (derselbe Körper wie die Leute im Spiel, je Spieler anderes Hemd, Hose, Gesicht)
mit Blickrichtung, Laufen, Springen, Ducken/Lehnen, Sitzen, gehaltenem Item und Namensschild (
model classic= einfache MSCO-Figur) - Items, lose Teile, Schrauben und Fahrzeuge (auch mit G geschoben) mit Besitzer-System – inkl. was jemand in der Hand hält
- Fahrzeuge: Position, Lichter, Motorgeräusch, Bedienelemente (Zündung, Licht, Blinker, Wischer, Handbremse …), Tacho, Lenkrad, drehende Räder, Türen/Haube/Kofferraum, Unfallschäden
- Mitfahren: wer im Fahrzeug ist (Kabine, offene Tür, Ladefläche), fährt genau dort mit – mit oder ohne Fahrer
- Fahrzeugzustand: Tank, Öl, Kühlwasser, Bremsflüssigkeit, Batterie, Schäden, Verschleiß, Kilometerstand, Vergaser-/Zündungseinstellungen; beim Satsuma zusätzlich jedes Teil (Verschleiß, kaputte Teile, Reifen, Ölwanne, Fahrwerk) und der Lack
- Anbauen/Abbauen von Teilen und Schrauben (PlayMaker-Events)
- Türen, Tore, Hauben (z.B. Garagentor), Geld, Uhrzeit und Wetter, NPC-Verkehr
- Jobs und Events: Laden, Werkstatt, Prüfstelle, Müllkippe, Tanzhalle, Rallye, Dragrace, Kilju-Käufer, Theater, Fußball, Peräjärvi, Ferienhaus, Hütte
- Pro Spieler auf dem Server: letzte Position und Bedürfnisse (Hunger, Durst, Stress …)
Im Spiel
- T – Chat
- F7 – MSCO-Konsole mit allen Befehlen
- /admin – Admin-Menü für Server-Admins bzw. den P2P-Host: Spieler kicken/bannen, Admin geben/nehmen, GOTO/BRING (teleportieren), TELEPORT zu Orten (Haus, Laden, Werkstatt, Prüfstelle, Peräjärvi …), VEHICLE (Füllstände auffüllen/leeren, Teile reparieren/zerstören – zum Testen), Cheats (+1.000 / +10.000 MK, Bedürfnisse auffüllen, Satsuma zu sich holen), Items spawnen, Welt zurücksetzen/Backups – Cheats werden im Chat angezeigt
- P / Leertaste – aussteigen; P neben einem Auto – auf den Beifahrersitz
- Tasten ändern mit
bindin der F7-Konsole (z.B.bind passenger O) - Rich Presence: zeigt Freunden deinen Status („In the Menus“, Server, Spielerzahl)
- MSCO-Look: Fenstertitel, Symbol und Logo im Hauptmenü; der „Press any key“-Startbildschirm wird übersprungen; ESC im Hauptmenü beendet das Spiel nicht
- Mods: eigene MSCO-Mods in
<Spielordner>\MSCO\Mods, Server können eigene Mods mitbringen (Download nach Zustimmung) – siehe MODDING.md
Installation
Mit dem Launcher (empfohlen): den MSCO Launcher installieren – er installiert und aktualisiert MSCO und startet das Spiel. MSCLoader wird nicht gebraucht.
Was der Launcher im Spielordner einrichtet:
| Datei | |
|---|---|
MSCO\MSCO.dll (+ 0Harmony.dll) |
die Mod |
winhttp.dll |
Unity Doorstop 4 – nur wenn noch keiner da ist (MSCLoader bringt denselben mit) |
doorstop_config.ini |
zeigt auf MSCO\MSCO.dll – eine MSCLoader-Konfiguration wird vorher als doorstop_config.mscloader.ini gesichert |
Alte MSCO-Versionen im MSCLoader-Mods-Ordner werden in MSCO.dll.old umbenannt. Damit startet My Summer Car auch über
Steam mit MSCO und ohne MSCLoader. MSCLoader wieder benutzen: doorstop_config.mscloader.ini zurück in
doorstop_config.ini umbenennen.
Von Hand: Doorstop 4 (winhttp.dll, x64) in den Spielordner, MSCO.dll von der
Download-Seite mit 0Harmony.dll (Harmony 1.2) nach
<Spielordner>\MSCO\ und in doorstop_config.ini target_assembly = MSCO\MSCO.dll eintragen.
Spiel mit Steam starten – ohne Steam gehen nur Non-Steam-Server. Das Lade-Protokoll steht in
<Spielordner>\MSCO\MSCO_Loader.txt.
Einen eigenen Server betreiben
Siehe MSCO-Dedicated-Server – Lizenzschlüssel gibt es kostenlos unter https://msco.mbm.wtf/keys.
Probleme?
| Problem | Lösung |
|---|---|
| Server fehlt im Browser | REFRESH drücken; Filter (STEAM / NON-STEAM) prüfen; der Server muss von außen erreichbar sein |
| „This server requires Steam“ | Spiel über Steam starten |
| Warnung „Version mismatch“ | Die ersten zwei Stellen unterscheiden sich – Mod (Launcher) oder Server aktualisieren |
| Mod lässt sich nicht aktualisieren | Spiel schließen – solange es läuft, ist MSCO.dll gesperrt |
| Statt MSCO startet MSCLoader | Im Launcher SPIELEN drücken – er stellt doorstop_config.ini wieder auf MSCO (z.B. nach einem MSCLoader-Update) |
| MSCO startet gar nicht | <Spielordner>\MSCO\MSCO_Loader.txt ansehen |
| Eigener Spielstand weg | Wird nach dem Verlassen automatisch wiederhergestellt; Sicherung liegt in AppData\LocalLow\Amistech\My Summer Car\MSCO_Backup |
| Absturz / Hänger beim Beitreten | output_log.txt im Spielordner an den Server-Betreiber bzw. als Issue schicken |
Befehle
In der F7-Konsole:
| Befehl | Beschreibung |
|---|---|
connect <host[:port]> |
mit einem dedizierten Server verbinden |
disconnect |
Server / Spiel verlassen |
host [port] / join <ip> [port] |
LAN-Testsitzung ohne Steam |
save |
Spiel speichern (Host / Einzelspieler) |
ping [on|off] |
Ping zum Server oben rechts anzeigen (grün < 80 ms, gelb < 150 ms, rot darüber) |
fps [on|off] |
Bilder pro Sekunde oben rechts |
switch <kurzname>, fav … |
Zu einem Favoriten wechseln, Favoriten verwalten |
model [game|classic] |
Mitspieler als MSC-Menschen oder als einfache Figur |
vars <filter> |
Diagnose: synchronisierte Fahrzeugwerte |
mods |
geladene MSCO-Mods |
perf [reset] |
FPS und wie lange jeder MSCO-Teil pro Bild braucht |
fsmdump <text> |
Diagnose: Spiel-Logik (PlayMaker) und Scharniere von Objekten mit diesem Namen nach MSCO\fsmdump.txt |
admin bzw. /admin im Chat |
Admin-Menü |
vehicles, rig |
Diagnose: Fahrzeuge / Spielermodelle |
debug |
Sync-Debugausgaben an/aus |
bind [aktion taste] |
Tasten anzeigen / ändern (passenger, console, chat) |
clear |
Konsole leeren |
Selbst bauen
- Eine C#-Entwicklungsumgebung, .NET Framework 3.5 (Unity 5.0 / Mono)
- Die Verweise in
MSCO.csprojzeigen aufF:\SteamLibrary\steamapps\common\My Summer Car\mysummercar_Data\Managed\(UnityEngine, PlayMaker, Assembly-CSharp, Assembly-CSharp-firstpass, cInput) – bei anderem Installationsort anpassen. Harmony 1.2 liegt inlib/(MIT, siehelib/THIRD-PARTY.txt). JSON liest MSCO selbst (MiniJson.cs) – das Spiel hat ohne MSCLoader keinSystem.Runtime.Serialization. - Nach dem Build wird die DLL automatisch nach
<Spielordner>\MSCOkopiert (ZielCopyToGamein der csproj). - Einstieg:
Bootstrap.cs(Doorstop.Entrypoint.Start→ Harmony-Haken inPlayMakerArrayListProxy.Awake→MSCO_Hostim Hauptmenü, überspringt den Nachrichten-Bildschirm).
msbuild MSCO.csproj -p:Configuration=Release
Updates veröffentlichen
- Kleines Update (Fehlerbehebungen, neue Funktionen, Netzwerk unverändert): in
MSCO.csnur die dritte Stelle vonModVersionerhöhen (2.9.0→2.9.1), Release bauen undbin/Release/MSCO.dllauf den Keymaster laden. Spieler mit derselben Netzwerk-Version spielen weiter zusammen, Server müssen nicht aktualisiert werden. - Großes Update (Protokoll inkompatibel geändert):
ProtocolVersioninMSCO.csundGameServer.ModVersionim Server erhöhen (z.B.2.9),ModVersionauf2.9.0. Dann brauchen alle die neue Mod und den neuen Server. - Verglichen werden immer nur die ersten zwei Stellen; übers Netz geht nur die Netzwerk-Version.
- Automatisch hochladen: Ist lokal
MSCO_RELEASE_TOKENgesetzt (=RELEASE_TOKENdes Keymasters, oder in%AppData%\MSCO\release-token.txt), lädt jeder Release-Build eine neue Version selbst auf den Keymaster (release.ps1, Changelog aus dem passenden Abschnitt inCHANGELOG.md). Gibt es die Version schon, passiert nichts.
Aufbau
| Datei | Aufgabe |
|---|---|
Bootstrap.cs, MSCO.cs |
Start ohne MSCLoader (Doorstop), Ladebildschirm, Versionen, Tastenbelegung |
MenuBranding.cs, MiniJson.cs |
Fenstertitel/-symbol und Menü-Logo, eigener JSON-Leser |
ModApi.cs, ModLoader.cs |
Mod-Schnittstelle MscoMod, Laden und Aufrufen der Mods (siehe MODDING.md) |
MultiplayerManager.cs |
Sitzung, Nachrichten, Spielerliste, Spielstart, HUD |
NetSession.cs |
Netzwerk (TCP und Steam P2P), Protokoll |
LobbyUI.cs, Overlays.cs, UiTheme.cs |
Launcher, Konsole/Chat/Admin-Menü, gemeinsamer Stil |
ServerBrowser.cs, WinHttp.cs |
Serverliste (TLS 1.2 über WinHTTP), Server-Abfrage |
ObjectSync.cs |
Items/Teile/Fahrzeuge mit Besitzer-System |
VehicleStateSync.cs, VehicleFx.cs, Passenger.cs |
Fahrzeugzustand, Lichter/Sound, Beifahrer |
FsmSync.cs, DoorSync.cs, WorldSync.cs, MoneySync.cs |
Montage-Events, Türen, Zeit/Wetter, Geld |
RemotePlayer.cs, GameCharacter.cs |
Spielfiguren der Mitspieler (Animation, MSC-Körper mit eigenem Skelett) |
HingeSync.cs, ControlSync.cs, DamageSync.cs, WorldVarSync.cs |
Türwinkel, Schalter, Unfallschäden, Jobs/Events |
Favorites.cs, Commands.cs, PlayerNeeds.cs |
Favoriten, Konsolenbefehle, Bedürfnisse pro Spieler |
SaveSync.cs, MenuHelper.cs |
Spielstand übertragen/sichern, Laden aus dem Menü |
SteamLobby.cs, JoinLinks.cs, DiscordPresence.cs |
Steam-Lobbys, msco://-Links, Rich Presence |
SafetyPatches.cs, InputLock.cs, SceneCache.cs |
Absturzschutz, Eingabesperre, geteilte FSM-Suche |
Bekannte Einschränkungen
- Teile, die nach dem Server-Spielstand montiert wurden, werden für neue Spieler nachgespielt – das klappt nicht immer
perfekt.
reset-worldauf dem Server setzt den Stand zurück. - Maximal 3 Spieler im P2P-Spiel (dedizierte Server: so viele wie eingestellt).
Lizenz
GNU AGPL-3.0 – siehe LICENSE.txt.
Made by MBM – mbm.wtf