Então, eu estou criando um jogo 2D, de cima para baixo, baseado em sprites (lado a lado), e agora estou trabalhando em mapas (bem, um editor de mapas no momento, mas ele estará criando meus mapas, basicamente o mesmo coisa).
O cenário
Então, estou pensando em eficiência e criando um mapa em pedaços. Em cada peça, pretendo ter 'camadas'. Basicamente, pretendo reduzi-lo para um nível 'abaixo do herói' e um nível 'acima do herói', com o herói processado obviamente. Provavelmente também haverá uma camada 'no nível do herói', mas ainda não estou lá. Ainda nem se preocupe com eventos ou interação. Só estou procurando um herói na tela.
Agora, quanto ao movimento, obviamente preciso saber quais peças podem ser movidas e em que direção. Meu plano no momento é que cada bloco receba 8 bits (4 'pode entrar na direção' bits, 4 'pode sair na direção'). Isso me permitirá limitar o movimento e até permitir um movimento direcional de sentido único.
O dilema
Isso funciona muito bem para muitos cenários. Isso permitirá que eu armazene um mapa em essencialmente 3 camadas, uma string e me dê flexibilidade no futuro. No entanto, não consigo criar mapas que tenham camadas. Um bom exemplo é uma ponte em que o usuário pode passar por cima ou por cima da ponte sem que movimentos inválidos sejam permitidos. Não consigo criar uma plataforma e permitir movimentos por baixo. Essas são coisas que eu gostaria de poder incluir no meu jogo.
Minha ideia
Em teoria, eu poderia permitir várias camadas de heróis e, em seguida, permitir vários conjuntos de camadas 'abaixo' e 'acima' (ou camadas sanduíche). Mas isso complica meu sistema e torna os movimentos entre mapas potencialmente complicados (se o herói está na terceira camada na borda de um mapa, mas isso corresponde à segunda camada no outro mapa, como posso permitir ou impedir o movimento).
Minha pergunta
Existe uma maneira melhor de gerenciar vários mapas com vários níveis como este, onde um nível de usuário pode ser 'conectado' em diferentes níveis em diferentes mapas?
Ou até ...
Estou fazendo isso da maneira mais difícil? Existe uma maneira mais padrão de lidar com mapas 2D lado a lado que não conheço?
Coisas a serem observadas ou que podem ser úteis
- Isso será feito em Javascript (transferido em JSON)
- O estado precisará ser transferido rapidamente, portanto uma identificação de mapa e uma direção x / y / devem ser suficientes para obter um valor booleano 'pode se mover'
- Os mapas não terão tamanho padrão (embora estejam em um determinado número de blocos)
- Criar uma ferramenta de edição para que eu possa ajudar outras pessoas, para que algo que eu possa criar em uma ferramenta seja útil
- Os locais de 'teletransporte' provavelmente precisarão existir para entrar na construção de mapas e para e de diferentes conjuntos de mapas (que não necessariamente serão conectados), mas ainda não foram criados (concentrando-se nos eventos no momento).