Board - Update!

Wie Ihr sicher alle gemerkt habt, ist das Forum auf den aktuellsten Stand gebracht worden.
Technisch sollte alles gehen, sollte es aber Probleme, Wünsche oder Anregungen geben, bitte einfach hier im Thread posten!

House of Quests - Arbeitstitel

Diskussionen über Pascal-Programmierung (und Varianten davon)
Antworten
Autor
Nachricht
KidPaddle
8 Bit
Beiträge: 265
Registriert: So Mai 14, 2006 12:18
Wohnort: Bayern

House of Quests - Arbeitstitel

#1 Beitrag von KidPaddle » So Feb 12, 2012 08:12

Da ich leider keine Pandora habe, bitte ich jemanden folgendes zu testen.

http://www.seban.de/download/games/hoq/ ... Quests.zip
Bild

Das Spiel wurde zwar mit dem Caanoo - Compiler übersetzt, sollte aber auch unter der Pandora laufen. Sobald das Spiel einen spielbaren Stand hat, werde ich es für WIZ, Caanoo und Pandora bereitstellen, GP2X muss noch geprüft werden, sollte aber, bis auf mp3, auch gehen.

Beendet wird das Programm auf dem Caanoo mit gleichzeitigen betätigen von Schulter rechts und "II" - Taste.

Verwendet wurde der 2.5.1 - Zweig von FreePascal. Eine eigene kleine objektorientierte Bibliothek stellt eine Plattform - unabhängige Zwischenschicht bereit, so dass ich ohne Änderung am Quelltext für Win32, i386 Linux, GP2X, WIZ, Caanoo und Pandora entwickeln kann. Bis auf den GP2X wird SDL zur Zeit als Abstraktion verwendet, allerdings kann die Schicht ohne großen Aufwand ausgetauscht werden. iOS und Android möchte ich noch einbinden, leider gibt es Probleme mit den neueren Freepascal - Compilern. Der Cross-Compiler auf 2.6.0 und 2.7.1 - Basis kann zwar erstellt werden und es werden auch ausführbare Programme erzeugt, diese erzeugen beim Aufruf von externen Funktionen auf dem Zielgerät, z. B. SDL_Init, eine Speicherzugriffsverletzung. Anscheinend wurde was im Aufruf dieser Funktionen geändert, habe bisher aber nichts dazu gefunden.

Gruß
Thomas

PS.:
Spieler - Grafik ist von Reiner's Tileset, http://www.reinerstilesets.de
MP3 - Stück: prologue.mp3, http://opengameart.org/content/prologue, Autor: Telaron ()

Aktualisiert:
19.02.2012
- Neue Grafiken
- Win32, Caanoo und Pandora - Version
- Animationen hinzugefügt
Zuletzt geändert von KidPaddle am So Feb 19, 2012 15:01, insgesamt 1-mal geändert.

Benutzeravatar
Ziz
10 Bit
Beiträge: 1990
Registriert: So Jan 15, 2006 14:09
Wohnort: Dresden
Kontaktdaten:

Re: House of Quests - Arbeitstitel

#2 Beitrag von Ziz » So Feb 12, 2012 10:55

Finds cool, aber mal ein Zwischenruf:

Der GP2X HAT SDL. Und der KANN MP3s abspielen. :-D Würde mich also freuen dein Spiel auch auf dem GP2X spielen zu können. ;-)

(Verwechselt du ihn vielleicht mit dem GP32?)
Bild

KidPaddle
8 Bit
Beiträge: 265
Registriert: So Mai 14, 2006 12:18
Wohnort: Bayern

Re: House of Quests - Arbeitstitel

#3 Beitrag von KidPaddle » So Feb 12, 2012 11:03

Hallo Ziz,

danke für Feedbac. Dass der GP2X SDL hat weiß ich, aber beim GP2X kommt eine Mischung aus SDL und Hardware beschleunigtes Blitten der Grafik zum Einsatz, daher die Aussage "Bis auf den GP2X wird SDL ...." zustande. MP3 hat bei meinen letzten Versuchen mit FreePascal nicht funktioniert, OGG ging, aber ich werde es mir nochmal ansehen.

