Spieleprogrammierung / Grafikprogrammierung

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
gR33n]bLoOd[
Beiträge: 4
Registriert: Sa 24. Mai 2008, 14:04
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: NRW
Kontaktdaten:

Spieleprogrammierung / Grafikprogrammierung

Beitrag von gR33n]bLoOd[ »

Hallo liebe Lazarus Gemeinde,

da ich ja nun Lazarus zum laufen gebracht habe und auch schon erste Schritte erfolgreich absolviert habe (nach elendig langer suche) möchte ich mich nun an ein kleines Spiel heranwagen.

Ich bin sehr bewandert im Bereich HTML, kann auch kleine VB Programme proggen, jedoch is Pascal für mich Neuland. Diverse Einstiegstutorials habe ich zwar gefunden, aber leider gehen diese nicht auf Spieleprogrammierung oder Grafikprogrammierung ein. Ich habe nun schon 2 Tage (nach der Arbeit n paar Stunden) gegoogelt und auch andere Suchmaschienen genutzt, sowie auch Forensuchen - doch ich bin auf nichts gutes gestoßen.

Ich muss dazu sagen das ich mich bisher noch nie getraut habe nen Spiel ernsthaft ins Auge zu fassen. Nur kleinere Programme wie Taschenrechner oder auch ein Spiel wie Dopewars habe ich umgesetzt. (Dopewars ist nen ganz simples Game fürs Handy wonach meine Freunde und ich immer süchtig waren bzgl. Highscores).

Mein Plan ist nix großes denn dafür braucht man nicht nur sau viel Erfahrung, sondern auch sehr viel Zeit. Ich möchte ledeglich die Grundprinzipien wie man nen Spiel in Pascal programmiert erlernen. Dabei scheint es mir am sinnvollsten ersteinmal mit etwas wie einem rundenbasierten Strategiespiel anzufangen. Jedoch ist mein erstes Problem beispielsweise das ich zwar ne Bitmap oder nen JPG als landschaft nutzen könnte, dann per Klick auf nen Button oder per Drag & Drop vll nen Gebäude auf diese Map schieben könnte, aber ich brauch ja auch eine Art Gitternetz oder raster, welches die Bilddatei (die Map) differenziert und in Felder aufteilt, sodass ich dann mit bestimmten rechenbefehlen Bewegungen durchführen kann.

Also lange rede kurzer Sinn: Kennt irgendjemand ein gutes Tutorial, welches mir den Einstieg erklären kann? Vom logischen denken her ist mir der Aufbau eines solchen Spieles relativ klar und ich hab schon Skizzen angefertigt, aber an der Umsetzung scheitert es halt.

Mir bringt es nichts immer diese Grundlagen zu lesen wie ich Schleifen etc mache, denn im Prinzip ist es dasselbe wie in VB nur mit anderer Syntax....

Ich hoffe ihr wisst was ich meine und ich hoffe das die Frage noch nicht hier im Forum exestiert... Ich habe mich nämlich wirklich ausführlich vorher mit der Suche beschäftigt - wie oben beschrieben ;)

Es soll wirklich nur ersteinmal etwas sehr billiges, einfaches sein, welches mir halt nen Einstieg gibt. Ich wäre auch gerne bereit nen simplen Beispiel code zu analysieren =)

Danke schonmal im vorraus!!!!

Mit freundlichem Gruß

ToniCE
Beiträge: 12
Registriert: Mo 31. Dez 2007, 11:13
OS, Lazarus, FPC: Slackware Linux | Windows XP 32bit (beide Laz 0.9.26 FPC 2.2.2)
CPU-Target: 32Bit
Wohnort: NRW
Kontaktdaten:

Beitrag von ToniCE »

Ich werfe nur ein paar Adressen ein... Vielleicht hilft dir das schon weiter. :)
http://www.saschawillems.de/?page_id=75" onclick="window.open(this.href);return false; (Auf der Seite gibt's auch Sourcen von anderen Games des Autors)
http://www.delphigl.com" onclick="window.open(this.href);return false;
http://andorra.sourceforge.net/" onclick="window.open(this.href);return false;

