"Beste" Sprachen für "einfache" MMO-Spiele auf Android und im Browser im Jahre 2018

Dabei seit
Dez. 2010
Beiträge
545
#1
Sprich es geht um Spiele in der Art von die Stämme, Clash of Clans, Clash Royale usw; eher niedriger Grafikaufwand, da in 2D, aber mit Datenbanken, Servern, Clienten.

Welche Sprachen wären hier am sinnvollsten im Jahre 2018? Sprachen wie Flash sind ja beispielsweise in den letzten Jahren "gestorben". Und dann benutzen einige User noch Scriptblocker u. ä; wie kann man diese Dinger von Anfang an umgehen?

Es geht mir nicht um den Lerneffekt, sondern um die Effizienz. Sprich das Spiel soll so performant wie möglich laufen und ich möchte auf alle Fälle nicht später nochmal umsteigen und alles neu schreiben müssen, weil die ursprünglich gewählten Sprachen für diese Aufgabe ungeeignet waren und das Spiel deshalb laggt.

Die Sprachen sollen bitte keine Gewinnbeteiligung haben, wie es ja zum Beispiel bei Frameworks wie Unity der Fall ist.

Versucht bitte wirklich das zu nennen, was am sinnvollsten wäre und nicht das, was ihr einst gelernt habt und dem ihr deshalb nur noch aus Gewohnheit anhängig seid.

Danke.
 

Madman1209

Fleet Admiral
Dabei seit
Nov. 2010
Beiträge
22.481
#3
Hi,

wenn es um verschiedene Plattformen geht (Android und Desktop / Browser) und du gleichzeitig sagst, dass dir Effizienz (ich gehe davon aus, du meinst ressourcenschonende Applikationen) wichtig ist kannst du einen einheitlichen Ansatz vermutlich nicht realisieren, da je nach Plattformen andere Technologien gewählt werden müssen, um dem Punkt "Effizienz" gerecht zu werden.

Man kann Teile davon evtl. mit C++ machen (per Android NDK und im Browser mit asm.js), aber ob und wie viel hängt von der Applikation ab.

Ganz davon ab: eine Technik, die du heute nutzt kann trotzdem in zwei Jahren schon komplett "out" sein. Daher hilft die die beste Planung nichts und bewahrt dich auch nicht vor

ich möchte auf alle Fälle nicht später nochmal umsteigen und alles neu schreiben müssen, weil die ursprünglich gewählten Sprachen für diese Aufgabe ungeeignet waren und das Spiel deshalb laggt.
man legt fest, was man tun möchte, und danach wählt man die Werkzeuge aus, die man dafür benutzt. Mit Glück kann man diese dann in der Zukunft weiter für andere Dinge verwenden. Aber planen kann man nur den konkreten Einsatzzweck.

Von daher hat desmoule schon Recht: die grundsätzliche Herangehensweise ist schon falsch! Ich wähle nicht erst das Werkzeug und dann, was ich damit machen will, sondern umgekehrt!

VG,
Mad
 

Titan CCCCIↃↃↃↃ

Lieutenant
Ersteller dieses Themas
Dabei seit
Dez. 2010
Beiträge
545
#4
Danke für die Antwort. :)

man legt fest, was man tun möchte, und danach wählt man die Werkzeuge aus, die man dafür benutzt. Mit Glück kann man diese dann in der Zukunft weiter für andere Dinge verwenden. Aber planen kann man nur den konkreten Einsatzzweck.
Vielleicht ist das nicht offensichtlich genug geworden, aber ich hatte es eben wie folgt bereits angedacht: Das Spiel an sich wird nur auf dem Server "berechnet", um von vornherein Hacks usw. bestmöglichst zu vermeiden, evtl. in C++ und PHP, auch wenn das viel Serverleistung benötigen könnte. Dann bräuchte ich natürlich noch eine Sprache für eine Datenbank, wo die einzelnen Accounts gespeichert werden, evtl. MySQL. Dann eine Sprache, um die Oberfläche/den Client beim User anzuzeigen, evtl. mit HTML und CSS.

Mehr wollte ich nicht wissen, als welche Sprachen am geeignetsten für diese einzelnen Komponenten wären, damit ich mich einarbeiten könnte.