Gruß
Thomas

Benutzeravatar
Ziz
10 Bit
Beiträge: 1990
Registriert: So Jan 15, 2006 14:09
Wohnort: Dresden
Kontaktdaten:

Re: House of Quests - Arbeitstitel

#4 Beitrag von Ziz » So Feb 12, 2012 11:33

Ah, ich habe die Kombination Free Pascal <-> GP2X außer Acht gelassen. :-\
Aber ogg ist doch eh viel toller. :P
Bild

Kaworu
6 Bit
Beiträge: 78
Registriert: Sa Okt 03, 2009 21:11
Wohnort: Duisburg

Re: House of Quests - Arbeitstitel

#5 Beitrag von Kaworu » So Feb 12, 2012 15:42

KidPaddle hat geschrieben:Da ich leider keine Pandora habe, bitte ich jemanden folgendes zu testen. http://www.seban.de/download/games/hoq/ ... Quests.zip
Spiel getestet. Terminalausgaben zeigen keine Fehlermeldungen, nur Erfolgsmeldungen.

Spiel wird in einem kleinen Fenster rechts unten gestartet, welches noch nicht auf das Schließen des Fensters reagiert.
Steuerung scheint noch keine implementiert zu sein.. jedenfalls reagiert es auf keinerlei Eingaben.
(Trotz Terminal Meldung: "1 joystick(s) found" und "joystick 0 has 21 buttons")
Grafikausgabe wie in deinem Screenshot.
Musik läuft.
Drawwert zeigt überwiegend 1 an.
Framewert zeigt überwiegend 7 an.

Wobei dieser wohl aufgrund der hohen Reaktionszeit des Bildschirmes falsch sein wird, sollte es der FPS-Wert sein.
Denn sehr schwach und nur sehr kurz sind rechts neben der 7 Zahlen zwischen 0 und 3 zu sehen.
Scheint also als wäre der Wert zwischen 70 und 80.

:)

KidPaddle
8 Bit
Beiträge: 265
Registriert: So Mai 14, 2006 12:18
Wohnort: Bayern

Re: House of Quests - Arbeitstitel

#6 Beitrag von KidPaddle » So Feb 12, 2012 17:34

Hallo Kaworu,

vielen Dank. Steurung geht auf der Pandora nicht, habe noch keine Ahnung wie die Josticks - Buttons unter Pandora - SDL angesprochen werden. Die beiden Zahlenwerte sind die Angaben in Millisekunden fürs Zeichnen der ISO - Karte und Spiellogik. War für meine Tests auf dem Caanoo, dort sind einige Optimierungen notwendig. 7-8 Millisekunden sind so 125 Frames pro Sekunde, also ausreichend :)

Wenn Anzeige und Musik funktionieren, dann sollte alles weitere ohne Probleme funktionieren. Nochmals vielen Dank.

Gruß
Thomas
Zuletzt geändert von KidPaddle am Mo Feb 13, 2012 07:19, insgesamt 1-mal geändert.

Kaworu
6 Bit
Beiträge: 78
Registriert: Sa Okt 03, 2009 21:11
Wohnort: Duisburg

Re: House of Quests - Arbeitstitel

#7 Beitrag von Kaworu » So Feb 12, 2012 19:20

KidPaddle hat geschrieben:Steurung geht auf der Pandora nicht, habe noch keine Ahnung wie Jostick - Buttons unter SDL angesprochen werden.
Dazu habe ich dir mal einen Abschnitt von carlis angefangenem Towerspiel rauskopiert und vereinfacht (unnötiges zum Verständnis rausgeschmissen):

Code: Alles auswählen

var ev : TSDL_Event;
    ende : boolean = false;

begin

  repeat
    while SDL_PollEvent(@ev) <> 0 do
    begin
      case ev.type_ of
        SDL_QUITEV : ende := true;
        SDL_KEYDOWN : begin
                        case ev.key.keysym.sym of
                          SDLK_ESCAPE : ende := true;
                          SDLK_LEFT : ; // Aktion Steuerkreuz links;
                          SDLK_RIGHT : ; // Aktion Steuerkreuz rechts;
                        end;
                      end;
      end;
    end;
  until ende;

