Einzelnen Beitrag anzeigen

Nju

Registriert seit: 16. Jun 2004
41 Beiträge
 
#4

AW: Spielprogrammierung, Shape und Image

  Alt 26. Feb 2019, 08:47
Hallo,
es gibt verschiedene Möglichkeiten ein Labyrinthspiel zu bewerkstelligen. Prinzipiell baue ich die bisherigen Vorschläge der Vorposter (mit eigener Erfahrung) aus:

1. Array
Wie ein Vorposter bereits geschrieben hat, sind hier die Zustandsinformationen (Begehbar, Wand, Schalter, etc.) drin, die man abfragen und anzeigen (mit Grafikblöcken)/verwerten kann.

a) Diese Methode eignet sich sehr gut für diskrete Bewegungen (und ist in diesem Fall verdammt schnell!).
b) Auch kontinuierliche Bewegungen sind möglich, allerdings must du im Hintergrund die Position auf das Array umrechnen. Z.B. jeder Block hat eine Größe von 20x20 Pixel. Wenn die Spielfigur eine Wand treffen würde (Spielfigurkoordinaten x=329, y=183 ---> Array[17, 10]), reagiere darauf. Ist immernoch sehr schnell.
c) Kollisionsabfrage der Grafiken: Jeder Block ist ein Objekt. Wenn die Spielfigur das Objekt "Wand" treffen würde, dann geht die Spielfigur nicht weiter. Bei Grundform-Kollisionsabfragen schnell, bei Polygonabfragen (z.B. Form eines unebenen Steins) "langsamer".

2. Layer
Hier greife ich deinen Vorschlag mit dem Untergrund auf: Der oberste Layer ist deine anzuzeigende Spielgrafik (das für den Spieler zu sehende Labyrinth).
Da drunter verstecken sich weitere Layer mit Zustandsinformationen. Der eine Layer kann für die Wände zuständig (keine Wand = transparent, Wand = Farbe) sein, ein weiterer für "Aktionsfelder". Ungewöhnliche Methode, geht aber bis zu einer gewissen Layerstufe ohne Probleme (Achtung->Wenn permanentes Scrolling im Einsatz ist, dürfte dies sehr langsam werden).

Wie du es machst, bleibt natürlich dir überlassen. Die gängigste Methode ist 1c, weil diese sehr schnell zu berechnen ist (Thema "Pixelgenaue Kollision" ist in Bezug auf Schnelligkeit mit Vorsicht zu genießen).

Mit Delphi würde ich allerdings keine Spiele (mehr) erstellen. Ja, ich widerspreche nicht, dass es möglich ist, das damit auf die Beine zu stellen und ja, ich spreche aus Erfahrung, man macht sich das Leben nur unnötig schwer. Du suchst dir Frameworks/Engines, die mit Delphi arbeiten. Ist gar nicht so leicht, da viele davon nicht mehr gepflegt werden. Grundfunktionen wie "Anzeigen, Animationen, etc." sind in der Regel mit dabei, Kollisionsabfrage und Physik darfst du dich mit rumschlagen.

AppGameKit ist gerade für Anfänger sehr gut geeignet schnelle Ergebnisse zu erzielen (mit Tier 2 ist man in Bezug auf Geschwindigkeit "konkurrenzfähig") -> allerdings kostenpflichtig, gibt aber eine Testversion und regelmäßige Rabattaktionen. Und dann gibt es ja noch zahlreiche kostenlose Engines (Unity, etc.), die von der Einarbeitung dann doch schon wesentlich komplexer sind (dafür aber umso mächtiger).

Zusammenfassend:
Zum Testen mit Methode 1a (und mit Einschränkung 1b) nimm Delphi - erwarte aber keine Wunder, denn du fährst einen Kleinwagen mit schlecht einrastender Gangschaltung (in Bezug auf Spiele!). Ab Methode 1b würde ich auf Spieleengines oder Frameworks greifen, die für Spiele ausgelegt sind.
Methode 2 empfehle ich nicht. Ich wollte nur mal Kreativität spielen lassen.
  Mit Zitat antworten Zitat