Ist es eine gute Idee, ein nicht triviales 2D-Spiel in Python zu entwickeln? [geschlossen]

10

Ich plane die Entwicklung eines 2D-Weltraum-Rollenspiels und stehe vor der Wahl: In welcher Sprache kann ich es am besten schreiben? Meine Kandidaten sind C ++, Java und Python. Natürlich möchte ich ein Spiel in Python schreiben, weil es ausdrucksstark, schnell entwickelt und einfach Skriptunterstützung bietet. Aber ich mache mir Sorgen:

  • Wird Python nicht zu langsam sein? Das Spiel ist nicht trivial (wie zum Beispiel Tetris), es kann erforderlich sein, um Aufgaben für Tausende von Schiffen im Universum zu berechnen (obwohl ihre KI stark vereinfacht werden kann, wenn diese Schiffe für den Spieler nicht sichtbar sind). Natürlich kann ich einige wichtige Teile in C schreiben, aber das Erstellen und Bereitstellen wird sofort erschwert.
  • Nehmen wir an, das Spiel wurde populär und ich wurde ein Superstar. Windows-Benutzer haben selten Python (zum Glück haben wir py2exe). Python unter Mac OS X kann veraltet sein und das Spiel kann mit obskuren Ausnahmen abstürzen. Wäre es nicht schwierig, ein Spiel in Python bereitzustellen?
  • Wegen des Mangels an Bibliotheken für Python 3 muss ich ein Spiel in Python 2 schreiben. Wäre der Übergang zu Python 3 in ein paar Jahren nicht zu schmerzhaft und zeitaufwändig?
Anton Barkovsky
quelle
Bei Ihrer zweiten Frage bin ich mir ziemlich sicher, dass es auch eine py2app gibt, mit der Sie die Bereitstellung ziemlich einfach gestalten können.
Thedaian
1
Wenn Sie sich dazu in Python entscheiden, möchten Sie vielleicht sehen, ob Sie einen der "langsamen" Teile mit numpy ausführen können (dies ist jedoch möglicherweise nicht erforderlich).
Brendan Long

Antworten:

8

Wird Python nicht zu langsam sein? Das Spiel ist nicht trivial (wie zum Beispiel Tetris), es kann erforderlich sein, um Aufgaben für Tausende von Schiffen im Universum zu berechnen (obwohl ihre KI stark vereinfacht werden kann, wenn diese Schiffe für den Spieler nicht sichtbar sind). Natürlich kann ich einige wichtige Teile in C schreiben, aber das Erstellen und Bereitstellen wird sofort erschwert.

Es ist schwer zu sagen, aber meistens ist der limitierende Faktor für die Leistung die Fähigkeit / Erfahrung eines Entwicklers, nicht die Sprache. Beachten Sie, dass EVE Stackless Python verwendet (siehe hier und hier zum Herunterladen einer verwandten Präsentation). Ich erinnere mich nicht an die genauen Details, aber anscheinend läuft auf den meisten Serverclustern Python . Ich würde mir daher vorstellen, dass es Ihre Skalierbarkeitsanforderungen erfüllen könnte, obwohl Prototyping sicher gut wäre.

Windows-Benutzer haben selten Python (zum Glück haben wir py2exe). Python unter Mac OS X kann veraltet sein und das Spiel kann mit obskuren Ausnahmen abstürzen. Wäre es nicht schwierig, ein Spiel in Python bereitzustellen?

Die meisten Benutzer haben selten die entsprechenden binären Abhängigkeiten für Spiele, unabhängig davon, in welcher Technologie diese Spiele geschrieben wurden (selbst in C muss eine Laufzeitkomponente verteilt werden). Die Bereitstellung über py2exe oder eine gleichwertige Version oder einfach die Bereitstellung der entsprechenden Abhängigkeit ist eine Tatsache. Es ist zwar nie die einfachste Sache (die meisten Installer-Technologien sind schmerzhaft), aber machbar und sollte kein Grund sein, die Sprache zu meiden - wie gesagt, Sie müssen wahrscheinlich trotzdem mit etwas Ähnlichem umgehen.

Wegen des Mangels an Bibliotheken für Python 3 muss ich ein Spiel in Python 2 schreiben. Wäre der Übergang zu Python 3 in ein paar Jahren nicht zu schmerzhaft und zeitaufwändig?

Ich weiß nicht viel darüber, da ich Python 3 noch nie wirklich benutzt habe. Ich gehe jedoch nicht davon aus, dass Python 2.X bald verschwinden wird, daher vermute ich nicht einmal, dass die Lebensdauer Ihres Spiels so sein würde, dass Sie es tun würden Ich müsste übergehen, wenn Sie nicht wollten, was dieses Problem zu einem Nicht-Problem macht.

Wie andere bereits gesagt haben, sorgen Sie sich zu sehr um den Aspekt der Sprachauswahl in Ihrem Projekt. Python ist ein leistungsstarkes und nützliches Tool für die Entwicklung von Spielen. Wenn Sie es kennen und mögen, sollten Sie es entwickeln. Es spielt keine Rolle, wie schnell Ihr Spiel läuft, wenn es nie fertig wird, weil Sie sich zu viele Sorgen um die Sprache gemacht haben.


quelle
Nachdem Sie Python 2.7 ziemlich häufig verwendet haben, können Sie mit Python 3.2+ nicht viel tun, was Sie mit 2.7 nicht tun können. Das wird sich im Laufe der Zeit ändern, aber auch die Unterstützung der Bibliothek. =)
Ken
14

Bis zu Ihrem ersten Punkt müssen Sie nur einen Prototyp erstellen und sehen. Selbst wenn Sie uns alle Details erzählen würden, die die Dinge nicht wirklich ändern würden.

Was die anderen beiden Punkte betrifft, habe ich das Gefühl, dass Sie den Karren vor das Pferd stellen. Aus Ihrer Frage geht hervor, dass Sie neu in der Spieleentwicklung sind. In diesem Fall müssen Sie wirklich nur ein Tool auswählen und loslegen. Das Nitpicking über die Vor- und Nachteile der meist gleichermaßen nützlichen Tools ist eine Ablenkung von Ihrer eigentlichen Herausforderung: dem Erlernen der Spieleentwicklung.

jhocking
quelle
0

Zu # 3 wird Python 2.x für mindestens weitere 5-10 Jahre Distributorenunterstützung erhalten. Wenn Sie eine relativ neue Version (2.7 oder möglicherweise 2.6) verwenden, ist der Migrationspfad ziemlich einfach, wenn Sie zukunftssicheren Code schreiben (Objekt neuen Stils, überall Unicode usw. usw.). Der Schmerz ist hauptsächlich für Dinge, die auf alten, gebrochenen Verhaltensweisen beruhten.

Codierer
quelle
Um alte Verhaltensweisen zu identifizieren, die Sie beißen, führen Sie Ihr Spiel mit aus python -3 filename.py, das Warnungen für Dinge
ausgibt,