Sofern ich hierbei nicht einen fundamentalen Denkfehler mache.
 
Zuletzt bearbeitet:

Madman1209

Fleet Admiral
Dabei seit
Nov. 2010
Beiträge
22.481
#5
Hi,

den machst du aber, weil du schonmal nicht festlegst, von welcher Nutzerzahl sprich Serverlast wir sprechen. Für Spiele ist außerdem die Latenz wichtig, wenn es wirklich Echtzeit sein soll, die am Server berechnet wird. Was wird alles auf dem Server berechnet? Alles inkl. der Grafik? Ider was verstehst du unter "das Spiel an sich"? Dann ist PHP für Spieleentwicklung nicht wirklich empfehlenswert. MySQL ist auch nicht das mittel der Wahl, wenn es nur um brachiale Performance geht und hohe nutzerzahlen abgefangen werden müssen.

C++, PHP, HTML (was übrigens auch keine Programmiersprache ist), CSS (ebenfalls keine Programmierung) - alles schön und gut. Aber solange nicht klar ist, was wo für wieviele Leute gemacht werden soll kann man es nicht abschätzen.

Setz dich hin, mach einen konkreten Plan, alles andere ist Humbug.

VG,
Mad
 

xdave78

Lt. Commander
Dabei seit
Juli 2011
Beiträge
1.260
#6
Ich hab den Eindruck, dass Du nicht wirklich weißt wovon Du redest und dafür aber echt ordentlich auf die Kacke haust.

Du brauchst keine zig Sprachen und mit Sprachen- die nicht mal wirkliche Sprachen sind wie CSS, HTML und PHP wirst Du überhaupt nichts machen können. Dennoch kannst Du Dir bei C++ zB relativ sicher sein, dass es (a) schon ewig existiert und sehr einfach zu portieren wäre, sollte sich dies als falscher Ansatz herausstellen oder (b) du nimmst direkt eine Javabasierte Sprache. Denn so ziemlich alles auf Mobilgeräten basiert irgendwo auf Java und auch am PC ist Java recht weit verbreitet. Hat den Vorteil dass Java bereits Datenbankanwendungen ansprechen kann und auch direkt CSS und HTML Auszeichnungen verwertbar sind . Kurzum: nimm Java.

Ansonsten erspar ich mir mal mein Urteil, schon dein Eröffnungsplädoyer ..najut. Alle MMOs basieren btw. auf Datenbanken, Servern und Clients. Wie der Client aussieht ist vollkommen unerheblich. Insofern kannst Du auch ein total komplexes Spiel programmieren und was Du als "Grafik" drüberstülpst...ob ASCII Art, 2D Pixel oder 3D ist vollkommen nebensächlich, da - wie der Kollege schon richtig beschrieb- das nur Markulatur ist solange das Konzept und die Struktur dahinter nicht passen.

Ergo fängst Du vielleicht erstmal mit was einfachem an. Baust deine Datenbank mit den verschiedenen Tabellen (also SQL) und wendest Dich erst dann der Frage zu welche Stifte/Tusche Du zum ausmalen nimmst, NACHDEM Du die Umrisse gezeichnet hast.
 
Zuletzt bearbeitet:
Dabei seit
Okt. 2016
Beiträge
192
#7
Mit Mobilprogrammierung habe ich nicht viel am Hut, aber wenn ich mich erinnere war Xamarin (wurde das von Microsoft gekauft?) in der Lage, Code für Windows Phones, iOS und Android zu erstellen.
Da ich gerne mit C# arbeite, wäre das für mich die erste Wahl als Client.
Java läuft soweit ich weiß auf iOS und Android, aber da dürfte viel Anpassung nötig sein.

Dein Ansatz das als Website zu erstellen ist auf jeden Fall die Platformunabhängigste. Mit HTML5 hast du da auch einige Möglichkeiten.

