Prévia do material em texto
1
Manual
PS2BOR
Edição: 2.0
2
Índice
Informações gerais ............................................................................................................................... 3
Beats of Rage (BoR) .................................................................................................................. 3
INSTALAÇÃO .................................................................................................................................... 4
PS2BOR para USB / HDD ........................................................................................................ 4
PS2BOR para CDROM ............................................................................................................. 4
Criando ISO de PS2BOR: ......................................................................................................... 4
Compilação PS2BOR com MultiLoader: .................................................................................. 6
Edição de Jogos .................................................................................................................................... 8
Introdução .................................................................................................................................. 8
Extraindo o conteúdo de um arquivo PAK: .............................................................................. 8
Testando / jogando um PAK descompactado: .......................................................................... 9
Compactando pasta DATA para arquivo PAK: ...................................................................... 10
Models.txt ................................................................................................................................. 10
Sobre as entradas Load e Know: ..................................................................................... 10
Levels.txt .................................................................................................................................. 11
Arquivo da Entidade ................................................................................................................. 13
1ª Parte - Dados do Cabeçalho: ...................................................................................... 13
2ª Parte - Tipos de Animação: ........................................................................................ 15
3ª Parte - Configurações da Animação: .......................................................................... 17
Arquivos de Sistema ................................................................................................................. 27
Sequências Animadas ............................................................................................................... 29
Arquivo de Cenário .................................................................................................................. 30
1ª Parte - Design de Cenário: .......................................................................................... 30
2ª Parte - Configuração de Objetos Gerados: ................................................................. 33
Arquivos de Música ................................................................................................................. 40
Como converter de WAV para BOR: .............................................................................. 40
Como converter de BOR para WAV: .............................................................................. 41
Arquivos de Som ...................................................................................................................... 41
INDEXAÇÃO DE IMAGENS PARA USO CORRETO NO PS2BOR .................................. 43
PASSO 1 – CRIANDO O MACRO PARA INDEXAÇÃO: ......................................... 43
PASSO 2 – INDEXANDO AUTOMATICAMENTE TODAS A IMAGENS UTILIZANDO
O MACRO CRIADO: ..................................................................................................... 52
Soluções de Problemas ............................................................................................................. 53
- Problemas Não Fatais - ................................................................................................ 54
- Problemas Fatais - ........................................................................................................ 54
Outras Notas ............................................................................................................................. 55
Sobre as sequências animadas: ....................................................................................... 55
Placar: ............................................................................................................................. 55
Tempo: ............................................................................................................................ 56
Projéteis: ......................................................................................................................... 56
Arquivos Essenciais:........................................................................................................ 56
Limitações: ..................................................................................................................... 57
Links ......................................................................................................................................... 58
Créditos .................................................................................................................................... 59
3
INFORMAÇÕES GERAIS
Beats of Rage (BoR)
Beats of Rage é um semi jogo 3D de pancadaria feito pela Senile Team. É inspirado na série Street
of Rage, grande jogo popular da SEGA para o console Gênesis. Entretanto esse jogo usa sprites do
jogo King of Fighters (um jogo 2D 1vs1) esses sprites são para heróis e inimigos.
Como um jogo de beat 'em up (pancadaria), este jogo tem características como o sistema de
combos que funciona pressionando o botão de ataque consecutivamente, pulo e pulo seguido de
ataque, estilo de ataque especial similar ao usado no SoR2 (Streets of Rage 2), e sistema de agarrão
similar aos jogos da Capcom. Existem vários inimigos neste jogo, alguns deles podem executar um
ataque superior (upper) para atingir o jogador durante um pulo seguido de um ataque (voadora),
alguns deles podem se libertar de agarrões, alguns deles podem pegar ou arremeçar personagens
controlados pelos jogadores, etc. Os motociclistas do estilo SoR2 também podem ser encontrados
aqui. Claro que itens como alimentos e vidas (1Up) também estão disponíveis.
Beats of Rage demorou nove meses para se desenvolver. O jogo foi então modado e portado para
outros sistemas, resultando em aumento de popularidade. Mais de um milhão de cópias do jogo
foram baixadas.
Beats of Rage foi feito primeiramente disponível para DOS em novembro de 2003. Apesar de
apenas publicidade boca-a-boca, o jogo ganhou popularidade rapidamente, derrubando anfitriões
espelho como Dreamcast-Scene apenas 24 horas depois de concordar em hospedá-lo.
Como o jogo foi aberto, foi portado para o Dreamcast e PlayStation 2 (PS2BOR v0.1) . Ele
continuou a receber portas, pois está disponível em sistemas contemporâneos, incluindo Wii e
PlayStation Portable, bem como várias outras plataformas.
A razão para o sucesso contínuo de Beats of Rage é a game engine 2D poderosa que pode ser
personalizada e permite que novos jogos de briga de rua estilo beat'em up, possam ser construídos
dentro dela. Os jogos desenvolvidos para a engine Beats of Rage são comumente referidos como
mods.
Este jogo também é modulável, o que permite aos jogadores e/ou desenvolvedores modificar um
módulo, no formato PAK, ou mesmo criar umdo zero. O método de modificação é bastante simples
porque é basicamente constituido por imagens, sprites, arquivos de som no formato wav e gifs
animados, tudo isso para conversão a fim de utilizá-los no BoR, posteriormente configurando-os em
arquivos de texto para criação de heróis, inimigos, estágios, etc.
Os arquivos essenciais do Beats of Rage são compostos por um módulo (bor.pak) e um executável
(bor.exe). No caso do Playstation 2, o executável vem no formato "bor.elf".
Devido a vários recursos que foram adicionados ao BOR ele mudou seu nome para OpenBOR,
deixando o PlayStation 2 excluído das novas compilações por não ter memória suficiente, ficando
somente na versão antiga do BOR para PS2, que atualmente é a v0.1b.
4
Site Oficial:
http://www.senileteam.com/beatsofrage.html
INSTALAÇÃO
A porta BOR para PS2 pode ser executada através dos dispositivos USB / HDD ou CD/DVD-ISO.
Existem 2 ELF's para PS2BOR. Um para ser usado em CD/DVD-ISO e outro para ser executado
pelo ELF. O BOR.ELF para CD/DVD-ISO não funciona se aberto pelo USB ou HDD. O
BOR.ELF para USB / HDD não funciona se aberto em uma ISO. Mais detalhes abaixo:
PS2BOR para USB / HDD
O arquivo PS2BOR_v0.1b.ELF, tem o tamanho de 489Kb e é feito para ser executado apartir de
um dispositivo USB / HDD (Pendrive, HD Interno ou Externo), podendo ser aberto artavés do
uLaunchELF, FreeMCBoot, Aba APPS do OPL ou qualquer outro homebrew semelhante.
Para instalar um jogo, crie uma pasta com o nome que quizer e coloque dentro dela os arquivos
BOR.PAK e BOR.ELF.
O arquivo BOR.PAK e o mod do jogo, deve estar no formato .pak e nomeado como BOR.PAK.
O arquivo BOR.ELF é o executavél e pode ser acessado atráves de algum programa homebrew de
PS2 como o uLaunchELF. Pode ter qualquer nome, como o Nome do Jogo.ELF, por exemplo.
Para ter vários jogos, basta criar várias pastas com os nomes dos mesmos e dentro o BOR.ELF e o
BOR.PAK do jogo em questão.
PS2BOR para CDROM
O arquivo PS2BOR.ELF para CDROM tem o tamanho de 448Kb e é feito para ser executado
através da leitora do PS2 ou em ISO pelo Open PS2 Loader ou qualquer outro homebrew
semelhante.
Criando ISO de PS2BOR:
1) Em seu computador, crie uma pasta com qualquer nome para seu projeto;
http://www.senileteam.com/beatsofrage.html
5
2) Coloque dentro desta o pasta o arquivo BOR.PAK que é o jogo em questão e os arquivos que
vem junto do PS2BOR.ELF, são eles:
- BOR.ELF
- BOR.PAK
- IOPRP260.IMG
- LIBSD.IRX
- PADMAN.IRX
- SDRDRV.IRX
- SIO2MAN.IRX
- SYSTEM.CNF
3) Para a ISO funcionar no Open PS2 Loader, deve -se trocar a ID do jogo:
Abra o arquivo SYSTEM.CNF pelo Bloco de Notas no Windows,
ele estará assim:
BOOT2 = cdrom0:\BOR.ELF;1
VER = 1.00
VMODE = NTSC
Na primeira linha substitua BOR.ELF por alguma ID no formato: ABCD_123.45
Exemplo:
BOOT2 = cdrom0:\ABCD_123.45;1
VER = 1.00
VMODE = NTSC
4) Abra o programa UltraISO, Clique em Arquivo > Nova > Imagem DVD PS2.
Navegue até a pasta de seu projeto e abra o arquivo SYSTEM.CNF.
6
5) Adicione o arquivo BOR.PAK e Clique em Salvar.
Compilação PS2BOR com MultiLoader:
Para adicionar vários jogos a uma ISO pelo MultiLoader:
Abra o arquivo PS2BOR.ELF em um Editor Hexadecimal,
nas linhas "0006b5s0 bor.pak.error" e "0006b930 bor.pak.Playing",
substitua bor por 3 caracteres.
7
O arquivo .PAK do jogo deverá ter exatamente o mesmo nome desta mudança.
/ pode ser usada para cria um subdiretório.
Exemplo:
A/D.PAK = Significa uma pasta chamada "A" na raiz da ISO e dentro dela o arquivo D.PAK.
Neste exemplo o arquivo BOR.PAK seria renomeado para D.PAK e colocado na pasta "A" na raiz
da ISO.
Notas:
- PS2BOR não funciona no emulador PCSX2.
- Utilize OPL via Rede para testar suas compilações.
8
EDIÇÃO DE JOGOS
Este grande jogo pode ser modificado pelos jogadores ou criadores para mudar ou criar seus jogos
(mods). Este método de modificação é muito simples porque ele provém de figuras, sprites, wavs,
gifs animados e conversões deles para o uso em BoR, selecionando-os em arquivos de texto (.txt)
para fazer heróis, inimigos, fases etc.
Na realidade, Beats of Rage é composto de Pak e máquina (Bor.exe). Podemos dizer que Pak é o
corpo e máquina é a alma. Por esta razão os mods estão somente na forma de Pak sem a máquina
(Bor.exe).
Pak não é capaz de ser editado (de um jeito normal) é por isso que modificadores e moderadores
precisam descompactar um mod primeiro. Depois que a modificação estiver terminda, o mod tem
que ser compactado para ser jogado. É possível jogar este mod sem compactar mas funciona
melhor estando compactado.
Embora criar um mod seja muito simples, BoR tem muitas características que tem seu próprio uso e
seus lugares próprios (ou texto para ser exato) para serem colocadas. Este manual é para explicar
essas características e onde elas podem ser colocadas.
Devido a falta de características exigidas do BoR e muitos pedidos, alguns codificadores foram a
fundo para melhorar o BoR, codificaram essas características desaparecidas e cumpriram alguns
requisitos. Existe algumas variações do BoR por causa desta e.g, OpenBor, DarkBor e HOR.
OpenBor é o mais avançado e este manual inclui suas características. Atualmente o último OpenBor
suporta scripts mas isto não está incluído aqui.
Introdução
Antes de começar qualquer modificação, você precisa dos ingredientes. A maioria dos ingredientes
são sprites e textos. Devido a muitos arquivos necessários e a sua complexidade, é altamente
recomendável começar a modificação editando PAKs disponíveis em vez de criar os ingredientes
um a um.
Outro jeito é baixar algum BoREdit pack. O pack contém bastantes ingredientes para começar um
mod.
Extraindo o conteúdo de um arquivo PAK:
- Para extrair um arquivo PAK utilize o programa "PAXPLODE".
- Você precisará dos arquivos "paxplode.exe" e "paxplode.bat"para a extração do conteúdo,
Mantenha-os sempre juntos.
- Coloque estes arquivos na mesma pasta com o PAK que você deseja extrair.
9
- Renomeie o PAK como "bor.pak" (sem aspas) caso ele tenha outro nome.
- Clique duas vezes no arquivo "paxplode.bat" para iniciar a extração ou arraste e solte o
arquivo .PAK no PAXPLODE.exe. .
Se você fizer isso direito, uma janela mostrando mensagens do DOS sobre a extração de arquivos
será exibida.
- Os arquivos serão extraídos para uma nova pasta chamada "DATA".
Dentro da pasta "data", há outras pastas contendo elementos do PAK, agora descompactado:
- bgs -> os cenários na tela se utilizam das imagens desta pasta.
- chars -> as entidades (personagens, itens, e obstáculos) na tela se utilizam das imagens desta pasta.
Também há arquivos de configuração das entidades no formato TXT.
- levels -> contém arquivos de configuração dos cenários no formato TXT.
- music -> contém arquivos de música (no formato ".bor") que são tocadas de acordo com a ordem
e configuração dos cenários.
- scenes -> contém sequências animadas no formato GIF que são exibidas na tela entre as fases.
- sounds -> contém arquivos de som (no formato WAV) que são tocados de acordo com a
configuração dos personagens.
- sprites -> contém arquivos de imagem no formato GIF essenciais para o funcionamento correto
do BOR. Jamais altere o conteúdo desta pasta, a não ser que você saiba o que está fazendo.
Além desses, há outros arquivos em separado: "models.txt", "levels.txt", e "pal.act". Cada arquivo
de texto será explicado em sua própria seção abaixo.
"pal.act" é paleta global. Cada sprite no PAK deve usar a mesma paleta que é essa paleta global.
Você precisa do Adobe PhotoShop para visualizar e criar arquivos ".act".
NOTA: algumas pastas não são obrigatórias. Você pode colocar todosos seus arquivos em uma
mesma pasta, desde que tudo esteja dentro da pasta "data", assim como os caminhos indicados nos
arquivos de configuração estejam descritos corretamente. No entanto, é recomendável usar pastas
diferentes como no padrão acima para facilitar a modificação. Você pode adicionar outras pastas se
quiser. Apenas certifique-se de que os caminhos estejam corretos.
Testando / jogando um PAK descompactado:
- Coloque os arquivos "bor.exe" e "bor.pak" no mesmo diretório da pasta "data".
ATENÇÂO: este "bor.pak" não é o mesmo renomeado anteriormente. Este aqui trata-se um
arquivo vazio (dummy), obrigatório para que o executável possa rodar o conteúdo da pasta "data"
sem a necessidade de compactá-la antes.
- Clique duas vezes no arquivo "bor.exe" para rodar o projeto a fim de verificar se as mudanças
feitas estão do seu agrado.
- Há uma grande possibilidade de que o executável dê erro durante sua inicialização fazendo com
que o "bor.exe" não abra. Para verificar o problema, abra o "bor.exe" através do prompt de
comando do DOS. Para isso clique na opção "Executar" no menu inicial do Windows e escreva no
campo em branco "command" (sem as aspas). Através do DOS abra o "bor.exe". A tela do BOR
10
será maximizada e o processo de inicialização deve parar no meio apresentando alguma mensagem
de erro, mensagem esta que será desenvolvida mais a fundo neste documento em sua respectiva
seção. Para sair do modo de tela cheia, digite "exit" no prompt do DOS (sem as aspas).
Compactando pasta DATA para arquivo PAK:
- Você precisará de dois arquivos para criar um arquivo PAK: "PACKER.EXE" e "makepack.bat".
Mantenha-os sempre juntos.
- Coloque estes arquivos no mesmo diretório em que se encontra a pasta "data".
- Clique duas vezes no arquivo "makepack.bat" para iniciar a compilação.
Se você fizer isso direito, uma janela mostrando mensagens do DOS sobre a compactação dos
arquivos será exibida.
- Após alguns segundos será criado o arquivo "MYMOD.PAK".
Models.txt
Este arquivo de texto determina quais entidades serão carregadas na inicialização do BOR. Este
arquivo é obrigatório. Além disso, esse arquivo também determina algumas configurações gerais
para os modelos. Ele deve estar presente dentro da pasta "data".
As entidades a serem carregadas são declaradas a partir de seus respectivos arquivos TXT.
Sobre as entradas Load e Know:
Estas 2 entradas são usadas para carregar entidades no BoR. No entanto, eles não funcionam da
mesma maneira. Cada entrada carrega uma entidade e cada uma delas pode ser descrita no
"models.txt" em qualquer ordem, mas é recomendável agrupá-las de acordo com suas características
(personagens controlados pelo jogador, inimigos, elementos de cenário, etc.) Você pode adicionar o
caracter # para descrever o que cada grupo carrega. Este caracter também serve para anular
quaisquer entradas e/ou linhas de comando nos arquivos TXT dentro da pasta "data".
Quando devem ser utilizadas:
load {name} {path}
- {name} é um nome que o jogo usará para identificar a entidade.
- {path} é o local relativo ao arquivo TXT da entidade.
A entidade sempre é carregada quando o BoR é iniciado e sempre estará na memória. Usado para a
entidade "flash" e personagens controlados pelo jogador.
know {name} {path}
- {name} é um nome que o jogo usará para identificar a entidade.
- {path} é o local relativo ao arquivo TXT da entidade.
Essas entidades só são carregadas na memória quando são realmente necessárias ou para serem
exatas quando os níveis as carregam.
11
Usado para tudo, exceto para a entidade "flash" e personagens controlados pelo jogador.
Você não precisa carregar arquivos de música, som, sistema ou estágio com esses comandos. Isso é
usado apenas para entidades.
- Exemplo de arquivo "models.txt":
# Flash
load flash data/chars/misc/flash.txt
# Player
load wolverin data/chars/wolverin/wolverin.txt
# Projectiles
know shot data/chars/misc/shot.txt
know knife data/chars/misc/knife.txt
# items
#know 1up data/chars/misc/1up.txt
#know meat data/chars/misc/meat.txt
#know medikit data/chars/misc/medikit.txt
# Enemies
know roger_k data/chars/roger_k/roger_k.txt
know alex data/chars/alex/alex.txt
know jill data/chars/jill/jill.txt
# Obstacles (item containers)
know box data/chars/misc/box.txt
No exemplo acima as entidades flash e wolverin estarão sempre carregadas na memória. Flash é um
tipo de animação (opcional) referente ao impacto de um golpe. Wolverin é o personagem jogável
Wolverine. Note que só há 8 caracteres no nome, isso porque NÃO SE PODE ULTRAPASSAR O
LIMITE DE 8 CARACTERES PARA SUA DESCRIÇÃO NO ARQUIVO "models.txt". O
BOR não reconhece entidades descritas com mais de 8 caracteres. Também vale para o nome de
todos arquivos em geral. Somente 8 caracteres!
As demais entidades só serão carregadas de acordo com as configurações dos arquivos TXT dos
cenários, exceto aquelas marcadas com um # no início de sua descrição.
Levels.txt
Este arquivo de texto determina o número de modos de jogo e a ordem dos estágios e cenas de cada
modo. Este arquivo é obrigatório. Ele deve estar presente dentro da pasta "data".
12
Cabeçalho:
set {name}
- Indica o início de um modo de jogo.
- {name} é o nome fictício da dificuldade que será selecionável no menu de seleção do modo de
jogo (meramente ilustrativo).
file {path}
- Esta entrada define a ordem dos estágios para jogar.
- {path} é a localização de um arquivo TXT que descreve um nível.
- Se houver mais de um arquivo TXT, os estágios serão reproduzidos do primeiro ao último até que
não existam mais estágios disponíveis.
- Os estágios a serem carregados são descritos com ".txt". Seus arquivos normalmente se encontram
na pasta "levels".
scene {path}
- Opcional
- Esta entrada define a ordem das sequências animadas e serem reproduzidas.
- {path} é a localização de um arquivo TXT que descreve uma animação.
- Se houver mais de um arquivo TXT, as animações serão reproduzidas da primeira a última até que
não haja mais animações disponíveis.
- As animações a serem carregadas são descritas com ".txt". Seus arquivos normalmente se
encontram na pasta "scenes".
next
- Opcional
- Esta entrada não precisa de argumentos.
- Quando esta entrada é alcançada, será exibido uma tela com a frase "Stage Complete" e os pontos
serão computados.
- Exemplo de arquivo "levels.txt":
set Arcade
scene data/scenes/mission.txt
file data/levels/pho.txt
file data/levels/base1.txt
file data/levels/city.txt
next
file data/levels/lift.txt
file data/levels/uboot2.txt
file data/levels/uboot.txt
next
scene data/scenes/escape.txt
file data/levels/cave.txt
scene data/scenes/noescape.txt
file data/levels/akhir.txt
scene data/scenes/end.txt
13
Arquivo da Entidade
Esta parte define as características da entidade e seus respectivos arquivos de animação. Cada
entidade possui um único arquivo no formato TXT. Sua presença é obrigatória nas pastas de cada
entidade, individualmente, e todo este conteúdo deve estar localizado dentro da pasta "chars".
Devido à complexidade esta seção será dividida em 3 partes. A primeira descreve os dados do
cabeçalho da entidade, a segunda descreve os tipos de animação e a terceira descreve as
configurações da animação.
1ª Parte - Dados do Cabeçalho:
name {name}
- {name} é o nome dado à entidade por padrão.
- Usado para todo tipo de entidades.
- O nome dado à entidade não deve ultrapassar o limite de 8 caracteres.
- O BoR apresentará erro ao acessar a entidade se você tentar colocar um espaço no nome. Você
deve usar o símbolo underscore (_) em seu lugar.
- Todas as entidades devem ter um nome no campo {name}.
- Evite usar o mesmo nome para entidadesdiferentes, mesmo que não estejam com o mesmo tipo
(heróis =/= inimigos).
type {type}
- Há diferentes tipos de entidades. Elas devem ser descritas no campo {type}: player, enemy, item,
none, e obstacle,
player -> a entidade é um jogador controlado por humanos.
enemy -> a entidade é um inimigo controlado pela CPU. Também pode ser usado para
classificar "projéteis" utilizados pelo inimigo (shot, knife, ou star).
item -> a entidade é um item estacionário que pode ser coletado. Os itens só podem dar um
bônus por vez. Em outras palavras, você não pode criar um item que dê 2000 pontos e conceda uma
vida ao mesmo tempo.
none -> a entidade é uma decoração sem função. Serve apenas para enfeite. A entidade "flash",
por exemplo, deve ser classificada como "type none" (sem aspas).
obstacle -> a entidade é um bloqueio estacionário que pode ser destruído.
subtype biker
- Opcional
- Se usado, os inimigos correrão da esquerda para direita constantemente na tela e devem ser
derrubados para serem interrompidos. Usado apenas para inimigos com caracteristicas visuais
específicas, como motociclistas por exemplo.
health {int}
- {int} é um número inteiro entre 1 e 2147483647.
- Esta é a quantidade total de danos que esta entidade pode tomar antes de morrer.
- Não coloque um chefe com 2147483647 de saúde em seu jogo. Não é engraçado.
- Você pode usar números decimais, mas o valor sempre será arredondado para baixo.
- Se você usar um valor inferior a um ou mais que 2147483647, o inimigo começa morto. Isso é
14
divertido, mas não é útil.
- Usado para jogadores, inimigos, itens, projéteis, e obstáculos.
- Para itens, isso indica a quantidade de energia que você recupera ao coletar o respectivo item.
speed {int}
- {int} é um número entre 5 e 300 (o padrão é 10).
- Você pode usar números menores que 5, mas a entidade ainda se moverá na mesma velocidade. O
mesmo vale para o uso acima de 300.
- Em algum valor entre 100 e 300, a entidade ganhará a habilidade de se mover para fora dos limites
da tela vindo a sair da área de jogo, matando-a instantaneamente.
- Ajustar o valor para 0 não impedirá que um inimigo se mova.
- Usado para jogadores e inimigos.
- Este comando não suporta decimais.
remap {path1} {path2}
- Opcional
- Permite que você crie paletas alternativas para entidades.
- Cada entidade pode ter até 7 paletas. Dependendo do tamanho do projeto, recomendo usar no
máximo 4 paletas.
- {path1} é um sprite de uma entidade em sua paleta normal. {path2} é um sprite da entidade em
uma paleta alternativa.
- Você não deve alterar a paleta do arquivo. As únicas mudanças devem ser para os pixels da
imagem, e não sobre os dados da paleta.
- O jogador nº2 normalmente usa a primeira paleta alternativa.
shadow {int}
- Opcional
- {int} é um número entre 0 e 6.
- Cada número corresponde a uma sombra específica da pasta "sprites".
- Normalmente, os números mais baixos são menores.
- Isso determina qual gráfico de sombra aparecerá centralizado no ponto de deslocamento dessa
entidade.
- Valor igual a 0 significa que não haverá sombra.
diesound {path}
- Opcional
- {path} aponta para um arquivo ".wav" que é reproduzido se a entidade for derrotada.
load {name}
- Opcional
- Isso força o BOR a carregar um tipo de projetil na memória para que possa ser utilizado pela
entidade. Apenas inimigos podem usar projeteis desta maneira.
- {name} é o nome do projetil a ser carregado.
- Antes de usar, o projetil deve ser declarado com a entrada "know" no arquivo "models.txt" e deve
ser classificado aqui como "type enemy" (sem aspas).
- O tipos de projeteis utilizados aqui são knife, star, e shot.
- "load knife" (sem aspas) permite que a entidade possa arremessar facas. As facas não podem ser
usadas pelos inimigos durante um pulo. Apenas uma faca é arremessada por vez na horizontal.
- "load star" (sem aspas) permite que a entidade possa arremessar estrelas, mas apenas durante um
pulo. São arremessadas três estrelas em ângulos diferentes na diagonal, de cima para baixo.
15
- "load shot" (sem aspas) permite que a entidade possa atirar, com se estivesse usando uma arma de
fogo, por exemplo.
- As animações "faca", "estrela", e "tiro" podem ser substituidas por qualquer outro tipo de sprite.
Por exemplo, você pode fazer um inimigo arremessar 3 facas durante um pulo. Para isso basta
alterar o respectivo arquivo de configuração com as animações contendo os sprites que desejar.
Basta ser criativo.
- Não basta apenas inserir "load {name}" para fazer os projéteis funcionarem. Também é necessário
o uso dos comandos "throwframe" e "shootframe", dependendo do projetil a ser utilizado pela
entidade. Estes dois comandos serão explicados melhor depois.
icon {path}
- Opcional
- Uma imagem é mostrada ao lado da barra de vida da entidade.
- Por padrão, as dimensões da imagem são 16 x 16. Recomendo no máximo o valor de 20 x 20.
- {path} é o local relativo ao ícone.
2ª Parte - Tipos de Animação:
anim idle (usado por todas as entidades)
- Essa animação é reproduzida quando a entidade está parada sem fazer nada.
anim walk (jogadores e inimigos)
- A animação se consiste no simples fato de que a entidade esteja caminhando em qualquer sentido.
anim jump (jogadores e inimigos)
- Opcional para inimigos.
- Reproduz quando um jogador pressiona o botão de pulo.
- Se for dado a um inimigo, esta animação também deve ter um intervalo listado (delay).
anim land (jogadores)
- Opcional. Serve mais para um fator estético. Só é reproduzida se o jogador tiver esta animação
listada após a animação de pulo.
anim get (jogadores)
- Reproduz quando o personagem pega um item no chão.
anim grab (jogadores e inimigos)
- Opcional para inimigos.
- Quando a entidade se aproxima o suficiente da outra, essa entidade irá agarrar a outra.
anim attack1 (jogadores e inimigos)
- Se consiste num ataque. Os jogadores executam isso pressionando o botão de ataque uma vez.
- Os inimigos executam esse ataque quando um jogador está no alcance (o intervalo é especificado
com o comando "range").
- Os inimigos são ligeiramente mais propensos a usar ATTACK1 do que ATTACK2.
anim attack2 (jogadores e inimigos)
- Outro ataque. Os jogadores usam isso se pressionarem o botão de ataque depois de bater com
16
ATTACK1 duas vezes.
- Os inimigos são ligeiramente mais propensos a usar ATTACK2 do que ATTACK3.
anim attack3 (jogadores e inimigos)
- Último na sequencia de ataques. Os jogadores usam isso se pressionarem o botão de ataque depois
de bater com ATTACK2.
- As animações "anim attack1", "anim attack2", e "anim attack3" são opcionais para os inimigos,
mas recomendo que cada um tenha pelo menos a animação "anim attack1".
anim upper (inimigos)
- Opcional.
- Se um jogador estiver próximo e na mesma linha de um inimigo com esta animação durante um
pulo, o inimigo executará este ataque automaticamente.
- O comando "range" pode ser usado para este ataque, embora não seja necessário.
anim jumpattack (jogadores e inimigos)
- Opcional para inimigos.
- O ataque é executado quando o jogador pula e pressiona o botão de ataque.
- Os inimigos realizam aleatoriamente esse ataque quando o jogador está no alcance.
- Não é necessário o comando "jumpframe" com esta animação.
- Quando os inimigos usam esse ataque, eles pulam para a frente.
anim jumpattack2 (jogadores e inimigos)
- Completamente opcional, tanto para o jogador como para os inimigos.
- Diferente do o JUMPATTACK normal, os jogadores executam esse ataque pulando, depois
segurando o botão para baixo e pressionando o botão de ataque.
- Inimigos realizam aleatoriamente esse ataque quando um jogador está no alcance.
- Quando os inimigos usam esse ataque, eles vão apenas pular para cima. Recomendo desabilitar
esta animação paraos inimigos. Usem apenas o "anim jumpattack".
anim freespecial (jogadores e inimigos)
- Este ataque é executado pressionando rapidamente o comando "frente, frente, botão de ataque".
- Completamente opcional para os inimigos, pois esta animação funciona exatamente como as
animações de ataque normais. Recomendo desabilitar esta animação para os inimigos. Usem apenas
as sequencias "anim attack1", "anim attack2", e "anim attack3".
anim special (jogadores e inimigos)
- Os jogadores executam isso pressionando o botão de ataque especial. Não confunda com o botão
de ataque normal.
- Este ataque consome parte da sua barra de vida ao ser executado.
- Serve como um ataque de fuga. Por exemplo, se o jogador executar este ataque quando estiver
sendo agarrado pelo inimigo, o jogador se liberta com um contra-golpe.
- Completamente opcional para os inimigos, pois esta animação funciona exatamente como as
animações de ataque normais. Recomendo desabilitar esta animação para os inimigos. Usem apenas
as sequencias "anim attack1", "anim attack2", e "anim attack3".
anim grabattack (jogadores e inimigos)
- Opcional para inimigos.
- Este ataque é reproduzido após um agarrão seguido de um ataque normal. Dependendo das
configurações das entidades, este ataque pode ser repetido por até 3 vezes consecutivas.
17
anim throw (jogadores e inimigos)
- Opcional para inimigos.
- Este ataque é reproduzido após um agarrão seguido de um ataque normal, porém pressionando na
direção inversa ao ataque.
- Por padrão, essa animação causa 21 pontos de danos à vítima arremessada.
anim pain (jogadores e inimigos)
- É reproduzido quando uma entidade é atingida por um ataque que não as derrube. Entidades sob a
condição "subtype biker" reproduzem esta animação quando morrem.
anim fall (jogadores, inimigos, e obstáculos)
- É reproduzido quando uma entidade é atingida por um ataque que as derrube e/ou mate.
- Inserir a entrada "bbox" nas configurações desta animação permite que a entidade seja manipulada
para atingir outras entidades durante sua queda.
- As entidades não podem ser agarradas durante esta animação.
anim rise (jogadores e inimigos)
- Reproduzido quando uma entidade que caiu começa a levantar depois de ser derrubada ou atingida.
3ª Parte - Configurações da Animação:
Esta parte aborda as configurações de animação. Elas definem o uso e função dos sprites de cada
entidade. Os sprites devem estar na mesma pasta onde se encontra o arquivo TXT de cada entidade.
loop {bi}
- Determina como o efeito de loop é aplicado na animação atual.
- {bi} alterna ativando ou desativando (0 = loop desativado // 1 = loop ativado).
- Algumas animações NÃO devem ser configuradas para loop. Exemplos incluem a maioria dos
ataques e animações de queda.
range {min} {max}
- Usado para ataques e pulos dos inimigos, incluindo projéteis.
- Este comando permite ao inimigo saber quando realizar seus ataques.
- Para que o inimigo use o ataque, o jogador deve estar numa área de alcance acima do "valor
{min.}", mas abaixo do "valor {max}" dentro do eixo x na tela.
- Isso é medido em pixels, começando no ponto de compensação do inimigo e movendo-se para o
deslocamento do jogador.
- O valor padrão de alcance para ATTACK é "0 75", para JUMPATTACK e JUMPATTACK2 é "0
150", e para UPPER "-10 120".
throwframe {frame} {a}
- Se este comando estiver presente, a entidade arremessará o projétil "star" ou "knife" uma vez que
se esteja dentro do alcance do ataque.
- O projétil será gerado em altitude {a}. Uma vez que você não pode usar o valor igual a 0 para {a},
se quiser ter o projétil no chão use -1 em vez disso. Ele gerará 0, não -1.
- O projétil é definido usando o comando "load star" ou "load knife" no cabeçalho da entidade no
arquivo TXT. Com isso, seu respectivo projétil será utilizado pela entidade.
18
- O valor padrão {a} é 70.
- As facas serão usadas se a entidade estiver no chão. Três estrelas serão usadas se a entidade estiver
no ar.
- Se você quiser que a entidade jogue facas, enquanto estiver no ar, use o comando "shootframe" em
seu lugar.
shootframe {frame} {a}
- Este comando é semelhante ao "throwframe", mas ele utiliza somente o projétil "shot".
- O valor padrão {a} é 0.
- Este comando não utiliza estrelas se a entidade estiver no ar, por isso é ideal para atirar facas, caso
este último esteja corretamente configurado.
- O projétil é definido usando o comando "load shot" no cabeçalho da entidade no arquivo TXT.
jumpframe {frame} {height}
- Não deve ser usado com a animação "anim jump".
- Se este comando estiver presente, a entidade executará um pulo uma vez que se esteja dentro do
alcance do ataque.
- {height} define a altura do pulo. Valor positivo para {height} move a entidade para cima e valor
negativo move para baixo (na teoria).
- Apenas um comando "jumpframe" pode ser utilizado, uma vez que se esteja dentro do alcance do
ataque. Você não pode pular mais de uma vez em uma animação colocando mais comandos, mesmo
que a entidade pouse no chão antes do próximo salto começar.
- Diferenças para o jogador e inimigos, dependendo do valor de {height}:
{height} = 0 => Jogador -> o pulo é muito baixo, mas o personagem avança para a frente.
Inimigo -> o pulo é alto e vertical.
{height} > 0 => Jogador -> o pulo é alto e vertical.
Inimigo -> o pulo é alto e avança para frente.
- Definir "jumpframe" na animação "anim fall" mudará o respectivo arco durante a queda. Útil para
criar lançadores para ataques e arremessos personalizados.
delay {int}
- {int} é um número que define a velocidade e/ou tempo de duração da animação. 1 é extremamente
rápido; acima de 25 a animação vai durar mais tempo em sua execução, dando um falso aspécto de
lentidão.
- {int} é medido em centésimos de segundos.
- Pode ser usado várias vezes em uma animação para mudar a velocidade durante sua execução.
offset {x} {y}
- Determina onde se encontra a "base" da animação.
- No seguinte exemplo, "offset 0 0" seria o canto superior esquerdo da tela. Valores maiores para {x}
movem a imagem para baixo. Valores maiores para {y} movem a imagem para a direita.
- Você pode usar valores negativos para {x} e {y} ou valores que se localizem fora das bordas da
tela.
- A maioria das entidades morrerá automaticamente se o deslocamento for superior a 80 pixels fora
da tela à esquerda ou direita (seu valor x deve permanecer entre -80 e 400). O projétil "knife" é a
única exceção: eles podem ir até 180 sem problemas (-180 a 500).
- Os sintomas comuns de compensações incorretas são sombras mal colocadas, teleportes súbitos
para diferentes posições e inimigos/sombras que parecem estar a vários metros de distância.
- Pode ser usado várias vezes em uma animação para mudar a posição durante a mesma.
19
bbox {x} {y} {width} {height}
- Define o valor de bbox ou HITBOX (caixa de colisão). Para que haja interação com todas as
entidadas na tela, é necessário criar uma delimitação virtual em cima das animações, caso contrário
o jogador passaria direto por cima de tudo, sem ser atingido por nada, nem atingir ninguem.
Graficamente, uma hitbox é equivalente a um retângulo invisivel, porém identificável pelo BOR,
que se encontra sobre as animações. Este retângulo de dimensão ajustável nos eixos X e Y define o
que você interage. Você cria uma hitbox para definir o posicionamento da entidade na tela e uma
outra hitbox para definir o alcance do ataque dos jogadores e inimigos.
- {x} e {y} são as coordenadas x e y do canto superior esquerdo da hitbox, começando pelo canto
superior esquerdo da moldura e movendo para a direita/para baixo. {width} é o quanto à direita de
{x} a hitbox se estende. {height} é o quanto longe de {y} a hitbox se estende.
- Você pode usar valores negativos ou que valores quese localizem fora das bordas da tela.
- Para dar a uma entidade locais onde elas não podem ser atingidas, use "bbox 0 0 0 0 0" como linha
de comando (sem aspas). Certifique-se de adicionar uma nova caixa de entrada quando a entidade
estiver novamente vulnerável.
- Para itens, isso determina de onde o objeto pode ser coletado.
frame {path}
- {path} aponta para um arquivo de imagem a ser usado nesta animação.
- Será sempre exibido na posição da entidade.
- O BoR usa arquivos de imagem de 128 cores (ou inferiores) no formato GIF.
- Se você deseja converter muitas imagens que já estão na paleta desejada em arquivos gif, você
pode tentar o programa Irfanview (em http://www.irfanview.com/).
attack {x} {y} {width} {height} {damage} {KO}
- Uma hitbox de ataque que pode atingir hitboxes.
- Você só pode ter um tipo de hitbox de ataque por frame. Adicionando frames extras com hitboxes
diferentes e alterando o valor de atraso (delay), você pode adicionar hitboxes extras, mas isso ocupa
mais memória (para os frames extras) e não funciona perfeitamente, então tente fazê-lo com
moderação.
- {x}, {y}, {width}, e {height} funcionam exatamente como no comando "bbox".
- {damage} determina o valor do ataque. Quanto maior o {damage}, maior o dano. Configurando-o
para 0 também funciona. Ótimo para fazer lançadores para ataques sequenciais.
- {KO}, conhecido por KnockOut é um valor inteiro que determina se o respectivo ataque irá
derrubar o oponente no chão ou não. Use valor igual a 0 para não derrubar e 1 para derrubar. Ideal
para se finalizar um combo.
- Pode acontecer do comando ATTACK vir a ter mais quatro coordenadas adicionais: {block},
{noflash}, {pausetime}, e {z}. Elas não possuem função no BOR. São utilizadas somente no
OpenBOR. Não tem problema deixá-las nas configurações de ataque. No BOR são simplesmente
ignoradas.
- Se você alterar ou repetir a declaração de uma hitbox de ataque mais tarde na animação, você pode
criar combos na mesma animação. No entanto, uma certa quantidade de tempo deve passar antes
que os alvos possam ser atingidos novamente (comando "delay"). Além disso, você deve ter pelo
menos um frame de animação com uma hitbox de ataque em branco (attack 0 0 0 0 0 0) entre os
dois frames ou conjuntos de frames para gerar um combo.
- Você pode usar valores negativos ou valores que se localizem fora das bordas da tela.
- Pode ser usado várias vezes em uma animação para alterar as áreas atingidas no meio da animação.
- Quando determinada parte da animação de ataque terminar, use "attack 0 0 0 0 0 0" no frame
seguinte. Caso contrário, a hitbox de ataque permanecerá ativa e pode vir a continuar registrando
dano nos oponentes para o resto da animação!
20
blast {x} {y} {width} {height} {damage}
- Uma hitbox de ataque que pode atingir hitboxes.
- Este ataque sempre derruba os inimigos e os jogam para longe mais do que o normal. Um inimigo
atingido por este ataque também poderá acertar outras entidades e derrubá-las.
- Não deve ser utilizado para criar ataques sequênciais (combos).
move {x}
- {x} define em pixels o quanto que a entidade irá se deslocar na tela em cada frame.
- Este valor deve ser ajustado para 0 novamente para impedir que a entidade se desloque alem do
necessário durante a animação.
- Você pode usar um valor negativo em (x) para a entidade se deslocar para trás (ou diminuir seu
movimento se eles se movem automaticamente, como um ataque de pulo).
- Valores acima de 200 permitirem que a entidade continue se deslocando para fora da tela e
consequentemente para fora de jogo. Se você está tentando matar algo, use um valor como 1000.
sound {path}
- {path} aponta para um arquivo de som. O som será reproduzido assim que o próximo frame for
atingido.
- Você pode declarar mais de um em frames diferentes, porém, o som reproduzido anteriormente
será interrompido de imediato.
- Exemplos de Arquivo de Entidade:
a) Entidade controlada pelo jogador (personagem -> Wolverine // arquivo de configuração ->
wolverin.txt)
name Wolverin
health 130
speed 10
type player
shadow 3
icon data/chars/wolverin/icon.gif
diesound data/sounds/jkdie.wav
anim attack1
delay 6
offset 45 98
bbox 28 9 35 80
frame data/chars/wolverin/atk01.gif
attack 52 8 74 62 8 0 0 0 0 0
frame data/chars/wolverin/atk02.gif
frame data/chars/wolverin/atk03.gif
attack 0 0 0 0 0
frame data/chars/wolverin/atk04.gif
anim attack2
delay 6
offset 45 98
bbox 28 9 35 80
21
frame data/chars/wolverin/atk04.gif
offset 11 110
bbox 1 10 35 45
frame data/chars/wolverin/atk05.gif
offset 1 109
frame data/chars/wolverin/atk06.gif
delay 9
attack 32 26 78 59 10 0 0 0 0 0
frame data/chars/wolverin/atk07.gif
attack 0 0 0 0 0
offset 11 110
frame data/chars/wolverin/atk05.gif
anim attack3
delay 7
offset 61 125
jumpframe 1 0
bbox 41 51 42 73
frame data/chars/wolverin/atk200.gif
delay 10
offset 61 139
frame data/chars/wolverin/atk201.gif
offset 61 143
frame data/chars/wolverin/atk202.gif
offset 61 128
attack 40 42 97 55 15 1 0 0 0 0
frame data/chars/wolverin/atk203.gif
attack 40 57 89 65 15 1 0 0 0 0
offset 61 125
frame data/chars/wolverin/atk204.gif
delay 15
attack 0 0 0 0 0 0 0 0 0 0
frame data/chars/wolverin/atk205.gif
anim fall
delay 15
offset 48 142
frame data/chars/wolverin/fall1.gif
delay 20
offset 61 74
attack 15 15 45 33 10 1
frame data/chars/wolverin/fall2.gif
offset 62 68
delay 9
attack 0
frame data/chars/wolverin/fall3.gif
delay 10
frame data/chars/wolverin/fall3.gif
offset 62 69
delay 35
22
frame data/chars/wolverin/fall4.gif
anim freespecial
delay 12
offset 38 96
bbox 29 22 37 61
sound data/sounds/gun.wav
frame data/chars/wolverin/shoot1.gif
attack 121 0 300 98 15 1 1 0 0 0
delay 5
offset 34 95
bbox 36 37 39 50
frame data/chars/wolverin/shoot2.gif
attack 121 0 300 98 15 1 0 1 0 0
frame data/chars/wolverin/shoot3.gif
attack 121 0 300 98 15 1 1 0 0 0
frame data/chars/wolverin/shoot2.gif
attack 121 0 300 98 15 1 0 1 0 0
frame data/chars/wolverin/shoot3.gif
attack 121 0 300 98 15 1 1 0 0 0
frame data/chars/wolverin/shoot2.gif
attack 121 0 300 98 15 1 0 1 0 0
frame data/chars/wolverin/shoot3.gif
attack 121 0 300 98 15 1 1 0 0 0
frame data/chars/wolverin/shoot2.gif
attack 121 0 300 98 15 1 0 1 0 0
frame data/chars/wolverin/shoot3.gif
attack 121 0 300 98 15 1 1 0 0 0
frame data/chars/wolverin/shoot2.gif
attack 121 0 300 98 15 1 0 1 0 0
frame data/chars/wolverin/shoot3.gif
attack 121 0 300 98 15 1 1 0 0 0
frame data/chars/wolverin/shoot2.gif
attack 121 0 300 98 15 1 0 1 0 0
frame data/chars/wolverin/shoot3.gif
offset 34 94
delay 12
frame data/chars/wolverin/shoot4.gif
bbox 21 26 50 60
offset 38 96
frame data/chars/wolverin/shoot5.gif
anim get
delay 20
offset 61 125
frame data/chars/wolverin/atk205.gif
anim grab
attack 56 12 30 30 10 0 0 1 0 0
delay 12
23
bbox 21 26 50 60
offset 38 96
frame data/chars/wolverin/shoot5.gif
anim grabattack
delay 6
offset 45 98
bbox 28 9 35 80
frame data/chars/wolverin/atk04.gif
offset 11 110
bbox 1 10 35 45
frame data/chars/wolverin/atk05.gif
offset 1 109
frame data/chars/wolverin/atk06.gif
delay 15
blast 32 26 78 59 12 1 0 0 0 0
frame data/chars/wolverin/atk07.gif
offset 1 109
frame data/chars/wolverin/atk06.gif
anim idle
loop 1
delay 18
offset 44 98
bbox 20 6 45 85
frame data/chars/wolverin/idle00.gif
frame data/chars/wolverin/idle01.gif
frame data/chars/wolverin/idle02.gif
frame data/chars/wolverin/idle03.gif
frame data/chars/wolverin/idle02.gif
frame data/chars/wolverin/idle01.gif
anim jump
delay 8
offset 45 127bbox 16 18 51 79
frame data/chars/wolverin/jumpatk0.gif
frame data/chars/wolverin/jumpatk1.gif
delay 16
frame data/chars/wolverin/jumpatk2.gif
delay 8
frame data/chars/wolverin/jumpatk1.gif
frame data/chars/wolverin/jumpatk0.gif
anim jumpattack
delay 5
offset 45 127
bbox 22 11 40 76
frame data/chars/wolverin/jumpatk3.gif
offset 54 119
24
frame data/chars/wolverin/jumpatk4.gif
bbox 31 9 38 50
frame data/chars/wolverin/jumpatk5.gif
delay 25
offset 40 119
attack 9 45 119 34 20 1 1 0 0 0
frame data/chars/wolverin/jumpatk6.gif
anim pain
delay 8
offset 57 106
bbox 26 12 63 89
frame data/chars/wolverin/pain1.gif
bbox 13 3 73 97
frame data/chars/wolverin/pain2.gif
bbox 10 4 79 91
frame data/chars/wolverin/pain3.gif
bbox 13 3 73 97
frame data/chars/wolverin/pain2.gif
anim rise
delay 8
offset 54 63
frame data/chars/wolverin/rise1.gif
frame data/chars/wolverin/rise2.gif
frame data/chars/wolverin/rise3.gif
delay 1
frame data/chars/wolverin/rise3.gif
anim special
delay 8
offset 26 115
sound data/sounds/audio5.wav
frame data/chars/wolverin/block01.gif
offset 26 120
frame data/chars/wolverin/block10.gif
attack 25 0 95 122 40 1 1 0 0 0
offset 70 120
frame data/chars/wolverin/block02.gif
attack 25 0 95 122 40 1 1 0 0 0
frame data/chars/wolverin/block03.gif
attack 25 0 95 122 40 1 0 1 0 0
frame data/chars/wolverin/block04.gif
attack 25 0 95 122 40 1 1 0 0 0
frame data/chars/wolverin/block05.gif
attack 25 0 95 122 40 1 0 1 0 0
frame data/chars/wolverin/block02.gif
attack 25 0 95 122 40 1 1 0 0 0
frame data/chars/wolverin/block03.gif
attack 25 0 95 122 40 1 0 1 0 0
25
frame data/chars/wolverin/block04.gif
attack 25 0 95 122 40 1 1 0 0 0
frame data/chars/wolverin/block05.gif
attack 25 0 95 122 40 1 0 1 0 0
frame data/chars/wolverin/block02.gif
attack 25 0 95 122 40 1 1 0 0 0
frame data/chars/wolverin/block03.gif
attack 25 0 95 122 40 1 0 1 0 0
frame data/chars/wolverin/block04.gif
attack 25 0 95 122 40 1 1 0 0 0
frame data/chars/wolverin/block05.gif
delay 8
attack 25 0 95 122 40 1 0 1 0 0
frame data/chars/wolverin/block06.gif
attack 25 0 95 122 40 1 1 0 0 0
frame data/chars/wolverin/block07.gif
attack 25 0 95 122 40 1 0 1 0 0
frame data/chars/wolverin/block08.gif
attack 25 0 95 122 40 1 1 0 0 0
frame data/chars/wolverin/block09.gif
offset 26 120
frame data/chars/wolverin/block10.gif
delay 35
frame data/chars/wolverin/block10.gif
anim throw
delay 20
offset 45 127
bbox 22 11 40 76
frame data/chars/wolverin/jumpatk3.gif
anim walk
loop 1
delay 8
offset 44 102
bbox 20 6 45 85
frame data/chars/wolverin/wk00.gif
frame data/chars/wolverin/wk01.gif
frame data/chars/wolverin/wk02.gif
frame data/chars/wolverin/wk03.gif
frame data/chars/wolverin/wk04.gif
frame data/chars/wolverin/wk05.gif
frame data/chars/wolverin/wk06.gif
frame data/chars/wolverin/wk07.gif
- Perceba que o nome da entidade não comporta todos os caracteres no campo "name", pois o
número de caracteres ultrapassa o máximo de oito, assim como deve ser o mesmo do seu respectivo
arquivo de configuração.
- Para entidades controladas pelo jogador recomenda-se utilizar no começo do nome letra maiúscula,
pois fica esteticamente melhor.
26
b) Entidade controlada pela CPU/inimigo (personagem -> Roger K // arquivo de configuração ->
roger_k.txt)
name roger_k
health 50
speed 9
type enemy
shadow 2
remap data/chars/roger_k/alter1.gif data/chars/roger_k/alter2.gif
remap data/chars/roger_k/alter1.gif data/chars/roger_k/alter3.gif
remap data/chars/roger_k/alter1.gif data/chars/roger_k/alter4.gif
remap data/chars/roger_k/alter1.gif data/chars/roger_k/alter5.gif
load knife
anim attack1
sound data/sounds/kni1.wav
offset 108 172
bbox 85 72 49 104
delay 12
frame data/chars/roger_k/a101.gif
attack 116 125 58 47 13 1 0 0 1
frame data/chars/roger_k/a102.gif
frame data/chars/roger_k/a102.gif
attack 0
frame data/chars/roger_k/a101.gif
anim attack2
range 100 200
offset 108 172
bbox 85 72 49 104
delay 12
throwframe 2 2
frame data/chars/roger_k/a103.gif
frame data/chars/roger_k/a104.gif
delay 40
sound data/sounds/lancio.wav
frame data/chars/roger_k/a104.gif
anim fall
delay 25
offset 108 172
frame data/chars/roger_k/fall1.gif
delay 9
frame data/chars/roger_k/fall2.gif
delay 20
frame data/chars/roger_k/fall2.gif
frame data/chars/roger_k/fall3.gif
27
anim idle
loop 1
offset 108 172
bbox 85 72 49 104
delay 16
frame data/chars/roger_k/idle0.gif
anim pain
delay 10
offset 108 172
bbox 85 72 49 104
frame data/chars/roger_k/pain1.gif
frame data/chars/roger_k/pain2.gif
anim rise
offset 99 172
delay 15
frame data/chars/roger_k/rise.gif
anim walk
loop 1
offset 108 172
bbox 85 72 49 104
delay 11
frame data/chars/roger_k/wk1.gif
frame data/chars/roger_k/wk2.gif
frame data/chars/roger_k/wk3.gif
frame data/chars/roger_k/wk4.gif
frame data/chars/roger_k/wk5.gif
frame data/chars/roger_k/wk6.gif
- No campo "name" é utilizado o símbolo underscore (_) para substituir o espaço existente no nome
do personagem (Roger K).
- Para entidades controladas pela CPU, entenda-se inimigos, recomendo o uso de letras minúsculas
no campo "name", mais por uma questão de organização. Ainda neste documento será explicado
como renomear adequadamente usando o comando "alias".
ARQUIVOS DE SISTEMA
Esta seção descreve alguns arquivos extras que são usados pelo BoR:
flash.txt
- Um arquivo TXT padrão para uma entidade, mas a única animação que ele precisa é "anim idle".
- Essa entidade é classificada como "none". Contudo, não se comporta de maneira diferente com
nenhum outro tipo de entidade.
- Suas imagens são reproduzidas quando uma hitbox de ataque de qualquer tipo atinge uma hitbox.
- O deslocamento é o ponto em que o flash será centralizado.
28
- Não é recomendado configurar este esta entidade em loop, por razões que se tornarão óbvias
rapidamente se você fizer isso.
- Assim como quaisquer outras entidades, ele deve ser declarado no arquivo "models.txt".
data/pal.act
- Esta é a paleta de cores do PAK. Ela comporta no máximo 128 cores.
- Use o PhotoShop para a indexar a paleta em todos os sprites do PAK (exceto nas animações da
pasta "scenes"), caso suas cores apresentem problemas ao serem exibidas na tela.
data/sprites/font.gif
- É a fonte gráfica mais presente no PAK.
data/sprites/font2.gif
- É a fonte gráfica usada quando uma opção na tela é destacada para seleção.
data/sprites/font3.gif
- Esta fonte gráfica é usada como um cabeçalho para a maioria das listas de opções. Aparece no
topo do menu de seleção de modo de jogo e no menu de opções, principalmente.
data/sprites/font4.gif
- É a fonte gráfica grande utilizada para as telas "game over" e "next", o temporizador e alguns
outros lugares.
- O tamanho da fonte em "font.gif", "font2.gif", "font3.gif", e "font4.gif" depende do tamanho de
seus arquivos. O valor exato é "largura/16" x "altura/16". Por exemplo, se o tamanho do arquivo
"font.gif" for 160x160 pixels, o tamanho da fonte seria 10x10 pixels. Certifique-se de que o
tamanho dos arquivos seja multiplicado por 16x16!
data/sprites/shadow{#}.gif
- {#} É um número de 0 a 6.
- Esta imagem é usada como uma sombra para as entidades (com transparência alfa negativa).
data/sprites/arrow.gif
- É o sprite de uma flecha apontando para a direita.
- Quando um comando "wait" é desmarcado na configuração de determinado cenário, esta imagem
pisca no lado direito da tela para direcionar os cenários à direita (ou o lado esquerdo da telapara
direcionar os cenários à esquerda - somente como o comando "direction left") para informar aos
jogadores que se movam.
- Por padrão, a imagem do arquivo "arrow.gif" possui dimensões 33x17.
data/bgs/select.gif
- É exibido no fundo da tela de seleção do jogador.
- Este arquivo deve ser indexado com a paleta do BOR.
data/bgs/logo.gif
- Este é um arquivo GIF que será exibido quando o BoR for iniciado.
data/scenes/logo.txt
- Esta é uma sequência animada (veja a próxima seção para mais informações). Se existir, ele será
reproduzido após a exibição do arquivo "logo.gif".
- Para que serve esta sequência animada se o arquivo "logo.gif" já mostra o logotipo? Bem, a
29
resposta é para mostrar mais animações de logotipos ou outras apresentações. Você pode configurar
a música e também pode definir o aviso legal e o logotipo do autor do projeto do respectivo PAK
aqui.
data/cenas/howto.txt
- Esta é uma sequência animada que tem conexão com a opção "How to Play" no menu principal.
- Como o nome diz, é usado para mostrar ao jogador os comandos necessários para se jogar no
BOR.
Sequências Animadas
Se localizam na pasta "scenes" (dentro da pasta "data"). São conjuntos de imagens agrupadas no
formato GIF que são exibidas na tela entre as fases. Cada gif possui um arquivo de configuração no
formato TXT. Nele se encontra as definições do gif animado e que música irá tocar durante sua
reprodução na tela. Os arquivos TXT devem ser declarados no arquivo "levels.txt" (vide exemplo
no Capítulo 4). Sua utilização é opcional. Também é usado para configurar o "How to Play".
music {path} {loop}
- {path} aponta para um arquivo de música no formato ".bor" que será reproduzido. Estes arquivos
ficam na pasta "music".
- {loop} determina se a música irá repetir continuamente ou não.
0 = não repete // 1 = repete.
- A música tocada substituirá a anterior.
- O uso de música durante a animação é opcional. Não utilizá-la poupa bastante memória do sistema.
animation {path} {x} {y}
- {path} aponta para um arquivo GIF animado a ser reproduzido.
- {x} e {y} são as posições x e y do canto superior esquerdo do ".gif". Serve para centralizar sua
posição na tela, caso o GIF esteja num tamanho abaixo do padrão.
- O tamanho máximo (padrão) é 320x240.
Se você usa uma sequência animada contendo apenas uma imagem (por exemplo, com a mensagem
“obrigado por jogar”), certifique-se de determinar um tempo maior de exibição na tela, usando um
programa de animação de arquivos GIF. Caso contrário, a imagem só aparecerá por 1/10 de
segundo.
Você também pode alterar a tela de introdução e seleção de personagem. Esses arquivos podem ser
encontrados em "data/bgs". Observe que as sequências animadas e as telas NÃO precisam ser
salvas com a paleta padrão do BOR. Eles podem ter sua própria paleta. No entanto, você deve fazer
a primeira cor da paleta (index 0) preta.
silence {int}
- Se {int} for igual a 1, a música atual vai parar de ser reproduzida.
30
- Exemplo de arquivo de configuração para sequências animadas:
# music [path] [loop] # BOR file to play
# animation [path] [x] [y] # GIF animation to play
# silence # Stop music
music data/music/menu.bor
animation data/scenes/mission.gif 0 0
#silence
- Lembrando que tudo que está precedido pelo caracter "#" não tem função para o funcionamento
do PAK. Serve apenas para comentar uma descrição ou anular uma linha. Caso você não queira
música durante a animação, basta adicionar o caracter antes da linha "music
data/music/menu.bor" ou apagar toda a linha.
ARQUIVO DE CENÁRIO
Este tipo de arquivo é encontrado na pasta "levels". São arquivos de texto que definem as
características de cada fase e os objetos a serem gerados nelas. Esta seção será dividida em 2 partes:
a primeira é para design de cenário e segunda parte para configuração de objetos gerados.
1ª Parte - Design de Cenário:
Os cenários são formados por imagens não-animadas no formato GIF que se encontram organizadas
dentro da pasta "bgs". A resolução padrão do BOR é 320×240, podendo se estender para 320×244
ou 320×255 (esta última para cenários que possuam movimento vertical, como em um barco). Para
que haja interatividade, é necessário a utilização de comandos que se encontram em cada arquivo de
configuração dos cenários. Nem todos são obrigatórios.
water {path} {warp}
- Opcional.
- {path} aponta para um arquivo de imagem que será usado como fundo de tela similar a um
espelho d'água. Usado para gerar efeitos de distorção ou parallax.
- Se você utilizá-lo com o comando "rock 0" ou não incluir o comando "rock", o efeito da água será
distorcido por uma onda senoidal (ele irá deslizar para frente e para trás). {warp} determinará com
que rapidez a ondulação ocorrerá. O valor máximo para {warp} é 15.
- Se você usar o comando "rock 1" no mesmo estágio, a água flutuará com efeito de parallax (a
imagem fica maior à medida que se aproxima da área de jogo). {warp} determinará a velocidade.
rock {int}
- Opcional.
- {int} igual a 0 gera nenhum efeito.
- {int} igual a 1 significa que o cenário flutua para cima e para baixo.
mirror {bi}
31
- Opcional.
- Determina se há ou não um espelho no fundo da tela.
- {bi} igual a 0 gera nenhum efeito espelhado.
- {bi} igual a 1 significa que os sprites terão uma imagem "espelhada" desenhada entre o fundo e os
painéis.
panel {norm} {neon} {scrn}
- {norm}, {neon} e {scrn} são caminhos que apontam para as imagens normais, neon e de tela para
um painel. {neon} e {scrn} são campos opcionais. Se você não estiver usando eles, coloque a
palavra "none" (sem aspas) em seu lugar.
- Os painéis são usados normalmente como se fossem o chão e as paredes de um cenário.
- Como citado antes os painéis variam entre 240 e 244 pixels de altura, mas devem ser de 255 se o
estágio estiver configurado para subir e descer (comando "rock").
- Você pode usar a largura desejada, mas é uma boa idéia usar valores simples como 100, 200 ou
300. Fica mais fácil na hora de adicionar mais painéis para o comprimento total do estagio.
- Todos os painéis em uma etapa devem ter o mesmo comprimento e altura.
- Se você sobrepõe parte da imagem usada em um painel com outra, o computador/console ainda
tentará desenhar os dois. Para evitar problemas relacionados com sobreposição, ATENÇÃO às
dimensões do painel.
- As camadas do painel do modo Normal são apenas imagens simples. Elas não têm efeitos visuais.
São as mais utilizadas.
- As camadas do painel do modo Neon usam um recurso chamado "pallete cycling": certas cores
mudam lentamente para diferentes cores. Para ser mais específico, as cores de 121 a 128 na paleta
serão trocadas em duas etapas três vezes por segundo.
- As camadas do painel do modo Tela têm transparência alfa. Isso significa que elas se misturam
com as cores por trás delas, as cores mais escuras são mais transparentes e as cores mais brilhantes
se misturam menos.
- Você pode ter até 26 painéis em uma etapa. Eles são rotulados pelo BoR de "a" até "z". É assim
que o BoR os reconhece. Se o 1º painel é "a", o 26º painel será "z".
frontpanel {path}
- Opcional.
- {path} aponta para uma imagem que será exibida em cima de todos os outros sprites e imagens,
exceto para o HUD (barra de vida, placar, etc.). Isso é usado para fazer paineis frontais.
- Os paineis frontais são exibidos na ordem em que estão declarados nos arquivos de configuração
do(s) cenário(s) e se repetem quando a sequência chega ao fim. Não é necessario estipular uma
ordem como nos painéis normais.
order {panel#}{panel#}{panel#}...
- Determina a ordem dos painéis em uma etapa.
- {panel#} é uma letra de "a" até "z" correspondente a um painel. Não deve haver espaços entre as
declarações do painel.
Exemplo: "order abcabcada", não "ordera b c a b c a d a".
- O mesmo painel pode ser usado mais de uma vez.
- Você pode ter até 1000 painéis ordenados, mas atenção: o BOR não consegue ler uma linha com
1000 caracteres nela (o máximo é em algum lugar em torno de 100). Para contornar isso, você pode
colocar os painéis adicionais em outra linha com uma declaração ordenada separada.
Exemplos: order abcdefghij
order klabcd
order eeabcdef
32
- Os três pontos no final da sentença "..." não significam que você deve colocar um "..." no final.
Significa que o padrão se repete ordenadamente dentro dos limites explicados anteriormente.
- Se você usar o comando "direction left", os painéis serão exibidos da esquerda para a direita,
começando com a última ordem até a primeira. Com base no exemplo acima, a declaração anterior
se tornaria "fedcbaeedcbalkjihgfedcba" em vez de "abcdefghijklabcdeeabcdef".
music {path}
- Opcional.
- {path} aponta para um arquivo de música ".bor" que será reproduzido durante o estágio.
bossmusic {path}
- Opcional.
- {path} aponta para um arquivo de música ".bor" que será reproduzido quando o chefe do estágio
aparecer. O chefe é um inimigo que tem o atributo "boss 1" definido na configuração de objetos
gerados (vide na parte 2 deste capítulo).
direction {dir}
- Opcional.
- Em {dir} use "up", "down", ou "left", sem as aspas.
- {dir} determina o deslocamento da tela para cima (up), baixo (down), e esquerda (left). Se este
comando não for utilizado, o cenário sempre se deslocará à direita.
- "direction up" ou "direction down" são comandos recomendados para estágios que se comportem
como elevadores.
hole {pos}
- Opcional.
- Um buraco invisível de 4 lados será criado na extremidade inferior do cenário a partir da
coordenada {pos} que defina sua posição. Se você deseja que o buraco seja visível, use sprites para
tal finalidade.
- Causa morte instantânea.
- O valor de {pos} abrange desde 0 até o valor medido em pixels do fim do estágio. Por exemplo,
valendo-se do fato de que horizontalmente os cenários possuem 320 pixels de extensão, se o {pos}
for 700, um buraco será criado umas duas telas a frente no jogo.
- No Beats of Rage o buraco possui tamanho padrão e sprite especial utilizado. Esse sprite é o
arquivo "hole.gif", localizado na pasta "sprites".
- Se usado em um estágio que se mova à esquerda, os buracos começarão na margem esquerda no
começo do deslocamento da tela e se moverão para a direita a partir daí. Então, apenas os buracos
que apareceriam nos primeiros 320 ou mais pixels da tela serão realmente visíveis, e eles estarão no
início do estagio.
endhole {bi}
- Opcional.
- Determina se a borda mais à direita do estagio é um poço, que causa morte instantânea. Em {bi},
use 1 para sim e 0 para não.
- Útil para estágios que se comportem como elevadores.
- Não use isso se o seu estagio se deslocar para a esquerda.
blocked {bi}
- Opcional.
- Determina se a borda do estágio é uma parede sólida. Em {bi}, use 1 para sim e 0 para não.
33
- Sempre aparecerá no lado direito da tela. Não use junto com o comando "direction left", caso
contrário os jogadores começarão presos dentro da parede.
- Se você combinar "endhole 1" e "blocked 1", você terminará com uma saída bloqueada com um
poço atrás dele. É uma boa tática para arremessar os inimigos dentro do poço sem cair nele.
2ª Parte - Configuração de Objetos Gerados:
spawn {name}
- {name} é o nome de uma entidade definida no arquivo "models.txt" a ser carregada no estágio.
- A entidade {name} será gerada/criada no estágio atual, com coordenadas pré-definidas e com os
atributos determinados pelo próximo conjunto de comandos.
alias {name}
- Opcional.
- A entidade gerada no estágio terá um nome definido aqui a aparecer no jogo.
Exemplo: spawn rugal
alias Hotdog_Man
- Quando você alcançar o personagem Rugal no estagio, seu nome será exibido como "Hotdog
Man".
- As regras do arquivo TXT de uma entidade sobre nomes também se aplicam aqui. Então use
underscore (_) em vez de espaços se você quiser usar espaços nos nomes.
- Se não for utilizado, por padrão o nome da entidade será exibido na tela como foi declarado no
arquivo "models.txt".
map {pal}
- Opcional.
- {pal} é um número de 1 a 7 que corresponde a paleta remapeada de uma entidade. A entidade
usará essa paleta.
- Se não houver definição para map, será usada a cor padrão da entidade.
health {int}
- Opcional.
- {int} é um valor de vida (energia) que será usado em vez do valor padrão definido no arquivo de
configuração da entidade.
item {name}
- Opcional.
- Somente obstáculos podem conter ítens e apenas um por vez.
- Os ítens podem se gerados nos estágios sem a necessidade de utilizar um obstáculo para tal. Por
exemplo, defina "spawn 1up" para fazer uma vida aparecer no cenário.
- Os tipos de ítens utilizados no BOR são: 1up (concede uma vida), Gold ou Money (adicionam
pontos no placar), e Meat (renova a barra de vida).
2pitem {name}
- Opcional.
- Funciona como "item", exceto que isso só será gerado se houver 2 pessoas jogando.
boss {bi}
34
- Opcional.
- Se definido para 1, o personagem é um chefe de fase. Quando aparecer um chefe, a música
mudará para a música do chefe (se ela for definida em "bossmusic"). Matar todos os personagens
definidos como chefes em um estágio matará todos os outros inimigos e também terminará
automaticamente uma etapa.
flip {bi}
- Opcional.
- Se definido para 1, os sprites da entidade ficarão invertidos horizontalmente no cenário. Usado
para obstáculos e ítens, mas também pode ser usado para fazer inimigos que surgem no lado
esquerdo da tela se voltarem para os jogadores desde o início.
coords {x} {y}
- Determina as posições "x" e "y" na tela onde a entidade irá surgir.
- {x} e {y} são relativos à posição atual da tela, NÃO a posição real em termos do próprio nível.
- Com base na resolução padrão do BOR (320x240), as dimensões por onde as entidades podem
transitar na tela são no formato bbox:
0 <--> 320 // coordenada no eixo x (da direita à esquerda)
160 <--> 230 // coordenada no eixo y (de cima para baixo)
- Se {x} estiver entre 0 e 320, e a entidade for um inimigo, ele irá cair magicamente do céu.
- Se {x} estiver entre 0 e 320, e a entidade for um obstáculo ou item, ele aparecerá magicamente do
ar.
- Para que um personagem caminhe normalmente pela tela, você deve usar uma coordenada x de
cerca de 360 (para deixá-lo entrar pela direita) a -30 (para deixá-lo entrar pela esquerda).
- A maioria dos projéteis "morrerá" automaticamente se o deslocamento for superior a 80 pixels
fora da tela à esquerda ou direita (seu valor x deve permanecer entre -80 e 400). As facas (knife) são
a única exceção. Elas podem ir até 180 de qualquer maneira (-180 a 500). Outras entidades também
morrerão se elas se afastarem demais.
- Inimigos classificados como "subtype biker" normalmente devem surgir nos estágios mais longe
do que outros inimigos. Use valores de 400 ou -80, mas não acima de -200 ou 520, ou eles vão
"morrer" automaticamente.
at {pos}
- Para que uma entidade apareça na fase, o jogador deve ter se deslocado até a posição {pos} no
estágio.
- {pos} é o posicionamento do jogador em pixels, medidos a partir de seu deslocamento desde
início do estágio. Se o cenário se desloca à direita, mede-se a partir da borda esquerda. Se o cenário
se desloca à esquerda, mede-se a partir da borda direita.
- Isso deve ser declarado junto com outros objetos de cenário. Normalmente é digitado após o
comando "coords {x} {y}".
wait
at {pos}
- O deslocamento da tela será interrompido no valor {pos} até que todos os inimigos atuais sejam
derrotados.
- O valor {pos} também é medido em pixels.
group {min} {max}
at {pos}
- Opcional, porém seuuso é recomendado para agregar grupos grandes de inimigos.
35
- Se o número de inimigos cair abaixo do valor {min}, mais inimigos serão gerados em {pos}. Não
haverá mais inimigos presentes acima do valor {max}.
Ex: grupos individuais de quatro inimigos por vez -> group 1 4
grupos contínuos de quatro inimigos -> group 4 4
grupos de inimigos aparecendo normalmente -> group 100 100
- O comando "wait", obstáculos e itens não são contabilizados em um grupo depois de terem sido
gerados num estágio. Antes de serem gerados, são contabilizados.
- O comando "wait" pode ser utilizado junto com "group", porém deve-se colocar "wait" antes de
"group".
Ex: wait
at 230
group 3 3
at 230
- Exemplo de arquivo de cenário (arquivo de configuração -> pho.txt):
music data/music/march.bor
bossmusic data/music/boss.bor
background data/bgs/pho/backgrou.gif
panel data/bgs/pho/a.gif none none
panel data/bgs/pho/b.gif none none
panel data/bgs/pho/c.gif none none
panel data/bgs/pho/d.gif none none
frontpanel data/bgs/pho/frontpan.gif
water data/bgs/pho/water.gif 4
order abcdcdcdc
blocked 1
#
wait
at 10
spawn roger
alias Allied_Soldier
coords 400 180
at 10
spawn ted
map 1
alias Allied_Soldier
coords 400 180
at 10
spawn calvo
map 1
alias Allied_Soldier
36
coords 450 180
at 10
spawn rogerk
map 2
alias Allied_Soldier
coords -30 180
at 10
#
wait
at 320
spawn ted
map 1
alias Allied_Soldier
coords 400 180
at 320
spawn calvo
map 1
alias Allied_Soldier
coords 450 180
at 320
spawn rogerk
map 2
alias Allied_Soldier
coords -30 180
at 320
spawn roger
alias Allied_Soldier
health 55
map 2
coords 420 190
at 320
spawn box
flip 1
coords 400 170
at 400
spawn box
flip 1
coords 460 230
at 400
#
wait
37
at 600
group 3 3
at 600
spawn roger
alias Allied_Soldier
coords 400 180
at 600
spawn rogerk
alias Allied_Soldier
map 2
coords 400 200
at 600
spawn ted
map 1
alias Allied_Soldier
coords 400 180
at 600
spawn rogerk
alias Allied_Soldier
health 55
coords -30 180
at 600
spawn box
flip 1
coords 400 240
at 700
spawn box
flip 1
coords 420 220
at 800
#
wait
at 850
spawn calvo
map 1
alias Allied_Soldier
coords 450 180
at 850
spawn sergente
alias Allied_Soldier
38
map 3
coords 180 230
at 850
spawn tedm
alias Allied_Soldier
map 3
coords -30 210
at 850
spawn sergente
alias Allied_Soldier
coords 170 220
at 850
#
wait
at 1100
spawn tedm
alias Allied_Soldier
map 3
coords -30 210
at 1100
spawn sergente
alias Allied_Soldier
map 2
health 75
coords 380 230
at 1100
spawn calvo
map 1
alias Allied_Soldier
coords 450 180
at 1100
spawn rogerk
alias Allied_Soldier
map 4
coords -30 170
at 1100
#
wait
at 1300
group 2 2
at 1300
39
spawn alex
alias Allied_Captain
health 400
boss 1
coords 350 200
at 1300
spawn jill
alias Allied_Soldier
coords -80 170
at 1300
spawn jill
map 2
alias Allied_Soldier
coords 400 230
at 1300
spawn jill
map 1
alias Allied_Soldier
coords 400 190
at 1300
spawn jill
alias Allied_Soldier
coords -80 220
at 1300
spawn jill
map 2
alias Allied_Soldier
coords -80 170
at 1300
spawn jill
alias Allied_Soldier
coords 400 230
at 1300
spawn jill
map 1
alias Allied_Soldier
coords 400 190
at 1300
spawn jill
alias Allied_Soldier
coords -80 220
40
at 1300
- No exemplo acima, por alto definimos que o estágio "pho.txt" tem 1300 pixels de extensão; no
final há uma parede invisivel; 4 painéis foram utilizados para criar o cenário, fora um painel frontal
que se destaca mais a frente da tela; possui uma imagem que simula um efeito de distorção d'água; e
há 2 músicas presentes - uma para tocar até o jogador alcançar o fim do estágio, e outra quando o
chefe "alex" sob o nome de "Allied_Captain" surgir.
ARQUIVOS DE MÚSICA
Os arquivos de música tendem a tomar muito espaço nos PAKs, pois, normalmente são maiores do
que todo o resto dos arquivos combinados. Sempre que possível, diminua o tamanho dos arquivos
excluindo segmentos desnecessários da música, como silêncio no início e/ou no final do arquivo, ou
em loops idênticos nas músicas do videogame. Eles se localizam na pasta "music".
Escolha músicas decentes. Ter gostos diferentes para música é uma coisa, mas escolher
aleatóriamente um tema que não combina com o PAK é outra coisa. Certifique-se de que a música
se encaixa com o que está sendo abordado nos estágios.
Como converter de WAV para BOR:
- Você precisa do "DOS4GW.EXE" e de um programa chamado "wav2bor.exe", e músicas no
formato ".wav" com as seguintes especificações:
Formato: 16-bit PCM
Canais de som: Mono
Taxa de amostragem: 22050 (22 KHz)
- Uma vez que você tenha separado os arquivos WAV para conversão, coloque-os em uma mesma
pasta, junto com os programas "DOS4GW.EXE" e "wav2bor.exe".
- Crie um novo arquivo de texto no bloco de notas (ou editor de texto a sua escolha) e adicione
manualmente a seguinte linha para cada WAV que se encontra separado na pasta acima,
substituindo as respectivas variáveis:
wav2bor.exe {wav} {bor}
- {wav} é o nome do arquivo WAV a ser convertido; certifique-se de que ele tenha a extensão
".wav" no final.
- {bor} é o arquivo que será criado no final da conversão no formato ".bor".
- Salve o arquivo dentro da mesma pasta e com o nome que desejar, porém renomeie sua extensão
como ".bat".
- Clique duas vezes no seu arquivo ".bat" para iniciar a conversão em lote dos arquivos ".wav" para
arquivos de música ".bor".
- Assim como nos demais arquivos, tanto os arquivos ".wav", ".bor", e ".bat" devem ter no máximo
8 caracteres para os nomes (sem espaços ou caracteres especiais).
Exemplos (conteúdo do arquivo BAT criado manualmente -> wav2bor.bat):
wav2bor.exe complete.wav complete.bor
wav2bor.exe gameover.wav gameover.bor
wav2bor.exe menu.wav menu.bor
41
wav2bor.exe remix.wav remix.bor
wav2bor.exe 1.wav 1.bor
wav2bor.exe 10.wav 10.bor
No caso de se converter arquivos de músicas de PAKs já publicados, use o passo a seguir.
Como converter de BOR para WAV:
- Você precisa do "DOS4GW.EXE" e de um programa chamado "bor2wav.exe", e músicas no
formato ".bor".
- Separe os arquivos BOR para conversão e coloque-os em uma mesma pasta, junto com os
programas "DOS4GW.EXE" e "bor2wav.exe".
- Crie um novo arquivo de texto no bloco de notas (ou editor de texto a sua escolha) e adicione
manualmente a seguinte linha para cada BOR que se encontra separado na pasta acima, substituindo
as respectivas variáveis:
bor2wav.exe {bor} {wav}
- {bor} é o nome do arquivo BOR a ser convertido; certifique-se de que ele tenha a extensão ".bor"
no final.
- {wav} é o arquivo que será criado no final da conversão no formato ".wav".
- Salve o arquivo dentro da mesma pasta e com o nome que desejar, porém renomeie sua extensão
como ".bat".
- Clique duas vezes no seu arquivo ".bat" para iniciar a conversão em lote dos arquivos ".bor" para
arquivos de música ".wav".
- Assim como nos demais arquivos, tanto os arquivos ".wav", ".bor", e ".bat" devem ter no máximo
8 caracteres para os nomes (sem espaços ou caracteres especiais).
Exemplos (conteúdo do arquivo BAT criado manualmente -> bor2wav.bat):
bor2wav.exe complete.bor complete.wav
bor2wav.exe gameover.bor gameover.wav
bor2wav.exe menu.bor menu.wav
bor2wav.exeremix.bor remix.wav
bor2wav.exe 1.bor 1.wav
bor2wav.exe 10.bor 10.wav
ARQUIVOS DE SOM
Não confunda este tipo de arquivo com arquivos de música. Ambos se utilizam de formatos e
funções diferentes no BOR.
ATENÇÃO: estes arquivos podem ser modificados e novos podem ser adicionados, porém jamais
remova estes 12 arquivos-padrão da pasta "sounds".
Os arquivos de som em Beats of Rage devem ser salvos no formato ".wav", com as seguintes
propriedades:
Formato: 8-bit PCM
Canais de som: Mono
42
Taxa de amostragem: 11025 (11 KHz)
Abaixo uma breve descrição sobre os arquivos de som que fazem parte do BOR por padrão:
data/sounds/beat1.wav
- Reproduzido quando um ataque atinge a hitbox de uma entidade.
data/sounds/fall.wav
- Reproduzido quando uma entidade atinge o chão depois de ter sido derrubada.
data/sounds/get.wav
- Reproduzido quando um jogador pega um item.
data/sounds/money.wav
- Reproduzido quando um jogador pega um item que adiciona pontos ao placar.
data/sounds/jump.wav
- Reproduzido quando alguém pula.
data/sounds/indirect.wav
- Reproduzido quando uma entidade atinge outras entidades ao serem arremessadas.
data/sounds/punch.wav
- Reproduzido quando um jogador usa um ataque em sua cadeia de ataques (pressionando o
respectivo botão enquanto estiver parado). Normalmente, apenas se ouve se o ataque falha.
data/sounds/1up.wav
- Reproduzido quando o jogador recebe uma vida.
data/sounds/go.wav
- Reproduz três vezes seguidas após o jogador derrotar todos os inimigos em espera.
data/sounds/time.wav
- Reproduzido se o temporizador chegar a zero.
data/sounds/beep.wav
- Reproduzido nos menus (não no jogo) quando você move o cursor em destaque para cima ou para
baixo.
data/sounds/beep2.wav
- Reproduzido nos menus (não no jogo) quando você seleciona uma opção.
data/sounds/bike.wav
- Obrigatório se você tiver entidades que se comportem como motociclistas (subtype biker), por
exemplo.
Aviso: fique atento ao tamanho de seus arquivos WAV.
43
INDEXAÇÃO DE IMAGENS PARA USO CORRETO NO PS2BOR
Neste tutorial irei mostrar como “corrigir” a cor de todas as imagens
que fazem parte de qualquer PAK. Este procedimento também é chamado de
indexação.
ATENÇÃO: apenas as imagens das pastas “bgs”, “chars”, e “sprites” devem ser
indexadas. NÃO FAÇA ESTE PROCEDIMENTO NAS ANIMAÇÕES DA PASTA “scenes”!
Levando em consideração o fato de que os PAKs comportam uma grande
quantidade de imagens, seria inviável indexar imagem por imagem. O tempo
gasto seria enorme. Por isso, iremos nos utilizar de um recurso bastante
útil do Photoshop chamado MACRO. Através dele vamos automatizar todo o
processo de indexação. Todo este tutorial foi criado utilizando o Adobe
Photoshop CS4 (em inglês).
PASSO 1 – CRIANDO O MACRO PARA INDEXAÇÃO:
Como exemplo para criação, vamos usar uma imagem qualquer de um PAK
previamente descompactado com a ferramenta “paxplode.exe”.
A) Com o Photoshop já aberto, arraste a imagem a ser indexada com o mouse
para dentro do campo de trabalho.
B) À direita, podemos ver um menu chamado ACTIONS. Na parte inferior deste
menu há uma série de pequenos botões. É através deles que criaremos o macro.
44
C) Clique no 4º botão, da esquerda para direita (o que parece uma pasta)
para criarmos um “set” que pode agregar quantos tipos de ações diferente
quisermos. Neste tutorial só criaremos uma ação. Ao lado de “Name”, no campo
em branco, escreva PS2BOR e clique em OK.
D) Após criarmos o set PS2BOR, vamos criar uma ação para este set. Clique no
5º botão, da esquerda para direita (o que parece uma folha de papel dobrada);
ao lado de “Name”, no campo em branco, escreva CORRIGIR PALETA e verifique
45
se no campo “Set” está escrito PS2BOR. Clique em Record.
E) A partir daqui, qualquer ação feita dentro do Photoshop será “gravada”
até que você interrompa manualmente este registro. Por isso tenha bastante
atenção no passo a passo daqui em diante. Caso você erre algum passo,
interrompa a gravação clicando no 1º botão, da esquerda para direita (parece
um quadrado); clique uma vez no set PS2BOR criado anteriormente e apague
tudo clicando no 6º botão (lixeira) para refazer todo o passo acima. NÃO
PODE HAVER ERROS!
Prosseguindo a partir do ponto em que se dá início a gravação após clicar em
46
Record…
F) O 2º botão, da esquerda para direita (círculo vermelho) ficará acionado
todo o tempo até a interrupção manual do registro de gravação do macro.
G) Eu vou ensinar aqui este procedimento através de atalhos no teclado
porque é mais fácil e mais rápido.
ATENÇÃO: segure a tecla ALT e sem soltá-la, pressione nesta ordem: I, M, R.
A imagem agora está no formato RGB.
47
H) ATENÇÃO: segure a tecla ALT e sem soltá-la, pressione nesta
ordem: I, M, I.
Será aberto uma janela pequena chamada “Indexed Color”.
I) Em “Palette”, clique na seta para baixo para expandir o menu de tipos de
paleta e escolha a opção “Custom...”.
48
J) Será aberto uma outra janela chamada “Color Table”. Nela temos um preview
de como as cores são alocadas na paleta. Enfim, clique em “Load...”.
K) Será aberto uma janela do Windows; vá até a pasta “data” (lembrando que o
49
PAK tem que estar descompactado) e dentro dela clique no arquivo “pal.act”
duas vezes para carregá-lo no Photoshop.
L) Esta é a paleta – contendo 128 cores - que será indexada em todas as
imagens deste PAK. Caso você esteja mexendo com PAKs diferentes, use a
paleta que vem junto com os arquivos daquele PAK, em específico. Evite
trocar paletas com PAKs diferentes. Algumas vezes funciona, outras não.
Clique em OK. Na janela “Indexed Color”, clique também em OK.
50
M) No menu principal do Photoshop, clique em “File” e logo a seguir, clique
em “Save” para salvar a indexação da imagem aberta no campo de trabalho.
N) Clique em “Close” para fechar o arquivo de imagem.
51
O) É hora de interrompermos a gravação do macro, clicando no 1º botão, da
esquerda para direita (o quadrado). Pronto. O macro para indexar todas as
imagens deste PAK foi criado. ATENÇÃO: este macro serve somente com este PAK
que está sendo utilizado como exemplo. Caso venha a trabalhar com outros
PAKs, todo este procedimento DEVE SER REFEITO PARA CADA PAK DIFERENTE!
52
PASSO 2 – INDEXANDO AUTOMATICAMENTE TODAS A
IMAGENS UTILIZANDO O MACRO CRIADO:
Essa parte é muito mais fácil, mas faz-se necessário uma observação:
faremos indexação de imagens em lote, porém nunca ultrapasse o máximo de 200
imagens por vez para indexar. Caso contrário, o Photoshop vai dar erro e há
a possibilidade deste erro CORROMPER OS ARQUIVOS DE IMAGEM!. Antes de
indexar em lote, faça sempre um backup de suas imagens.
A) Obrigatório: apague qualquer arquivo “thumbs.db” das pastas, caso exista.
B) Abra qualquer subpasta contendo imagens dentro da pasta “data”.
Marque/selecione todas as imagens com ALT+A, menos os arquivos TXT, e
arraste tudo para dentro do campo de trabalho no Photoshop. Aguarde um pouco
até que todas elas estejam carregadas no programa.
C) No menu principal do Photoshop, vá em “File”, leve o cursor do mouse até
a opção “Automate” e clique em “Batch”.
53
D) Com a janela “Batch” aberta, na opção “Set” escolha PS2BOR (que foi
criado antes) e em “Action” escolha CORRIGIR PALETA (também criado antes).
Em “Source”, deixe em “Opened Files”. Em “Destination”, deixe em “Save and
Close”. Marque a opção “Override Action ‘Save As’ Commands” e só. Clique em
OK e, dependendo do número de imagens carregadas (até o máximo de 200) o
Photoshop vai demorar muito ou pouco para indexar. Durante o procedimento,recomendo ir tomar uma água, comer um biscoito, pegar um ar na janela, vá
fazer o nº1 (o nº2 não)… Acho que me você pegou a ideia. Ficar sentado na
frente do PC não vai acelerar o processo. Paciência sempre!
E) Conforme as imagens forem sendo indexadas com a nova paleta, o Photoshop
vai salvá-las e fechá-las automaticamente. Quando o primeiro lote for
concluido, repita este procedimento com todas as outras imagens nas
subpastas que estão dentro da pasta “data”, MENOS NA PASTA “scenes”.
Tutorial criado por Adriano_Oliveira para uso com o BOR original.
21/06/2017
SOLUÇÕES DE PROBLEMAS
54
- Problemas Não Fatais -
I - Minhas entidades, cenários e o HUD (barra de vida, placar, etc.) estão com as cores
erradas!
- O BOR usa uma paleta padrão. Certifique-se de que tudo relacionado a imagens no PAK (exceto
os GIF da pasta "scenes") seja indexado com a paleta correta.
II - Minhas entidades não atacam!
- Tem certeza de que você configurou corretamente os ataques em sua animação de ataque?
- Problemas Fatais -
I - Unable to open file "{path}" [o BOR não conseguiu abrir o arquivo no caminho
especificado].
- Verifique o caminho {path}. O caminho está digitado corretamente? Caso esteja, ele está na pasta
certa ou não?
- Algum arquivo ou pasta possui nomes muito longos. O BOR só reconhece arquivos e pastas
renomeados com no máximo 8 caracteres (exceto caracteres especiais, como símbolos), não
incluindo a extensão.
Exemplo: bob.txt
12345678.gif
data/flip/flop.txt
- Se esta regra não for respeitada, o BOR apresentará a mensagem de erro e fechará
automaticamente.
Exemplos de nomes erroneamente aplicados: .txt (somente a extensão sem um nome para o
arquivo)
123456789.gif
abcd@#$!.gif
data/nameistoolong/flop.txt
- Outro motivo possível é que o arquivo está corrompido. Tente refazer o arquivo.
II - Failed to create colourmap from images "{path1}" and "{path2}" [o jogo tentou criar
uma paleta alternativa (remap) de {path1} usando os dados em {path2}, mas não conseguiu].
- {path1} e/ou {path2} não existem. Eles podem realmente existir, porém estão com nomes errados,
então verifique sua ortografia e se os arquivos realmente existem.
- {path1} e {path2} devem ser exatamente as mesmas imagens, EXCETO no caso de certas cores
em um arquivo terem sido substituídas por outro.
III - Command "{com}" not understood in file "{path}" [a linha {com} está em algum lugar
em {path}. No entanto, o BOR não tem nenhum código para lidar com {com}, e não sabe o
que fazer].
- Verifique a ortografia de {com}. Por exemplo, o correto é colourselect, não colorselect.
IV - Unable to load file "{path}" (may be out of memory) [não é possível carregar o arquivo
"{path}" (pode estar com memória excedente)].
- Este erro é uma incógnita. Significa que um dos seus arquivos ".txt" que acabou de ser carregado
não termina com uma linha em branco no documento. Para corrigir isso, basta ir para à última linha
55
no arquivo ".txt" problemático e pressionar a tecla ENTER no seu teclado uma vez.
- Isso só travará o BOR quando o arquivo problemático estiver realmente carregado no sistema, e
não quando ele for reconhecido pelo sistema antes de carregar os arquivos na inicialização.
- Também pode significar que existe(m) entidade(s) na pasta "data" que não foi(foram) declarada(s)
no arquivo "models.txt".
V - Tried to set animation with invalid address ("{char}", ##) [O BOR tentou reproduzir uma
certa animação não declarada da entidade {char} em seu respectivo arquivo de configuração].
- Significa que alguma animação não foi devidamente declarada por obrigação no arquivo ".txt" da
entidade {char}. Caso haja omissão de alguma animação obrigatória, o erro acima é apresentado na
tela. "##" é um valor númerico que, aparentemente, possui ligação com a referida animação.
- Por obrigação, as seguintes animações devem se fazer presentes nos arquivos ".txt" das entidades,
conforme o tipo das mesmas:
Jogador -> anim idle, anim walk, anim jump, anim get, anim grab, anim attack1, anim attack2,
anim attack3, anim jumpattack, anim freespecial, anim special, anim grabattack, anim throw, anim
pain, anim fall, anim rise
Inimigo -> anim idle, anim walk, anim jump, anim grab, anim attack1, anim pain, anim fall,
anim rise
Inimigo, classificado como "subtype biker" -> anim idle, anim pain
Obstáculo -> anim idle, anim fall
Ítem -> anim idle
Tipo "none" (entidade "flash", por exemplo) -> anim idle
- Para mais informações releia a parte 2 no capítulo 5 deste documento.
Outras Notas
Sobre as sequências animadas:
- Existe uma diferença no formato de arquivos GIF animados e não animados. Se você tiver um GIF
animado com um único frame, ele será lido pelo BOR de forma diferente de um GIF não animado
idêntico.
- Essas cenas devem ter GIFs animados: data/scenes/logo.txt
data/scenes/gameover.txt
- Essas cenas devem ter GIFs não animados: data/scenes/title.txt
data/scenes/titleb.txt
data/scenes/select.txt
Placar:
- Quando você atinge um inimigo, você recebe 5 vezes o dano do ataque em pontos.
- Arremessando um inimigo você irá ganhar o dano do ataque em pontos (você não recebe nenhum
multiplicador).
- Você recebe 5 vezes a força do ataque no arquivo ".txt" do jogador, e não do dano causado. Então,
56
um ataque com 1000 poder sempre daria 5000 pontos.
- Você obtém uma vida a cada 50.000 pontos.
Tempo:
- Avalie quanto tempo pode levar um jogador a vencer um grupo de inimigos ou um chefe. Pode ser
um pouco decepcionante durar 99 segundos apenas para derrotar um chefe com várias barras de
vida ou um fluxo interminável de inimigos, vindo a morrer logo a seguir por falta de tempo.
- Para criar um item que recupere o tempo de um jogador, declare-o em seu arquivo ".txt" em
"models.txt" e dê um valor igual a 0 nos campos "health" e "score".
Projéteis:
- As facas são arremessadas para a frente. Eles podem voar sobre poços, a menos que estejam na
altura próxima ao chão.
- As estrelas só podem ser jogadas durante os saltos. Três são arremessadas para frente e em
ângulos descendentes.
- Os tiros são disparados para a frente. Eles podem voar sobre poços.
Arquivos Essenciais:
- Estes arquivos devem estar presentes em seu PAK para que o jogo funcione corretamente. Eles
estão listados abaixo:
data/music/complete.bor
data/music/gameover.bor
data/music/menu.bor
data/music/remix.bor
data/sounds/beat1.wav
data/sounds/fall.wav
data/sounds/get.wav
data/sounds/money.wav
data/sounds/jump.wav
data/sounds/indirect.wav
data/sounds/punch.wav
data/sounds/1up.wav
data/sounds/timeover.wav
data/sounds/beep.wav
data/sounds/beep2.wav
data/sounds/bike.wav
data/sprites/arrow.gif
data/sprites/font.gif
data/sprites/font2.gif
data/sprites/font3.gif
data/sprites/font4.gif
data/sprites/hole.gif
57
data/sprites/shadow1.gif
data/sprites/shadow2.gif
data/sprites/shadow3.gif
data/sprites/shadow4.gif
data/sprites/shadow5.gif
data/sprites/shadow6.gif
data/levels.txt
data/models.txt
data/pal.act
data/scenes/logo.txt
data/bgs/logo.gif
data/bgs/select.gif
data/bgs/title.gif
data/bgs/titleb.gif
Limitações:
Aqui estão algumas linhas do código-fonte especificando as limitações do BOR:
#define MAX_SPRITES 2000#define MAX_ANIMS 500
#define MAX_MODELS 100
#define MAX_PANELS 26
#define ANI_MAX_FRAMES 26
#define MAX_COLOUR_MAPS 7
#define MAX_NAME_LEN 20
#define LEVEL_MAX_SPAWNS 300
#define LEVEL_MAX_PANELS 1000
#define LEVEL_MAX_HOLES 20
#define MAX_LEVELS 50
#define MAX_DIFFICULTIES 5
#define MAX_SOUND_CACHE 64
#define MAX_FILES 3000
- MAX_SPRITES = define que você não pode usar mais do que um total de 2000 sprites para
todos os modelos de personagens combinados. Em outras palavras, se você executar uma contagem
de arquivos em seu diretório "data/chars", e o número estiver acima de 2000, você poderá ter
problemas (especialmente se você carregou imagens duplicadas).
- MAX_ANIMS = define que não é possível carregar mais que 500 animações na memória. O
mesmo vale para os sprites, mas infelizmente não é tão facil contabilizar as animações, diferente
dos sprites.
- MAX_MODELS = define que o BOR suporta no máximo 100 modelos correspondentes ao
número de arquivos de texto em seu diretório "data/chars", portanto estes podem ser contados com
bastante facilidade. O BOR usa cerca de 40 deles por padrão.
- MAX_PANELS = define que o número máximo de painéis de fundo que podem ser carregados
num único estágio é, logicamente, 26, uma vez que a ordem dos painéis é configurada com as 26
58
letras do alfabeto (de "A" até "Z").
- ANI_MAX_FRAMES = define que você não pode usar mais de 32 quadros (frames) em uma
animação.
- MAX_COLOUR_MAPS = define que o BOR suporta no máximo 7 paletas alternativas para as
entidades, não contabilizando a cor padrão das entidades.
- MAX_NAME_LEN = define que o número máximo suportado para os nomes nos arquivos das
entidades é de 20 caracteres (não especiais).
- LEVEL_MAX_SPAWNS = define que em um único estágio não pode ser gerado mais que 300
entidades, contabilizando repetições, é claro.
- LEVEL_MAX_PANELS = define que não pode haver mais que 1000 painéis ordenados em um
único estágio.
- LEVEL_MAX_HOLES = define que não pode haver mais que 50 "buracos" em um único
estágio.
- MAX_LEVELS = define que não pode haver mais que 50 estágios no PAK declarados no
arquivo "levels.txt".
- MAX_DIFFICULTIES = define que não deve haver mais que 5 modos de jogo declarados no
cabeçalho do arquivo "levels.txt".
- MAX_SOUND_CACHE = define que o BOR suporta no máximo 64 arquivos de som no PAK.
- MAX_FILES = define que o número total de arquivos no PAK pode chegar a um valor máximo
de 3000.
- Por padrão, O BOR raramente usa mais que a metade de qualquer um desses valores.
Links
o BoR "nasceu" aqui. Criado pelo Senile Team.
http://www.senileteam.com/
site oficial do OpenBOR, mas contém ferramentas e outros tutoriais para uso com o BOR
original.
http://www.chronocrash.com/forum/
contém material interessante para o BOR, apesar de antigo.
https://web.archive.org/web/20080118124427/http://dev.dcemulation.com/bormod/
OpenBoRManual
site Dreamcast-Scene - A versão original deste tutorial para OpenBOR está hospedada neste
site.
https://web.archive.org/web/20100303081738/http://www.dreamcast-scene.com/index.php/Main/
conversor de imagens em lote.
http://www.irfanview.us/
http://www.senileteam.com/
http://www.chronocrash.com/forum/
https://web.archive.org/web/20080118124427/http:/dev.dcemulation.com/bormod/
https://web.archive.org/web/20100303081738/http:/www.dreamcast-scene.com/index.php/Main/
http://www.irfanview.us/
59
CRÉDITOS
- Beats of Rage -
Senile Team:
Jogo original de Beats of Rage.
Roel (Opla):
Código-fonte e motor original do BOR, principais melhorias no código OpenBoR, alguns gráficos
BoR originais.
Neill Corlett:
Porte do BOR para Dreamcast e PS2.
- OpenBoR -
L@Cible:
O BoR-DC-Toolchain tornou o OpenBoR possível.
Kirby2000:
OpenBoR Maintainer 2004-2005, suporte a 4 jogadores.
CGRemakes:
OpenBoR Maintainer 2005-2006.
SumolX:
OpenBoR Maintainer 2006-2007, porte para PSP.
UTunnels:
Codificador OpenBoR.
Tails:
DarkBoR, suporte a 4 jogadores.
Lord_Ball:
Outras versões do BOR (BoRHed, HoR).
Drikobruschi:
Código de tabela de alta pontuação oferecida.
Kbandressen:
Codificador OpenBoR
Orochi_X:
Codificador OpenBoR
Fugue:
Contribuiu com muitas características, autor original deste manual (versão para OpenBOR).
60
Bloodbane:
Atualizou este manual (versão para OpenBOR).
Contribuições com este manual (versão para OpenBOR): bWWd, Zamuel, Christuserloeser, Damon
Caskey
- Sega -
Design original de Streets of Rage, conceito, etc.
- SNK -
Gráficos utilizados no BoR original.
Sega, Capcom, SNK, Konami, Tecmo, Treasure, Sammy, etc.:
Por todos os jogos nesse estilo!
Toda a comunidade BoR e OpenBoR:
Continue fazendo esses jogos!
-------------------------------------------------------------
Este tutorial foi adaptado por Adriano_Oliveira, contendo tópicos referentes somente ao BOR
original em 21/06/2017 (com base no tutorial original para OpenBOR, desenvolvido por Fugue &
Bloodbane em 23/11/2009)
Blog MundoWiiHack:
https://mundowiihack.wordpress.com/2018/01/10/bor-ps2/#more-2649
Adicionado INSTALAÇÂO, revisado e convertido para .docx por Pilo em 05/02/2018.
https://mundowiihack.wordpress.com/2018/01/10/bor-ps2/#more-2649