Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

06.02.2020, 22:33

Entscheidungshilfe zur Programmiersprache für RTS-Onlinegame - Java oder Python?

Hallo allseits,

ich bin neu hier im Forum, und ja - ich möchte wie die meisten programmieren lernen und ein (RTS-)Spiel entwickeln.

Der Gedanke ist schon alt, aber man bekommt oft zu lesen, das man kaum eine Chance auf Erfolg hat. Ich habe es daher immer wieder verschoben. Stattdessen eben Spiele nur gespielt und mich hinterher gefragt, warum ich mir immer wieder diese Spiele antue, ob das nicht besser/anders geht. Hätte ich also all die Jahre programmieren gelernt, wäre ich wohl schon entsprechend weit! Also - besser spät als nie.

Die Spiel"idee": Ein 2D Medieval-Sandbox-Game, RTS mit Ressourcen, Aufbau, Handel und Kampf. Am Ende auch als (M)MO (soweit es sich eben als machbar erweist). Wenn sich das Sandbox-Schema nicht realisieren lässt, ggf auch nur ein klassisches Game, Dorfansicht mit Bau-Slots, Map mit Dorf-Slots, etc. In jedem Fall eine Tile-Map und 2D. Die Grafiken werde ich selbst machen. Wenn Payment notwendig wird, mit Upgrade/Abo-System. Das Konzept besteht in einer gewissen Spezifikation, aber das ist erstmal nicht relevant, zunächst geht es um das Grundgerüst. 10-15 Jahre wären für mich denkbar bis zum fertigen Produkt. 20 Jahre wäre schon kritisch, da wäre ich über 50...

