Du bist nicht angemeldet.

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)


Werbeanzeige