Euklid
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 10:38
OS, Lazarus, FPC: Lazarus v2.0.10, FPC 3.2.0
Wohnort: Hessen
Kontaktdaten:

Beitrag von Euklid »

Hallo greenblood,

ich würde dir vorschlagen, einfach mal in den Code eines in Lazarus programmierten "kleinen" Spiels hineinzuschaun. Zum Beispiel in "Robot - The Game":

http://wiki.lazarus.freepascal.org/Robot_-_The_Game/de" onclick="window.open(this.href);return false;

Hier kannst du dir den Quelltext angucken und schaun, wie so ein Spiel "von Innen" aussieht. Glaube, der Autor hat auch ein Tutorial geschrieben, welches Teile des Spiels erklärt.

Einen Überblick über einige Möglichkeiten, die man mit Lazarus hinsichtlich der Spieleprogrammierung nutzen kann, gibt es hier:

http://wiki.lazarus.freepascal.org/Laza ... rs_Edition" onclick="window.open(this.href);return false;

Wenn du für OpenGL entwickeln willst, ist auf dieser Seite "GLScene" für dich wahrscheinlich interessant.

Na dann mal viel Erfolg beim Programmieren!

Euklid

creed steiger
Beiträge: 958
Registriert: Mo 11. Sep 2006, 22:56

Beitrag von creed steiger »

http://www.pascalgamedevelopment.com/" onclick="window.open(this.href);return false;

bembulak
Beiträge: 370
Registriert: Di 6. Feb 2007, 09:29
OS, Lazarus, FPC: L0.9.29 SVN:24607 FPC 2.4.0-32 bit @ Win XP SP3
CPU-Target: 32bit i386, ARM
Wohnort: Oberösterreich

Beitrag von bembulak »

http://www.robsite.de" onclick="window.open(this.href);return false; liefert viele und allgemeine Infos zum Thema Spieleprogrammierung. Meinen Vorrednern kann ich mich nur anschließen. Das Meiste wurde gesagt.
Ich bentutze allerdings ne andere Lib:

http://allegro-pas.sourceforge.net/" onclick="window.open(this.href);return false;

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

auf http://www.delphigl.com" onclick="window.open(this.href);return false; findest du ein "Bomberman Clone" mit Tutorial und auch mit einem Level Editor. Ist zwar OpenGL aber evlt. ist das ja was für dich.

Für einfache 2D Spiele habe ich mir eine kleine 2D Engine geschrieben. Sie hat zwar unter Windows seltsame Probleme
da findet sie eine oder mehrer Dateien nicht. Aber unter Linux läuft sie(Leider lässt sich das Problem auch nicht mit WINE lösen, weil dort tritt der Fehler nicht auf). Dabei nutzt ich nur Standard Funktionen. Auch die Erweiterung für OpBitmap ist "freiwillig".

Evlt. ist das ja was für dich. Die Engine ist sehr leicht aufgebaut. Hier habe ich eine Version mal hochgeladen:
http://www.lazarusforum.de/viewtopic.php?t=1456" onclick="window.open(this.href);return false;
Ich meine dort ist auch ein Beispiel dran. Einfacher geht es meiner Meinung gar nicht.

Wenn du die Engine nutzen möchtest müsste ich mal schauen warum diese Fehler Meldung kommt.
(Wenn du Windows nutzt). Für ein "Rollen Spiel" sollte die Engine eigentlich schon Ausreichen.
Das Prinzip ist sehr einfach gehalten von der Engine. Die nutzt nur Canvas.
MFG
Michael Springwald

pierredrks
Beiträge: 34
Registriert: Do 4. Okt 2007, 18:35
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Braunfels

Beitrag von pierredrks »