Weil ich jemand bin, der am besten lernt mit praktischem Bezug zur Materie, will ich das "Ziel" möglichst ohne Umwege anstreben, also die Grundlagen in Bezug auf das Spiel lernen. Das soll so aussehen, das ich zunächst einmal lernen will, einzelne Teile zu programmieren (wie erstellt man/wie funktioniert eine Einheit, ein Gebäude, ein Rohstofflager, Handel, Kampf, etc. Gundfunktionen der Karte, etc. und diese dann Stück für Stück zusammenführen mit der Spielmechanik. So wie bei Lego, wo man verstehen muss wie das zusammenpasst und ab da bestimmt die Vorstellungskraft und die verfügbaren Teile was machbar ist.

Ich habe daher einige Fragen, und um beim Vergleich zu bleiben: Ich brauche einen Rat, was sich tendenziell besser eignet um die Spielidee umzusetzen. (Quasi ob ich besser mit Duplo, Lego oder Lego Technik beginne, um beim Vergleich zu bleiben.) Direkt gesagt, welche Programmiersprachen und Programme benötige ich eurer Ansicht nach, ist meine Vorauswahl passend?

Erste Tutorials zu C und Python kann ich nachvollziehen, bei abstrakten Klassen wurde es mir dann suspekt und entzog sich meiner Vorstellung, aber das ist am Anfang wohl normal. Ich hatte mich schon etwas belesen was Programmiersprachen betrifft, und habe es auf C/C#, Java oder Python eingegrenzt.

Python scheint unkompliziert, benötigt aber offenbar eine passende Python-Software auf dem Endgerät. Mit C# ist vmtl. mehr machbar, aber es ist komplizierter.
Ich tendiere zu Python, weil es nur ein 2D-Spiel werden soll und P. ohne Klammern auskommt, gut zu lernen und der Editor handlich sein soll.

In Bezug auf die (Tile-)Map taucht aber die Frage auf: benötige ich Unity, oder ist das überdimensioniert? Das Tilemap-Manual von Unity sieht sehr verständlich aus. Aber ich habe auch Anleitungen gefunden die vermuten lassen, das es ohne extra Engine gehen kann. Im speziellen soll die Map so funktionieren wie hier beschrieben: Tilemap Java
EDIT: Ich nahm immer an, etwas wie Unity benötigt man nur für 3D-Welten.

An dieser Stelle kommt Java als Option in Spiel - sollte ich statt Phyton (oder C/C#) besser gleich Java benutzen/erlernen? Für Java spricht, das es fast vollständig kompatibel ist. Allerdings war zu lesen, das Java für Android-Apps nochmal passend Quellcode benötigt (falls eine mobile App entstehen soll). Auf sowas würde ich gern verzichten. Trotzdem scheint Java im Grund eine gute Sprache zu sein, zu der man auch viel Hilfreiches finden kann.

Zu lesen war aber auch, das Java nicht mehr so verbreitet ist. bzw. vor allem für Android(-Apps) benutzt wird (das widerspricht dem Absatz zuvor, verschieden Quellen äußern sich offenbar verschieden zu Java)

JavaScript brauche ich nicht soweit ich informiert bin, ausgenommen vllt. wenn ein Chat implementiert werden soll. (Oder liege ich falsch, in Bezug auf ein Online-Spiel?) Weiterhin benötige ich HTML und CSS (Website) für die Darstellung im Browser, und PHP (?)(Daten/Verbindung zum Server).

Dinge wie Ingame-Chats, mobile Apps usw. sind für mich anfangs kein Thema, aber ich würde die Option dazu gern offenhalten anstatt sie unwissend zu verbauen.

Nochmal zu den Programmierspachen: Die einen raten, die Sprache zu lernen die einen anspricht; andere, unbedingt die zu wählen die dem Zweck gerecht wird. Letzteres erscheint mir logischer. Zudem fände ich eine Sprache gut, die es erlaubt, Stücke des Codes ggf. zu ändern, ohne "alles" neu schreiben zu müssen.

Entweder wird zu C/C# oder Java geraten, aber Python wird auch oft empfohlen, besonders für Anfänger. Ich vermute, entschiedend könnte sein, das ich keine Desktop-Anwendung oder Smartphone-App erstellen will, sondern ein Online-Spiel, ggf. (M)MO. Da wird auch die Sicherheitsarchitektur wichtig, vermute ich.


Meine Fragen nochmal in Kurzform:

1/ Python oder Java? (Oder C/C#/andere wenn ich ganz falsch liege), und warum genau, was wäre entscheidend?
2/ Brauche ich eine Engine wie Unity (oder nicht) für eine 2D Tilemap + 2D Objekte, und wenn, warum?
3/ habe ich etwas vergessen/übersehen, das notwenig ist, vor allem Anfangs?
4/ Mache ich einen grundsätzlichen Denkfehler? (abgesehen von der Ambition ein komplexeres Spiel anzustreben, es werden erstmal lediglich Einzel-Experimente)

Ich würde mich freuen wenn sich die geeignete Software genauer bestimmen ließe, so das ich gezielt Bücher, Tutorials, ggf. Kurse usw. für die Software aussuchen kann.
Besten Dank schonmal, ich hoffe auf hilfreichen Rat. :)

Viele Grüße,
Prometheus


PS: Falls ich doch im falschen Foren-Bereich gepostet habe, entschuldigt, dann bitte verschieben (bin mir nicht ganz sicher).

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Prometheus« (06.02.2020, 22:38)


Lares

1x Contest-Sieger

  • Private Nachricht senden

2

07.02.2020, 15:42

Es wird mir nicht so ganz ersichtlich was du eigentlich machen willst. Hier mal ein paar Punkte die du dir überlegen solltest in Bezug auf die Wahl der Programmiersprache:

Was ist das Spiel?
  • Eine Applikation, wie man es von AAA Titeln kennt
  • Ein Spiel, das über den Browser läuft
Für ersteres eignen sich Java und C# und Python. Ich würde C# empfehlen, weil du Unity benutzen könntest wenn du möchtest. Musst du aber nicht.
Für zweiteres musst du eigentlich JavaScript, PHP und HTML lernen. Es gibt theoretisch noch andere Möglichkeiten, aber diese sind entweder Nischenlösungen, zu komplex, oder schlicht veraltet. Mit JavaScript, PHP, HTML fährst du hier einfach am sichersten.

Mit welchem Gerät soll der Spieler das Spiel spielen?
  • Windows PC
  • Android Smartphone
  • IPhone
  • MacOS
  • XBox
  • PS4
  • Switch
Je nachdem welche Platformen du wählst, wirst du eine oder sogar mehrere Sprachen wählen müssen. Oder du lässt die Erstellung der Spieldatei von z.B. Unity oder einem anderen System übernehmen. Dann muss das Spiel aber auch natürlich mit Unity und C# entwickelt sein bzw. das entsprechende Equivalent für das System das du nutzt.

3

09.02.2020, 12:45

Wie ich das für mich entschieden habe...

Gute Morgen,

Wow. Mir fehlen gerade etwas die Worte. Ersten, weil es verdammt viel Text ist, zweitens weil du dein Projekt auf 10-15 Jahre festlegst. Es sind verdammt viele Techniken, welche du da reinpacken willst. Also bewegst du dich im Grunde auf Tripple-A - Niveau was die Features angeht.
Versteh mich bitte nicht falsch, aber wenn du noch nicht mal die Frage nach der Engine und der Sprache für dich geklärt hast, und das ist in diesem Fall kein Luxusproblem weil dir alle bestens vertraut sind und du dich nicht entscheiden kannst, solltest du kleiner Anfangen. Nichts ist schlimmer als ein fehlendes Erfolgserlebnis.
Aber ja, es geht mich nichts an! Behalte das aber im Hinterkopf.

Ich habe vor ca. 12 Monaten die gleichen Fragen im Kopf gehabt. Wie habe ich mich entschieden?

1. Welche Programmiersprache ist verbreitet und welche Engine gibt es. Zur Auswahl standen Unity, Unreal, Godot.
- C++ - der Klassiker. Unheimlich potent. Wenn du schwache Hardware hast und das letzte bisschen Performance rausquetschen musst bist du hier richtig.Es gibt viele Quellen und Tutorials und in Kombination mit Unreal Engine sehr geil. Bei der UE wären auch noch die Blaupausen (Visual Script) zu erwähnen. Das macht den einstieg zwar nicht leichter, aber eine schöne Möglichkeit um Prototypen von Funktionen oder Spielmodi zu erstellen.
Problem: Relativ schwer zu lernen da sehr komplex

- C# - gehört zur C-Familie, gut zu erlernen. Ich nutze es in Kombination mit Unity Engine. Sehr viele Quellen und Tutorials online verfügbar. Nicht so potent wie C++, aber deutlich einfacher zu handeln. Um Sachen wie Speicherverwaltung brauchst du dir um Grunde kaum sorgen machen.

- GD-Script - Python sehr ähnlich. Wird von der Godot Engine genutzt. Relativ einfach zu erlernen. Als einzigen Negativpunkt sehe ich hier, dass man damit wirklich an Godot gebunden ist. Auch wenn die Engine in den letzten Jahren sehr große Fortschritte gemacht hat. Alternativ kannst du auch mit C# in Godot arbeiten. Bislang gibt es "wenig" Dokumentation und Tutorials, verglichen mit den Anderen Sprachen.

2. Welche Engine sollte ich nehmen. Ersten, finger weg von Lumberyard oder CryEngine(ist im Grunde das selbe). Sehr Potent, aber wenig Tutorials. Einarbeitung sehr zeit intensiv dadurch. Welche Gesichtspunkte gibt es noch?

- Tutorials - Sehr viele für Unity, viele für Unreal, relativ wenige für Godot.
- Asset-Store - wenn du nicht jedes Bitmap einzeln erstellen willst würde ich auch den Asset-Store achten. Dort bekommst du vorgefertigte Soundfiles, Animationen, Modelle, Texturen und teilweise ganze Templates von Spielen. Also das Grundgerüst deines RTS-Spiels zu beispiel. Letzteres erspart sehr viel Arbeit da die Grundfunktionen schon vorgefertigt sind. Kostet dich aber viel Zeit, da du erst einmal durch die Programmierung durchsteigen musst. Je nach Stil des Programmierers sehr anstrengend.

Zum Abschluss pflichte ich meinem Vorredner bei. Ich habe mich für Unity und C# entschieden. Unity ist im Grunde kostenlos (außer du verdienst mehr als 100.000 Dollar im Jahr damit) bietet sehr viele Tutorials auf Youtube und Kurse auf beispielsweise Udemy. Es gibt viele kostenlose Assets welche dir dutzende Stunden arbeit einsparen. Die Programmiersprache C# ist gut zu lernen und der Umstieg auf eine andere C-Sprache ist relativ einfach.

Und jetzt nochmal ein Tipp in eigener Sache:

Egal was du treibst. Programmieren ist das A und O. Lerne es also Vernünftig. Ich habe viele Wochen verschenkt, da ich Problemorientiert gelernt habe. Also nur das aktuell gewünschte Feature schnell auf Youtube gepaukt und dann weiter. Das fliegt dir ganz schnell um die Ohren. Da kannst du nur hoffen, dass nach der nächsten CodeZeile alles noch funktioniert. Irgendwann ist dein Code geprägt vom Stil 30 verschiedener Programmierer. Das endet zum Schluss in einer Katastrophe.

Also, schnapp dir Unity, Lerne C#. Gehe auf Udemy und hole dir folgende Kurse:

C# Einsteiger - deutsch - Janik Pruin - Sehr kompetenter Dozent.
The Ultimate Guide to Game Developament with Unity 2019 - englisch - Unity zertifiziert. Danach solltest du alle Grundlagen haben.
The Unity C# Survival Guide - englisch - Unity zertifiziert. Ein Kurs der viele Dinge in Bezug auf professionelles Programmieren erklärt und neue Techniken zeigt. Eher zum Nachschlagen gedacht.

Und nein ich erhalte keine Kohle dafür. Aber das waren die 3 Kurse, welche mich am schnellsten voran gebracht haben. Die Kurse sind im Rabatt so mit 9.- - 20.- Euro zu haben. Rabatt gibt es gefühlt jede Woche. Also nicht von Preisen wie 199.- Euro abschrecken lassen.

Viel Text. So habe ich es gemacht. Wie du es machst ist dein Ding. Fall du fragen hast, schick einfach eine Nachricht.

4

14.02.2020, 16:54

Direkt gesagt, welche Programmiersprachen und Programme benötige ich eurer Ansicht nach, ist meine Vorauswahl passend?


Python würde ich auf gar keinen Fall (!) verwenden, das ist eine Scriptsprache, die sich eher schon von der Performance her überhaupt nicht für Spiele eignet.
Wenn überhaupt, dann zum Prototypen.

Einige Programmiersprachen wurden hier ja schon genannt.
C++ wäre wohl die beste Wahl (performanteste), aber ist extrem schwer zu lernen.
Deshalb würde ich an deiner Stelle bei Java bleiben und mir die Library libGDX anschauen.
Wenn du Fragen dazu hast, schreib mir einfach eine PN.

Du kannst auch Unity verwenden - aber dann lernst du weniger programmieren und mehr scripten. Und eine Game Engine ist meist auch in gewisser Hinsicht beschränkt und schränkt dich somit ein.
Des Weiteren ist die Performance von Unity vermutlich deutlich schlechter, als wenn du es selbst programmierst.

Am besten realisierst du das ganze als Open Source Projekt, dann können auch gleich andere von dir lernen - und du selbst kannst von den Entwicklern lernen, die deinen Source Code anschauen.


In Bezug auf die (Tile-)Map taucht aber die Frage auf: benötige ich Unity, oder ist das überdimensioniert? Das Tilemap-Manual von Unity sieht sehr verständlich aus. Aber ich habe auch Anleitungen gefunden die vermuten lassen, das es ohne extra Engine gehen kann.


Du brauchst dafür keine Game Engine o.ä.
Als guter, kostenloser Editor eignet sich auch Tiled. Du musst die Tiles nur irgendwie parsen. Dafür hat libGDX aber schon was mit an Board.


An dieser Stelle kommt Java als Option in Spiel - sollte ich statt Phyton (oder C/C#) besser gleich Java benutzen/erlernen?


Für deinen speziellen Fall eher ja.
Java ist vergleichsweise einfach zu lernen und nicht so Hardware-nah wie C / C++.
Wenn du nicht so viel Ahnung von Hardware-naher Programmierung hast, kannst du als Anfänger mit C / C++ sonst schnell verzweifeln, weil da auch Sachen Plattform-abhängig sind.


Allerdings war zu lesen, das Java für Android-Apps nochmal passend Quellcode benötigt (falls eine mobile App entstehen soll). Auf sowas würde ich gern verzichten.


Soll es denn eine Android App werden? Oder besser eine Desktop App?
An deiner Stelle würde ich erstmal bei einem von beiden anfangen. Am besten eine Desktop App, das ist einfacher, als sich noch mit den grafischen Limitierungen unter Android auseinanderzusetzen.


Zu lesen war aber auch, das Java nicht mehr so verbreitet ist.


Das ist Schwachsinn!
Java ist nach wie vor die Nummer 1 unter den Programmiersprachen:
https://jaxenter.de/redmonk-pypl-tiobe-r…vergleich-69108


JavaScript brauche ich nicht soweit ich informiert bin, ausgenommen vllt. wenn ein Chat implementiert werden soll. (Oder liege ich falsch, in Bezug auf ein Online-Spiel?) Weiterhin benötige ich HTML und CSS (Website) für die Darstellung im Browser, und PHP (?)(Daten/Verbindung zum Server).


Soll es denn ein Browsergame werden?
Wenn nicht, brauchst du nichts von den genannten Dingen für eine Android oder Desktop Applikation.


Zudem fände ich eine Sprache gut, die es erlaubt, Stücke des Codes ggf. zu ändern, ohne "alles" neu schreiben zu müssen.


Diese Anforderung erfüllen fast alle Programmiersprachen.
Lediglich bei Python muss man manchmal Einrückungen aufwendig korrigieren.


Entweder wird zu C/C# oder Java geraten, aber Python wird auch oft empfohlen, besonders für Anfänger. Ich vermute, entschiedend könnte sein, das ich keine Desktop-Anwendung oder Smartphone-App erstellen will, sondern ein Online-Spiel, ggf. (M)MO. Da wird auch die Sicherheitsarchitektur wichtig, vermute ich.


Siehe oben. Willst du denn ein Browsergame erstellen?


1/ Python oder Java? (Oder C/C#/andere wenn ich ganz falsch liege), und warum genau, was wäre entscheidend? Wenn dann Java, bloß kein Python!
2/ Brauche ich eine Engine wie Unity (oder nicht) für eine 2D Tilemap + 2D Objekte, und wenn, warum? Nein!
3/ habe ich etwas vergessen/übersehen, das notwenig ist, vor allem Anfangs?
4/ Mache ich einen grundsätzlichen Denkfehler? (abgesehen von der Ambition ein komplexeres Spiel anzustreben, es werden erstmal lediglich Einzel-Experimente) Probier dich einfach aus, du wirst schon relativ schnell merken, wo deine Grenzen liegen und wo du dich noch weiterbilden musst.


Antworten fett im Text.

Am besten baust du ganz am Anfang erstmal was einfaches.
Einen Super Mario Klon oder so. Jump'n'Run Spiele eignen sich ganz gut für den Einstieg, finde ich.

EDIT:
Es gibt noch eine weitere Möglichkeit, wie du schneller zu deinem Ziel gelangst - du könntest dich einem anderen Projekt anschließen!
Scheinbar kannst du ja Grafiken erstellen, eignest dich also als Grafiker.
Damit könntest du dich ziemlich gut bei anderen Projekten mit einbringen.
Indie Game-Dev Programmierer beim 2D MMORPG Pentaquin | Pentaquin Foren Vorstellung

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »JuKu« (14.02.2020, 17:02)


5

12.04.2020, 22:08

Hi,

nun grabe ich diesen alten Thread aus und muss mich entschuldigen - ich hatte damals den Verdacht, die x-te Noob-Frage gestellt zu haben, und habe nicht wirklich mit so tollen bzw. gar keinen Antworten gerechnet. Inzwischen habe ich auch Glasfaser mit 100/50 Mbit/s (statt 0,05 Mbit/s) und kann auch deutlich besser recherchieren. Also z.B. auch Tutorials ansehen und im Video auch was erkennen! Hehe... (Und Programme und Material vernünftig runterladen!)

Also zunächst einmal vielen Dank für all diese informativen Antworten! :)

Mittlerweile weiß ich auch mehr, und kann etwas Licht in die Sache bringen.

Zunächst mal für alle, ja, ich meinte ein Browserspiel. Da war ich ungenau. Mittlerweile habe ich es für mich selbst so bezeichnet:
2D Top-down Browser-RTS-(M)MO mit RPG-Elementen auf Tilemap, Kampfsystem als quasi-TBS (limitierte Runden)

Also, eine "einfache" Grafik im Browser. Im Grunde könnte man auch sagen ein Tabellenspiel, welches dann grafisch etwas ausgeschmückt wird (im Grunde ist die Tilemap auch eine Art Tabelle).
Neben der Möglichkeit die Wirtschaft und Siedlungen im Sandboxprinzip aufzubauen, soll es die Möglichkeit geben, Befestigungen im Sandboxprinzip zu bauen.
Spielcharaktere hat man mehrere, aber nur als Avatar, der auch im Spiel Schlüsselrollen übernimmt.

Ausserdem strebe ich an, "offene Feldschlachten" in einem "Sandkasten" auszuführen - so wie bei Total War aber eben platt auf der Tilemap. Der Kampf läuft dann in Kurzrunden ab, so wie ein Schnellschach. Einheiten werden als solche auch nicht wirklich angezeigt, lediglich kleine "Ameisen" um z.B. Bautätigkeit anzuzeigen oder taktische Symbole für Truppeneinheiten. Es wird also auch nichts direkt auf der Karte bewegt, die Einheiten wechseln nach einer definierten Zeit das Feld.

Ich nehme an, Dinge wie Wegfindung und Kollisionserkennung sind dann mit die schwersten Aufgaben, denn es soll trotzdem möglich sein, z.B. feindliche Einheiten abzufangen.
Sie wandern also im Grunde über die Karte, müssen aber nicht unbedingt ständig visualisiert sein.

Inspiriert haben mich verschiedene Spiele, die ich hier aber nicht nennen will, manche gibt es auch gar nicht mehr.
Nun zu euren Antworten.




Es wird mir nicht so ganz ersichtlich was du eigentlich machen willst. Hier mal ein paar Punkte die du dir überlegen solltest in Bezug auf die Wahl der Programmiersprache:

Was ist das Spiel?
  • Eine Applikation, wie man es von AAA Titeln kennt
  • Ein Spiel, das über den Browser läuft
Für ersteres eignen sich Java und C# und Python. Ich würde C# empfehlen, weil du Unity benutzen könntest wenn du möchtest. Musst du aber nicht.
Für zweiteres musst du eigentlich JavaScript, PHP und HTML lernen. Es gibt theoretisch noch andere Möglichkeiten, aber diese sind entweder Nischenlösungen, zu komplex, oder schlicht veraltet. Mit JavaScript, PHP, HTML fährst du hier einfach am sichersten.

Mit welchem Gerät soll der Spieler das Spiel spielen?
  • Windows PC
  • Android Smartphone
  • IPhone
  • MacOS
  • XBox
  • PS4
  • Switch
Je nachdem welche Platformen du wählst, wirst du eine oder sogar mehrere Sprachen wählen müssen. Oder du lässt die Erstellung der Spieldatei von z.B. Unity oder einem anderen System übernehmen. Dann muss das Spiel aber auch natürlich mit Unity und C# entwickelt sein bzw. das entsprechende Equivalent für das System das du nutzt.


Ja, im Browser, kein Triple-A. Ich hatte mir jetzt Java ausgesucht, evtl ein passendes Framework, dazu JavaScript (oder HTML 5), HTML/CSS und evtl. PHP bzw. - dazu komme ich am Ende.

Laufen soll es auf allen gängigen OS, also Windows, Mac, Linux; und in allen gängigen Browsern: Firefox, Chrome, Safari, Edge und Opera. Das ganze auf dem PC, wobei das mittlerweile wirklich rückläufig ist - mobil ist einfach sehr verbreitet. Daher wäre eine mobile-App evtl. notwendig, auch wenn ich das selbst nicht so toll finde (spiele selbst nicht mobil). Mit Java wäre beides auf jeden Fall kein Problem.




Gute Morgen,

Wow. Mir fehlen gerade etwas die Worte. Ersten, weil es verdammt viel Text ist, zweitens weil du dein Projekt auf 10-15 Jahre festlegst. Es sind verdammt viele Techniken, welche du da reinpacken willst. Also bewegst du dich im Grunde auf Tripple-A - Niveau was die Features angeht.
Versteh mich bitte nicht falsch, aber wenn du noch nicht mal die Frage nach der Engine und der Sprache für dich geklärt hast, und das ist in diesem Fall kein Luxusproblem weil dir alle bestens vertraut sind und du dich nicht entscheiden kannst, solltest du kleiner Anfangen. Nichts ist schlimmer als ein fehlendes Erfolgserlebnis.
Aber ja, es geht mich nichts an! Behalte das aber im Hinterkopf.

Ich habe vor ca. 12 Monaten die gleichen Fragen im Kopf gehabt. Wie habe ich mich entschieden?

1. Welche Programmiersprache ist verbreitet und welche Engine gibt es. Zur Auswahl standen Unity, Unreal, Godot.
- C++ - der Klassiker. Unheimlich potent. Wenn du schwache Hardware hast und das letzte bisschen Performance rausquetschen musst bist du hier richtig.Es gibt viele Quellen und Tutorials und in Kombination mit Unreal Engine sehr geil. Bei der UE wären auch noch die Blaupausen (Visual Script) zu erwähnen. Das macht den einstieg zwar nicht leichter, aber eine schöne Möglichkeit um Prototypen von Funktionen oder Spielmodi zu erstellen.
Problem: Relativ schwer zu lernen da sehr komplex

- C# - gehört zur C-Familie, gut zu erlernen. Ich nutze es in Kombination mit Unity Engine. Sehr viele Quellen und Tutorials online verfügbar. Nicht so potent wie C++, aber deutlich einfacher zu handeln. Um Sachen wie Speicherverwaltung brauchst du dir um Grunde kaum sorgen machen.

- GD-Script - Python sehr ähnlich. Wird von der Godot Engine genutzt. Relativ einfach zu erlernen. Als einzigen Negativpunkt sehe ich hier, dass man damit wirklich an Godot gebunden ist. Auch wenn die Engine in den letzten Jahren sehr große Fortschritte gemacht hat. Alternativ kannst du auch mit C# in Godot arbeiten. Bislang gibt es "wenig" Dokumentation und Tutorials, verglichen mit den Anderen Sprachen.

2. Welche Engine sollte ich nehmen. Ersten, finger weg von Lumberyard oder CryEngine(ist im Grunde das selbe). Sehr Potent, aber wenig Tutorials. Einarbeitung sehr zeit intensiv dadurch. Welche Gesichtspunkte gibt es noch?

- Tutorials - Sehr viele für Unity, viele für Unreal, relativ wenige für Godot.
- Asset-Store - wenn du nicht jedes Bitmap einzeln erstellen willst würde ich auch den Asset-Store achten. Dort bekommst du vorgefertigte Soundfiles, Animationen, Modelle, Texturen und teilweise ganze Templates von Spielen. Also das Grundgerüst deines RTS-Spiels zu beispiel. Letzteres erspart sehr viel Arbeit da die Grundfunktionen schon vorgefertigt sind. Kostet dich aber viel Zeit, da du erst einmal durch die Programmierung durchsteigen musst. Je nach Stil des Programmierers sehr anstrengend.

Zum Abschluss pflichte ich meinem Vorredner bei. Ich habe mich für Unity und C# entschieden. Unity ist im Grunde kostenlos (außer du verdienst mehr als 100.000 Dollar im Jahr damit) bietet sehr viele Tutorials auf Youtube und Kurse auf beispielsweise Udemy. Es gibt viele kostenlose Assets welche dir dutzende Stunden arbeit einsparen. Die Programmiersprache C# ist gut zu lernen und der Umstieg auf eine andere C-Sprache ist relativ einfach.

Und jetzt nochmal ein Tipp in eigener Sache:

Egal was du treibst. Programmieren ist das A und O. Lerne es also Vernünftig. Ich habe viele Wochen verschenkt, da ich Problemorientiert gelernt habe. Also nur das aktuell gewünschte Feature schnell auf Youtube gepaukt und dann weiter. Das fliegt dir ganz schnell um die Ohren. Da kannst du nur hoffen, dass nach der nächsten CodeZeile alles noch funktioniert. Irgendwann ist dein Code geprägt vom Stil 30 verschiedener Programmierer. Das endet zum Schluss in einer Katastrophe.

Also, schnapp dir Unity, Lerne C#. Gehe auf Udemy und hole dir folgende Kurse:

C# Einsteiger - deutsch - Janik Pruin - Sehr kompetenter Dozent.
The Ultimate Guide to Game Developament with Unity 2019 - englisch - Unity zertifiziert. Danach solltest du alle Grundlagen haben.
The Unity C# Survival Guide - englisch - Unity zertifiziert. Ein Kurs der viele Dinge in Bezug auf professionelles Programmieren erklärt und neue Techniken zeigt. Eher zum Nachschlagen gedacht.

Und nein ich erhalte keine Kohle dafür. Aber das waren die 3 Kurse, welche mich am schnellsten voran gebracht haben. Die Kurse sind im Rabatt so mit 9.- - 20.- Euro zu haben. Rabatt gibt es gefühlt jede Woche. Also nicht von Preisen wie 199.- Euro abschrecken lassen.

Viel Text. So habe ich es gemacht. Wie du es machst ist dein Ding. Fall du fragen hast, schick einfach eine Nachricht.


Vielen Dank für die vielen Infos. :) Ich hoffe du nimmst es mir nicht übel, aber ich habe mich zunächst für Java entschieden. Aber ich werde mich da weiter mit beschäftigen, noch ist nichts 100% sicher. Bisher arbeite ich nach wie vor am Konzept, mache mich mit den Grundlagen vertaut, und zwischen Java und C++ soll es nicht so extreme Unterschiede geben. C++ (oder eine andere Sprache) macht vor allem Sinn, wenn man eine entsprechende Engine nutzen will. Ich hab aber inzwischen den Eindruck, das ich diese für mein Vorhaben nicht zwingend brauche. Wichtiger wäre dann schon ein passendes Framework, um nicht alles selbst von Grund auf konstruieren zu müssen.

Das mit den Assets werde ich mir merken, das wird sicher wichig für manches. Eine minimale Klangkulisse z.b. wäre nicht verkehrt, und das wäre für mich eher schwerer zu machen.

Das mit dem Programmierstil hatte ich so nicht nicht betrachtet - da hast du sicher recht, wenn man sich alles nur problemorientiert zusammenkopiert, kommt sicher was fruchtbares heraus... Ich werde wahrscheinlich erstmal alle Features des Spiels als ein Minispiel konstruieren, auch einfach um das Balancing zu prüfen, Formeln zu prüfen usw. Wenn ich das mal kann, lässt sich auch was größes daraus machen. Übungsaufgaben und Grundlagen sind sowieso Pflicht, das ist wie Vokablen und Grammatik beim Sprachenlernen. :)




Direkt gesagt, welche Programmiersprachen und Programme benötige ich eurer Ansicht nach, ist meine Vorauswahl passend?


Python würde ich auf gar keinen Fall (!) verwenden, das ist eine Scriptsprache, die sich eher schon von der Performance her überhaupt nicht für Spiele eignet.
Wenn überhaupt, dann zum Prototypen.

Einige Programmiersprachen wurden hier ja schon genannt.
C++ wäre wohl die beste Wahl (performanteste), aber ist extrem schwer zu lernen.
Deshalb würde ich an deiner Stelle bei Java bleiben und mir die Library libGDX anschauen.
Wenn du Fragen dazu hast, schreib mir einfach eine PN.

Du kannst auch Unity verwenden - aber dann lernst du weniger programmieren und mehr scripten. Und eine Game Engine ist meist auch in gewisser Hinsicht beschränkt und schränkt dich somit ein. Des Weiteren ist die Performance von Unity vermutlich deutlich schlechter, als wenn du es selbst programmierst.

Am besten realisierst du das ganze als Open Source Projekt, dann können auch gleich andere von dir lernen - und du selbst kannst von den Entwicklern lernen, die deinen Source Code anschauen.


In Bezug auf die (Tile-)Map taucht aber die Frage auf: benötige ich Unity, oder ist das überdimensioniert? Das Tilemap-Manual von Unity sieht sehr verständlich aus. Aber ich habe auch Anleitungen gefunden die vermuten lassen, das es ohne extra Engine gehen kann.


Du brauchst dafür keine Game Engine o.ä.
Als guter, kostenloser Editor eignet sich auch Tiled. Du musst die Tiles nur irgendwie parsen. Dafür hat libGDX aber schon was mit an Board.


An dieser Stelle kommt Java als Option in Spiel - sollte ich statt Phyton (oder C/C#) besser gleich Java benutzen/erlernen?


Für deinen speziellen Fall eher ja.
Java ist vergleichsweise einfach zu lernen und nicht so Hardware-nah wie C / C++.
Wenn du nicht so viel Ahnung von Hardware-naher Programmierung hast, kannst du als Anfänger mit C / C++ sonst schnell verzweifeln, weil da auch Sachen Plattform-abhängig sind.


Allerdings war zu lesen, das Java für Android-Apps nochmal passend Quellcode benötigt (falls eine mobile App entstehen soll). Auf sowas würde ich gern verzichten.


Soll es denn eine Android App werden? Oder besser eine Desktop App?
An deiner Stelle würde ich erstmal bei einem von beiden anfangen. Am besten eine Desktop App, das ist einfacher, als sich noch mit den grafischen Limitierungen unter Android auseinanderzusetzen.


Zu lesen war aber auch, das Java nicht mehr so verbreitet ist.


Das ist Schwachsinn!
Java ist nach wie vor die Nummer 1 unter den Programmiersprachen:
https://jaxenter.de/redmonk-pypl-tiobe-r…vergleich-69108


JavaScript brauche ich nicht soweit ich informiert bin, ausgenommen vllt. wenn ein Chat implementiert werden soll. (Oder liege ich falsch, in Bezug auf ein Online-Spiel?) Weiterhin benötige ich HTML und CSS (Website) für die Darstellung im Browser, und PHP (?)(Daten/Verbindung zum Server).


Soll es denn ein Browsergame werden?
Wenn nicht, brauchst du nichts von den genannten Dingen für eine Android oder Desktop Applikation.


Zudem fände ich eine Sprache gut, die es erlaubt, Stücke des Codes ggf. zu ändern, ohne "alles" neu schreiben zu müssen.


Diese Anforderung erfüllen fast alle Programmiersprachen.
Lediglich bei Python muss man manchmal Einrückungen aufwendig korrigieren.


Entweder wird zu C/C# oder Java geraten, aber Python wird auch oft empfohlen, besonders für Anfänger. Ich vermute, entschiedend könnte sein, das ich keine Desktop-Anwendung oder Smartphone-App erstellen will, sondern ein Online-Spiel, ggf. (M)MO. Da wird auch die Sicherheitsarchitektur wichtig, vermute ich.


Siehe oben. Willst du denn ein Browsergame erstellen?


1/ Python oder Java? (Oder C/C#/andere wenn ich ganz falsch liege), und warum genau, was wäre entscheidend? Wenn dann Java, bloß kein Python!
2/ Brauche ich eine Engine wie Unity (oder nicht) für eine 2D Tilemap + 2D Objekte, und wenn, warum? Nein!
3/ habe ich etwas vergessen/übersehen, das notwenig ist, vor allem Anfangs?
4/ Mache ich einen grundsätzlichen Denkfehler? (abgesehen von der Ambition ein komplexeres Spiel anzustreben, es werden erstmal lediglich Einzel-Experimente) Probier dich einfach aus, du wirst schon relativ schnell merken, wo deine Grenzen liegen und wo du dich noch weiterbilden musst.


Antworten fett im Text.

Am besten baust du ganz am Anfang erstmal was einfaches.
Einen Super Mario Klon oder so. Jump'n'Run Spiele eignen sich ganz gut für den Einstieg, finde ich.

EDIT:
Es gibt noch eine weitere Möglichkeit, wie du schneller zu deinem Ziel gelangst - du könntest dich einem anderen Projekt anschließen!
Scheinbar kannst du ja Grafiken erstellen, eignest dich also als Grafiker.
Damit könntest du dich ziemlich gut bei anderen Projekten mit einbringen.


Auch dir nochmals Danke! Inzwischen hat sich mir vieles beantwortet, aber es schadet nicht wenn du meine Erkenntnisse bestätigst. :)

Kurz zu Python - das wird irgendwie gehyped scheint es mir... Das mit dem "einfach zu lernen" ist auch mit Vorsicht zu genießen. Wann immer ich größe Stücke von Python Code gesehen habe, erschien es mir unverständlicher und ungeordneter als z.B. Java. Auf jeden Fall habe ich es als potenziell ungeeignet erkannt - z.B. weil es einfach zu langsam sein kann für einen hohes Datenaufkommen. Langsam ist natürlich relativ - ich will ja kein First-Person Triple-A-MMO in 3D und und und bauen. Aber es ist auch kein Social-Media wo im Grunde nur Daten abgefragt werden. Ich will den Faktor Echtzeit also nicht unterschätzen.

Daher hatte ich mich für Java entscheiden. ;) Wie du schreibst, sind die C-Sprachen wohl eher hardware-nah, also z.B. für Betriebsysteme usw., Java ist zudem plattformübergreifend und auch für eine mobil-Apps geeignet. Es gibt nur eine eine Art Java-Hate im Netz, und für einen Neuling ist das schwer zu beurteilen. Ich hatte eine Woche damit verbracht, alles dazu zu lesen was ich finden konnte, aber besser verstanden habe ich's erst, als ich mich mit dem Kontext befasst habe. Also mit dem ganzen Konstrukt von Frontend-Backend.

Unity, Godot etc. hatte ich in Erwägung gezogen, aber ich will mich nicht abhängig machen, zumal ich ja auch wissen müsste wie ich die Dinge dann auf meine Bedürfnisse zuschneide. Ich habe meine Zweifel das man dadurch besser lernt. Und letztlich ist eine Engine wohl gar nicht notwendig, ich muss z.B. keine Physik berechnen, kein Licht, keine Flüssigkeiten etc. Und da wird eine Enginge eigentlich erst wichtig oder unumgänglich.


Lediglich für die 2D-Tilemap wäre es eine Option, um es etwas einfacher zu haben. Ich fand z.B. Tiled sehr interessant. Damit muss ich mich noch mehr beschäftigen.
Letztlich ist aber wichtig, das ich zunächt Open Source bekomme, und das später auch kommerziell nutzen kann.

Wenn ich in der Sache tatsächlich Fuß gefasst habe, wäre die OpenSource-Idee sicher spannend, so was hatte ich sowieso vor, um eventuell weitere Interessiete mit ins Boot zu holen. Ich vermute ganz allein kann ich das nicht umsetzen, aber wenn man einen brauchbaren Prototyp hat, kann man auch andere dafür gewinnen. Auch könnte es notwendig werden, eine Möglichkeit der Vorfinanzierung zu finden.


Ich bin auch mehrmals auf Pentaquin gestoßen, sehr interessant! ;) Die Idee und Story zum Spiel fand ich sehr klasse, auch wenn diese Art Spiel nicht so mein Fall ist. Aber es hat mir zwischenzeitlich geholfen zu sehen, das man auch mit einem Freizeit-Projekt Erfolg haben kann. Das wird einem ja auch manchmal ausgeredet... :pillepalle: :nono: :grumble:


