Eu sou um iniciante absoluto em programação de jogos, caso essa pergunta seja mal formulada, esteja ciente de que não foi uma negligência ao meu lado, mas falta de experiência em programação de jogos.
O jogo que estou planejando codificar usará um mapa 2D de cima para baixo como "mundo". O mundo pode ser maior que a janela (a janela pode aumentar ou diminuir o zoom) e os veículos podem estar localizados em qualquer ponto do mundo (= não é um mapa lado a lado, o espaço é "contínuo").
Para esclarecer com um exemplo: se o mundo é um terreno de 1000x1000 metros, um veículo pode estar no local (327,31, 720,4) metros.
Minha pergunta é: qual é a maneira mais conveniente de representar o mundo internamente? Eu poderia pensar nessas possibilidades:
- não faça nada e use medidores como se eu estivesse trabalhando com o objeto físico,
- normalize para pixels, definindo o tamanho do mundo como o número de pixels para representar 1000 metros com zoom máximo,
- normalize para 1 definindo a palavra como um quadrado de tamanho 1
... mas tenho certeza de que pode haver outros / alguns dos quais não fazem sentido. É que, sendo o meu primeiro jogo, não tenho uma imagem clara dos problemas à minha frente e gostaria de algumas orientações para fazer uma escolha inicial razoavelmente correta.
Obrigado pelo seu tempo.
Respostas:
Concordo em usar um valor do mundo real (metros, pés, etc.) como sua base para a distância. O problema com suas outras duas sugestões é que ambas são variáveis. Trabalhar com tamanho mundial
1
fará com que toda a sua aritmética seja de ponto flutuante entre -1 e 1, o que pode levar a mais erros de ponto flutuante. Além disso, se você decidir criar tamanhos de mundo variáveis (mundos "grandes" para jogos mais longos etc.), você apresentará muitos problemas ao seu código. Da mesma forma, se você usar pixels, mesmo com um nível de zoom máximo / mínimo, você ficará confuso e terá problemas caso decida aumentar ou diminuir os níveis de zoom.fonte
Das três opções que você sugeriu, o uso de medidores provavelmente será o melhor. À medida que você cria outros dados, lidar com o comprimento em metros facilitará sua vida. Entre outras razões, você pode decidir alterar o tamanho do mundo ou níveis diferentes podem precisar de mapas de tamanhos diferentes.
Você também pode optar por usar pés (ou possivelmente polegadas). Parte dessa decisão pode depender de quais pacotes de middleware você usa - alguns mecanismos de física preferem um tipo de unidade ou outro (embora quase sempre seja configurável). Na maioria das vezes, você pode simplesmente escolher uma unidade e seguir em frente.
fonte
Normalizar para '1' não é realmente o caminho a seguir (e se você tiver um mundo não quadrado? Ou vários mundos com tamanhos diferentes ...).
Usando pixels como ... NUNCA misture jogabilidade e medidas gráficas !! Não se tranque para não mudar os gráficos sem precisar alterar o código.
Portanto, metros (pés ou qualquer medida que você mais gosta) é o caminho a percorrer. Você se sentirá muito melhor codificando seu lançador de mísseis para se mover a 50 km / h do que 0.00076 unidades / segundo ...
fonte