end.


KidPaddle
8 Bit
Beiträge: 265
Registriert: So Mai 14, 2006 12:18
Wohnort: Bayern

Re: House of Quests - Arbeitstitel

#8 Beitrag von KidPaddle » Mo Feb 13, 2012 07:17

Hallo Kaworu,

hast Du auch ein Beispiel für Pandora und SDL_JoystickGetButton() oder SDL_GetKeyState()? Find ich auf die schnelle nichts brauchbares und da bei den anderen Consolen keine SDL Events verwendet werden, möchte ich es ungern nur für die Pandora implementieren.

Gruß
Thomas

Kaworu
6 Bit
Beiträge: 78
Registriert: Sa Okt 03, 2009 21:11
Wohnort: Duisburg

Re: House of Quests - Arbeitstitel

#9 Beitrag von Kaworu » Mo Feb 13, 2012 15:17

KidPaddle hat geschrieben:hast Du auch ein Beispiel für Pandora und SDL_JoystickGetButton() oder SDL_GetKeyState()? Find ich auf die schnelle nichts brauchbares und da bei den anderen Consolen keine SDL Events verwendet werden, möchte ich es ungern nur für die Pandora implementieren.
Habe ich leider nicht, da ich es selbst nicht genutzt habe. Vielleicht hast du bei carli oder jemanden ausm C/++ Thread mehr Glück.. vorrübergehend kannst du ja einfach eine spezielle Unit für die Pandora zwischenschalten, oder halt erstmal für die anderen Konsolen weiterprogrammieren bis du mal zufällig über die Pandora-Variante stolperst. Sonst gibt es ja keine Probleme :)

KidPaddle
8 Bit
Beiträge: 265
Registriert: So Mai 14, 2006 12:18
Wohnort: Bayern

Re: House of Quests - Arbeitstitel

#10 Beitrag von KidPaddle » So Feb 19, 2012 15:09

Hallo Kaworu,

kannst Du bitte probieren, ob Du auf der Pandora die Karte verschieben kannst? Ich habe jetzt SDLK_Left, SDLK_Right, SDLK_Up, SDLK_Down hergenommen.

http://www.seban.de/download/games/hoq/ ... Quests.zip

In der ZIP - Datei ist jetzt eine Windows, Pandora (hoqp) und Caanoo (hoqc) - Version vorhanden. Die benötigten SDL - Bibliotheken unter Windows sind mit in dem Archiv enthalten. Unterstützung für den GP2X und WIZ wird es geben, ich konnte für beide Plattformen ausführbare Dateien erstellen.

Neu sind Animationen beim Bewegen und das Verschieben der Karte, wenn der Spieler sich in der Mitte befindet.

Gruß
Thomas

Kaworu
6 Bit
Beiträge: 78
Registriert: Sa Okt 03, 2009 21:11
Wohnort: Duisburg

Re: House of Quests - Arbeitstitel

#11 Beitrag von Kaworu » Mo Feb 20, 2012 05:44

KidPaddle hat geschrieben:Hallo Kaworu,kannst Du bitte probieren, ob Du auf der Pandora die Karte verschieben kannst? Ich habe jetzt SDLK_Left, SDLK_Right, SDLK_Up, SDLK_Down hergenommen.
Ja klar.. grade erst getestet: Steuerung geht (alle 4 Richtungen). Jetzt noch Timebased Movement einbauen und man rennt nicht viel zu schnell durch die Gegend ;)
Übrigens: für die Windowsversion fehlt noch die "libfreetype.dll", wenn du alle Bibliotheken im Archiv haben möchtest.

KidPaddle
8 Bit
Beiträge: 265
Registriert: So Mai 14, 2006 12:18
Wohnort: Bayern

Re: House of Quests - Arbeitstitel

#12 Beitrag von KidPaddle » Mo Feb 20, 2012 06:40

