Prática recomendada para o sistema de coordenadas do mapa

20

Existem convenções e / ou métodos mais conhecidos em torno de sistemas de coordenadas em mapas de jogos? A origem geralmente está posicionada no centro do mapa? Ou ele fica em um canto e o mapa é construído em um único octante do espaço 3D?

TaylorE
fonte
Hm, você marcou o tilemap e a resposta principal está falando de preocupações com o tilemap, mas também menciona 3D e octantes, provavelmente o motivo pelo qual a segunda resposta está falando sobre precisão de flutuação. A geometria 3D geralmente não é armazenada em uma grade, portanto as origens são mais arbitrárias e nunca ouvi falar de problemas de precisão de flutuação em um mapa de grade 2D. Talvez algum esclarecimento ou unificação esteja em ordem ...
StarWeaver 06/10
Octant foi editado. Menciono 3D porque a maioria dos frameworks que eu vi possui algum tipo de eixo Z. O mapa do jogo pode ser plano e em 2D, mas a câmera está deslocada ao longo de um terceiro eixo.
Taylore

Respostas:

37

A maioria dos jogos coloca a origem do mapa em um canto. A principal razão para isso é que os mapas de mosaico geralmente são armazenados internamente em matrizes bidimensionais e a maioria das linguagens de programação não permite índices negativos de matrizes. Existem muitas discussões sobre qual canto deve ser a origem, mas não considero nenhum dos argumentos particularmente fortes. No final, é apenas preferência pessoal. Eu recomendaria usar apenas o mesmo canto que sua API gráfica está usando para minimizar a dor de cabeça.

Exceções geralmente são jogos que permitem mapas que crescem infinitamente em todas as direções. Isso não funciona corretamente sem índices negativos, portanto, uma matriz 2D simples está fora de questão. Você precisará armazenar os dados do mapa em uma estrutura de dados mais complexa. Nesta situação, geralmente faz mais sentido colocar a origem na posição inicial.

Philipp
fonte
12

Em teoria, a localização da origem não importa. Todas as operações matemáticas que você faz quando o mapa é renderizado ou quando os objetos se movem no mapa funcionam bem, independentemente da origem da origem.

No entanto, na prática, há uma razão pela qual você pode querer tornar o centro do mapa a origem - e isso é uma precisão limitada dos valores de ponto flutuante.

Com números de ponto flutuante, quanto mais longe você chega de 0, menor é a precisão nos dígitos menores.

Enquanto trabalhamos em um jogo de mundo aberto que tinha um mapa muito grande, na verdade encontramos problemas em que a física e outras coisas começavam a quebrar à medida que você se afastava mais da origem.

A solução foi fazer algumas manobras onde a origem sempre estava bem próxima do jogador, teleportando inteligentemente as coisas (o jogador, as peças do mapa, a câmera etc.) ao redor para não ficar muito longe da origem.

Alan Wolfe
fonte
1

Realmente não importa. O que algumas pessoas mudam em seu sistema de coordenadas é frequentemente o eixo y. Em vez de ter (0,0) no canto superior esquerdo, eles preferem tê-lo no canto inferior esquerdo para facilitar a física.

Cedric Martens
fonte
Como a física é mais fácil se a origem do sistema de coordenadas estiver no canto inferior esquerdo?
Tyyppi_77
3
Eu acho que a última frase está faltando uma palavra: depuração . É mais intuitivo se o terreno é zero e tudo sobe a partir daí, do que se o "teto" é zero e tudo é medido com base nisso.
Vaillancourt