Zum Schluss noch kurz zu JavaScript - das hatte ich damals mit Flash verwechselt. Flash wurde ja regelrecht verbannt. Daher meinte ich, JS nicht zu benötigen. Ich meinte aber Flash. Das war wohl falsch. Also es ginge wohl auch ohne JS, z.B. mit HTML5 oder PHP. Ich hab da noch bedenken was JS angeht, wegen der Sicherheit. Vielleicht ist HTML5 eine Option. PHP macht server-seitig offenbar was JS client-/browser-seitig macht, soll aber den Server stark belasten.

Aber ich bin damit noch nicht durch, was z.B. Servlets/Websockets und Frameworks angeht. Das ist am Anfang auch noch nicht so wichtig. Ich kann auch HTML lernen für den Anfang. Wichtig war mir, das ich die Programmiersprache in diesem Konstrukt einordnen kann, weil sie wiederum das Framework bestimmt usw.



Wenn sich bestimmet Fragen stellen, kommen ich auch gerne per PN darauf zurück.

Auf die Struktur des ganzen komme ich am besten extra nochmal zurück, wenn ich mehr darüber weiß und das ganze genauer definieren kann.
Wenn noch jemand eine Idee, eine Frage oder einen Rat hat, freue ich mich natürlich immer! :)

MfG, Prometheus

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

