AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Frage zu GAMEPLAY - "Kameraposition"
Thema durchsuchen
Ansicht
Themen-Optionen

Frage zu GAMEPLAY - "Kameraposition"

Ein Thema von Mezimo · begonnen am 14. Nov 2011 · letzter Beitrag vom 14. Nov 2011
Antwort Antwort
Medium

Registriert seit: 23. Jan 2008
3.689 Beiträge
 
Delphi 2007 Enterprise
 
#1

AW: Frage zu GAMEPLAY - "Kameraposition"

  Alt 14. Nov 2011, 21:55
Ja, das ist das Problem: Es war schon ziemlich missverständlich. Zumindest für jemanden, der mit der Materie zu tun hat

So ganz grundsätzlich: Zeichne immer nur das auf dein Formular, was man gerade auch wirklich sieht. Um das zu ermitteln muss man mindestens die Rahmen (Bounding-Boxes) seiner Spielelemente kennen, sowie deren Position, und das Zentrum der aktuellen Ansicht auf die Gesamtkarte. Mit diesen Infos (und der Größe deiner Anzeige sowie ggf. Zoomfaktor) kannst du bestimmen, was überhaupt zu sehen sein wird, wenn du es zeichnest. Dann musst du nur noch all deine Objektkoordinaten negativ um die Verschiebung "Fenstermitte -> Ansichtsmitte" transformieren (sowie ggf. um den Zoomfaktor skalieren), und dann zeichnen.

Nochwas: "Gameplay" entspricht im Deutschen in etwa "Spielerlebnisgüte" oder "Spielbarkeit". Fehlt mir auch grad ein wenig der Bezug
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)

Geändert von Medium (14. Nov 2011 um 22:02 Uhr)
  Mit Zitat antworten Zitat
Mezimo

Registriert seit: 11. Dez 2010
9 Beiträge
 
#2

AW: Frage zu GAMEPLAY - "Kameraposition"

  Alt 14. Nov 2011, 22:02
Okey, dann nochmal danke für die Antwort.
Ich kanns mir in etwa Vorstellen wie es gemeint ist.
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.689 Beiträge
 
Delphi 2007 Enterprise
 
#3

AW: Frage zu GAMEPLAY - "Kameraposition"

  Alt 14. Nov 2011, 22:14
Man kann vermutlich besser was dazu sagen, wenn du schon mal einen gewissen Ansatz hast, an dem man werkeln kann. Versuch dich nur gleich von Anfang an von der (weit verbreiteten) Vorstellung zu lösen, dass ein 2D-Spiel am besten aus 5000 TImages bestehen sollte . "Richtig" ginge man es so an, dass man zunächst eine Basisklasse hat, die erstmal alles an Eigenschaften kapselt, die ein "Ding" im Spiel haben muss. Etwa sowas
Delphi-Quellcode:
type
  TGameEntitiy = class(TObject)
  private
    ....
  public
    property Position: TVector;
    property Rotation: Single;
    property BoundingBox: TBoundingBox; // = record von 4 TVectors, ähnlich TRect
    property IsSolid: Boolean;
    property Sprite: TBitmap;
    property LocallyRotatedSprite: TBitmap;
  end;
Davon lassen sich dann alle weiteren Entitätstypen ableiten, und haben gleich alles was für Spiellogik und Anzeige nötig ist huckepack. Zum Zeichnen riecht dann nachher quasi schon sowas:
Delphi-Quellcode:
procedure TDisplayForm.Paint;
var
  entity: TGameEntity;
begin
  ClearCanvas;
  DrawBackground;
  foreach entity in AllGameEntities do
  if entity.IsVisibleInRect(DisplayForm.ClientRect) then
    entity.DrawRotatedAndCentered({to} DisplayForm.Canvas, {at center} FormCenter);
end;
Alles natürlich Pseudomethoden ohne Ausformulierung, da die ja eben ganz maßgeblich dann von dem Spiel und den sonstigen Gegebenheiten abhängen. Aber das wäre ein sehr vereinfachtes, ganz allgemeines Gerüst.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  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 19:14 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz