House of Quests - Arbeitstitel


KidPaddle

Very Active Member
Joined
May 14, 2006
Messages
491
Location
Germany
Da ich leider keine Pandora habe, bitte ich jemanden folgendes zu testen.

http://www.seban.de/download/games/hoq/HouseOfQuests.zip
hoq01.png


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
 
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?)
 
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
 
Ah, ich habe die Kombination Free Pascal <-> GP2X außer Acht gelassen. :-\
Aber ogg ist doch eh viel toller. :p
 
KidPaddle said:
Da ich leider keine Pandora habe, bitte ich jemanden folgendes zu testen. http://www.seban.de/download/games/hoq/HouseOfQuests.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.

:)
 
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
 
KidPaddle said:
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:
<i>
</i>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.
 
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
 
KidPaddle said:
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 :)
 
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/HouseOfQuests.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
 
KidPaddle said:
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.
 
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.
 
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!
 
Hier ein Beispiel für die Initialisierung meines FreePascal/Delphi7 - Framework.
Code:
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:
        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
 
Back
Top