AGB  ·  Datenschutz  ·  Impressum  







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

Point 'n' Click Adventure mit Firemonkey

Ein Thema von Andreas L. · begonnen am 22. Apr 2020 · letzter Beitrag vom 22. Apr 2020
Antwort Antwort
Andreas L.

Registriert seit: 23. Mai 2011
Ort: Furth im Wald
308 Beiträge
 
Delphi 11 Alexandria
 
#1

Point 'n' Click Adventure mit Firemonkey

  Alt 22. Apr 2020, 10:19
Hallo,
ich möchte ein Point 'n' Click Adventure Spiel mit Firemonkey entwickeln. Für jede Szene wird in einem Form ein Hintergrund-Bild angezeigt (TImage). Die interaktiven Objekte wie Gegenstände, Schalter, Türen, etc. sind ebenso einfache TImages mit diversen Effekten. Alle Bilder sind hochaufgelöst. Das funktoniert auch wunderbar.

Das Problem ist, dass die (zukünftigen) Spieler verschiedene Auflösungen haben können die entweder größer oder kleiner sind. Widescreen oder Non-Widescreen.

Dafür habe ich folgende Möglichkeiten in betracht gezogen:

Möglichkeit 1:
Die Größen & Positionen der Objekte werden für die aktuelle Auflösung berechnet. Das heißt ich designe eine Szene z. B. als 800x600 Pixel. Wenn ein Objekt die Koordinate X=20 Y=40 hat rechne ich diese "Ursprungs"-Angaben einfach auf die neue Auflösung "hoch". Diese Möglichkeit ist zum einen viel Aufwand und zum anderen vermute ich das insbesondere bei Widescreen-Monitoren die Objekte seltsam wirken.

Möglichkeit 2:
Ich platziere sowohl Hintergrund als auch Objekte auf einem TLayout oder TPanel und verwende die Scale-Eigenschaft. Dann muss ich "nur" das Verhältnis von Design-Auflösung und Laufzeit-Auflösung berechnen und der Eigenschaft zuweisen. Bei meinen Versuchen mit der Scale-Eigenschaft war die Bild-Qualität ganz gut aber nicht perfekt. Hier stellt sich die Frage: Wie genau muss ich das umrechnen? Was muss ich berücksichtigen? Weiß jemand wie der Algorithmus geschrieben werden muss? Oder gibt es bereits eine Funktion oder Unit die so eine Berechnung durchführen kann?

Möglichkeit 3:
Ich belasse alle Koordinaten & Größen "as designed" und schalte einfach die Auflösung des Montitors um. In meinen Tests geht das zwar aber Objekte sind an falschen Positionen und die hochauflösenden Grafiken werden nicht so hochwertig angezeigt wie sie sein sollten...

Welche Variante soll ich verwenden? Und was genau muss ich beachten? Kennt ihr noch andere Möglichkeiten? Oder gibt es Units/Komponenten die genau für sowas geeignet sind? Mir ist klar das es für Delphi einige Spiel-Development-Frameworks gibt aber ich hatte gehofft auf so etwas verzichten zu können weil das Spiel von der Logik her relativ einfach zu entwickeln ist. Da wäre eine Rendering-Engine etwas übertrieben? Oder nicht? Außerdem basiert Firemonkey doch sowieso auf einer 3D-Engine...
Andreas Lauß
Blog
  Mit Zitat antworten Zitat
Benutzerbild von Sinspin
Sinspin

Registriert seit: 15. Sep 2008
Ort: Dubai
691 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: Point 'n' Click Adventure mit Firemonkey

  Alt 22. Apr 2020, 12:07
Hallo. Bei Widescreens sind an den Seiten oft schwarze Streifen. Es wird also nicht das ganze Bild genutzt. Ansonsten lieber mit großen Bildern arbeiten und kleiner skalieren. Mit den passenden Routinen sehen die dann auch schön aus. Die Positionen der clickbaren Elemente müssen dann die gleiche Skalierung bekommen.

Die meißten Spiele bieten eine bestimmten Satz an Auflösungen an für die sie optimiert sind. Dann wurden meißt auch eigene Bildersets pro Auflösung erstellt. In allen anderen Fällen sind dann halt Flächen nicht genutzt.
Arbeitet man mit 3D besteht das Problem ja nicht da die Szene eh komplett scalierbar ist.
Stefan
Nur die Besten sterben jung
A constant is a constant until it change.
  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 22:02 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