Seite 1 von 1
Python Spiele
Verfasst: Freitag 9. April 2010, 15:33
von ArcturusMengsk
Hallo Leute,
ich bin neu in der Welt der Programmierung, also verzeiht meine Noob Fragen:
Ich will kleine Spiele in Python programmieren. Beim Schmökern diverser Seiten, habe ich festgestellt, dass ich dafür zusätzliche Bibliotheken benötige, zusätzlich zur Standardbibliothek.
Allerdings kenne ich mich in dem Biblitheken Dschungel nicht aus:
Da gibts einmal GUI Biblitheken wie PyQT oder wx etc.
Dann gibts anscheinend noch extra für Spiele Biblitheken wie PyGame oder PyGL. Was brauche ich denn nun wirklich? PyGame kommt mir z.B.: bisschen langsam vor. Auf meinem alten Laptop laggen selbst kleine Spiele, die ich bis jetzt heruntergeladen habe.
Ich habe bereits ein komplettes Python Buch verschlungen, allerdings finde ich es schwer das gelernnte von den kleinen Beispielen wie Pascalsches Dreieck, nun auf größere Projekte zu transferieren. Gibt es vielleicht ein Tutorial, wo ein kleines Spiel programmiert wird.
Re: Python Spiele
Verfasst: Freitag 9. April 2010, 15:53
von numerix
ArcturusMengsk hat geschrieben:Ich will kleine Spiele in Python programmieren. Beim Schmökern diverser Seiten, habe ich festgestellt, dass ich dafür zusätzliche Bibliotheken benötige, zusätzlich zur Standardbibliothek.
Kann man so nicht sagen. Du kannst auch prima Spiele programmieren ohne zusätzliche Bibliotheken. Sieht dann aber vermutlich nicht so aus, wie du dir ein "Spiel" vorstellst.
Wenn es dir darum geht, eine Programmiersprache (z.B. Python) vernünftig zu lernen, dann ist es durchaus sinnvoll, zunächst einmal mit Konsolenprogrammen (-spielen) zu beginnen.
Ganz einfaches Beispiel: Zahlenraten.
Das kannst du z.B. ergänzen durch eine Zeitmessfunktion, die Möglichkeit, eine Bestenliste in einer Datei zu verwalten etc.
Etwas anspruchsvoller: Vier gewinnt.
Verfasst: Freitag 9. April 2010, 21:35
von Pascal
Für Spiele wie Pong oder Tic Tac Toe recht Tkinter völlig aus.
Wenn du sowieso erst mit Python angefangen hast, solltest du den Ratschlag von numerix befolgen und auf eine GUI erstmal verzichten.
Verfasst: Samstag 10. April 2010, 01:51
von problembär
PyGame bildet soweit ich weiß eine Schicht, die auf die darunterliegende SDL-Bibliothek (in C/C++) zugreift (eine freie Alternative zu MS DirectX).
Das ist doch eigentlich ein ganz guter Ansatz.
Es ist dann halt so schnell, wie es dieser Ansatz eben ermöglicht.
Schätze, das Problem liegt an Python selbst

