SDL direkt in Python einbinden

Hier werden alle anderen GUI-Toolkits sowie Spezial-Toolkits wie Spiele-Engines behandelt.
Antworten
NilsV
User
Beiträge: 30
Registriert: Dienstag 17. August 2010, 12:35

Moin,

ich habe nach Möglichkeiten gesucht, wie man in Python 3 Spiele/Grafikprogramme Programmieren kann. Besonders interessieren tun mich SDL und OpenGL. Dabei bin ich über eine Menge Module gestolpert (pySDL, pygames, turtle, ...) die teilweise nur für Python 2.x verfügbar sind, oder nur eine beschränkte Auswahl der Möglichkeiten zu nutzen scheinen, die SDL oder OpenGL zu bieten haben.

Naiv wie ich manchmal bin, habe ich dann einfach mal geschaut ob man SDL oder OpenGL nicht einfach direkt in Python einbinden kann und bin (glaube ich) fündig geworden.

Ich habe Python nach der SDL Library suchen lassen und diese dann importiert. Zum testen habe ich einen einfachen SDL Befehl gestartet (das ändern der Bildschirmauflösung auf 800 x 600), das ganze gestartet und tatsächlich hat sich die Auflösung meines Monitors entsprechend verstellt. Hier ist das Testscript:

Code: Alles auswählen

from ctypes.util import find_library
from ctypes import cdll

sdl = find_library("SDL")
sdl = cdll.LoadLibrary(sdl)

display = sdl.SDL_SetVideoMode( 800, 600, 16)
Kann/darf man das auf diesem Weg machen? Habe ich damit jetzt in Python wirklich Zugang zu allen Funktionalitäten die SDL zur Verfügung stellt, oder muss neben libSDL noch etwas anderes importiert werden?

Gruß

Nils
BlackJack

@NilsV: Das kannst Du im Grunde machen -- wenn Du PyGame oder Pyglet selber noch mal neu erfinden willst.
NilsV
User
Beiträge: 30
Registriert: Dienstag 17. August 2010, 12:35

Hi,

ich habe eigentlich nicht vor ein eigenes SDL Modul zu konstruieren, was ich mich Frage ist, ob ich nicht einfach die SDL Anweisungen (so wie "sdl.SDL_SetVideoMode( 800, 600, 16)" in dem Beispiel) direkt in Python verwenden kann, anstatt mit einem externen Modul zusätzliche Abhängigkeiten ins Spiel zu bringen und davon abhängig zu sein, das diese Module auch an neue Pythonversionen angepasst werden.

So einfach scheint das aber leider nicht zu sein. Alle Tutorials und Dokumentationen die ich zu SDL finden konnte benutzen C und ich kriege es bisher bei den meisten Funktionen nicht hin diese in Python richtig anzuwenden.

P. S.
@BlackJack: Kannst Du bitte nochmal einen Blick auf mein Countdown Script werfen, ich glaube ich brauche am Ende doch noch einen Thread, zum ausführen des Externen Befehls.

Gruß

Nils
BlackJack

@NilsV: Du kannst die Funktionen mittels `ctypes` "direkt" verwenden, aber dann hast Du nur die C-API und nichts "pythonisches", also müsstest Du wenn es komfortabel benutzbar sein soll, mindestens ein Modul schreiben. Und das würde dann am Ende von der API her wahrscheinlich so ähnlich aussehen wie PyGame oder Pyglet, denn die SDL-API ist zum Beispiel trotz C schon ziemlich objektorientiert aufgebaut.

Beide Projekte machen mir nicht den Eindruck als seien sie tot. Die Gefahr, das ein Projekt einschläft, hast Du immer, aber das kann doch kein Grund sein, alles selber nochmal neu zu erfinden.
NilsV
User
Beiträge: 30
Registriert: Dienstag 17. August 2010, 12:35

Hi,

vielen Dank für die Erläuterung. Da PyGame bisher nur teilweise und Pyglet (noch) gar nicht zu Python 3 kompatibel sind, werde ich mich wohl damit anfreunden müssen mit Python 2 zu arbeiten, zumindest bei Programmen für die ich solche Module benötige.

Bieten diese Module, neben Funktionen für Spiele, eigentlich auch die nötigen Schnittstellen um 3D Objekte zu manipulieren / modelieren? Eines meiner Ziele, wegen denen ich überhaupt mit dem Programmieren angefangen habe, ist z. B. irgendwann ein eigenes kleines Sculpting Programm (Sowas wie Z-Brush oder Sculptris) realisieren zu können.

Gruß

Nils
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

Daran wird doch zB im Blenderproject zur Zeit gearbeitet, das neue Blender 2.5x unterstützt eine vollständig Python 3.1.2 API und bietet ein solches Sculpting Tool, dieses müsste auch über Python angesteuert werden können.

Aber Vorsicht die Blender API ist in der neuen Version noch unstable, dennoch ist das vieleicht was für dich. :D
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
NilsV
User
Beiträge: 30
Registriert: Dienstag 17. August 2010, 12:35

Hi,

Blender ist definitiv eines meiner Lieblings Programme, besonders gespannt warte ich auf das in Entwicklung befindliche Unlimited Clay Feature.

Aber mir geht es ja schon darum ein eigenes Programm zu schreiben, ähnlich wie Sculptris, mit ein paar zusätzlichen Features und nicht Windows only.

Dieses Projekt sieht auch recht vielversprechend aus, den bisherigen Aussagen des Entwicklers nach fürchte ich aber das es nicht Open Source wird.

Gruß

Nils
Antworten