Welche (Server) Besonderheiten bei Multiplayer (Turnbased) sind zu beachten ?

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Welche (Server) Besonderheiten bei Multiplayer (Turnbased) sind zu beachten ?

    Hallo erstmal :)

    ich bin der Neue hier im Forum und hole mal ein wenig aus, damit die Gesamtzusammenhänge klarer sind. Also sorry für den Wall of Text, ich hoffe trotzdem das es sich jemand durchliest XD

    Ich komme selbst aus der Spielebranche, habe insgesamt 13 Jahre sowohl Indy Projekte als auch professionelle Spiele im Rahmen meiner Arbeit als 2D / 3D Artist begleitet. Dieses Vergnügen endete 2013 in der Selbstständigkeit wo diese "Karriere" dann auch ihr jähes Ende fand. Seitdem bin ich in einer komplett anderen Branche tätig und führe ein Team an Mitarbeitern bei der Tochter eines DAX Konzerns.

    Im Rahmen dieser Arbeit habe ich mich viel mit Mitarbeitermotivation, Führung und (aus meiner Vita heraus) mit dem Thema "Gamification" beschäftigt. Daraus ist ein eigenes Projekt entstanden, welches ich vor kurzem unserer Geschäftsführung und dem Betriebsrat vorstellen durfte um mir die Umsetzung genehmigen zu lassen.

    Es geht darum, spielerische Elemente in einen nicht spielerischen Kontext zu bringen. Im Gegensatz zu vielen anderen Gamification Umsetzungen gehen wir mit dem Projekt noch stärker auf die Spielebene und möchten quasi ein Browserspiel für unsere Mitarbeiter erstellen, mit dem Wunsch, dass unsere arbeitsrelevanten Ziele erreicht werden und die Motivation der Mitarbeiter steigt :)

    Wie soll das nun genau gehen :

    Unserer Mitarbeiter erzielen messbare Ergebnisse, die von unserem System automatisch getrackted, protokolliert und reported werden.
    Daran werden auch die Ziele für das Jahr gemessen und bestimmt.
    Ein Beispiel: In der Abeitlung X müssen die Mitarbeiter am Tag Y Kundengespräche führen um das Jahresziel Z zu erreichen. Erreicht der Mitarbeiter sein Jahresziel ist alles gut und erreicht er es nicht müssen wir reden ;). Jedes einzelne Kundengespräch muss vom Mitarbeiter über seinen SynClient "Qualifiziert" werden, was über unsere Hauseigenen Systeme läuft.

    Im genehmigten Projekt geht es nun darum, dass diese "KPI`s" automatisch in eine sog. "GameMasterDatei (GMD)" einfließen sollen.
    Heißt:Der Mitarbeiter meldet sich einmalig mit seiner MitarbeiterID und einem fiktiven Avatarnamen im Spiel an. Die ID fließt wiederum in die "'GMD" wo diese den entsprechenden KPI´s zugeordnet werden. Diese KPI´s fließen dann wieder ins angelegte Spielerprofil und werden in sog. "Aktionspunkte" umgewandelt.

    Soweit so abstrakt :) Aber warum jetzt Avatar und warum Aktionspunkte?

    Der Mitarbeiter kann sich nun täglich im Spiel anmelden und einen bestimmten Spielmodi spielen. Es wird zu beginn erstmal einen Spielmodi geben, weitere sollen Folgen. Jeder der Modi besteht aber im Grundsatz aus einer großen 2D "Weltkarte" und den Spielern, die auf dieser Karte verteilt werden. Durch die Aktionspunkte (=KPIs) kann der Mitarbeiter sich nun bspw. auf der Map um X Felder bewegen, gegen andere Spieler (also Mitarbeiter) kämpfen, looten und so vielleicht sogar Sachpreise gewinnen.

    Im Prinzip kann man sagen, dass es wie ein Rundenbasiertes Multiplayer Spiel abläuft, wobei die Augen des Würfels durch die erarbeitete Leistung in der echten Arbeitsumgebung ersetzt wird.

    Das Spiel bzw. die Spielmap muss also über unsere Server laufen(?), was laut unserer IT kein großes Problem darstellt. Sie haben mir eine "Büchse" zur Verfügung gestellt, mir noch die Begriffe "JavaScript" , "Apache" und "MySQL" um die Ohren gehauen und nun darf ich erstmal weiterschwimmen :) Trotz meiner 13 Jahre in der Branche als Artist, fahre ich bei dem Thema mental rechts ran :S :/

    Wir können für das Projekt aktuell folgenden Server nutzen:

    Serverblade mit 2x12 Kerne
    Xeon E5-2620 v3
    Die stehen aber nicht nur dieser Maschine zur Verfügung sondern davon sind aktuell 2vCPUs reserviert mit 2GB RAM und 50 GB HDD

    Die vCPUs können wir ggf. hochdrehen, genauso wie RAM (nicht unbegrenzt)
    OS ist ein CentOS 7
    Kernel 3.10.0-862.9.1.el7.x86_64

    Die Frage die sich stellt: Würde das Spiel, erstellt mit GameMaker Studio2 und auf HTML5 exportiert auf einem solchen Serverblade (performant) laufen ? Wie bereits erwähnt: Es geht um ein 2D TopView / TurnBased MP spiel, mit wenig SpriteAnimationen, einer großen Karte wo in Spitze bis zu 200 Spieler ggf. gleichzeitig spielen ? Wie stark beeinflussen 2D Grafiken und Animationen überhaupt die Performance oder die Anzahl der Spieler?

    Diese Kernfragen spuken noch im Kopf und ich hoffe, dass doch noch 2-3 Leute hier aus dem Forum alles verstanden haben und mir die Fragen beantworten können :shifty: :D
    Vielen Dank für eure Geduld !

    VG

    Jack

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Jackdahack ()

  • Da soll noch jemand behaupten das Games nicht mit neuronalen Netzen gefüttert werden...
    Als erstes gehe ich davon aus, das diese "Mitarbeiter" das "Game" total freiwillig benutzen können und genauso locker auch ohne Konsequenzen ablehnen dürfen?
    Das würde ich nämmlich dringend anraten.

    Sorry, aber genau solche Dinge finde ich persönlich etwas verwerflich und gehören nicht in ein "RICHTIGES" Spiel das mich am Feierabend unterhalten soll.

    Selbstverständlich habe ich keine Probleme mit guten Ideen und auch Startups - aber das geht mir zu weit.

    An meinem Arbeitsplatz, wo ich meine "Brötchen" backe, werde ich zwar auch "geträckt" aber ich hoffe es wird damit nicht noch ein "Game" gebastelt.

    Technisch kann (und will) ich daher auch nicht helfen.

    Bitte nimm das nicht persönlich - Das ist nur meine persönliche Einstellung dazu;-)
  • Hi Codey,

    erstmal vielen Dank für deine Reaktion.
    Ich habe schon fast befürchtet, dass ich nicht jede relevante Info untergebracht habe und es so zu einem falschen Bild kam.
    Ich muss entsprechend einiges an Informationen nachlagern und hoffe, dass es klarer wird.

    Ja! das Spiel ist für unsere Mitarbeiter komplett freiwillig und nach außen hin anonymisiert. Wie bereits erwähnt wurde das Projekt nicht nur durch die Geschäftsführung sondern eben auch durch unseren Betriebsrat genehmigt.
    Moralische oder Arbeitsrechtliche Bedenken kann ich somit komplett entkräften ! Spielerische Leistung wird nicht beurteilt. Wir haben das Projekt bereits 1,5 Jahre (von komplett analog bis teildigitalisiert via Excel) vertestet und Sachpreise vergeben. Entsprechend freuen sich unsere Mitarbeiter auf das ausgereifte und volldigitalisierte Produkt.

    Es gibt viele Unternehmen, in denen die Mitarbeiter nach Zahlen bemessen und bewertet werden ("harte Ziele"). Daneben gibt es aber auch "weiche Ziele" , wie bspw. die Qualität der geleisteten Arbeit.
    Unsere Mitarbeiter werden zum Jahresende an diesen beiden Zielen "bewertet" und dies seit nunmehr über 25 Jahren bei mittlerweile über 700 Mitarbeitern.

    Somit geht es einfach nur darum, auf bereits vorhandene Daten(banken) zuzugreifen, in ein Spielerprofil "umzuleiten" um die eigenen harten Ziele (also die des individuellen Mitarbeiters) interessanter zu gestalten und besser erreichen zu können .

    Zum Thema "richtiges Spiel": Das möchte ich auch nicht. Es gibt Spiele für den Abend, Spiele für die Bahnfahrt zur Arbeit, fürs Sch****haus ;) Warum also nicht auch Spiele für die Arbeit, bei denen ich sogar etwas reales gewinnen kann ? :)

    Ich hoffe es ist so ein bisschen klarer geworden. Wirklich alle relevanten Informationen im ersten Post unterzubringen war in diesem Zusammenhang echt schwierig. Daher nochmal "Dank" für deinen Einwurf !

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Jackdahack ()

  • Müssen die Bewegungen der anderen Spieler so live wie möglich sein oder dürfen die auch verzögert zu sehen sein (falls das überhaupt zu sehen ist)?
    Da kann man dann zwischen zwei Varianten unterscheiden:

    Apache Server, der nur eine API zur Verfügung stellt und somit nur Anfragen beantwortet und Dinge speichert. Der Client (Spieler) stellt also erst einmal eine Anfrage, um seine ganzen Spielerdaten zu bekommen. Das Spiel lässt den Spieler auf Grund dieser Daten seinen Spielzug machen und stellt danach wieder eine Verbindung zum Server auf, um ihm die neuen Daten (den Zug) mitzuteilen. Dieser wird dann diese validieren (schauen, ob der Zug wirklich machbar war) und in der Datenbank eintragen.

    Ansonsten müsstest du eine Verbindung zum Server aufbauen, die während des Spielens erhalten bleiben muss. Dann kann auch der Server neue Informationen mitteilen, ohne dass das Spiel selbst den Server kontaktiert, ob es neue Daten gibt. Gut, wenn die Daten häufig aktuallisiert werden

    Musst du schauen, was dir lieber ist. Ersteres ist einfacher zu machen, zweiteres ist aktueller, frisst aber theoretisch mehr performance.

    Der Spieler selbst sollte eigentlich keine Performanceprobleme damit bekommen
    Ein Bug ist mehr als nur ein Bug, es ist ein... Käfer!
    Egal, wie gut du eine Mauer baust, sie fällt um.... der klügere gibt nach :D

    Willst du mit mir auf Discord Chatten/Quatschen?
    Meine Husi's Tutorial Reihe
  • Hallo, über die Fragwürdigkeit Deines Projekts wurde ja bereits gesprochen, so frei nach dem Motto,
    "zeig mir wie du spielst und ich sag dir, was für ein Mensch du bist", Ehrgeiz bleibt ja meist nicht nur
    auf Spiele begrenzt.
    Aber, ich denke mal, Du bist hier falsch, denn erstens bist Du Artist, hast also keine Programmier-
    Erfahrung und arbeitest mit IT-Profis zusammen, was läge also näher, als eine Game-Engine zu nehmen,
    die mit einer "Sprache" daher kommt, die diesen Herren nicht ganz fremd sein dürfte:

    cocos2d-x.org/

    Cocos basiert auf C++, kann Java, Lua und ist überaus geeignet für Browser-Spiele, was will man mehr?
    Generell würde ich Dir empfehlen, auf etwas zurück zu greifen, mit dem eure Leute etwas anzufangen
    wissen, sonst stehst Du allein auf weiter Flur, wenn es mal Probleme gibt.
    Du schreibst zwar sehr viel, aber nicht, wie Du auf GM gekommen bist und warum er die beste Engine,
    Deiner Wahl, ist. Gerade bei Deinem Vorhaben, würde GM bei mir, wahrscheinlich unter ferner liefen
    sein. Also keines falls unter den Top 3 :) .


    Miradur
  • Hi Husi :),

    danke für deine Antwort. Jeder Spieler sollte die Züge und standorte der anderen Spieler sehen können, es muss aber nicht Echtzeit sein nur so zeitnahe wie möglich :).
    Jeder Spieler hat ein Sichtradius und sieht nur Spieler in diesem Sichtfeld. Sobald die Aktionspunkte verbraucht sind muss der Mitarbeiter erst weitere "erarbeiten" um diese dann wieder im Spiel verteilen zu können. Im Normalfall laufen diese Züge asynchron ab. Geplant ist auch, dass eine Bewegung zu einem bestimmten Quadranten einige Minuten / Stunden dauert. Auch ein Kampf soll über eine bestimmte Zeit laufen.

    Ansonsten skizziert dein Ablauf auch unseren Grundgedanken. Die Frage ist gerade: Können wir das Spiel am Ende so auf HTML5 exportieren, dass es von diesem Server "läuft", ohne dass bei 200spielern auf der Karte alles abschmiert

    @Miradur

    ich hoffe ich konnte die entstanden Fragwürdigkeit aufgrund meines ersten Posts, in meinem 2.Post aus dem Weg räumen. Sollten noch bedenken da sein: lass sie mich wissen.

    Ich habe in meiner Zeit als Artist viel mit Engine Tools arbeiten müssen, jedoch nie in der Tiefe. Seit 2014 lerne ich c++,c#, python und, seit 3Monaten, 'gml'...alles mal mehr mal weniger intensiv. Entsprechend können meine Fragen auf Außenstehende noch naiv wirken, wir haben dafür 3 Leute im Team, die in den o.g. Sprachen/Tools fit(ter) sind.

    Unsere IT teilte mir mit, dass eine Lösung auf HTML5 Basis denkbar ist. Das GameMakerStudio bietet uns die Möglichkeit, schnelle und einfache Prototypen auf HTML5 zu realisieren. Bevor wir uns also selbst eine funktionierende "Mapengine" schreiben, haben wir nach einem Tool gesucht, was uns die Arbeit erleichtert und wir schneller zu einem finalen Produkt kommen. Dafür standen Unity, GML, cocos2d zur Auswahl, für das EntwicklerTeam hat sich das GameMakerStudio mit ihren Möglichkeiten, am besten angefühlt...
    Das Grundgerüst des Spiels selbst haben wir sogar soweit "fertig", dass man damit weiterarbeiten kann...ob wir es wirklich nutzen können ist eigentlich der Kern der Frage. Wenn du sagst, dass cocos2d in diesem Zusammenhang mehr Freiheiten, Optionen bietet um das Projekt zu lösen, dann würde ich die Entscheidung natürlich nochmal in Frage stellen wollen.

    Ob diese Frage nun wirklich hier geklärt werden kann weiß ich gar nicht Aber sie nicht zu stellen wäre auch nicht richtig gewesen

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Jackdahack ()

  • Ich kann dir das Video von Heartbeast empfehlen:

    Das hat mir früher geholfen, wie man allgemein Networking macht.
    Du kannst auch darüber nachdenken den Server z.B. in C# zu machen, um Performance rauszuholen. Zudem sollte damit die Verbindung auf eine Datenbank einfacher sein.
    Ich weiß nicht wie performant Gamemaker mit HTML5 ist, aber normalerweise sollten 200 Spieler noch möglich sein.
    Ein Bug ist mehr als nur ein Bug, es ist ein... Käfer!
    Egal, wie gut du eine Mauer baust, sie fällt um.... der klügere gibt nach :D

    Willst du mit mir auf Discord Chatten/Quatschen?
    Meine Husi's Tutorial Reihe
  • Würde ein HTML5 Spiel nicht in erster Linie auf den Clients laufen statt auf einem Server? Das Serverbackend (Also die Datenbanken und ggf. Schnittstellen) müssten separat außerhalb des GameMakers bereitgestellt werden.

    Wenn ich es richtig verstanden habe soll es eine Art Browsergame werden und da bietet sich eine kombination aus HTML, PHP und SQL am ehsten an. Via php würden die eigentlichen Berechnungen dann auch auf dem Server statt auf dem Client ausgeführt werden. Je nach komplexität des Frontends kann man natürlich dennoch GameMaker dafür verwenden, aber das Backend braucht es dennoch zusätzlich und da bietet sich GM eher weniger an.
  • Hi TrunX,

    ja, deine Beschreibung trifft zu und die von dir angesprochene Kombination sehen wir auch wobei hier, unserer Meinung nach, der HTML part vom Game Maker Studio geliefert wird...und ich denke in meiner kleinen Welt, dass es dafür die beste und einfachste Methode ist auf Tools wie GMS oder cocos2d zurück zu greifen. Oder übersehe ich gerade etwas ?
    Den gesamten mySQL / PHP part übernehmen zwei Kollegen aus unserer IT, auch dafür müssen wir eine Lösung finden. Wichtig ist mir erstmal, ob die Serverhardware das in der Form grundsätzlich zulässt und ob es in der Kommunikation zwischen dem HTML5 Part vom GMS und der Datenbank Probleme geben könnte.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Jackdahack ()

  • Also, ich will Dir wirklich nicht abraten, jeder soll sein Glück finden können, wo er denn gerne suchen
    würde, aber um mal einen Vergleich zu bringen:

    Du lernst/programmierst also seit 4 Jahren C++ und Python und Euch hat die UI in GM angesprochen,
    das wäre in etwa wie, Du kannst Englisch und Französisch, lernst aber jetzt koreanisch, weil Dir die
    Form des Landes auf der Weltkarte so gut gefällt.

    Da Du das ja für eine Firma entwickelst, die das dann auch hoffentlich über Jahre nutzen möchte,
    würde gesetzt dem Fall, das Du, aus welchen Gründen auch immer, nicht mehr verfügbar bist, Dein
    Nachfolger sich ebenfalls für GM begeistern müsste. Wenn das dann ein junger Mann ist, der gut
    gelernt hat und seinen Erfolg auf bekannten Programmiersprachen aufbauen wollte und daher C++,
    Javascript, Python, LUA und Assembler gelernt hat und dann freudestrahlend ans Werk geht, muss er
    erkennen, dass er wohl noch GML lernen muss.

    Ich werfe jetzt noch optimistisch ein XNA Framework 4.0 in den Raum, das meines Wissens, kostenlos,
    von Microsoft ist und auf C++ basiert. Stardew Valley wurde zum Beispiel damit gemacht.
    Zumindest würde ich in den jeweiligen Foren, Dein Problem ebenfalls vortragen, nur um auf Nummer
    sicher zu gehen, dass Du die richtige Entscheidung triffst(nicht für Dich, sondern für Deine Firma).

    Miradur


    PS.: ebenfalls nicht ganz unbedenklich, ist die Tatsache, dass GM nach Hause telefoniert, was viele Firmen
    wahrscheinlich ebenfalls nicht wollen. Vielleicht kann noch jemand etwas dazu schreiben, der mehr darüber
    weiß, ich hab das mal im englischen Forum gelesen.
  • Miradur schrieb:

    Du lernst/programmierst also seit 4 Jahren C++ und Python und Euch hat die UI in GM angesprochen,
    das wäre in etwa wie, Du kannst Englisch und Französisch, lernst aber jetzt koreanisch, weil Dir die
    Form des Landes auf der Weltkarte so gut gefällt.
    Nein..


    Miradur schrieb:

    Da Du das ja für eine Firma entwickelst, die das dann auch hoffentlich über Jahre nutzen möchte,
    würde gesetzt dem Fall, das Du, aus welchen Gründen auch immer, nicht mehr verfügbar bist, Dein
    Nachfolger sich ebenfalls für GM begeistern müsste. Wenn das dann ein junger Mann ist, der gut
    gelernt hat und seinen Erfolg auf bekannten Programmiersprachen aufbauen wollte und daher C++,
    Javascript, Python, LUA und Assembler gelernt hat und dann freudestrahlend ans Werk geht, muss er
    erkennen, dass er wohl noch GML lernen muss.
    Ja.. :)

    Ich würde in diesem speziellen Fall auch vom Gamemaker abraten und das in Javascript mit einem Framework wie zB Phaser oÄ machen. Damit ist die zukunftssicherheit eher gegeben. Gamemaker rechnet dir eine ZIP datei raus, wenn du für HTML5 exportierst und die enthält "obfuscateden" javascript code. Wenn ihr da manuell eine weitere library oÄ anflaschnen wollt oder müsst, dann wird das extrem umständlich.
    Wenn die Usability der Engine UI eine Rolle spielt und die Tatsache, dass die Engine mal out of date oder support ist keine Rolle spielt - dann wäre vllt auch construct eine gute Wahl. Dort lassen sich sehr einfach eigene Erweiterungen schreiben um das Project zu unterstützen und die Engine an sich ist trotzdem noch eher an visueller arbeitende Leute gerichtet, als an hardcore Codekatholiken.^^

    Meine persönliche Erfahrung mit Construct war, dass ein custom backend und die Facebook API unterstützen lassen musste und ich konnte mit wenigen Hürden einbauen ohne irgendwas am Construct projekt selber machen zu müssen. bzw eine Ahnung von Construct haben zu müssen. Beim Gamemaker weiß ich nicht wie easy man eine Extension schreiben kann, aber allein, dass der Code hinterher nicht mehr lesbar und dadurch sehr unbearbeitbar wird, macht mir Sorgen.

    Gamemaker an sich ist schon super und für eine gewisse Art zu arbeiten top, ich denke nur nicht, dass es für so ein Projekt das richtige ist.

    ancient-pixel.com
    youtube.com/user/SebastianMerkl <<< ich freu mich über einen Besuch ;)