Space Marine escreveu:
Fmz, me passe as informacoes necessarias por msn que eu faço aqui o NeoCore Builder
Cara, eu não sei quando poderei ficar on no msn (essa internet que eu to aqui também não ta colaborando muito), então vo te passa as infos aqui mesmo, ok? Assim os possíveis mappers podem ter uma idéia do funcionamento dos mapas também.
ATENÇÃO! TODOS AQUELES QUE PARTICIPARÃO DO PROJETO DEVEM LER ISTO TAMBÉM!
Infos
Bom, o esquema do mapa não é complicado, são 5 tipos de parede, 5 tipos de chão e 5 tipos de teto. Por enquanto são 3 objetos (e o jogador 2, que também é um objeto mas
não deve ser colocado no mapa).
O mapa é um arquivo de texto (com extensão *.map) que contém as seguintes informações:
int (Tamanho das matrizes, em linhas e colunas)
int int (Posição inicial do jogador 1)
int int (Saída do mapa [não estou usando mas tem que estar lá])
matriz int (Matriz de inteiros de 0 a 5, para as paredes, e de 6 a 8, para objetos)
matriz int (Matriz de inteiros de 0 a 5 para chão)
matriz int (Matriz de inteiros de 0 a 5 para teto)
comentários
Obs.: Embora o jogo só tenha "um andar", ele pode ser considerado um semi-3D pois eu também tenho "andares" acima e abaixo do jogador, onde eu represento o teto e o chão.
Exemplo de mapa:
map02.map
Código: Selecionar todos
15
1 1
13 13
3 3 1 1 1 1 1 1 1 1 1 1 1 3 3
3 0 0 0 1 0 0 0 0 0 1 0 0 0 3
1 0 0 0 1 0 2 0 2 0 1 0 0 0 1
1 1 1 0 0 0 0 0 0 0 0 0 1 1 1
1 0 0 0 1 0 2 0 2 0 1 0 0 0 1
1 0 0 0 1 2 0 0 0 2 1 0 0 0 1
1 1 1 1 1 6 0 0 0 6 1 1 1 1 1
3 0 1 0 0 1 0 0 0 1 0 0 1 0 3
3 0 0 0 0 0 1 0 1 0 0 0 0 0 3
3 0 0 0 0 0 0 0 0 0 0 0 0 0 3
3 0 0 0 0 0 0 0 0 0 0 0 0 0 3
3 0 0 0 0 0 0 0 0 0 0 0 0 0 3
3 0 0 0 0 0 0 0 0 0 0 0 0 0 3
3 0 0 0 0 0 0 0 0 0 0 0 0 0 3
3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 2 2 2 2 2 2 2 2 2 2 2 2 2 0
0 2 2 2 2 2 2 2 2 2 2 2 2 2 0
0 1 1 2 2 2 2 2 2 2 2 2 1 1 0
0 2 2 2 1 3 1 2 1 3 1 2 2 2 0
0 2 2 2 1 1 2 2 2 1 1 2 2 2 0
0 1 1 1 1 2 2 3 2 2 1 1 1 1 0
0 1 1 1 1 1 2 2 2 1 1 1 1 1 0
0 1 1 1 1 1 1 2 1 1 1 1 1 1 0
0 3 3 3 3 1 2 2 2 1 3 3 3 3 0
0 3 3 3 1 2 2 2 2 2 1 3 3 3 0
0 3 3 3 3 1 2 2 2 1 3 3 3 3 0
0 3 3 3 3 3 1 2 1 3 3 3 3 3 0
0 3 3 3 3 3 3 1 3 3 3 3 3 3 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 1 1 1 2 1 2 1 2 1 1 1 0 0
0 1 2 1 1 1 1 1 1 1 1 1 2 1 0
0 1 1 1 1 1 1 2 1 1 1 1 1 1 0
0 1 2 1 1 4 1 1 1 4 1 1 2 1 0
0 1 1 1 1 1 3 2 3 1 1 1 1 1 0
0 1 1 1 1 3 2 3 2 3 1 1 1 1 0
0 0 1 0 0 1 3 2 3 1 0 0 1 0 0
0 0 0 0 0 0 1 1 1 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Lava Pool!
Criado por Fabio914
OBSERVAÇÃO PARA MAPPERS: As paredes com transparência na textura devem ser colocadas
APENAS nas colunas/linhas finais ou iniciais, neste caso a parede 3 possui transparência e está posicionada apenas nestas colunas/linhas.
OBSERVAÇÃO 2: Em todas as matrizes o 0 representa espaço vazio. Ele
NÃO deve ser colocado nas colunas/linhas finais ou iniciais na matriz das
paredes, pois a engine não tem como renderizar o "void" do mapa. Nas outras matrizes o 0 pode ser colocado em qualquer posição. Na matriz das paredes o 0 representa espaço livre (onde o jogador pode andar), na matriz do chão e do teto ele representa vazio e, no caso do teto, fará a engine mostrar o céu. Eu não recomendo usar o 0 na matriz do chão (nas posições onde o jogador andará), pois na qualidade Ultra aparecerá um espaço preto no chão, e na qualidade Alta aparecerá o céu (no chão).
Tiles!
Matriz das Paredes
0 - Vazio
1 - Parede 1 (textura wall1.bmp)
2 - Parede 2 (textura wall2.bmp)
3 - Parede 3 (textura wall3.bmp)
4 - Parede 4 (textura wall4.bmp)
5 - Parede 5 (textura wall5.bmp)
6 - Objeto 1 (textura o1.bmp)
7 - Objeto 2 (textura o2.bmp)
8 - Objeto 3 (textura o3.bmp)
9 - Jogador 2
(NÃO USE! Este é um objeto "interno" do programa, e é usado para marcar a posição do outro jogador, se você usar, você vai criar uma "Bot Doll")
Matriz do chão
0 - Vazio
1 - Chão 1 (textura floor1.bmp)
2 - Chão 2 (textura floor2.bmp)
3 - Chão 3 (textura floor3.bmp) [Este é um chão especial! Vide OBS 4!]
4 - Chão 4 (textura floor4.bmp)
5 - Chão 5 (textura floor5.bmp)
Matriz do teto
0 - Vazio (céu)
1 - Teto 1 (textura ceil1.bmp)
2 - Teto 2 (textura ceil2.bmp)
3 - Teto 3 (textura ceil3.bmp)
4 - Teto 4 (textura ceil4.bmp)
5 - Teto 5 (textura ceil5.bmp)
OBSERVAÇÃO PARA EDITORES: Cada bitmap de parede contém 3 imagens da mesma parede (ordenadas verticalmente), com brilhos diferentes, começando da mais clara para a mais escura. As paredes são 64x64 pixels, como temos 3 delas no mesmo arquivo, este arquivo terá 64x192 pixels de tamanho. A cor de transparência é a (255,0,255), se sua parede tiver transparência ela só poderá ser aplicada nas colunas/linhas finais e iniciais do mapa apenas!
OBSERVAÇÃO 2: Talvez eu implemente "objetos animados" (com mais de uma textura), portanto talvez eu faça no esquema das paredes (mais de uma imagem no mesmo arquivo) ou eu crie imagens bmp separadas para o mesmo objeto (ai, neste caso, teríamos, por exemplo, o1_a.bmp e o1_b.bmp). É capaz que eu implemente também tetos e chãos animados.
OBSERVAÇÃO 3: Os objetos, chãos e tetos são texturas 64x64 pixels, com a cor (255,0,255) como transparência.
OBSERVAÇÃO 4: Quando algum jogador está sobre o chão 3 ele sofre dano, não é possível dar
respawn sobre o chão 3, e o Bot não passa pelo chão 3 (eu implementei essa última numa versão ainda não lançada, nas versões anteriores o bot passa pelo chão 3).
Sobre o EDITOR
O Editor pode ter uma matriz só, porém eu gostaria que tivesse botões para escolher se o cara quer editar o chão, teto, ou paredes (ou seja, botões para escolher a visualização, estes botões teriam que ser "clicáveis" a qualquer momento da edição, para o mapper poder alternar constantemente o modo de edição para que ele possa montar as salas "na integra" de uma forma fácil e rápida). O "seletor de Tiles" pode ser feito com botões na tela, para que o usuário possa clicar sobre ele para seleciona-lo (diferentemente do que era no outro editor que era necessário apertar varias vezes a tecla até chegar no tile desejado). Também seria desejável um botão "Salvar como" para o usuário salvar o mapa com o nome que desejar e no diretório que desejar (isso a qualquer momento na edição), além disso, deverá existir um botão para abrir o mapa já existente, e outro botão para a criação de um novo mapa (que deverá fazer aparecer uma janela para que o jogador entre com o tamanho do mapa e as posições de inicio e saida).
A interface seria algo + ou - assim:
Código: Selecionar todos
=====================================================
[Novo] [Abrir] [Salvar] [Modo Parede] [Modo Chão] [Modo teto] [Sair]
=====================================================
[Tile 0] [Tile 1] [Tile 2] [Tile 3] [Tile 4] [Tile 5] [Tile 6] [Tile 7] [Tile 8]
=====================================================
MATRIZ AQUI
=====================================================
Depois poderá ser implementado um botão para testar o mapa (que chamará o executável do NeoCore com o mapa como argumento).
@Space: Se você achar muito complicado implementar dessa forma você pode me dar outras sugestões ou utilizar a
Eclipse API para desenvolver essa interface no Allegro.