Vielen Dank Kaworu,

eigentlich sollte eine Begrenzung auf 60 FPS vorhanden sein, auf dem Caanoo scheint es jedenfalls so. Die Animationen sollten aber normal gelaufen sein, oder? Werde doch mal die FPS mit ausgeben. Die libfreetype.dll - Library werde ich meiner "Distribution" hinzufügen, ging bei mir auch ohne, daher viel es mir nicht auf.

Nächste Schritte sind:
- Z-Sortierung der Spriteausgaben
- Sichtbarkeitsprüfung der Objekte
- Kollisionserkennung mit Gegenständen und Wänden

Gruß
Thomas

Ergänzung:
Die fehlende Freetype DLL für Windows wurde hinzugefügt.

Benutzeravatar
Ziz
10 Bit
Beiträge: 1990
Registriert: So Jan 15, 2006 14:09
Wohnort: Dresden
Kontaktdaten:

Re: House of Quests - Arbeitstitel

#13 Beitrag von Ziz » Mo Feb 20, 2012 07:34

Die FPS zu begrenzen ist kein Time Based Movement!
Time Based Movement ist das Speichern der Zeit für das Zeichnen eines Frames, um dann genauso viele Berechnungsschritte ausführen.

Bei deiner Methode gäbe es auf langsamen Systemen (unter 60 fps) immer noch Slowdowns!
Bild

KidPaddle
8 Bit
Beiträge: 265
Registriert: So Mai 14, 2006 12:18
Wohnort: Bayern

Re: House of Quests - Arbeitstitel

#14 Beitrag von KidPaddle » Sa Feb 25, 2012 07:31

Hier ein Beispiel für die Initialisierung meines FreePascal/Delphi7 - Framework.

Code: Alles auswählen

program Template;

{$IFDEF FPC}
  {$MODE DELPHI}
{$ENDIF}

uses SysUtils,
     fwLogging,
     fwCustomEngine,
     fwPlattform;

const
  SCREEN_WIDTH     = 320;
  SCREEN_HEIGHT    = 240;
  SCREEN_BPP       = 16;

var
  Screen           : TfwCESurface;
begin
  // setup graphic engine
  SetHAL(TfwEngine.Create(false, false));
  try
    Screen := HAL().Init(SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_BPP);
    if Assigned(Screen) then begin
      while (not HAL().ExitKeyPressed()) do begin
        // show graphics
        HAL().Flip(Screen);

        // update 
        HAL().Idle();
        HAL().UpdateInput();
      end;
    end;
  except
    on E : Exception do begin
      fwLog(E.Message);
    end;
  end;
end.
Die Grafiken, Geräusche, Musik und Schriften werden z. B. so geladen:

Code: Alles auswählen

        BgMusic := HAL().CreateMusic('data/music/prologue.mp3', Resources);
        if Assigned(BgMusic) then begin
          BgMusic.Play(20);
        end;

        Font       := HAL().CreateFont('data/font/arial.ttf', 14, Resources);
        Floor1     := HAL().CreateSurface('data/images/floor1.bmp', $00FF00FF, Resources);
        Border1    := HAL().CreateSurface('data/images/broder01.bmp', $00FF00FF, Resources);
        Border2    := HAL().CreateSurface('data/images/broder02.bmp', $00FF00FF, Resources);
        PlayerImg  := HAL().CreateSurface('data/images/caveman.bmp', $00FF00FF, Resources);
        SpiderImg  := HAL().CreateSurface('data/images/red_spider_all.bmp', $00FF00FF, Resources);
        Steps      := HAL().CreateSound('data/sound/steps.wav', 250, Resources);
Der Code ist für alle Plattformen derselbe, die größten Unterscheidungen gibt es in der Behandlung der Eingabe, allerdings kann man in dem Framework mehrere Eingaben auf eine virtuelle Taste legen und nur diese Abfragen, so dass z. B. Nubs als Steuerkreuz interpretiert werden können.

Gruß
Thomas

Antworten

Zurück zu „Pascal“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast