Ich bin ein absoluter Anfänger in der Spielprogrammierung. Sollte diese Frage schlecht formuliert sein, sei mir bewusst, dass es nicht Schlamperei an meiner Seite war, sondern mangelnde Erfahrung in der Spielprogrammierung.
Das Spiel, das ich programmieren möchte, verwendet eine 2D-Karte von oben nach unten als "Welt". Die Welt ist möglicherweise größer als das Fenster (das Fenster kann vergrößert oder verkleinert werden) und die Fahrzeuge können sich an jedem Punkt der Welt befinden (= es ist keine gekachelte Karte, der Raum ist "durchgehend").
Um dies anhand eines Beispiels zu verdeutlichen: Wenn die Welt ein Gelände von 1000 x 1000 Metern ist, könnte sich ein Fahrzeug an einem Ort (327,31, 720,4) Meter befinden.
Meine Frage ist: Was ist der bequemste Weg, die Welt intern darzustellen? Ich könnte über diese Möglichkeiten nachdenken:
- Tu nichts und benutze Messgeräte, als würde ich mit dem physischen Objekt arbeiten.
- Normalisieren Sie auf Pixel , die die Weltgröße als die Anzahl der Pixel definieren, um 1000 Meter bei maximalem Zoom darzustellen.
- Normalisieren Sie auf 1 und definieren Sie das Wort als Quadrat der Größe 1
... aber ich bin mir sicher, dass es einige andere geben könnte / einige von mir könnten keinen Sinn ergeben. Es ist nur so, dass ich als mein erstes Spiel keine klaren Bilder von den Problemen vor mir habe und ich möchte eine Anleitung, wie ich eine einigermaßen korrekte erste Wahl treffen kann.
Vielen Dank für Ihre Zeit.
Antworten:
Ich bin damit einverstanden, einen realen Wert (Meter, Fuß usw.) als Grundlage für die Entfernung zu verwenden. Das Problem mit Ihren beiden anderen Vorschlägen ist, dass beide Variablen sind. Wenn Sie mit einer Weltgröße von arbeiten,
1
wird Ihre gesamte Arithmetik zwischen Gleitkomma zwischen -1 und 1 liegen, was zu mehr Gleitkommafehlern führen kann. Sollten Sie sich jemals dazu entschließen, variable Weltgrößen zu erstellen ("große" Welten für längere Spiele usw.), werden Sie viele Probleme mit Ihrem Code haben. Wenn Sie Pixel verwenden, selbst bei maximaler / minimaler Zoomstufe, treten Verwirrung und Probleme auf, wenn Sie die Zoomstufe erhöhen oder verringern.quelle
Von den drei von Ihnen vorgeschlagenen Optionen ist die Verwendung von Messgeräten wahrscheinlich die beste. Wenn Sie andere Daten erstellen, erleichtert Ihnen der Umgang mit der Länge in Metern das Leben erheblich. Unter anderem können Sie sich entscheiden, Ihre Weltgröße zu ändern, oder verschiedene Ebenen benötigen möglicherweise Karten unterschiedlicher Größe.
Sie können auch Füße (oder möglicherweise Zoll) verwenden. Ein Teil dieser Entscheidung hängt möglicherweise davon ab, welche Middleware-Pakete Sie verwenden. Einige Physik-Engines bevorzugen den einen oder anderen Einheitentyp (obwohl er fast immer konfigurierbar ist). Zum größten Teil können Sie einfach eine Einheit auswählen und mitmachen.
quelle
Auf '1' zu normalisieren ist wirklich nicht der richtige Weg (was ist, wenn Sie eine Welt haben, die nicht quadratisch ist? Oder mehrere Welten mit unterschiedlicher Größe ...).
Verwenden von Pixeln als ... NIEMALS Gameplay und grafische Maßnahmen verwechseln !! Schließen Sie sich nicht ein, damit Sie die Grafiken nicht ändern können, ohne den Code ändern zu müssen.
Meter (Fuß oder was auch immer Sie am meisten mögen) ist der richtige Weg. Sie werden sich viel besser fühlen, wenn Sie Ihren Raketenwerfer so codieren, dass er sich mit 50 km / h bewegt, als mit 0,00076 Einheiten / Sekunde ...
quelle