, die meisten Linux-2D-Spiele verwenden ja ebenfalls SDL, aber eben direkt mit C/C++.
Mit PyGame geht dann eben (nur) sowas wie
Solar Wolf oder
Barbie Seahorse Adventures, also etwa auf dem Niveau von
Atari VCS 2600
SolarWolf is originally based of one of my childhood favorites, SolarFox on the Atari 2600.
oder 8-Farben-Grafik a la Sinclair ZX Spectrum (Barbie ...).
Heute tatsächlich nicht sehr beeindruckend.
Allerdings: Die 8-Bit-2D-Klassiker wurden auf sehr gut bekannten Maschinen in
Assembler von kommerziellen Profi-Teams geschrieben. Das ist auch heute nicht ganz leicht in einer Hochsprache nachzumachen.
Die Schwierigkeit bei Spieleprogrammierung ist sowieso eher, daß man "Kreative" braucht, also Grafiker, die tolle Animationen zeichnen und Sound-Leute wie Sprecher, Musiker usw.. Meistens ist das zu aufwendig, um es kostenlos zu machen. Daher hat man im OpenSource-Bereich eher so Sachen wie
SuperTux, was ja auch irgendwie ganz nett ist, aber einen meist nicht so recht vom Hocker haut. Ist schon schwierig ...
Gruß
wie groß stellst Du Dir "kleine Spiele" vor
Verfasst: Samstag 10. April 2010, 06:36
von Peter Gerlach
Pascal hat geschrieben:Für Spiele wie Pong oder Tic Tac Toe recht Tkinter völlig aus.
Wenn du sowieso erst mit Python angefangen hast, solltest du den Ratschlag von numerix befolgen und auf eine GUI erstmal verzichten.
sonst schau doch mal hier:
http://www.way2python.de/fun/fun.html
Verfasst: Samstag 10. April 2010, 08:54
von ArcturusMengsk
Vielen Dank für die schnellen Antworten.
@Problembär: Irgendwo habe ich gelesen, dass in Python sogar richtige 3D Shooter programmiert wurden. Wenn das mit PyGame nicht möglich ist, wie wird das dann gemacht? Brauche ich PyGame überhaupt? Mit GUI Biblitheken kann man doch auch so kleine Spiele machen?
Verfasst: Samstag 10. April 2010, 08:58
von jens
Python wird in einigen Spielen genutzt, siehe "Spiele" Abschnitt hier:
http://wiki.python-forum.de/Wer%20nutzt%20Python
IMHO allerdings ehr für Spiellogik...
Verfasst: Samstag 10. April 2010, 09:52
von Leonidas
ArcturusMengsk hat geschrieben:@Problembär: Irgendwo habe ich gelesen, dass in Python sogar richtige 3D Shooter programmiert wurden. Wenn das mit PyGame nicht möglich ist, wie wird das dann gemacht?
Panda3D oder PyOgre.
Verfasst: Samstag 10. April 2010, 10:41
von BlackJack
@problembär: Das was Du da über PyGame und Spiele in Assembler schreibst ist ziemlicher Blödsinn. In Assembler hätte man genau die gleichen Probleme wenn man auf die SDL aufsetzt. Die Anzahl der Farben hat hier auch nur bedingt etwas mit der Geschwindigkeit zu tun bzw. unter Umständen genau entgegengesetzt dem was Du suggerierst. Wenn man 256 Farben mit Index in eine Farbtabelle benutzt, dann ist das eventuell sogar langsamer als "truecolor", denn dahin muss das dargestellte Bild zusätzlich hochgerechnet werden, wenn man es in einem Fenster auf einem Desktop darstellt der 24- oder 32-Bit pro Pixel eingestellt hat.
Wenn PyGame und damit SDL zu langsam ist, dann ist entweder der Rechner zu schwach und/oder hat aus irgendwelchen Gründen keine 2D-Beschleunigung. Der Flaschenhals ist hier dann die Datenübertragung vom Hauptspeicher in den Grafikkartenspeicher. Das liegt aber nicht an Python.
Verfasst: Sonntag 11. April 2010, 17:52
von bords0
BlackJack hat geschrieben:Wenn PyGame und damit SDL zu langsam ist, dann ist entweder der Rechner zu schwach und/oder hat aus irgendwelchen Gründen keine 2D-Beschleunigung. Der Flaschenhals ist hier dann die Datenübertragung vom Hauptspeicher in den Grafikkartenspeicher. Das liegt aber nicht an Python.
Meine Erfahrung ist eine andere. Aufrufe von selbstgeschriebenem Pythoncode -> PyGame -> SDL sind der Flaschenhals. Wenn man - aus der Erinnerung heraus - 40 x 25 Blits für einen Frame macht, kommt man schon auf keinen grünen Zweig mehr.
Verfasst: Sonntag 11. April 2010, 19:22
von problembär
BlackJack hat geschrieben:In Assembler hätte man genau die gleichen Probleme wenn man auf die SDL aufsetzt.

Zu Zeiten der 8-Bit-Assembler-Coder gab es SDL oder DirectX noch gar nicht.
Verfasst: Sonntag 11. April 2010, 19:37
von BlackJack
@problembär: Und? Was ändert das an meiner Aussage?
Verfasst: Montag 12. April 2010, 10:36
von veers
Für etwas einfaches mag Pygame nett sein, für alles andere empfehle ich Pyglet und Opengl.
Das es mit Pygame/SDL nicht möglich sein soll modernere 2D Games zu machen halte ich jedoch für falsch.
problembär, Es gibt im Opensource Bereich auch Spiele wie
Nexuiz oder
Sauerbraten oder
Planeshift. Ja dazu braucht es mehr als, Coder, aber möglich ist es dennoch.
Gruss,
Jonas