6

17.04.2020, 19:21

Kurze Anmerkung: Python kann langsam sein, wenn man es falsch anwendet. Richtig angewendet ist es vielen Anwendungfällen in der Ausführunggeschwindigkeit nur unwesentlich hinten dran. Typischerweise sollte es halt als "Kontrollsprache" verwendet und die iterativen/zeitkritischen Sachen in entsprechende Module ausgelagert werden. Gute Beispiele hierfür sind Panda3D, Numpy, Scipy, TensorFlow. Gleichzeitig kommt man oft mit deutlich weniger Zeilen Code aus um das Gleiche zu erreichen. So habe ich z.B. an der Uni ein Programm mit Python&pyqtgraph geschrieben, was problemlos in echtzeit Messdaten von 64 Kanälen mit 10 kHz Samplingrate darstellen kann, während die Firma in der ich arbeite mit C++&QT etliche Mannmonate gebraucht hat um ein Programm für 32 Kanäle mit 1 kHz Samplingrate zu realisieren. Doch am Ende ist Python nur ein Werkzeug und wie jedes andere Werkzeug kann es geeigneter oder ungeeigneter für eine Aufgabe sein und manchmal liegt einem das eine auch mehr als das andere.

TL;DR das Argument "zu langsam" würde ich so nicht stehen lassen, gerade wenn man die Entwicklungszeit berücksichtigt, aber wenn du es persönlich nicht "schön" findest, dann ist dass einer der besten Gründe einer anderen Sprache den Vorzug zu geben :)