Für Backend würde ich mich nicht unbedingt auf eine bestimmte Datenbank verrennen. Ob jetzt MySQL, MSSQL, NoSQL, SQLite, MariaDB, ... da packst du am besten ein Interface für den Zugriff zwischen, dann kannst du die Datenbank bei Bedarf austauschen.
Und bei der Sprache für den Server solltest du halt das nehmen, was dir am besten gefällt. Ob du jetzt PHP oder ASP nutzt und damit die Datenübertragung dem Webserver überlässt, oder eine andere Sprache (Java, .net, C*, ...) würde ich eher nach deinen Fähigkeiten überlegen. Bei der zu erwartenden Belastung solltest du aber von Anfang an darauf achten, dass du möglichst viel parallel verarbeiten kannst. Nachträglich ist das meist nicht mehr so einfach...

Auf jeden Fall solltest du dir erst überlegen, was du überhaupt machen willst. Wie willst du sonst entscheiden, wie gut sich deine Pläne mit welchen Tools umsetzen lassen?
 
Zuletzt bearbeitet:
Dabei seit
Apr. 2013
Beiträge
196
#8
Hi..

ohne das ich privat Erfahrung gemacht habe.
Ich war letztes Jahr auf auf der JAX und habe mir einen Vortrag über Google Go angehört.

Ich denke das wäre für deine Zwecke Interessant.

Ansonsten wüsste ich nicht was gegen:

Frontend: HTML / CCS (oder ein CSS Framework deiner Wahl)
Logik: (wenn viele User JavaScript) ansonsten python / ruby / (GO)
Backend: Wenn nur für Userdaten reicht eine normal MYSql völlig (wenn nicht wäre das Backend auch schnell ausgetauscht)

Grüße
 
Zuletzt bearbeitet:

Titan CCCCIↃↃↃↃ

Lieutenant
Ersteller dieses Themas
Dabei seit
Dez. 2010
Beiträge
545
#9
Vielen Dank für die Antworten.

von welcher Nutzerzahl sprich Serverlast wir sprechen. Für Spiele ist außerdem die Latenz wichtig, wenn es wirklich Echtzeit sein soll, die am Server berechnet wird. Was wird alles auf dem Server berechnet?
Die Nutzeranzahl soll frei nach oben skalierbar sein. Auf die Effizienz komme ich einfach deshalb, weil wir ja alle Spiele kennen, die erfolgreich geworden sind, aber wegen Anfangsfehlern dann über all die Jahre einen Ballast mitschleppen, der nur mit großem Aufwand zu beseitigen ist. Ich weiß, ich beziehe mich hier eher auf komplexere Desktopspiele und ich weiß auch nicht, ob eher schlechtes Programmieren als die falsche Sprache für diesen Ballast sorgen, aber diese Problematik wollte ich eben von vornherein so gut es geht ausschließen. Die Sache mit der Echtzeit wollte ich erst ansprechen und hätte ich wohl auch tun sollen. Hier bin ich eben noch etwas unentschlossen, ob kurz gesagt die "Angriffe" o. ä. einfach nur nach einer Berechnung nach Zeitablauf wie in Die Stämme funktionieren, einseitig stattfinden wie in Clash of Clans oder eben wirkliche Echtzeit wie in Clash Royale. Die Sprache sollte deshalb zur Echtzeit fähig sein. Zur Serverberechnung hatte ich mir überlegt, dass so viel wie möglich dort stattfindet. Sprich mit solchen Dingen wie Fähigkeiten vom Client aus "vorhersehen", was ja in Shootern aus Performancegründen benutzt wird, würde ich nach aktuellem Stand so gut es geht verzichten, weil die ganze Sache ja eh nicht so komplex und damit hardwarelastig werden soll.

Alle MMOs basieren btw. auf Datenbanken, Servern und Clients. Wie der Client aussieht ist vollkommen unerheblich. Insofern kannst Du auch ein total komplexes Spiel programmieren und was Du als "Grafik" drüberstülpst...ob ASCII Art, 2D Pixel oder 3D ist vollkommen nebensächlich, da - wie der Kollege schon richtig beschrieb- das nur Markulatur ist solange das Konzept und die Struktur dahinter nicht passen.
Ein berechtigtes Bedenken, aber dem war ich mir durchaus bewusst. "Browsergames" überzeugen in der Regel ja nicht durch die Grafik.

Sieht interessant aus, schaue ich mir auch auf alle Fälle an.

