Seite 1 von 1

[Hobbyprojekt/MMORPG] Heimatlos - Überleben auf Asphalt

Verfasst: 09.10.2025, 15:35
von Heimatlos
Hallo Community!

Seit ein paar Wochen arbeite ich an meinem MMORPG mit dem Namen "Heimatlos - Überleben auf Asphalt". Ich bin noch am Anfang der Entwicklung, möchte euch aber schon jetzt mein Projekt vorstellen und freue mich auf euer Feedback.

Handlung
Im Grunde geht es darum, in einer fiktiven, düsteren Stadt – online mit hunderten anderen – als Obdachloser zu überleben.

Ihr startet ohne Besitz in einer Open-World-Karte und müsst euch euren Platz erkämpfen. Euer Überleben hängt von zwei Werten ab: Gesundheit und Hunger. Der Hunger fällt kontinuierlich und führt bei Null zu stetigem Lebensverlust. Ihr müsst also neben dem Erfüllen von Quests auch aufmerksam eure Umgebung nach Essbarem oder Pfandflaschen absuchen, um bei Händlern Nahrung zu kaufen. Aber Achtung! Welt-Items sind nicht instanziert – findet ihr etwas, ist es für andere Spieler erstmal weg, bis es respawnt.

Durch das Erfüllen von Quests und das Besiegen feindseliger NPCs sammelt ihr EXP, steigt im Level auf (aktuelles Max-Level: 40) und verbessert so eure Überlebenschancen.

Bei der Charaktererstellung könnt ihr nicht nur euer Aussehen wählen, sondern erfahrt auch eine von mehreren Hintergrundgeschichten, die den tragischen Weg eures Charakters in die Obdachlosigkeit beschreibt.

Bei dem Konzept bin ich noch völlig offen - ich habe einfach Lust ein MMORPG zu erstellen! Falls ihr Ideen habt könnt ihr euch gerne mit einbringen.

Verwendete Engines/Programmiersprachen:
Datenbank: MySQL/MariaDB.
Server: Eine komplett selbst geschriebene Konsolenanwendung in C# .NET 8.0 mit der performanten Riptide Networking Library.
Pathfinder: Ein ausgelagerter C#-Server, der ausschließlich für die asynchrone Berechnung von NPC-Laufwegen zuständig ist, um den Hauptserver zu entlasten.
Client: Entwickelt mit Unity 3D (2023) und C#.

Bisherige Features (Architektur):
Hier möchte ich euch einen Einblick in das technische Fundament geben, auf das ich besonders Wert gelegt habe:

Vollständig Autoritativer Server:
Der Client ist ein reines Anzeige- und Eingabegerät. Sämtliche Spiellogik – von der Treffererkennung im Kampf, über Würfe für Loot-Drops bis hin zur Validierung von Interaktionsdistanzen – wird ausschließlich auf dem Server berechnet. Das macht das Spiel robust gegen Cheating.

Performantes & Threadsicheres Networking:
Der Server nutzt die multithreaded I/O-Features von Riptide. Auf dem Client werden alle ankommenden Netzwerk-Nachrichten in eine Warteschlange gepackt und im Main-Thread von Unity sicher verarbeitet, um Race Conditions zu vermeiden.

Effizientes Speichermanagement:
Der Server ist darauf ausgelegt, den Druck auf den Garbage Collector (GC) zu minimieren. Kritische Listen und Datenstrukturen im Game-Loop werden wiederverwendet statt pro Tick neu erstellt, um Lags durch GC-Spikes zu verhindern.

Skalierbare Server-Struktur:
Durch die Auslagerung der Wegfindungs-KI in einen separaten Pathfinder-Service ist die Architektur darauf vorbereitet, auch bei vielen NPCs performant zu bleiben.

Spatial Partitioning (Area of Interest / AOI):
Die Spielwelt ist serverseitig in ein Grid-System unterteilt. Jedem Spieler werden nur die Daten (Positionen, Aktionen etc.) von Entitäten gesendet, die sich in seiner unmittelbaren Umgebung befinden. Das reduziert die Netzwerklast und die clientseitige Verarbeitung drastisch und ist die Grundlage für eine Welt mit hunderten Spielern.

