Soy un principiante absoluto con la programación de juegos, si esta pregunta está mal formulada, tenga en cuenta que no fue un descuido a mi lado, sino la falta de experiencia en programación de juegos.
El juego que planeo codificar usará un mapa 2D de arriba hacia abajo como "mundo". El mundo puede ser más grande que la ventana (la ventana puede acercarse o alejarse) y los vehículos pueden ubicarse en cualquier punto del mundo (= no es un mapa en mosaico, el espacio es "continuo").
Para aclarar con un ejemplo: si el mundo es un terreno de 1000x1000 metros, un vehículo podría estar en la ubicación (327.31, 720.4) metros.
Mi pregunta es: ¿cuál es la forma más conveniente de representar al mundo internamente? Podría pensar en estas posibilidades:
- no haga nada y use medidores como si estuviera trabajando con el objeto físico,
- normalizar a píxeles que definen el tamaño mundial como el número de píxeles para representar 1000 metros con el zoom máximo,
- normalizar a 1 definiendo la palabra como un cuadrado de tamaño 1
... pero estoy seguro de que podría haber otros / algunos de los míos podrían no tener sentido. Es solo que, siendo mi primer juego, no tengo una idea clara de los problemas que tengo por delante, y me gustaría obtener alguna orientación para tomar una decisión inicial razonablemente correcta.
Gracias por tu tiempo.
Respuestas:
Estoy de acuerdo con usar un valor del mundo real (metros, pies, etc.) como base para la distancia. El problema con sus otras dos sugerencias es que ambas son variables. Trabajar con un tamaño mundial de
1
hará que toda su aritmética sea de punto flotante entre -1 y 1, lo que puede conducir a más errores de punto flotante. Además, si alguna vez decide hacer tamaños de mundo variables (mundos "grandes" para juegos más largos, etc.), introducirá muchos problemas en su código. Del mismo modo, si utiliza píxeles, incluso a un nivel de zoom máximo / mínimo, se encontrará con problemas y confusión si decide aumentar o disminuir los niveles de zoom.fuente
De las tres opciones que sugirió, probablemente sea mejor usar medidores. A medida que crea otros datos, lidiar con la longitud en metros le hará la vida mucho más fácil. Entre otras razones, puede decidir cambiar el tamaño de su mundo, o diferentes niveles pueden necesitar mapas de diferentes tamaños.
También puede decidir usar pies (o posiblemente pulgadas). Parte de esta decisión puede depender de los paquetes de middleware que utilice: algunos motores de física prefieren un tipo de unidad u otro (aunque casi siempre es configurable). En su mayor parte, puede elegir una unidad e ir con ella.
fuente
Normalizar a '1' realmente no es el camino a seguir (¿qué pasa si tienes un mundo no cuadrado? O varios mundos con diferentes tamaños ...).
Usando píxeles como ... ¡NUNCA mezcle el juego y las medidas gráficas! No te encierres para que no puedas cambiar los gráficos sin tener que cambiar el código.
Entonces, metros (pies o cualquier medida que más le guste) es el camino a seguir. Se sentirá mucho mejor codificar su lanzador de misiles para moverse a 50 km / h que 0.00076 unidades / segundo ...
fuente