Du bist nicht angemeldet.

#1 26.03.2022 17:47

Milanium
Mitglied
Registriert: 26.03.2022
Beiträge: 5

OpenHV

ist ein Echtzeitstrategiespiel mit Science-Fiction-Thematik in Pixel-Optik. Enthalten ist Mehrspieler (LAN und internet) eine faire KI für Geplenkel sowie ein integrierter Karteneditor. Der Quelltext, alle grafischen Elementen, Musik und Sounds unterliegen einer Open-Source-Lizenz. Das Projekt lädt sehr offen zum Modding ein.

unknown.png

Unter https://openhv.github.io gibt es eine Übersicht über Bezugsquellen und Community.

Offline

#2 27.03.2022 13:24

Ronny
Administrator
Ort: Chemnitz
Registriert: 08.11.2001
Beiträge: 11.648
Webseite

Re: OpenHV

Interessant.

Seid ihr auch mit an der OpenRA-Entwicklung beteiligt? Das Thema Multiplayer/Netzwerk ist fuer mich ja noch ein "ToDo" bei TVTower(.org).


bye
Ron


sigimg2.php?id=1

Offline

#3 27.03.2022 14:07

Milanium
Mitglied
Registriert: 26.03.2022
Beiträge: 5

Re: OpenHV

Ja, technisch gesehen handelt es sich eigentlich "nur" um einen Total Conversion Mod. Die Engine ist dabei nicht geforked. Alle Verbesserungen fließen in das OpenRA Mutterprojekt zurück. Mehrspieler ist in der Tat ein schwieriges Thema. Der Grund, dass schon länger keine stabile Version mehr erstellt wurde, liegt etwa daran, dass schwer zu diagnostizierende Desynchronisationsfehler die wenigen freiwilligen Entwickler plagen.

Offline

#4 28.03.2022 12:27

Ronny
Administrator
Ort: Chemnitz
Registriert: 08.11.2001
Beiträge: 11.648
Webseite

Re: OpenHV

Ich schaetze mal, dass OpenRA lockstep nutzt (also alle Spieler auf die Simulations/input-Ticks synct)?

Desync klaenge da nach nichtdeterministischem Verhalten ... vlt ein Lua-Script was aus der Reihe tanzt.


Habt ihr Nutzerzahlen? Bei TVT gehen die Spielerzahlen ja auch maximal ins irgendwas-vierstelliges.


bye
Ron


sigimg2.php?id=1

Offline

#5 28.03.2022 19:09

Milanium
Mitglied
Registriert: 26.03.2022
Beiträge: 5

Re: OpenHV

Ja, es ist Lockstep und ja alles was nur auf einer Maschine ausgeführt wird, den falschen Random Seed benutzt oder nicht als Order im Netzwerk übertragen wird, führt zum Desync. Ist teils schwer einzugrenzen.

Wir haben https://www.openra.net/players/ und https://www.openra.net/news/2017-01-stats-post/

Offline

#6 29.03.2022 14:01

Ronny
Administrator
Ort: Chemnitz
Registriert: 08.11.2001
Beiträge: 11.648
Webseite

Re: OpenHV

Danke fuer die Statistik-Links. Hier bei TVTower gab es leider keinen einstimmigen Tenor bezueglich (opt-in) Statistikerhebung ... also hab ich das entsprechend auch noch nicht weiterverfolgt.

Von den 50k-Downloads fuer OpenRA im Jahr 2017 sind wir aber noch weit entfernt ... also zumindest von unseren Servern (respektive nun Github).



Bezueglich Lockstep ... vielleicht huscht ja doch noch irgendwo eine Gleitkommazahl durch die Engine ... könnte den Desync erklaeren. Wenn ihr Lua nutzt, dann sind dort ja "Double" im Einsatz (in Lua "number"). Auch wenn Lua immer meint, da gibt es keine Fliesskomma-Unbestimmtheit (1.99999997 hier, 2.0000003 bei jemandem anders) bin ich mir da nicht sicher.

Wir hatten hier schon so einen stupiden Fehler ... den ich hier partout auf keinem Testrechner nachvollziehen konnte und irgendwie nur von 2 Leuten gemeldet wurde.  Ein int() cast machte halt bei uns aus 2.00003 eine 2, und nur bei den zweien aus 1.99999997 dann ... 1 (oder aehnlich).
Immer tricky sowas aufzuspueren.

Je nach Komplexitaet der Daten koennte ein "Hash" der Spieldaten helfen, solche Fehler zu finden - und bei Abweichungen "granular" die Werte zu vergleichen und so festzustellen, an welchem Objekt es hapert.
Aber was red ich hier da ueberhaupt drueber - bei TVTower hab ich noch gar nix davon hinbekommen. Da muesste erstmal Aktion und Reaktion entkoppelt werden (also "Film kaufen" vs "Filmkauf abschliessen") sonst ist nix mit "Command" pattern gw_smiley_zwinkern



bye
Ron


sigimg2.php?id=1

Offline

#7 29.03.2022 15:30

Milanium
Mitglied
Registriert: 26.03.2022
Beiträge: 5

Re: OpenHV

Die gesamte Logik verwendet nur Ganzzahl Mathematik. Die Spielengine ist in C# geschrieben. Lua wird nur für Missionsskripte verwendet und darf auch nur eine streng limitierte API benutzen. Wir haben tatsächlich einen Sync Hash für jeden relevanten Parameter und noch einmal über alles, der berechnet wird, um festzustellen, ob das Spiel noch synchron ist. An das Netzwerkprotokoll haben sich bislang nur wenige Leute herangetraut. Es kommt bei Änderungen leicht zu schwerwiegenden Regressionen. Die Spielerzahl und die Anzahl an Rückmeldungen, wenn irgendwas schlimm kaputt ist, kann dann Fluch oder Segen zugleich sein.

Offline

#8 29.03.2022 22:33

Ronny
Administrator
Ort: Chemnitz
Registriert: 08.11.2001
Beiträge: 11.648
Webseite

Re: OpenHV

Das sich Datenfehler bei der Uebertragung einstellen haette ich erstmal fuer sehr unwahrscheinlich gehalten - ausschliessen sollte man aber nie etwas.

Interessante Anekdote: TVTower ist ja in BlitzMax (NG) geschrieben. In BlitzMax Legacy/old/vanilla gab es einen Pseudo-Random-Number-Generator der eben nicht auf allen Plattformen (bzw "Computern") die gleichen Ergebnisse garantierte. Mit Xoshiro-PRNG war das zumindest fuer mich (bzw BlitzMax NG) Vergangenheit.


Da mich das Thema Multiplayer interessiert, wuerde ich mich ueber "Naehkaestchen-Stories" freuen - man lernt ja nie aus.


bye
Ron


sigimg2.php?id=1

Offline

#9 30.03.2022 05:41

Milanium
Mitglied
Registriert: 26.03.2022
Beiträge: 5

Re: OpenHV

https://github.com/OpenRA/OpenRA/blob/bleed/OpenRA.Game/Support/MersenneTwister.cs existiert aus dem gleichen Grund.

Offline

Schnellantwort auf dieses Thema

Schreibe deinen Beitrag und versende ihn
Bist Du ein Mensch oder ein Roboter ?

Verifizierung, dass diese Aktion durch eine reale Person vorgenommen wird und nicht von einem Programm.