Aktuell können 100+ Spieler ohne Probleme auf dem Server gleichzeitig spielen (bei ca. 70-80 NPC's).
Ein V-Server zum testen ist bereits gemietet.


Bisherige Features (Spielmechanik):

Viele Kernsysteme eines MMORPGs sind bereits implementiert:

Charakter-System:
Level-System (1-40) mit exponentiell ansteigenden EXP-Anforderungen.
Stat-Progression: Mit jedem Level-Up erhöht sich die maximale Gesundheit.

Tod & Respawn:
Bei Tod verliert man EXP, zahlt eine kleine Krankenhausgebühr und respawnt an einem festen Punkt.

Lebendige Spielwelt & NPC-Verhalten:
Die NPCs folgen einem serverseitigen KI-System, das verschiedene Verhaltensweisen kombiniert, um die Welt dynamischer zu gestalten:
- Aggressions-Typen:
Freundlich: Questgeber, Händler und Zivilisten, die nicht angegriffen werden können und die sicheren Zonen der Welt bevölkern.
Defensiv: Neutrale Charaktere, die nur zurückschlagen, wenn sie provoziert werden.
Feindselig: Gegner, die Spieler innerhalb ihres Sichtradius (Aggro-Radius) sofort angreifen und Jagd auf sie machen.

- Bewegungs-Typen:
Statisch: NPCs, die an einem festen Punkt bleiben, ideal für Händler oder Wachen. Sie können dennoch durch spezielle Idle-Animationen (z.B. sich unterhalten, rauchen) lebendig wirken.

Umherwandernd (Wander): NPCs bewegen sich zufällig innerhalb eines festgelegten Radius um ihren Spawnpunkt, was Gebiete organischer und weniger vorhersehbar macht.

Patrouillierend (Patrol): NPCs folgen einer fest definierten Route von Wegpunkten. Das erzeugt dynamische Hindernisse und glaubwürdige Wachen.

Survival-System:
Hunger: Sinkt über Zeit, verursacht bei Null Schaden.
Energie: Ressource für Kampfaktionen (Schlagen, Treten, Blocken), die sich außerhalb des Kampfes schneller regeneriert als im Kampf.

Echtzeit-Kampfsystem:

Zwei grundlegende Nahkampf-Angriffe (schneller Schlag, langsamer Tritt) mit unterschiedlichen Energiekosten und Cooldowns.
Aktives Blocken: Spieler können Angriffe blocken. Die Erfolgschance hängt vom Level-Unterschied zum Gegner und der verbleibenden Energie ab.

Stun-Effekte:
Der Tritt hat eine Chance, das Ziel kurzzeitig zu betäuben und kampfunfähig zu machen.

Inventar- & Item-System:
Slot-basiertes Inventar mit Hotbar.
Drag-and-Drop zum Verschieben, Stapeln und Zerstören (mit Bestätigungsdialog) von Items.
Item-Nutzung mit serverseitig validierten Cooldowns, die auch einen Logout überdauern.
Item-Qualitätssystem (Gewöhnlich, Selten etc.), das sich in der UI durch Farben widerspiegelt.
Welt-Items, die in der Welt aufgesammelt werden können und nach einer festen Zeit respawnen.

Wirtschaftssystem:
NPCs können als Händler fungieren und bieten ein festes Sortiment an Waren an.
Spieler können Items an Händler verkaufen (Verkaufspreis ist ein prozentualer Anteil des Item-Wertes).
Der Server trackt globale Wirtschaftsstatistiken wie die gesamte Geldmenge im Umlauf.

Umfangreiches Quest-System:
Questgeber mit dynamischen Icons (!, ? in grau/gelb), die sich je nach Spielerfortschritt, Level und abgeschlossenen Vor-Quests in Echtzeit ändern.
Verschiedene Quest-Ziel-Typen sind implementiert: Töte X, Sammle Y (von NPCs oder aus der Welt), Benutze Item Z.
Unterstützung für Quest-Reihen (eine Quest wird erst verfügbar, nachdem eine andere abgeschlossen wurde).

Soziale Features:
Diese Befehle sind für jeden Spieler im Spiel verfügbar.

**/help**
Zeigt die Liste der verfügbaren Befehle im Chat an.

**/w <Spielername> <Nachricht>** (oder **/whisper**)
Sendet eine private Nachricht (Flüstern) an einen anderen Spieler, der online ist.

**/r <Nachricht>** (oder **/reply**)
Antwortet auf die zuletzt erhaltene oder gesendete Flüsternachricht.

**/who**
Zeigt die Anzahl der aktuell online befindlichen Spieler an.

**/ignore <Spielername>**
Fügt einen Spieler zur eigenen Ignorier-Liste hinzu. Man empfängt keine Chat- oder Flüsternachrichten mehr von diesem Spieler.

**/unignore <Spielername>**
Entfernt einen Spieler von der Ignorier-Liste.

**/roll**
Würfelt eine zufällige Zahl zwischen 1 und 100 und zeigt das Ergebnis allen Spielern in der Nähe an.

**/played**
Zeigt die gesamte Spielzeit mit dem aktuellen Charakter an.

Admin- & GM-System:
GM-Befehle (Level 1+)
Diese Befehle sind für GMs mit Level 1 oder höher verfügbar.

**/g <Nachricht>**
Sendet eine Nachricht in den privaten GM-Chat, die nur andere online befindliche GMs sehen können.

**.mute <Spielername> <Minuten>**
Schaltet einen Spieler für die angegebene Anzahl an Minuten stumm.

**.unmute <Spielername>**
Hebt die Stummschaltung eines Spielers sofort auf.

**.who <Spielername>**
Zeigt detaillierte Informationen über einen Spieler an (Account-ID, Position, Status etc.).

**.kick <Spielername>**
Wirft einen Spieler vom Server.

**.gm ON/OFF**
Aktiviert oder deaktiviert den GM-Modus (Unsterblichkeit, keine Kosten etc.).

**.gm i**
Listet alle GMs auf, die aktuell online sind.

**.announcement <Text>**
Sendet eine globale Server-Ankündigung an alle Spieler.

**.server <info|save>**
Zeigt Server-Informationen an oder löst das Speichern aller Spieler-Daten aus.

**.kill <Spielername>**
Tötet den Charakter eines Spielers.

**.appear <Spielername>**
Teleportiert einen Spieler zur aktuellen Position des GMs.

**.recall <Spielername>**
Schickt einen Spieler, der zuvor mit .appear herbeigeholt wurde, an seine ursprüngliche Position zurück.

**.goto <Name|spawn>**
Teleportiert den GM zur Position eines Spielers oder zum globalen Spawnpunkt.

GM-Befehle (Level 2+)
Zusätzliche Befehle für GMs mit Level 2 oder höher.

**.ban <Spielername> <Tage>**
Bannt den Account eines Spielers für die angegebene Anzahl an Tagen. -1 für einen permanenten Bann.

**.levelup <Spielername> <Anzahl>**
Erhöht das Level eines Spielers um die angegebene Anzahl.

**.showitems <Spielername>**
Zeigt das Inventar eines Spielers im Chat des GMs an.

**.sethealth <Spielername> <Wert>**
Setzt die aktuellen Lebenspunkte eines Spielers auf einen bestimmten Wert.

**.sethunger <Spielername> <Wert>**
Setzt den aktuellen Hunger eines Spielers auf einen bestimmten Wert.

**.givemoney <Spielername> <Betrag>**
Gibt einem Spieler Geld (in Cents). Eine negative Zahl zieht Geld ab.

GM-Befehle (Level 3+)
Mächtigste Befehle, reserviert für die höchsten GM-Level.

**.additem <Spielername> <ItemID> <Anzahl>**
Fügt einem Spieler Items hinzu. Eine negative Anzahl entfernt Items.

**.unban <Spielername>**
Entbannt den Account eines Spielers.

**.shutdown <Minuten> <Grund>**
Fährt den Server nach einer festgelegten Zeitspanne kontrolliert herunter und informiert die Spieler darüber.

Ich freue mich riesig auf eure Gedanken, Ideen und euer Feedback! Was haltet ihr von der Grundidee und dem Setting?

Ich suche noch motivierte Tester oder Modellierer für 3d-Objekte/Models.
Meldet euch gerne wenn ihr Mitwirken möchtet. Ihr bekommt selbstverständlich als Teil des Teams GM-Rechte.
Schreibt mir bei Interesse einfach eine PM oder kommentiert unter meinem Beitrag.


Dieses Projekt ist reines Hobby und soll keinerlei Profit erzeugen.
screen_1.png
bild_2.png
bild_1.png
screen_2.png

Re: [Hobbyprojekt/MMORPG] Heimatlos - Überleben auf Asphalt

Verfasst: 12.10.2025, 12:35
von NytroX
Hi, da habt ihr ja schon einiges aufgebaut.
Alleine das Framework zu bauen - was ihr bisher habt ist ja schon ein gutes Stück Arbeit, Glückwunsch dazu.
Das Setting ist auf jeden Fall mal was neues., und technisch scheint ihr auch schon gute Ideen zu haben.

Was ich mir noch nicht so gut vorstellen kann ist der Game-Loop.
Also was würden/sollten die Spieler tun, wie läuft das ab und was ist der spaßige Teil dabei?
Wie interagieren die Spieler (außer sich die Items gegenseitig wegzusammeln), warum braucht es dafür ein MMO?
Da ist denke ich noch einiges zu überlegen damit aus dem Spiel ein Spiel wird - auch die "Sandbox" bietet anscheinend noch nicht so viel.
Was sind da deine/eure Ideen?