Moin,
da ich die nächsten Wochen etwas mehr Zeit haben möchte mich wieder etwas mehr Metin2 widmen. Ich habe vor ca kurzem das QuantumCore Project gefunden, wobei die Server Binary in c# geschrieben wurde. Scheinbar ist das Projekt jedoch Tod und wird nicht fortgeführt. Sodass ich mir dachte ich könnte etwas ähnliches machen. Nun möchte jedoch nicht auf einer alten Struktur arbeiten, sodass dieses Projekt rein dem Zweck dient Möglichkeiten zu erforschen, wie damals mein Post über Metin2 in der Cloud. Die Binary wird also mit keinem Client funktionieren nur mit einem CLI Tool um die Funktionalitäten zu testen.
Wieso kein eigener Client ?
Ich habe weder die Lust, Zeit & Erfahrungen den Client so anzupassen, dass er mit meiner Server Binary funktionieren würde.
Warum das ganze ?
Die erste Zeile Metin2 Code wurde um 1999 geschrieben und nun 23 Jahre später wird es auch mal Zeit vergangene Laster zu überwinden. Außerdem ermöglicht dies mir mich mehr mit Rust und Networking von Online Games zu beschäftigen.
TechStack
- Rust & Tokio Runtime
- Minikube oder Kubernetes Orchestriert unsere Services
- Docker
- Redis als Gamecache für sich schnell ändere Informationen
- MySQL populated Rediscache by einem restart sowie übernimmt die Redis Daten im regelmäßigen Intervall flush
- Casdandra für Logs und Chatnachrichten
Ein kleiner Ausflug in verteilte Systeme: Um den Cloud Native Ansatz gerecht zu werden, trennen wir uns von einem monolithischen Ansatz und unterteilen das Spiel in Einzelner Services stellt euch diese Services als eigene Server vor mit eigener Bandbreite, CPU und RAM sogenannte Pods. ( ja die werden von Kubernetes gemanged aber das ist hier nicht so wichtig ). Der Vorteil hierbei ist dass wir Services gezielt Vertical und horizontal falls möglich skalieren lassen können. Ein weiter Vorteil ist sollte ein Service ausfallen ist der Rest des Games weiterhin erreichbar. Es gibt noch viele weitere Vorteile dich ich jedoch erst später preis geben werde.
Welche Services währen den bis jetzt geplant ?
- Auth Service
- Chat Service
- Game Service
- Log Service
- Diese Aufteilung wird sich vermutlich noch ändern.
Bis Sonntag werde ich euch das CLI Tool + Source zur Verfügung stellen sodass ihr es über mein Kubernetes Cluster testen könnt.
Wird es OpenSource ?
Das CLI Tool ja, die Server Binary erst wenn das Verlangen groß genug ist und ich mich wohl mit der Struktur fühle.
Ich möchte mitwirken, ist das möglich?
Theoretisch ja, aber vorab ich weiß nicht wie lange ich dieses Projekt fortführen werde. Sollte sich genügen Mitstreiter finden könnte es durchaus zu einem vollem Funktionsumfang von 2006 kommen. Hierbei ist und bleibt der Knackpunkt der Client ich habe es schonmal versucht diesen neu zu schreiben unter der Prämisse das Game neu zu schreiben, aber war totaler Schwachsinn bin dafür zu schlecht was 3D und co angeht.
Besonderheiten:
- Drops
- Shops
- Uppsystem
- Regen files
haben nur ihr eigenes Defintion Schema im YAML Format, damit lassen sich diese schneller und verständlich abändern.
Angestrebte Features sind:
- Auth
- Chat
- Player World Mobs
- Movent & PVE Combat
- Items
Ich bin gerne offen für jeden Input und Vorschläge und natürlich Feedback nachdem ich euch das CLI Tool gegeben habe.
Mit freundlichen Grüßen
Zynko