É possível personalizar o jogo usando o formato JSON.
Uma fase tem esse formato:
[imagem da fase, informações, modo de arcade]
No campo de imagem, espera-se uma url de uma png com fundo transparente.
No campo do modo de arcade, coloque 1 ou 0, para se deseja ativar ou não o modo de arcade para este mapa, respectivamente.
Modo normal: A fase é trocada no final de toda partida
Modo de arcade: A fase só é trocada quando o time do player (no multiplayer, o host) vence a partida. Há 3 continues, e se eles acabarem, volta para a primeira fase.
Em informações, um objeto no formato JSON.
Deve estar entre colchetes e seus itens separados por vírgulas, como uma array.
Um exemplo de sua utilização seria:
[
'Player1', {lives: 1, team: 'Players'}, 'Player2', {lives: 1, team: 'Players'},
'AI', {lives: 1, 'damageModifier': 2, sprite: 'alien2.png',
'Asteroid', {},
'Asteroid', {},
'Asteroid', {}
]
Você alterna entre colocar o nome do tipo do objeto (entre aspas) e suas variáveis personalizadas (dentro de chaves). Deixe as chaves em branco caso queira deixar na forma padrão.
No tipo de objeto, você pode colocar
PlayerX (substitua X pelo número do player. Se ele não estiver presente, não aparecerá),
AI para inteligência artificial e
Asteroid.
Você pode colocar algumas das seguintes variáveis para Player/AI:
x ou
y: posições X e Y, será escolhida aleatoriamente caso não tenha
team: string do nome da equipe, caso tenha uma
sprite: url do sprite personalizado
damageModifier: o quão a nave é sensível a danos, 1 para normal, 0.1 para mais resistente e 10 para mais fraca
laserColor: uma
color name indicando a cor do laser
No caso do asteroide, além das posições, você pode colocar
small: true caso queira um menor.
Como é suportado várias fases, tudo deve estar dentro de uma array. Por exemplo:
[ [imagem da fase, informações, modo de arcade], [imagem da fase, informações, modo de arcade] ]
Um exemplo completo seria (para duas fases idênticas, como modo de arcade desativado:
[
["level.png",["Player1",{},"Player2",{},"Player3",{},"AI",{"lives":5,"damageModifier":10},"Asteroid",{}],0],
["level2.png",["Player1",{},"Player2",{},"Player3",{},"AI",{"lives":5,"damageModifier":10},"Asteroid",{}],0]
]
Eu espero deixar esse processo mais conveniente no futuro.