Ansonsten würde ich noch gerne fragen, was ihr von Lua haltet (das kenne ich noch ganz gut vom Modding älterer Spiele) und inwiefern man sich einschränken würde, wenn man die Oberfläche mit HTML5 macht, was ja keine "richtige" Sprache ist.
 
Zuletzt bearbeitet:

Madman1209

Fleet Admiral
Dabei seit
Nov. 2010
Beiträge
22.481
#10
Hi,

bitte mach dich erstmal mit den Grundlagen vertraut, bevor du eine frei skalierbare Spieleplattform mit Echtzeitstreaming in den Raum wirfst und dann von PHP, CSS und Lua sprichst.

Ich wiederhole mich, aber du weisst offensichtlich nicht wovon du sprichst undwas genau du vorhast. Wüsstest du das und hättest du ein wenig Hausaufgabe gemacht wäre dir klar, dass deine Vorstellung so nicht umsetzbar ist. "Lua und HTML" setzt dem ganzen noch die Krone auf.

Also bitte nochmal: lesen, einarbeiten, üben. Und bevor man etwas umsetzt einen konkreten Plan, einen konkreten Wunsch, den man umsetzen will. Sonst wird es - egal mit welcher Technik - nichts.

VG,
Mad
 
Dabei seit
Okt. 2016
Beiträge
192
#11
Lia ist halt nur eine Scriptsprache. Die benötigt zur Ausführung einen Interpreter.
Bei Echtzeit und vielen Usern solltest du aber ausgiebig über multithreading und deine Abläufe nachdenken. Also welcher Vorgang blockiert andere, welche können unabhängig laufen, ...
Echtzeitfähig ist in deinem Sinne jede Sprache. "Richtig" Echtzeit fähig ist etwas anderes als das, was du meinst. Darüber brauchst du dir keine Gedanken machen.
 

Fonce

Commander
Dabei seit
Feb. 2006
Beiträge
2.990
#12
Die Nutzeranzahl soll frei nach oben skalierbar sein. Auf die Effizienz komme ich einfach deshalb, weil wir ja alle Spiele kennen, die erfolgreich geworden sind, aber wegen Anfangsfehlern dann über all die Jahre einen Ballast mitschleppen, der nur mit großem Aufwand zu beseitigen ist. Ich weiß, ich beziehe mich hier eher auf komplexere Desktopspiele und ich weiß auch nicht, ob eher schlechtes Programmieren als die falsche Sprache für diesen Ballast sorgen, aber diese Problematik wollte ich eben von vornherein so gut es geht ausschließen.
Bevor du dir Gedanken über Performance machst solltest du vielleicht erstmal selber verstehen was du da Entwickeln möchtest!
Du scheinst ja im Bereich Softwareentwicklung Null Kenntnisse(oder nahe Null) zu haben. Das bedeutet kein Code wird mit sehr hoher Wahrscheinlichkeit eh beschissene Performance liefern. Das beste Werkzeug nützt nichts wenn man damit nicht umgehen kann!
Bei den wenigsten Spielen liegt schlechte Performance an der verwendeten Sprache. Die limitierenden Faktoren sind hier eigentlich immer Zeit, Geld, die eigenen Kenntnisse und Qualität der verwendeten Framework(Wobei dessen Qualität ebenfalls von diesen Faktoren abhängig ist).

Dein primären Ziel sollte also erstmal sein deine eigenen Kenntnisse zu vergrößern, denn dann würdest du selber sehr schnell drauf kommen was du womit umsetzen könntest/solltest.
 

ayngush

Lieutenant
Dabei seit
Okt. 2007
Beiträge
693
#13
Für Mobile Games / Browser Games:
Authentification & autorisation: Webservice über HTTPS + <Irgendwas Serverseitiges> + relationale Datenbank (PostgreSQL, ...)
Das eigentliche Game Backend: Node.js + NoSQL + Cache - Paradigma: Elasticity first und ab in die Cloud (AWS, ...) damit.
Skalierbarkeit ist dabei ein weniger wichtiger Faktor als Elastizität. Skalierbarkeit ist für Grid Computing interessant, Elastizität für Cloud.

Frontend: keine Ahnung... Kenne da nur Unity aber das willst Du ja nicht.
 
Zuletzt bearbeitet:
Top