Die Allegro.pas funktioniert nur leider nicht unter Linux. Ich kann dir Andorra2d empfehlen. Der Link wurde weiter oben von ToniCE schon angegeben.
Das Herz besitzt Gründe, die die Vernunft nicht kennt.

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Ja Andorra2d ist nicht schlecht läuft sogar unter Linux und Windows, und verwendet OpenGL oder DX je nach Einstellung. Ich hatte mich damit mal befasst bin aber nicht weit gekommen. Evlt. hast du ja mehr glück.
MFG
Michael Springwald

gR33n]bLoOd[
Beiträge: 4
Registriert: Sa 24. Mai 2008, 14:04
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: NRW
Kontaktdaten:

Beitrag von gR33n]bLoOd[ »

Wow, ersteinmal ein richtig fettes >> DANKE !!!! << an alle! Hätte nicht mit sovielen super guten Hilfen gerechnet. Leider kam ich bisher noch nicht dazu mir etwas anzuschauen, aber ich werde morgen direkt nach der Arbeit (*kotz*) mich etwa ab 14 Uhr daran machen und jeden Link und jedes Programm mal duchzuschnüffeln und mir dann das richtige raussuchen. Ich denke da MUSS ja was passendes bei sein - wie ihr auch schon erwähnt habt!

Eine bessere Hilfe kann man echt nicht erwarten! Ich kann das Forum nur loben und sagen macht weiter so - SPITZE !!! =)

Melde mich dann in ein paar wenigen Tagen nochmal wenn ich was passendes gefunden habe oder ein paar Fragen aufkommen - ich kämpf mich ersteinmal durch ;)

Mit freundlichen Grüßen

bembulak
Beiträge: 370
Registriert: Di 6. Feb 2007, 09:29
OS, Lazarus, FPC: L0.9.29 SVN:24607 FPC 2.4.0-32 bit @ Win XP SP3
CPU-Target: 32bit i386, ARM
Wohnort: Oberösterreich

Beitrag von bembulak »

Ich würde es sehr begrüßen, wenn wir unsere Erfahrungen diesbezüglich ein wenig bündeln könnten. Es gibt viele Bruchstücke and Infos zur Spieleprogrammierung und auch sehr viele fortgeschrittene Dinge. Die Links dazu wurden schon gepostet. Was aber meiner Meinung nach fehlt sind "Wegweiser" für Einsteiger.
Also nicht nur: wie bringe ich ein Bild auf den Schirm, sondern wie gestalte und Plane ich ein Spiel? Wie lege ich meine Verzeichnisse an, wie teile ich Units ein? Welche Klassen und Funktionen brauche ich? Muss ich vorher Farmen?

Euklid
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 10:38
OS, Lazarus, FPC: Lazarus v2.0.10, FPC 3.2.0
Wohnort: Hessen
Kontaktdaten:

Beitrag von Euklid »

Wenn sich Leute finden würden, die so einen Wegweiser zusammenstellen wollen, wäre das bestimmt ein schönes Projekt für die LazInfos...

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6811
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Beitrag von af0815 »

Euklid hat geschrieben:Wenn sich Leute finden würden, die so einen Wegweiser zusammenstellen wollen, wäre das bestimmt ein schönes Projekt für die LazInfos...
Ich bin sicher dabei :-)

Vor allen ist es auch interessant mal was abseits von DBs zu machen.
bembulak hat geschrieben:Also nicht nur: wie bringe ich ein Bild auf den Schirm, sondern wie gestalte und Plane ich ein Spiel?
Das ist sicherlich das schwierigste bei den 'Projekten'. Wie hat der letzte Vortragende bei einem Kurs so gemeint. Die Programmierer mal ein paar Wochen spielen lassen, dann den Code schmeissen und dann sehen wie man es richtig macht.

Ich finde er hat recht.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
theo
Beiträge: 10895
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

af0815 hat geschrieben: Das ist sicherlich das schwierigste bei den 'Projekten'. Wie hat der letzte Vortragende bei einem Kurs so gemeint. Die Programmierer mal ein paar Wochen spielen lassen, dann den Code schmeissen und dann sehen wie man es richtig macht.

