Manual - PS2BOR
Short Description
Configurações Gerais para PS2BOR . Informações, Instalação, Criação de ISO e Edição de Jogos...
Description
Manual
PS2BOR
Edição: 2.0
1
Í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 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:.......... Essenciais:................................ ............................................ ............................................ ............................................. ............................ .....56 Limitações: ...................... ............................................. ............................................. ............................................ ............................................ ............................ ......57 Links .................... .......................................... ............................................ ............................................ ............................................. .............................................. ............................ ..... 58 Créditos ...................... ............................................. ............................................. ............................................ ............................................ ........................................... ..................... 59
2
INFORMAÇÕES GERAIS Beats of Rage (BoR) Beats of Rage é um semi jogo 3D de pancadaria p ancadaria 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, 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 de rua estilo beat'em beat'em up, possam ser ser construídos dentro dela. Os jogos desenvolvidos para a engine Beats of Rage R age 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 um do zero. O método de modificação é bastante simples porque é basicamente 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 PlayStation 2 excluído das novas compilações compilações por não ter memória suficiente, ficando ficando somente na versão versão antiga do BOR para PS2, que atualmente atualmente é a v0.1b. 3
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 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, uLaunchEL F, 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 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 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; 4
2) Coloque dentro desta o pasta o arquivo BOR.PAK que 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 por alguma ID no formato: formato: ABCD_123.45 Exemplo: BOOT2 = cdrom0:\ABCD_123. cdrom0:\ABCD_123.45;1 45;1 VER = 1.00 VMODE = NTSC 4) Abra o programa UltraISO, Clique em Arquivo > Nova > Imagem DVD PS2. Navegue até até a pasta de seu projeto e abra abra o arquivo SYSTEM.CNF. SYSTEM.CNF.
5
5) Adicione o arquivo BOR.PAK e 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", bor.pak.Playing", substitua bor por por 3 caracteres.
6
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 exemplo o arquivo BOR.PAK BOR.PAK seria renomeado renomeado para D.PAK e colocado na pasta "A" na raiz da ISO.
Notas: - PS2BOR não funciona no emulador PCSX2. - Utilize OP OPL L via R ede para testar suas compilações.
7
EDIÇÃO DE JOGOS Este grande jogo pode ser modificado pelos jogadores ou criadores para mudar m udar 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, heróis, inimigos, fases fases etc. Na realidade, 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 descompactar um mod primeiro. primeiro. Depois que que a modificação 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 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 i ncluí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 recomendáv el 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 um arquivo PAK utilize o programa programa "PAXPLODE". - Você precisará dos arquivos " paxplode.exe" e " paxplode.bat "para "para a extração do conteúdo, Mantenha-os sempre juntos. - Coloque estes arquivos na mesma pasta com o PAK que você deseja extrair. 8
- Renomeie o PAK como " bor.pak " (sem aspas) caso ele tenha t enha 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 descompac descompactado: tado: - 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 personagen personagens. s. - 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 todos os 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 9
será maximizada e o processo de inicialização deve parar no meio apresentando alguma mensagem 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. modelos. Ele deve estar estar presente dentro dentro da pasta "data". "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 (personagenss controlados pelo jogador, inimigos, elementos de cenário, etc.) Você pode adicionar o (personagen 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. enti dade. 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. enti dade. 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. 10
Usado para tudo, exceto para a entidade "flash" e personage personagens ns 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 data/chars/misc/flas h.txt
# Player load wolverin
data/chars/wolverin/wolverin.txt data/chars/wolverin/w olverin.txt
# Projectiles know shot know knife
data/chars/misc/shot.txt data/chars/misc/shot.txt data/chars/misc/knife.txt data/chars/misc/k nife.txt
# items #know 1up #know meat #know medikit
data/chars/misc/1up.txt data/chars/misc/1up.txt data/chars/misc/meat.txt data/chars/misc/me at.txt data/chars/misc/medikit.txt data/chars/misc /medikit.txt
# Enemies know roger_k know alex know jill
data/chars/roger_k/roger_k.txt data/chars/roger_k/roger_k.txt data/chars/alex/alex.txt data/chars/alex/ale x.txt data/chars/jill/jill.txt
# Obstacles (item containers) know box data/chars/misc/box.txt data/chars/misc /box.txt No exemplo acima acima as entidades entidades flash e wolverin wolverin estarão sempre carregadas na memória. Flash é um tipo de animação (opcional) referente ao impacto de um golpe. Wolverin é o personage personagem m 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 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".
11
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 scene file file file next file file file next scene file scene file scene
Arcade data/scenes/mission.txt data/levels/pho.txt data/levels/base1.txt data/levels/city.txt data/levels/lift.txt data/levels/uboot2.txt data/levels/uboot.txt data/scenes/escape.txt data/levels/cave.txt data/scenes/noescape.txt data/levels/akhir.txt data/scenes/end.txt
12
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, 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çõess da animação. configuraçõe
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 entidades diferentes, 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. coletado. Os itens só podem dar um bônus por vez. vez. Em outras palavras, palavras, você não pode criar um item que dê 2000 pontos e conceda conceda uma vida ao mesmo tempo. none -> a entidade é uma u ma decoração sem função. Serve apenas para enfeite. A entidade "flash", por exemplo, deve deve ser classificada classificada como "type "type none" (sem aspas). aspas). obstacle -> a entidade é um bloqueio estacionário que pode ser destruído. subtype biker - Opcional - Se usado, os inimigos inimi gos 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 é 13
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. 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 arremessadas três estrelas estrelas em ângulos ângulos diferentes na diagonal, de cima para para baixo. 14
- "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. f uncionarem. 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 f azer 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 pressionando o botão de ataque uma vez. - Os inimigos executam esse ataque quando um jogador j ogador 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 j ogadores usam isso se pressionarem o botão de ataque depois de bater com 15
ATTACK1 duas vezes. - Os inimigos são ligeiramente mais propensos a usar ATTACK2 do que ATTACK3.
anim attack3 (jogadores e inimigos) - Último na sequenc sequencia ia de ataques. Os jogadores j ogadores usam isso se pressionarem o botão de ataque depois de bater com ATTACK2. - As animações "anim attack1", "anim attack2", att ack2", e "anim attack3" são opcionais para os inimigos, i nimigos, 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á executará este ataque ataque automaticamente. 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 para os 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 li berta 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 r eproduzido após um agarrão seguido de um ataque normal. Dependendo das configuraçõess das entidades, este ataque pode ser repetido por até 3 vezes consecutivas. configuraçõe consecutivas. 16
anim throw (jogadores e inimigos) - Opcional para inimigos. - Este ataque é reproduzido r eproduzido 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 durante sua queda. 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 deslocamen to 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á 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. 17
- 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} {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, utili zado, 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 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 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. 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 inimigos/sombras que parecem 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.
18
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 di reita/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 que se 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 também funciona. Ótimo para fazer lançadores 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 finalizar um combo. - Pode acontecer do comando ATTACK vir a ter mais quatro coordenada coordenadass adicionais: {block}, {noflash}, {pausetime}, {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 fr ame 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! 19
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 util izado 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 permiti rem que a entidade continue se deslocando para fora da tela e consequentemente conseque ntemente 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: Enti dade: 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 20
frame offset bbox frame offset frame delay attack frame attack offset frame
data/chars/wolverin/atk04.gif 11 110 1 10 35 45 data/chars/wolverin/atk05.gif 1 109 data/chars/wolverin/atk06.gif 9 32 26 78 59 10 0 0 0 0 0 data/chars/wolverin/atk07.gif 0 00 00 11 110 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 offset frame delay offset attack frame offset delay attack frame delay frame offset delay
15 48 142 data/chars/wolverin/fall1.gif 20 61 74 15 15 45 33 10 1 data/chars/wolverin/fall2.gif 62 68 9 0 data/chars/wolverin/fall3.gif 10 data/chars/wolverin/fall3.gif 62 69 35 21
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 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 300 98 15 1 0 1 0 0 frame data/chars/wolverin/shoot3.gif attack 121 0 300 300 98 15 1 1 0 0 0 frame data/chars/wolverin/shoot2.gif attack 121 0 300 300 98 15 1 0 1 0 0 frame data/chars/wolverin/shoot3.gif attack 121 0 300 300 98 15 1 1 0 0 0 frame data/chars/wolverin/shoot2.gif attack 121 0 300 300 98 15 1 0 1 0 0 frame data/chars/wolverin/shoot3.gif attack 121 0 300 300 98 15 1 1 0 0 0 frame data/chars/wolverin/shoot2.gif attack 121 0 300 300 98 15 1 0 1 0 0 frame data/chars/wolverin/shoot3.gif attack 121 0 300 300 98 15 1 1 0 0 0 frame data/chars/wolverin/shoot2.gif attack 121 0 300 300 98 15 1 0 1 0 0 frame data/chars/wolverin/shoot3.gif attack 121 0 300 300 98 15 1 1 0 0 0 frame data/chars/wolverin/shoot2.gif attack 121 0 300 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 22
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 12 1 0 0 0 0 frame data/chars/wolverin/atk07.gif offset 1 109 frame data/chars/wolverin/atk06.gif anim idle loop delay offset bbox frame frame frame frame frame frame
1 18 44 98 20 6 45 85 data/chars/wolverin/idle00.gif data/chars/wolverin/idle01.gif data/chars/wolverin/idle02.gif data/chars/wolverin/idle03.gif data/chars/wolverin/idle02.gif data/chars/wolverin/idle01.gif
anim jump delay offset bbox frame frame delay frame delay frame frame
8 45 127 16 18 51 79 data/chars/wolverin/jumpatk0.gif data/chars/wolverin/jumpatk1.gif 16 data/chars/wolverin/jumpatk2.gif 8 data/chars/wolverin/jumpatk1.gif 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 23
frame bbox frame delay offset attack frame
data/chars/wolverin/jumpatk4.gif 31 9 38 50 data/chars/wolverin/jumpatk5.gif 25 40 119 9 45 119 34 20 1 1 0 0 0 data/chars/wolverin/jumpatk6.gif
anim pain delay offset bbox frame bbox frame bbox frame bbox frame
8 57 106 26 12 63 89 data/chars/wolverin/pain1.gif 13 3 73 97 data/chars/wolverin/pain2.gif 10 4 79 91 data/chars/wolverin/pain3.gif 13 3 73 97 data/chars/wolverin/pain2.gif
anim rise delay offset frame frame frame delay frame
8 54 63 data/chars/wolverin/rise1.gif data/chars/wolverin/rise2.gif data/chars/wolverin/rise3.gif 1 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 24
frame attack frame attack frame attack frame attack frame attack frame delay attack frame attack frame attack frame attack frame offset frame delay frame
data/chars/wolverin/block04.gif 25 0 95 122 40 1 1 0 0 0 data/chars/wolverin/block05.gif 25 0 95 122 40 1 0 1 0 0 data/chars/wolverin/block02.gif 25 0 95 122 40 1 1 0 0 0 data/chars/wolverin/block03.gif 25 0 95 122 40 1 0 1 0 0 data/chars/wolverin/block04.gif 25 0 95 122 40 1 1 0 0 0 data/chars/wolverin/block05.gif 8 25 0 95 122 40 1 0 1 0 0 data/chars/wolverin/block06.gif 25 0 95 122 40 1 1 0 0 0 data/chars/wolverin/block07.gif 25 0 95 122 40 1 0 1 0 0 data/chars/wolverin/block08.gif 25 0 95 122 40 1 1 0 0 0 data/chars/wolverin/block09.gif 26 120 data/chars/wolverin/block10.gif 35 data/chars/wolverin/block10.gif
anim throw delay offset bbox frame
20 45 127 22 11 40 76 data/chars/wolverin/jumpatk3.gif
anim walk loop delay offset bbox frame frame frame frame frame frame frame frame
1 8 44 102 20 6 45 85 data/chars/wolverin/wk00.gif data/chars/wolverin/wk01.gif data/chars/wolverin/wk02.gif data/chars/wolverin/wk03.gif data/chars/wolverin/wk04.gif data/chars/wolverin/wk05.gif data/chars/wolverin/wk06.gif 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 esteticamente melhor. 25
b) Entidade controlada controlada pela CPU/inimigo (personagem (personagem -> Roger Roger K // arquivo de configuração configuração -> roger_k.txt) name roger_k health 50 speed 9 type enemy shadow 2 remap data/chars/roger_k/a data/chars/roger_k/alter1.gif lter1.gif data/chars/roger_k data/chars/roger_k/alter2.gif /alter2.gif remap data/chars/roger_k/a data/chars/roger_k/alter1.gif lter1.gif data/chars/roger_k data/chars/roger_k/alter3.gif /alter3.gif remap data/chars/roger_k/a data/chars/roger_k/alter1.gif lter1.gif data/chars/roger_k data/chars/roger_k/alter4.gif /alter4.gif remap data/chars/roger_k/a data/chars/roger_k/alter1.gif lter1.gif data/chars/roger_k data/chars/roger_k/alter5.gif /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 offset frame delay frame delay frame frame
25 108 172 data/chars/roger_k/fall1.gif 9 data/chars/roger_k/fall2.gif 20 data/chars/roger_k/fall2.gif data/chars/roger_k/fall3.gif 26
anim idle loop offset bbox delay frame
1 108 172 85 72 49 104 16 data/chars/roger_k/idle0.gif
anim pain delay offset bbox frame frame
10 108 172 85 72 49 104 data/chars/roger_k/pain1.gif data/chars/roger_k/pain2.gif
anim rise offset 99 172 delay 15 frame data/chars/roger_k/rise.gif anim walk loop offset bbox delay frame frame frame frame frame frame
1 108 172 85 72 49 104 11 data/chars/roger_k/wk1.gif data/chars/roger_k/wk2.gif data/chars/roger_k/wk3.gif data/chars/roger_k/wk4.gif data/chars/roger_k/wk5.gif 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. 27
- Não é recomendad recomendadoo configurar este esta entidade em loop, l oop, 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"), "scenes"), caso suas suas cores apresentem apresentem problemas ao serem exibidas 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 fl echa apontando para a direita. - Quando um comando "wait" é desmarcado na configuração de determinado cenário, esta imagem pisca no lado lado direito da tela para para direcionar os cenários cenários à direita (ou o lado esquerdo da da tela para direcionar os cenários à esquerda - somente como o comando "direction left") para informar aos jogadores que 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 28
resposta é para mostrar mais animações de logotipos ou outras apresentações. 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á i rá 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 GIF esteja num tamanho tamanho abaixo do padrão. 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 animação de arquivos arquivos GIF. Caso contrário, a imagem imagem só aparecerá por 1/10 de segundo. Você também pode alterar a tela de d e introdução e seleção de personagem. Esses arquivos podem ser encontradoss em "data/bgs". Observe que as sequências animadas encontrado animadas e as telas NÃO precisam ser salvas com a paleta padrão do BOR. Eles podem ter sua própria paleta. p aleta. 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.
29
- Exemplo de arquivo de configuração para sequências animadas: animadas: # # #
music animation silence
music animation #silence
[path] [loop] [path] [x] [y]
# BOR file to play # GIF animation to play # Stop music
data/music/menu.bor data/scenes/mission.gif data/scene s/mission.gif 0 0
- 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} 30
- 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" "none" (sem aspas) em 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 i dé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 t ransparentes 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 i magem 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#}{pane {panel#}{panel#}{panel#}... l#}{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çõess do painel. declaraçõe Exemplo: "order abcabcada", abcabcada", não "order a 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. separada. Exemplos: order abcdefghij order klabcd order eeabcdef 31
- 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 limit es explicados anteriormente. anteriormente. - Se você usar o comando "direction left", os painéis serão exibidos da esquerda para a direita, começando começan do com a última ordem até a primeira. Com base no exemplo acima, a declaração anterior se tornaria "fedcbaeedc "fedcbaeedcbalkjihgfedcba" balkjihgfedcba" em vez de "abcdefghijklabcdeeabcdef". "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 coordena da {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. 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. 32
- 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 arremessar os inimigos dentro dentro do poço sem cair 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), placar), e Meat (renova (renova a barra de vida). vida). 2pitem {name} - Opcional. - Funciona como "item", exceto que isso só será gerado se houver 2 pessoas jogando. boss {bi} 33
- 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 obstáculos e ítens, mas também também pode ser ser usado para fazer fazer inimigos que surgem 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 r esoluçã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 seu uso é recomendado para agregar grupos grandes de inimigos. 34
- 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çã configuraçãoo -> pho.txt): music bossmusic
data/music/march.bor data/music/boss.bor data/music/boss. bor
background data/bgs/pho/b data/bgs/pho/backgrou.gif ackgrou.gif panel data/bgs/pho/a.gif data/bgs/pho/a .gif none none panel data/bgs/pho/b.gif data/bgs/pho/b .gif none none panel data/bgs/pho/c.gif data/bgs/pho/c .gif none none panel data/bgs/pho/d.gif data/bgs/pho/d .gif none none frontpanel data/bgs/pho/frontpan.gif water data/bgs/pho/water.gif data/bgs/pho/w ater.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 35
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 36
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 37
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 38
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 39
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 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. 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 Certif ique-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: 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 com os programas "DOS4GW.EXE" e "wav2bor.exe". "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 40
wav2bor.exe remix.wav remix.bor wav2bor.exe 1.wav 1.bor wav2bor.exe 10.wav 10.bor No caso de de se converter arquivos arquivos de músicas músicas de PAKs já publicados, publicados, use use o passo a seguir. 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" "DOS4GW.EXE" e "bor2wav.exe". "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 complete.wav bor2wav.exe gameover.bor gameover.wav gameover.wav bor2wav.exe menu.bor menu.wav menu.wav bor2wav.exe remix.bor remix.wav bor2wav.exe 1.bor 1.wav bor2wav.exe 10.bor 10.wav
ARQUIVOS DE SOM Não confunda confunda este tipo de arquivo 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 41
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.
42
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.
43
C) Clique no 4º botão, da esquerda para direita (o que parece uma pasta) aç ões diferente para criarmos um “set” que pode agregar quantos tipos de ações 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
44
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
45
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.
46
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...”.
47
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
48
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.
49
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.
50
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!
51
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”.
52
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
53
- 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 renomeadoss com no máximo 8 caracteres (exceto caracteres especiais, como símbolos), não renomeado 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: 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 li nha {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 fil e "{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 54
no arquivo ".txt" problemático e pressionar a tecla ENTER no seu teclado uma vez. - Isso só travará tr avará 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) d eclarada(s) no arquivo "models.txt".
V - Tried to set animation with wit h invalid address ("{char}", ("{char}", ##) [O BOR tentou reproduzir uma certa animação não declarada da entidade {char} em seu respectivo arquivo de configuração 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 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/title.txt data/scenes/titleb.txt data/scenes/select.txt
Placar: - Quando você atinge um inimigo, i nimigo, 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 n ão do dano causado. Então, 55
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 56
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 (especialmente se você você carregou imagens duplicadas). 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. facilidade. O BOR usa cerca cerca de 40 deles deles por padrão. 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 57
letras do alfabeto (de "A" até "Z"). - ANI_MAX_FRA ANI_MAX_FRAMES MES = define que você não pode usar mais de 32 quadros (frames) em uma animação. - MAX_COLOUR_MAP MAX_COLOUR_MAPS S = 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_SP LEVEL_MAX_SPAWNS AWNS = define que em um único estágio não pode ser gerado mais que 300 entidades, contabilizando repetições, repetições, é claro. - LEVEL_MAX_PAN LEVEL_MAX_PANELS ELS = define que não pode haver mais que 1000 painéis ordenados em um único estágio. - LEVEL_MAX_HOL LEVEL_MAX_HOLES ES = 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_DIFFICU MAX_DIFFICULTIES LTIES = 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/2008011 https://web.archive .org/web/20080118124427/http://dev.dc 8124427/http://dev.dcemulation.com/bormod/ emulation.com/bormod/ OpenBoRManual site Dreamcast-Scene - A versão original deste tutorial para OpenBOR está hospedada neste site. https://web.archive.org/web/2010030 https://web.archive .org/web/20100303081738/http://www.drea 3081738/http://www.dreamcast-scene.com/inde mcast-scene.com/index.php/Main/ x.php/Main/ conversor de imagens em lote. conversor lot e. http://www.irfanview.us/
58
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). 59
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 (com base no tutorial original para OpenBOR, desenvolvido por Fugue & Bloodbane em 23/11/2009)
Blog MundoWiiHack: https://mundowiihack.wordpress.c https://mundowiihack .wordpress.com/2018/01/10/bor-ps2/#mo om/2018/01/10/bor-ps2/#more-2649 re-2649 Adicionado INSTALAÇÂO, revisado e convertido para .docx por Pilo em 05/02/2018.
60
View more...
Comments