Python Spiele

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
ArcturusMengsk
User
Beiträge: 2
Registriert: Freitag 9. April 2010, 14:35

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.
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

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.
Pascal
User
Beiträge: 271
Registriert: Samstag 4. April 2009, 22:18

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.
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 :roll:, 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ß
Peter Gerlach
User
Beiträge: 24
Registriert: Donnerstag 14. Februar 2008, 18:16

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
ArcturusMengsk
User
Beiträge: 2
Registriert: Freitag 9. April 2010, 14:35

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?
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Python wird in einigen Spielen genutzt, siehe "Spiele" Abschnitt hier:
http://wiki.python-forum.de/Wer%20nutzt%20Python

IMHO allerdings ehr für Spiellogik...

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
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.
bords0
User
Beiträge: 234
Registriert: Mittwoch 4. Juli 2007, 20:40

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.
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.
BlackJack

@problembär: Und? Was ändert das an meiner Aussage?
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

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
[url=http://29a.ch/]My Website - 29a.ch[/url]
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
Antworten