Wichtig ist, dass du mit deiner Wahl klarkommst :) .
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

7

22.04.2020, 12:47

Oracles JDK vs. OpenJDK und Free JDK's

@Nox

Da hast du auf jeden Fall recht, die Frage nach der Geschwindigkeit ist auch eine nach der Definition und dem Anwendungszweck. Aber auch nach einem selbst.

Letztlich hatte sich für mich daher abgezeichnet, das Java besser sein könnte als Python. Den Ausschlag hatte dann tatsächlich gegeben, das ich die vielzitierte Einfachheit von Python zwar attraktiv fand, dann aber die Struktur (also den Verzicht auf Klammern z.B.) sofort als unübersichtlich wahrgenommen habe. Ich habe mir u.a. ein paar Tutorials zu Java und Python angesehen, und Java empfand ich dabei als die (für mich) "bessere" Sprache.

Ein Beispiel - in Java muss man immer angeben, ob man eine Ganzzahl oder Fließzahl verwenden will. Python erkennt beide automatisch. Python macht aber auch erstmal keinen Unterschied zwischen beiden Zahlentypen. Wenn man aber bei der Eingabe nur ganze Zahlen zulassen will (Annahme von mir) - so muss man in Java einfach den Zahlentyp passend wählen. Python muss man dann auch extra erklären, warum z.B. nur ganze Zahlen erlaubt sind, also den Typ ebenfalls festlegen - und dann wird's auch wieder komplizierter.

