AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Firemonkey Retro Spiel

Ein Thema von backdraft · begonnen am 21. Jan 2012 · letzter Beitrag vom 21. Jan 2012
Antwort Antwort
backdraft

Registriert seit: 19. Apr 2005
Ort: Hückeswagen
335 Beiträge
 
Delphi 11 Alexandria
 
#1

Firemonkey Retro Spiel

  Alt 21. Jan 2012, 12:23
Hallo zusammen,

ich beschäftige mich seit ein paar Tagen mit dem neuen Produkt von Embarcadero.
Als Übung habe ich mein alten Retro C64 Spiel ausgegraben, und wollte es nach FireMonkey portieren.
Es handelt sich um eine Art Jump and Run.

Hierbei ist Step 1 die Portierung auf FM für Windows, und Step 2 MacOS kompatibel zu werden.
Dadurch fehlen mir einige Sachen, die zwar in FM für Windows nutzbar wären, aber nicht unter MacOS.

Hierbei habe ich noch diverse Probleme, die ich einfach mal auflisten wollte.
Ich denke der Thread ist für alle interessant, die vorhaben ein 2D Spiel zu programmieren.

Generell habe ich auch noch keine "große" Literatur gefunden, was man so beim Sprung von Delphi nach FM machen muss, bzw. was sich alles so geändert hat. Für Prism gibt's ja auch ein wenig Infos ... Vielleicht hab ich auch nur schlecht gegooglet.
Auch wenn ich in der Hilfe suche, findet man meistens nur Delphi Hilfen, und nicht FM Hilfen.

Problem 1: Bitmap BeginScene
Es scheint, als muss man bevor man via Canvas auf ein Bitmap zeichnet immer BeginScene und später EndScene nutzen.
Lasse ich es weg, funktioniert es nicht. Da das Projekt geschachtelt aufgebaut ist, zeichenen diverse Unterfunktionen auch auf ein Bitmap. Hierbei darf ich aber kein BeginScene erneut aufrufen, sonst macht er gar nichts mehr...
Mache ich was falsch?

Problem 2: QueryPerformaceCounter
Um das Spiel flüssig spielen zu können, führt der Application.OnIdle immer eine Funktion aus, die die nächste Position im Spiel berechnet.
Nach der Funktion kommt ein Sleep(20) um nicht 100% CPU Auslastung zu verursachen. Damit komme ich theoretisch auf 50FPS.
Um zu wissen, wie weit sich der Spieler und die Gegner bewegen müssen, nutze ich in der Win32 Version den HighPerformanceTimer.
Damit wird die Bewegung der Spieler schön flüssig.
Gibt es hierzu eine Funktion für MacOS, oder generell für FM?
Hat jemand vielleicht einen anderen Ansatz?

Problem 3: Joystick
Unter Win32 nutze ich die MMSystem Unit um mit dem Joystick zu kommunizieren. Die gibt's leider auch nicht unter MacOS.

Problem 4: Tastatur Handling
Bisher fange ich direkt die Tastaturmessages ab, und führe selbst einen Array, welche Taste derzeit gedrückt ist, und welche nicht.
Dieses benötige ich für die Steuerung des Spielers.
Aufgrund diverser Sondertasten klappt das OnKeyDown/Up Event nicht.
Wie funktioniert sowas unter FM?

Problem 5: Transparent ein Bitmap zeichnen:
Unter Win32 habe ich damals eine Funktion programmiert, die ein Bitmap (256 Farben) mit seiner Hintergrundfarbe auf das Spielfeld zeichnet.
Sowas muss es doch fertig in FM geben? Die frühere Eigenschaft Transparent beim Bitmap finde ich nicht.

Problem 6: Dynamisch Fonts laden
Bis jetzt habe ich dynamisch einen Commodore 64 Font nachgeladen (AddFontResource). Gibt's hier auch eine Funktion in FM?
Komischerweise klappt der Commodore Font unter FM aber auch nicht mehr, wenn ich ihn in die Schriften installiere.
Ich habe auch schon andere TTF Fonts probiert, aber keinen gefunden, der klappt.
Der zweite dynamische "Fairlight" Font, funktioniert problemlos, wenn ich in installiere.

Problem 7: Bitmaps in Resourcen
In Delphi kann ich via LoadFromResource ein Bitmap aus meiner EXE laden. Gibt's sowas in FM nicht?

Problem 8: MP3 Wiedergabe
Früher habe ich einfach die bass.dll genutzt um den Sound wiederzugeben. Hat FM sowas dabei?

Bin für jede Hilfe dankbar ...
Oliver
Oliver
  Mit Zitat antworten Zitat
backdraft

Registriert seit: 19. Apr 2005
Ort: Hückeswagen
335 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Firemonkey Retro Spiel

  Alt 21. Jan 2012, 12:28
Hier der Commodore Font.
Der Font ist Freeware.
Angehängte Dateien
Dateityp: zip commodore_64.zip (55,3 KB, 7x aufgerufen)
Oliver
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Firemonkey Retro Spiel

  Alt 21. Jan 2012, 12:46
FMX funktioniert etwas anders als die VCL. Es wäre grundsätzlich zu überlegen, das Spiel nicht 1:1 umzusetzen, sondern zu versuchen die neuen Fähigkeiten des Frameworks zu verwenden.
FMX basiert auf Vektorgrafik, deshalb würde ich nicht auf direkt auf dem Canvas/Bitmaps zeichen.

Hier sind einige Artikel zu FireMonkey zusammengetragen
Markus Kinzler
  Mit Zitat antworten Zitat
backdraft

Registriert seit: 19. Apr 2005
Ort: Hückeswagen
335 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Firemonkey Retro Spiel

  Alt 21. Jan 2012, 12:54
FMX funktioniert etwas anders als die VCL. Es wäre grundsätzlich zu überlegen, das Spiel nicht 1:1 umzusetzen, sondern zu versuchen die neuen Fähigkeiten des Frameworks zu verwenden.
FMX basiert auf Vektorgrafik, deshalb würde ich nicht auf direkt auf dem Canvas/Bitmaps zeichen.

Hier sind einige Artikel zu FireMonkey zusammengetragen
Danke für die Info,
hatte ich auch vergessen zu schreiben.
Plan ist zuerst die 1:1 Umsetzung, um überhaupt ein Ergebnis zu haben.
Danach kommt die Optimierung auf FMX Vorteile ... Vektor, Skaling, usw...
Soll halt ein Lernprojekt werden!
Oliver
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Firemonkey Retro Spiel

  Alt 21. Jan 2012, 13:09
Asphyre Sphinx 2 wäre vielleicht auch einen Blick wert
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#6

AW: Firemonkey Retro Spiel

  Alt 21. Jan 2012, 14:35
@Problem 1
Entweder du zeichnest nur zu eine Zeitpunkt und rufst dafür global die Funktionen auf oder du kapselst die Aufrufe und zählst dabei (jeweils nur den ersten und den letzten Ruf ausführen).
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:18 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz