MrMahoandClaude Opus 5.5 adc6eff9e8 MSCO 2.10.1: car doors and garage door synced, door lock fix, perf tools
- Car doors (FSM with bool "Open" and "Open door"/"Close door") are synced as open/closed:
  the receiver removes the hold joint and frees the hinge, closing runs the game's own logic
- Fix: every synced close of an already closed Satsuma door added another FixedJoint, so the
  door could not be opened anymore; extra joints are removed automatically
- Hinge sync also covers world doors/gates with hinges (garage door), interaction by bounds
- Scene name read once per frame (Application.loadedLevelName allocates a string per call)
- Console "perf" (FPS, ms per MSCO part incl. OnGUI, GC, hook calls), -msco-perf start option
- Console "fsmdump <text>" / -msco-dump: PlayMaker FSMs and hinges to MSCO\fsmdump.txt

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 11:01:27 +02:00
2026-09-26 19:42:02 +02:00
2026-09-26 19:37:28 +02:00
2026-09-26 19:37:28 +02:00
2026-09-26 00:08:05 +02:00
2026-09-26 19:37:28 +02:00

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.

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 …), 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 bind in 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.csproj zeigen auf F:\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 in lib/ (MIT, siehe lib/THIRD-PARTY.txt). JSON liest MSCO selbst (MiniJson.cs) – das Spiel hat ohne MSCLoader kein System.Runtime.Serialization.
  • Nach dem Build wird die DLL automatisch nach <Spielordner>\MSCO kopiert (Ziel CopyToGame in der csproj).
  • Einstieg: Bootstrap.cs (Doorstop.Entrypoint.Start → Harmony-Haken in PlayMakerArrayListProxy.Awake → MSCO_Host im Hauptmenü, überspringt den Nachrichten-Bildschirm).
msbuild MSCO.csproj -p:Configuration=Release

Updates veröffentlichen

  • Kleines Update (Fehlerbehebungen, neue Funktionen, Netzwerk unverändert): in MSCO.cs nur die dritte Stelle von ModVersion erhöhen (2.9.0 → 2.9.1), Release bauen und bin/Release/MSCO.dll auf den Keymaster laden. Spieler mit derselben Netzwerk-Version spielen weiter zusammen, Server müssen nicht aktualisiert werden.
  • Großes Update (Protokoll inkompatibel geändert): ProtocolVersion in MSCO.cs und GameServer.ModVersion im Server erhöhen (z.B. 2.9), ModVersion auf 2.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_TOKEN gesetzt (= RELEASE_TOKEN des 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 in CHANGELOG.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-world auf 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

S
Description
No description provided
Readme
2.2 MiB
2026-10-02 16:01:34 +00:00
Languages
C# 97.7%
PowerShell 2.3%