Das man mit Python auch große Sachen machen kann, beweisen YouTube oder EVE Online. Manche Social Medias sind in Python, andere in Java geschrieben. Und das geht beides offenbar sehr gut. Hinsichtlich der Onlinespiele wurde aber oft dazu geraten, Java oder eine C-Sprache zu nehmen. Kritisch wird es wohl immer dann, wenn Echtzeit ins Spiel kommt - das muss dann schon "ideal" konstruiert sein, besonders in Python. Zu YouTube kann man anmerken, das es zwar 24/7 läuft und interaktiv ist, aber hier werden nicht alle Nutzer in Echtzeit synchronisiert. In einem Kampfsystem bei einen MMO soll es aber je nach Methode auf Bruchteile von Sekunden ankommen, damit die Kausalketten auch richtig ablaufen. Ich kenne auch (Indi)Spiele (vmtl sogar in Java) wo der Server nicht fertig wurde mit "großen" Ereignissen, und das waren absolut keine MMO's, vllt 50-100 Spieler max.

_________

Noch allgemein zur Definition des Spiels - ich hatte woanders etwas gelesen, dass der Begriff MMO ursprünglich Spiele bezeichnete, in der nicht zehntausend Spieler aktiv sind, sondern 1 Million oder mehr. Das ist natürlich eine krasse Spannweite. In diesem Sinne würde ich das erste M einfach mal streichen. :) Also ein MO mit im besten Fall 10.000 aktiven Spielern. Das wäre schon ein Ziel, das viele auch bekannte Spiele nicht (mehr) erreichen.

