Світові межі - (0, розмір) або (-HalfSize, HalfSize)?


9

Створюючи ігровий простір, в якому рухатись, малювати та стикатися з предметами, чи краще точка (0,0) або (0,0,0) точка знаходитися в самому центрі вашого простору, таким чином, межі світів є (-halfSize, halfSize), або краще, щоб він був у дальній куточку вашого простору, тому межі (0, розмір)?

Які плюси і мінуси у кожного, і які проблеми виникають у кожного? Або це насправді просто не має значення?

Це здається незначною деталлю, але я хотів дізнатися, чи існують, можливо, основні проблеми, які я можу не помітити.

Відповіді:


15

Мені здається, що краще мати центр свого простору (0, 0, 0). Якщо припустити, що ви використовуєте підписаний формат для представлення позицій у просторі, центр (0, 0, 0) дозволяє використовувати як негативну, так і позитивну частини формату, що може творити чудеса для точності для плавців та діапазону для підписаних цілих чисел . Це може не мати значення для малих масштабів, але для великих масштабів це може змінити все, тобто до того, як вам доведеться повністю придумати нову систему.

Тільки для уточнення: Враховуючи, що ви створюєте ігровий світ, який, я вважаю, ви рендеруєте, остаточним форматом, в який ви перетворитесь, буде плаваючий, який, як ви знаєте, підписаний формат. У цьому випадку ви можете потрапити в ситуацію, коли (0, розмір) неможливо представити, тоді як (-HalfSize, HalfSize) може бути. Якщо ви не плануєте рендерінг і можете вибрати довільний формат, тоді використовуйте будь-який стиль, хоча я все одно особисто віддаю перевагу вищезгаданому стилю.


+1, багато фізичних симуляцій також використовують цей діапазон, ймовірно, з цієї причини.
MichaelHouse

1
Корисні посилання: altdevblogaday.com/2012/02/22 / ...
Leander

1
Також досить добре відомий, але, можливо, трохи важкий для непосвячених: docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html - "Що повинен знати кожен комп'ютерний вчений про арифметику з плаваючою комою"
орендарник

5

Це не особливо важливо. Поки ви послідовні протягом усієї гри.

Я вважаю, що найпоширеніший підхід полягає в тому, щоб світові межі були зосереджені навколо (0,0), це означає, що ви могли б мати свої межі -halfSize, halfSize. Оскільки більшість структур даних, які представляють позицію (Vector2 або Vector3) за замовчуванням до нулів, ви знаєте, що розташування об'єктів за замовчуванням знаходиться в центрі світу (замість нижнього кута).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.