Ich finde er hat recht.
Finde ich auch. Aber das "spielen" ist keine Zeitverschwendung.
Erst mal schauen "was geht" ist enorm wichtig für die spätere genauere Planung.
Die Reissbrettplanung kann man imo nur machen, wenn man die Materie schon im Schlaf kennt.

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Ja ! Am besten an einem Beispiel rum spielen. Das habe ich mal mit einem Snake-Clone gemacht den ich erweiterte habe. Evltl sollten wir uns auch auf ein ganz Simples spiel beschränkten.

Die Frage ist auch was verwenden wir ? OpenGL ? Canvas ? SDL ?
Ich währe ja für Canvas, weil ich meine für 2D Spiele reicht das erstmal aus. Oder halt SDL währe noch eine schöne alternative wobei es mich stört das es nur in einem Exter Fenster abgespielt werden kann. OpenGL läuft ja leider nicht überall unter Linux.

Sonst könnten wir auch eins für OpenGL machen.
Ich hatte mal ein Spiel für zwei oder drei LIBS gemacht: GLXTreen(OpenGL) DelphiX(DirectX), Canvas. *G*.

Ich finde bei der Spiele Programmierung ist Voralarm die interne Struktur am wichtigsten.
oder auch diese Fragen:

Wo finde ich Grafiken für mein Spiel ? Selbst erstellen ? Wenn ja womit ?
Wo finde ich Hintergrund Musik ?
Wo finde ich Sound Dateien ?
Wo finde ich Hintergrund Bilder ?

Wie Fasse ich meine Idee in einen Soruce-Code ein ?
Schreibe ich den Soruce-Code nur mit Objekten ?
Z.B. OOP jetzt....

Wie finde ich heraus ob und wann welche Objekte Zusammenstoßen ?
Sollte ich erstmal auf eine Fertige Lib aufsetzten ?
(Hierfür soll es ja reichlich geben für Lazarus)

Soll das Spiel Scrollen können ?
Welche GUI Verwende ich für mein Spiel ?
Schreibe ich eine eigene ? Nutzte ich eine Vorhandene ?
Welche Sound Lib nutzte ich ? FMOD ? XINE ? einen Externen Player ?

Sollte das Spiel in DLLS/SO Dateien verpackt werden(habe ich noch nie gemacht) ?
Sollten die Daten die das Spiel verwendet in ein ZIP oder in ein eigenes Archiv Format rein ?

So, diese Fragen gelten als Anregungen.
Vieler diese Fragen habe ich schon bei meiner "2D Engine" beantwortet für mich:
Jedes Objekt ist ein Sprite. und wird in einer Liste(Den Sprite manger) gepackt.
Der Spriter Manger kümmert sich auch um die Kollisions Abfragen. Dazu stehen verschiedene Varianten zuverfügung.

Alle Grafiken die im Spiel verwendet werden können, werden über eine ID angesprochen, welche in einer ImageList(XML Datei) drin stehen müssen. Es werden auch Tile-Sets unterstützt. dank OpBitmap werden auch viele Grafik Formate unterstützt.
Die GUI ist leider noch nicht fertig, aber schon sehr weit und ich schreibe immer noch weiter. sie besitzt jetzt 23 Komponenten. Von den viele schon recht gut Funktionieren.

Letztendlich könnte man sie schon für einfache 2D Spiele verwenden. Aber dann würde es eine Bindung geben die ich berücksichtigen müsste.

Die 2D Engine habe ich geschrieben um einfache 2D Spiele zu erstellen. und währe prima für so ein zweck geeignet. weil mit wenig code ein einfaches Spiel erstellt ist. *Freu*
MFG
Michael Springwald

bembulak
Beiträge: 370
Registriert: Di 6. Feb 2007, 09:29
OS, Lazarus, FPC: L0.9.29 SVN:24607 FPC 2.4.0-32 bit @ Win XP SP3
CPU-Target: 32bit i386, ARM
Wohnort: Oberösterreich

Beitrag von bembulak »

:roll:

Antworten