Ob dann Java oder Python noch einen Unterschied in der theoretischen Geschindigkeit machen? Was mir an Java erstmal geeigneter vorkommt, waren z.B. die Servlets, denn die Hauptlast wäre bei einem Browsergame nicht im Browser/Client, sondern konzentriert auf dem Server, und dafür scheint Java gut geeignet.

Da ich beides noch nicht kann, versuche ich natürlich das zu finden was mir langfristg die besseren Möglichkeiten bietet, rein zweckorientiert... aber schwer abzuschätzen ohne Erfahrung.

_________

Zu Java und den JDK's

Sollte ich mich doch noch umentscheiden, dann, weil die Sache mit Java recht kompliziert erscheint was die Lizenz für die kommerzielle Nutzung betrifft. Es gibt zwar viele freie JDK's, aber alles was da so dranhängt ist erstmal unübersichtlich, weil ich nicht genau weiß womit ich es zu tun bekomme.

Ich suche (wenn möglich) ein JDK, das ich kostenlos nutzen kann (zumindest für die Entwicklung), aber später kommerziell nutzen darf (ggf. auch kostenpflichtig) ->> ohne den Quellcode veröffentlichen zu müssen. Speziell auch, ob man im Zweifel das OpenJDK zur Entwicklung nutzen, und dann fürs kommerzielle als Oracle JDK lizensieren kann, um den Quellcode unter Verschluss zu halten (ich sehe das in 1. Linie als Sicherheitsrisiko, ich würde die kriminelle Energie von Gamern nie unterschätzen. :hmm: )

