Buscar

370714516-Manual-PS2BOR

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 60 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 60 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 60 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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.exe

Continue navegando