Beiträge von Señor Zynko
-
-
Das CLI Tool ja, die Server Binary erst wenn das Verlangen groß genug ist und ich mich wohl mit der Struktur fühle
schade
aber wieso eigtl? glaube kaum ein from scratch projekt startet direkt in der finalen struktur
Wahrscheinlich weil ich noch nicht 100% zufrieden mit der Architektur war, besonders rund ums Thema Packet handelling. Denke habe jetzt einen akzeptablen Weg und werde auch die anderen Bins offenlegen.
Game Networking ist eben nicht meine berufliche Domäne und konnte mit der Hilfe von anderen schon einiges lernen.Sofern Docker vorhanden ist müsst ihr nur docker compose up machen und der rest passiert von alleine.
Kleine Umfrage soll ich Unit Tests schreiben ?Bitte melden Sie sich an, um diesen Link zu sehen.
Falls ja seid ihr sadisten 😂 -
Kleines Update v0.0.2
Probleme mit dem Authentication Server wurden behoben. Der Authserver nutzt bcrypt zum hashen der Passwörter. Gleichzeitig kann 2Faktor via TTOP verwendet werden. User werden auch wieder ausgeloggt wenn jemand sich von einer zweiten CLI Instanz einloggt.Zur Zeit arbeite ich am dem UDP Worldserver, dieser hat eine Tickrate von 128Updates die Sekunde. Ob dieses bei größeren Spielermassen noch möglich ist muss ich mittels Benchmark ermitteln. Bis jetzt kann man sich nur bewegen in 4 Himmelsrichtungen.
Design Entscheidung:
Zur Zeit experimentiere ich mit verschiedenen Protocolen um TCP & UDP Packets serilisation and deserilisation. Unter den Anwärtern waren Cap‘n Proto, Protobuf und Flatbuffers. Zur Zeit tendiere ich zu Flatbuffers, muss jedoch bevor ich mich final festlegen noch ein paar mehr Tests machen.Plugin System:
Wie bereits angesprochen, wurde eine Art Plugin System gewünscht, dies ist leider nicht so einfach durch die Verteilung des Systems. Ich glaube aber einen Kompromiss gefunden zu haben, den ich in den kommenden Wochen austesten möchte.Ich muss leider das Release etwas nach hinten ziehen, da die CLI auf Windows Probleme macht außerdem muss ich vorher noch docs aufbauen bevor andere auch mehr Verwendung finden können. Zu dem werden kommende Woche einige Architektur Diagramme folgen und eine API Spezifikation.
-
da mein vorheriger post gelöscht wurde, hier nochmal kurz gefasst ohne zusatz
gibt es ein bestimmten grund für Rust ?
Finde die "learning curve" bei Rust sehr schwierig auch für erfahrene Programmierer.
Sehe das hier das Problem das die ganzen alten Systeme neu geported werden müssten,
gibt es hier eine Idee für eine Art "plugin system" über Exports? Damit wäre es zmd ein zum teil möglich externe Systeme in c++/go oder einer anderen Nativen Sprache zu coden
Danke für das erneute Stellen deiner Frage. Die Entscheidung für Rust basiert auf mehren Faktoren. Ich bin kein sonderlich großer Fan von C++ und noch weniger von dem Build tooling und dependency Management wenn man das überhaupt so nennen kann. Daher habe ich mich nach performanten Alternativen umgeschaut und dadurch kam Rust ins Spiel. Ein weiterer Faktor ist mein persönliches Interesse an der Sprache.
Deine Beobachtung ist absolut richtig, kein public System wird mit der Binary funktionieren, da die Packets, DB und die Architektur selber komplett anders ist. Ich möchte hier nochmal betonen, dass sofern sich keiner bereit erklärt einen clienten zu schreiben, der diese komplette Redesign unterstützt wohl auch nie jemand wirklich damit zocken kann.Eine Art Pluginsystem hört sich sehr verlockend an und habe es schon mehrfach durchgespielt, die Schwierigkeit hierbei wäre die Natur eines verteilten Systems über mehre Server Instanzen. Was jedoch auf jeden Fall geplant ist sofern ich es schaffe ist die Planung einer API zu Erweiterung der Funktionalitäten via Lua. Weitere Sprachen lassen sich je nach Methode natürlich hinzufügen, aber Lua ist dafür am besten geeignet ohne Build tooling komplizierter zu machen als nötig.
-
Kleines Update v0.0.1
Vorerst wurde auf Minikube/Kubernetes verzichtet, sodass es einfacher ist für andere auch die Server Binaries aufzusetzen . Dafür braucht ihr jedoch weiterhin Docker, da die Container via Docker-Compose configuriert werden.Design Entscheidung:
Anstatt einen großen Game Server zu haben, habe ich mich testweise dazu entschieden diesen in einem World Server + Inventory/Item Server zu splitten. Der World Server läuft weiterhin über UDP um schnell wechselnde Daten in den Redis Cache zu schreiben. Der Inventory Server läuft via TCP und wird alles rund um Inventory, Ausrüstung, Storage, Shops handeln. Hier ist die korrekte Reinflogen der Pakete wichtig und es geht nicht um sich schnell ändernde Daten. Ob diese Entscheidung schlau ist wird sich mit der Zeit zeigen.
Aktueller Stand:
Zur Zeit ist es möglich sich zu registrieren, sowie einzuloggen und einen UDP Connection zu etablieren. Einziges Problem mit dem ich gerade struggle ist die User Session zu invalidieren. Sprich man kann sich mit dem selben Account gleichzeitig einloggen. Ich bin mit dem Zeitplan etwas im Verzug da ich movement schon darstellen wollte bis Sonntag.
Mitwirken:Da ich, das Projekt gerne fortführen würde auch etwas längerfristig. Habe ich mich entschieden ein paar Beispiele aufzulisten wie man mitwirken kann.
- Ihr könnt eine Programmiersprache wie C++, Go oder C und habt Lust Rust zu lernen ? Dann könnt ihr gerne bei der Entwicklung mithelfen.- Du kennst dich mit der Berechnung aller gängigen Formeln in Metin2 aus und kannst diese verständlich dokumentieren , sodass wir diese einfach umsetzen können.
- Du schreibst gerne auf Tutorials auf Englisch? Dann könntest du mich unterstützen in dem du ein Doc aufbaust um die Funktionsweise zu dokumentieren.
- Du hast Spaß an derProgrammierung mit 3D, Animationen und Interfaces dann könntest du einen passenden Clienten mithilfe von Godot, Unreal, Unity oder what ever bereitstellen.Ich werde mich dran halten um Sonntag die erste Version zu liefern.
Mit freundlichen Grüßen
Zynko
-
Super Idee, ich verfolge sowas ziemlich gerne. Aber..
Welche Services währen den bis jetzt geplant ?
Auth Service
Chat Service
Game Service
Log Service
Diese Aufteilung wird sich vermutlich noch ändern...wie viel Sinn macht es, diese Dinge in Service zu unterteilen? Also Game und Auth würde ich noch verstehen, aber der Rest? Will man das als Server-Administrator? Mal angenommen, der Log oder Chat Service ist down. Will man da überhaupt noch, dass der Server online ist?
Den Rest verstehe ich nicht, hört sich aber interessant an. Bin mal gespannt auf die Zukunft. Hoffentlich hält es etwas länger als 4 Wochen.
Hier kommt Kubernetes ins Spiel sollte, der Chat Service ausfallen wird auch der Healthcheck von Kubernetes failen und startet automatisch eine neue Chat Service Instanz das heißt innerhalb weniger Sekunden wäre der Chat wieder erreichbar bzw. gar nicht offline wenn ein Failover configuriert wurde. Ein weiter Grund ist die Auswahl des Protokolls der Chat nutzt TCP und der Game Service UDP.
Bezüglich der Länge des Projekts kann ich nichts sagen wird sich im Laufe der nächsten Wochen ergeben.
-
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
Nun aber Mals erwartet hier bitte kein sinnvolles Projekt , sieht es eher als eine Art Forschungsprojekt um zu sehen was möglich ist. Aber wenn wir ganz ehrlich sind kann es auch gut sein dass ich in 4 Wochen keine Lust mehr habe und dieses Projekt abbreche.
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
-
Moin,
da ich zur Zeit etwas Geld brauche bietet ich meinen Service zeitlich begrenzt an.ZitatCI/CD steht für Continuous Integration/Continuous Delivery (fortlaufende Integration/fortlaufende Verteilung). Dabei handelt es sich um ein Verfahren zur Softwareverteilung, das von Entwicklungsteams verwendet wird, um Codeänderungen häufiger und zuverlässiger bereitzustellen.
Sehr vereinfacht gesagt, automatisiere ich euch die Bereitstellung eurer m2 Binaries oder auch Webseiten. Auf Wunsch baue ich euch einen simplen Gitworkflow auf und erkläre euch wie ihr vernünftig euren Code versionieren könnt. Zusätzliche Dinge wie Unit Test, Static Code Analysis oder Linting kann auch mit eingebaut werden.
Was genau kann automatisiert werden ?:
- M2 Server Binary automatisch nach einer erfolgreichen PR compilieren und auf dem Server hochladen und Server neu starten.
- M2 Client Binary automatisch nach einer erfolgreichen PR compelieren und automatisch auf gewünschten Plattformen hochladen und DL links aktualisieren auf der HP.
- M2 Homepage automatisch nach einer erfolgreichen PR compelieren falls nötig und automatisch auf dem Webserver hochladen.
PR * Pullrequest
Welche Plattformen werden unterstützt?:
- GitHub
- GitLab
- BitBucket
Kosten:Ab 50€ pro Pipeline, kommt auf den Aufwand drauf an.
-
Das Risiko ist viel präsenter als vor einigen Jahren. BTW E-Payouts ist unter Beobachtung der BaFin würde einen großen Bogen darum machen! Du kannst nicht ohne jeglichen Aufwand Geld verdienen aus dem nix und auf dein privates Konto auszahlen. Du brauchst einen Ursprung für das Geld sonst wird das Finanzamt Fragen stellen .
Also immernoch Amazon Karten?
Auch bei denen bekommst du ab bestimmten Summe Probleme. Innerhalb von Deutschland ist es so gut wie unmöglich für Amateure große Summen Geld und deren Ursprung zu verschleiern. Das einfachste wäre wenn du nur Monero (Krypto) annimmst. Aber da gilt wieder das gleiche du kannst es nicht ohne weiteres große Summen umcashen und auf dein Bankkonto überweisen.
-
Es gibt keine anonymen Zahlungsmittel außer Monero, wobei ich da auch nicht auf den neusten Stand bin. Wenn Deutschland eins kann dann Geldwäsche aufzudecken. Was bringen dir Auslandskonten wenn du das Geld eh nicht in DE verwenden kannst? Kleiner Rat lass es einfach sein und mach kein Pserver auf. Gab angeblich erst vor kurzem wieder ein Bust
Ein bestimmtes Risiko ist immer vorhanden, klar.
Wie sieht es da aber aus mit E-Payouts wie wird das von den heutigen P-Servern geregelt?
Das Risiko ist viel präsenter als vor einigen Jahren. BTW E-Payouts ist unter Beobachtung der BaFin würde einen großen Bogen darum machen! Du kannst nicht ohne jeglichen Aufwand Geld verdienen aus dem nix und auf dein privates Konto auszahlen. Du brauchst einen Ursprung für das Geld sonst wird das Finanzamt Fragen stellen .
-
Es gibt keine anonymen Zahlungsmittel außer Monero, wobei ich da auch nicht auf den neusten Stand bin. Wenn Deutschland eins kann dann Geldwäsche aufzudecken. Was bringen dir Auslandskonten wenn du das Geld eh nicht in DE verwenden kannst? Kleiner Rat lass es einfach sein und mach kein Pserver auf. Gab angeblich erst vor kurzem wieder ein Bust
-
-
Genau aus diesen Grund vermeide ich Java, C# und C++. Über die Jahre sind so viele Features hinzugekommen und sie machen die Sprachen unnötig komplex, sodass Neulinge ewig brauchen die Sprache zu lernen. Vor allem die ganzen Shorthands und Sonderfunktionalitäten in C++ sind teilweise unübersichtlich und für Neulinge einfach frustrierend. Es wird einfach bereits verwendeter Syntax leicht abgewandelt um eine andere Funktionalität abzubilden was ich teilweise echt verwirrend finde.
Ich denke die meisten wissen dass ich ein Golang Fanboy bin, aber dass hat auch einen simplen Grund die Sprache selbst hat nur eine Handvoll Features, sodass es keine 20 Wege gibt um etwas zu machen, was Code Quality & Uniformity erheblich einfacher macht. Auch bin ich der Meinung dass OOP langsam aber sicher überholt ist denn die meisten Anwendungen brauchen die volle Komplexität von Objektorientierter Entwicklung nicht und teilweise werden Antipattern wie Singeltons nötig, die eigentlich gegen OOP sprechen.
-
Hi as the topic already mentions,
I am looking for someone who is familiar with 3D software and can export me 1-2 Models with animations
to glTF 2 format inclusive with a normal map so I can use it with my new renderer which I do use for an experimental rewrite
of some client parts in Rust using Vulkan.
If you are interested please message me and we can talk about the price.
-
Wenn du das änderst, viel Spaß deine DB wird im Livebetrieb sofort abrauschen, wenn die durchgehend mit insert/read/etc. statements bombardiert wird. Anstatt die periodisch aus einem „Cache“ in die DB zu übertragen.
-
…
Ich hatte ihn noch gewarnt, dass er seine Preise nicht zu niedrig ansetzen soll, sonst übernimmt er sich mit der Anzahl an Kunden. Ist ein gängiges Muster was wir bei Devs & Webdevs sehen einige Monate arbeiten Sie ordentlich, bis sie aufgrund der Kunden ausbrennen und lieber die Community verlassen als versprochenes zu liefern.
Vegas & Marty machen es ähnlich ignorieren ihre Kunden wenn sie Probleme haben..
Guter Code dauert lange und oftmals hat man nach 8 Stunden coden auf der Arbeit nicht noch Lust weitere 4 für M2 Kidz zu coden.Ihr fahrt besser wenn ich euch ein Backendscript schnappt und für 100€ ein Inder auf Fiverr oder Upwork fürs Frontend holt, denn die brauchen das Geld 😂
Man muss aber auch bedenken, dass für Fregion 200€ viel mehr Wert hat als für uns. Aber prinzipiell gebe ich dir da Recht, man sollte sich niemals unter seinem Wert verkaufen.
Auf Fiverr bekommst du zwar PSD->HTML Services, aber in Verbindung mit einem Metin2 CMS hört es dann auf. Im Endeffekt bekommst du entweder miserable Leistung für wenig Geld oder du zahlst halt für einen "Level 2" Verkäufer das doppelte und dreifache - verglichen mit der Metin2 Szene. Bezieht sich natürlich auf Webentwicklung. Ansonsten muss man einfach großes Glück haben, einen guten und zuverlässigen Dev zu finden.
Fregion kommt aus Spanien, da sind 200€ für mehre Stunden auch kein Guter Lohn. Gibt genug Leute die ich auf Fiver kenne die das für 120€ machen zu einer akzeptablen Qualität.
-
Ich hatte ihn noch gewarnt, dass er seine Preise nicht zu niedrig ansetzen soll, sonst übernimmt er sich mit der Anzahl an Kunden. Ist ein gängiges Muster was wir bei Devs & Webdevs sehen einige Monate arbeiten Sie ordentlich, bis sie aufgrund der Kunden ausbrennen und lieber die Community verlassen als versprochenes zu liefern.
Vegas & Marty machen es ähnlich ignorieren ihre Kunden wenn sie Probleme haben..
Guter Code dauert lange und oftmals hat man nach 8 Stunden coden auf der Arbeit nicht noch Lust weitere 4 für M2 Kidz zu coden.Ihr fahrt besser wenn ich euch ein Backendscript schnappt und für 100€ ein Inder auf Fiverr oder Upwork fürs Frontend holt, denn die brauchen das Geld 😂
-
How will you handle payment integration? Will you implement something like Stripe? Or implement each service separately.
Also don't you need to be registered as a firm to handle these transactions? PayPal for business, Stripe asks for documents as I know.
All of these provider require a Bank account which already provides enough details aswell as for most services additionally need legal documents about you or your comp . He could implement an automatic payment system for Cryptos as long as you dont use a wallet which is registered by an exchange.
-
Wenn du dir ums erwischt werden sorgen machst kann ich dir an diesem
Punkt schon sagen mach einfach kein Metin P-Server dann musst du dir um solche
dinge keine Gedanken machen.
Zweitens ist es eigentlich relativ egal wo du hostest, da soweit ich weiß
noch nie jemand über diesen Weg angeklagt wurde sondern dir wird einfach nur der Server gekündigt.
Persönliche Daten werden sehr wahrscheinlich erst auf einen Richterlichen Beschluss herausgegeben.
Des weiteren kannst du überall hosten wo du möchtest bei sei es bei AWS,GCP,AZURE, OVH, Hetzner oder co,
sofern du vorher eine TCP Proxy von einem Hoster der es mit solchen Sachen nicht so genau nimmt davor schaltest.
So abschließend mein Rat lass es einfach sein , dir scheinen die mögliche Konsequenzen es nicht wert zu sein.
-
2FA ist was feines besonders bei den ganzen DB Leaks guckt TOTP einfach an ist super einfach zu implementieren
2FA über email ist useless da häufig Fake Mails benutzt werden oder das Passwort dass gleiche ist wie bei dem Spieler Account.