Vorerst bin ich an AdoptOpenJDK + HotSpot hängen geblieben, den JDK's von IBM, SAP, BellSoft usw. scheint mir in eine ganz andere Richtung zu gehen.
Allerdings würde ich auch gern direkt bei Oracle bleiben, bzw. das OpenJDK nutzen.

Dazu melde ich mich evtl nochmal im Detail, aber wenn jemand dazu einen Tipp geben kann, wäre das super. :thumbsup:

MfG
Prometheus

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Prometheus« (22.04.2020, 13:33)


8

01.06.2020, 14:56

@Nox
Das man mit Python auch große Sachen machen kann, beweisen YouTube oder EVE Online.


Ohne es genauer recherchiert zu haben:
Soweit ich weiß, ist weder YouTube, noch EVE Online in Python geschrieben.
Das würde mich auch sehr wundern.^^

Habe nochmal kurz geschaut, bei EVE Online sind Teile davon in Stackless Python geschrieben:
https://de.wikipedia.org/wiki/Stackless_Python

Wikipedia gibt dazu aber auch interessante Zitate, die sehr schnell zeigen, dass Python wohl nicht die beste Wahl war:

Zitat


Ist für die Spieler abzusehen, dass sich in einem bestimmten Sonnensystem zu einer bestimmten Zeit sehr viele Spieler aufhalten werden, z. B. bei einer verabredeten Weltraumschlacht, haben sie die Möglichkeit, dies an CCP zu melden, es wird dann versucht, dieses Sonnensystem zu dem definierten Zeitpunkt auf einem eigenen physikalischen Host laufen zu lassen, sodass die Spielerfahrung für die Spieler möglichst störungsfrei abläuft.


Unter "Rezeption" auf der gleichen Seite:

Zitat


Mangelnde Spielleistung, Lag

Die Server geraten bisweilen an die Grenze ihrer Leistungsfähigkeit (Lag). Dabei macht sich negativ bemerkbar, dass alle Spieler denselben Servercluster benutzen. Spieltechnisch wird dies dadurch umgangen, dass die Spielgeschwindigkeit durch Zeitdilatation auf bis zu 10 % reduziert wird, um zumindest den Spielfluss zu erhalten.



Ob dann Java oder Python noch einen Unterschied in der theoretischen Geschindigkeit machen? Was mir an Java erstmal geeigneter vorkommt, waren z.B. die Servlets, denn die Hauptlast wäre bei einem Browsergame nicht im Browser/Client, sondern konzentriert auf dem Server, und dafür scheint Java gut geeignet.


Ja, denn Java wird zur Laufzeit zu Assembler / Maschinencode kompiliert (ich meine nicht den Java Compiler, sondern den C1 & C2 Compiler), Python wird m.W. noch interpretiert.


Zu Java und den JDK's

Sollte ich mich doch noch umentscheiden, dann, weil die Sache mit Java recht kompliziert erscheint was die Lizenz für die kommerzielle Nutzung betrifft. Es gibt zwar viele freie JDK's, aber alles was da so dranhängt ist erstmal unübersichtlich, weil ich nicht genau weiß womit ich es zu tun bekomme.


Es ist eig. ganz einfach:
Das OracleJDK ist für kommerzielle Nutzung und kostet Geld, enthält dafür aber Long-Term-Support, das OpenJDK (und andere wie AdoptJDK usw.) sind Open Source und für private & kommerzielle Nutzung geeignet. Dafür gibt es aber keinen Long-Term-Support, d.h. wenn du jetzt z.B. noch das alte Java 8 nehmen willst, dann würdest du wahrscheinlich nur noch mit dem OracleJDK Updates bekommen - wobei das auch nicht 100% stimmt, denn Red Hat hat wohl angekündigt, auch LTS Updates der alten Java Versionen zu finanzieren.

Übrigens unterscheidet sich der Code zwischen OracleJDK & OpenJDK kaum, beides wird hauptsächlich von Oracle finanziert & entwickelt, aber für Oracle ist es ja auch irgendwie Quatsch, gleich 2 JDKs zu supporten - deshalb ist nur noch das OpenJDK kostenlos.


Ich suche (wenn möglich) ein JDK, das ich kostenlos nutzen kann (zumindest für die Entwicklung), aber später kommerziell nutzen darf (ggf. auch kostenpflichtig) ->> ohne den Quellcode veröffentlichen zu müssen.


Dafür kannst du nahezu jedes JDK verwenden (am populärsten ist das OpenJDK oder AdoptJDK), außer das OracleJDK.
Den Quellcode musst du übrigens m.W. nirgends veröffentlichen.

Btw, ich glaube rein in der Entwicklung brauchst du auch für das OracleJDK keine Lizenz bezahlen.


Vorerst bin ich an AdoptOpenJDK + HotSpot hängen geblieben, den JDK's von IBM, SAP, BellSoft usw. scheint mir in eine ganz andere Richtung zu gehen.
Allerdings würde ich auch gern direkt bei Oracle bleiben, bzw. das OpenJDK nutzen.


Wie gesagt, OracleJDK und OpenJDK unterscheiden sich m.W. vom Code her nicht bzw. nicht merklich.
Es geht hauptsächlich um den Support.
Indie Game-Dev Programmierer beim 2D MMORPG Pentaquin | Pentaquin Foren Vorstellung

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

9

05.06.2020, 13:10

Zitat

Ohne es genauer recherchiert zu haben:
Soweit ich weiß, ist weder YouTube, noch EVE Online in Python geschrieben.
Das würde mich auch sehr wundern.^^

...ernsthaft?

Zitat von »"https://en.wikipedia.org/wiki/YouTube"«

Written in Python (core/API),[3] C (through CPython), C++, Java (through Guice platform),[4][5] Go,[6] JavaScript (UI)



bzgl. "Python nicht die beste Wahl war": Rate mal warum ziemlich alle MMOs (z.B. auch WoW) auf Instancing und load balancing setzen. Tipp: Es liegt mit großer Sicherheit nicht an den verwendeten Sprachen. Übrigens finde ich es erschrecken mit welchen falschen Vorstellungen und Vorurteilen da viele rangehen. Klar, wenn man nur Hämmer kennt, dann beschwert man sich schnell mal über die mangelnde Schlagkraft eines Schraubenziehers. Doch man sollte halt versuchen Schraubenzieher bei Schrauben und Hämmer bei Nägeln zu verwenden.
So hält es z.B. auch Alphabet's Kinder (google und co.) und die sind sicher keine Nasenbohrer: https://en.wikipedia.org/wiki/Programmin…opular_websites . Wie einem übrigens schnell auffallen wird, kommt nur selten eine einzige Sprache zum Einsatz, sondern mehrere und Python ist gerade bei Kontrollfluss bzw. als glue sehr effektiv - wenn man denn damit umgehen kann.
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

Werbeanzeige