Pular para o conteúdo

Documentação

  • Baixe o jogo, abra a lista de níveis e jogue qualquer nível. Para criar o seu, crie um nível no editor e coloque uma música de 1-2 minutos na pasta dele

  • Bugs do jogo vão para as issues do releases, perguntas vão para o Discord. Anexe a linha de versão das configurações e os passos depois dos quais o bug aparece

  • Antes de jogar, o jogo mostra o quanto um nível pesa para rodar no seu dispositivo, com um medidor de cinco barras: quanto mais barras acesas, mais leve o nível. Barras verdes querem dizer que roda be

  • O editor vem integrado ao jogo, não há nada extra para instalar. Nele, um nível é uma pasta com uma música e arquivos, que você leva de vazia até pronta para publicar

  • Um nível é uma pasta de arquivos, o primeiro se monta em seis passos, e todo o editor se apoia em seis ideias: objeto, quadro, intervalo, camada, pai, quadro-chave

  • Um nível é uma pasta comum no disco: o arquivo do nível, os metadados e tudo o que ele usa. Monte-o em Json e passe-o adiante como uma cópia da pasta, não é preciso instalar nada

  • Seis passos até o primeiro teste de jogo: criar um nível, adicionar a música, marcar o ritmo, posicionar objetos, fazer um teste de jogo, salvar

  • Objeto, quadro, intervalo, camada, pai, quadro-chave - as seis ideias em que todo o editor se apoia

  • Um nível conta o tempo nos próprios quadros, não nos quadros da tela, por isso roda igual em qualquer hardware. Você define a duração do nível, e é melhor deixar o fps no padrão, 60

  • Um quadro-chave é um valor em um quadro de uma faixa, mais a suavização com que se chega a ele. Tudo em um nível que se move, muda de cor ou liga e desliga é uma lista de quadros-chave

  • O nível mínimo é uma música. Imagens e fontes ficam por sua conta, e tudo isso vive na pasta do nível

  • O mínimo é uma música. Todo o resto é opcional, e quase tudo fica por sua conta

  • Converta a música para ogg: ela pesa 8-10 vezes menos que wav e, ao contrário do mp3, não adiciona silêncio ao início do arquivo. Além do ogg, só mp3 e wav carregam

  • Se uma forma resolve, use uma forma: sem arquivo, sem custo de memória, sem questão de direitos. Faça a imagem do tamanho do lugar dela na tela, até 2048 no celular e 4096 no geral

  • Um nível vive na própria pasta, dentro de levels na pasta do jogo. Não renomeie os arquivos que ele usa, e um backup completo é uma cópia da pasta do nível

  • Um nível que você publica só pode conter arquivos com licença aberta não mais restritiva que CC BY-NC ou com a permissão do autor. Um nível para uso próprio pode ser feito com qualquer coisa

  • Uma música pode ser usada se a licença aberta dela não for mais restritiva que CC BY-NC ou se o autor permitiu usá-la no nível. Música do YouTube, SoundCloud ou Spotify precisa da permissão do autor

  • Um recurso se qualifica se tiver uma licença adequada ou a permissão do titular dos direitos. Não existe um terceiro caminho

  • Seguros por padrão: música do ccMixter, Freesound e Kenney, imagens do Poly Haven, Pexels e Unsplash, fontes do Google Fonts. Nada pode ser tirado do YouTube, SoundCloud ou Spotify

  • O registro anota de onde vem um recurso e em que termos: o link, a licença, as permissões, os autores. Um campo de licença vazio significa "ninguém verificou", e esse recurso é recusado

  • Cada serviço verifica um nível pelas próprias regras, então um pode aceitá-lo e outro recusá-lo. Só um erro bloqueia a publicação, um aviso manda o nível para a moderação

  • Escreva ao autor usando o modelo, mantenha os pontos 1-3 intactos e salve a resposta. Só conta uma permissão que autorize diretamente a distribuição do nível, não uma apenas para uso pessoal

  • Um bom nível é aquele em que o jogador entende o que o matou, se move com a música e quer tentar de novo

  • O jogador precisa entender o que o matou. Mostre um perigo antes que ele fique perigoso, dê pelo menos 12 quadros para reagir e faça o perigo se destacar mais que a decoração

  • Marque a grade de batidas primeiro: o andamento, depois o deslocamento, depois as batidas por compasso. Ponha o pico do nível no pico da música e dê ao jogador um respiro nos breaks

  • Projete com base nos números do próprio jogador - todos estão em 6_avatar e 7_damage - e numa reação humana de 12-15 quadros. Mostre cada padrão novo primeiro de forma segura

  • Mantenha o conteúdo importante longe da borda: outras telas a põem em outro lugar, e o recorte do celular pode cobrir um projétil. Tremor serve para um compasso, giro rápido e zoom brusco dão enjoo

  • Passe a cor do conteúdo por uma referência ao tema e deixe as cores literais para o que é realmente único. Ative o pós-processamento em um pico e desative de novo, senão os projéteis perdem as bordas

  • Um tema é uma paleta de 64 cores a que os objetos se referem pelo número do slot. Troque o tema, e tudo o que se refere a ele muda junto

  • Use primeiro formas integradas, desenhe as suas só onde nenhuma servir. Ponha luz e sombra sobre uma forma base, faça de cada repetição um prefab e compare com a imagem original sobre o nível

  • Hábitos, não design: em que ordem montar um nível, como não fazer o trabalho duas vezes nem perdê-lo, testá-lo com o bot, entregá-lo e montá-lo com um assistente de IA. Comece pela ordem de trabalho

  • Primeiro a música, o fps, o mapa de batidas e os marcadores, depois um esqueleto de formas simples e o playtest dele. Decoração, tema e efeitos ficam por último

  • Objetos que depois você vai ter que mudar todos de uma vez viram um prefab, sejam quantos forem. Conteúdo que pode ser descrito por uma regra vira um gerador. Em qualquer outro caso, basta copiar

  • A paleta de comandos (Ctrl+Shift+P), a pesquisa de conteúdo (Ctrl+F), o botão Localizar e as setas em uma linha do tempo são o que mais poupa tempo. Qualquer tecla pode ser reatribuída nas configuraçõ

  • Seu trabalho é protegido pelo salvamento automático, pelo desfazer e por uma cópia da pasta do nível. Só a cópia da pasta é um retrato completo do nível. Mudar o formato do arquivo e excluir um nível

  • Um bot joga o nível com os mesmos controles que você e verifica a legibilidade, não a dificuldade. Ele não garante que o nível possa ser concluído

  • Compacte a pasta do nível em zip ou tar.gz e, para ter senha, criptografe com gpg. Em outra máquina, o nível descompactado já pode ser jogado, e o próprio jogo lê esses arquivos compactados

  • Um cliente de IA compatível com MCP pode editar o nível aberto no editor enquanto você assiste. Cada lote da IA é um passo de desfazer, e a IA não pode publicar, excluir arquivos nem gravar sobre outr

  • Se um nível roda nos aparelhos dos jogadores depende do número de formas em um quadro e do overdraw. Comece pelo orçamento do nível e, se for para celulares, leia também sobre dispositivos móveis

  • Um celular aguenta com folga cerca de 1000 formas em um quadro, um PC fraco 5000-10000. O overdraw custa mais que a quantidade: coisas translúcidas sobre a tela inteira, camada sobre camada

  • No celular o dedo cobre a tela, e o sistema ocupa as bordas. Mantenha o que importa longe das bordas e teste o nível em um celular fraco: a translucidez de tela cheia é o que pesa nele primeiro

  • O que faz cada campo ou botão do editor, uma página por painel, janela ou aba. A referência não é lida do começo ao fim: você chega aqui pela pesquisa ou por um link em um artigo

  • A lista principal de termos do projeto. A interface do jogo, esta documentação e qualquer outro texto sobre Bullet Hero usam estas palavras, e um termo novo é adicionado aqui primeiro

  • Os metadados são a vitrine do nível: nome, descrição, imagem, autores, classificação etária, dificuldade e avisos sobre o conteúdo. Hoje um nível chega a outra pessoa como pasta ou pela Oficina Steam

  • As linhas do tempo mostram o nível ao longo do tempo: objetos, quadros-chave do objeto selecionado, o modelo de um prefab, áudio e eventos. A grade de batidas ajuda a colocar tudo isso sobre a música

  • A hierarquia é uma árvore dos objetos do quadro atual, por pai. Cada linha do tempo tem o próprio buffer de área de transferência, e a paleta de comandos encontra qualquer ação do editor pelo nome

  • O inspetor de objeto edita os campos do objeto selecionado, o inspetor de quadro-chave edita os quadros-chave selecionados, em todas as faixas que a seleção toca ao mesmo tempo

  • Um efeito são partículas do VFX Graph com parâmetros divididos em módulos: quantas partículas, de onde saem, como se movem, que cor e tamanho têm. Você os edita no inspetor ou no editor de efeitos

  • O som de uma faixa de áudio passa por uma cadeia de efeitos: são 11, da normalização e do compressor ao eco e à reverberação. A cadeia, a velocidade e o volume ficam no inspetor da faixa de áudio

  • Um gerador cria conteúdo e o aplica ao nível em uma única operação que se desfaz em um único passo. Todo gerador é executado pela janela "Geradores" da barra de ferramentas

  • Um modificador muda o que já está no nível: remove conteúdo, recalcula o fps, achata prefabs, quantiza quadros-chave, ajusta e desloca intervalos. Uma execução se desfaz em um único passo

  • Aqui se define tudo o que pertence ao próprio nível: duração, fps, semente, orientação, metadados, publicação. Daqui também o nível é iniciado, verificado pelas regras e restaurado de uma cópia

  • As texturas, formas, temas, efeitos e prefabs de um nível ficam na pasta dele e viajam com ele. Cada recurso tem um cartão próprio com origem, licença e autores

  • No modo prefab você edita o modelo, e salvar leva a edição a todos os posicionamentos dele. Entre pelo botão "Editar prefab" no inspetor de um posicionamento e volte ao nível com Ctrl+Shift+E

  • Exportar salva o nível fora do jogo como pasta ou arquivo compactado, com todos os arquivos que ele usa. Uma senha criptografa o conteúdo do nível no disco, e uma senha esquecida não tem recuperação

  • O salvamento automático, a grade, a seleção, os gizmos e as predefinições de nível novo ficam aqui. O salvamento automático vem ativado e dispara 60 segundos após uma edição

  • A hierarquia, os inspetores e as linhas do tempo ficam acoplados ao redor do viewport. Um clique na alça da borda de um painel o abre ou fecha, um arrasto muda a largura dele

  • As coleções guardam os recursos que você reutiliza entre níveis. Um nível nunca se refere a uma coleção: importar copia o recurso para dentro, e o nível roda em qualquer lugar

  • Um nível só é enviado pela aba "Publicação" das configurações do nível: como arquivo compactado ou para a Oficina Steam. O relatório verifica o nível sozinho, e os erros nele bloqueiam o envio

  • O editor renderiza o nível aberto em um arquivo de vídeo pelo ffmpeg do seu computador. A renderização é offline, um quadro por vez, por isso o vídeo sai exato por mais lenta que seja a máquina

  • O SDK é o formato de nível do Bullet Hero na forma de uma biblioteca aberta em C#. O jogo lê e grava os níveis por meio dele, e o seu programa pode fazer o mesmo

  • O SDK é o pacote BulletHero.SDK no nuget.org ou uma compilação a partir do código-fonte. A Unity o recebe como git submodule, e o exemplo ConsoleSmoke verifica se os seus níveis são lidos

  • Um nível é uma pasta: o conteúdo em level.json ou level.blob, os metadados em metadata.json ou metadata.blob, uma capa e mídia. Backups, recordes e configurações do jogador ficam no dispositivo

  • Um nível é exportado como pasta, tar.gz ou zip, opcionalmente com senha: zip com AES-256 ou OpenPGP. O SDK detecta o formato de um arquivo recebido pelos primeiros bytes, não pelo nome

  • Há três versões: gv para o jogo, sv para o SDK, mg para a geração do formato do modelo. Pelo mg, o SDK migra um arquivo antigo e se recusa a ler um com geração mais nova que a da build

  • Você chama a validação por conta própria via ValidationFacade, ela não está embutida em salvar e carregar. As ocorrências se dividem em Error, Warning e Advice, e ValidateAndFix corrige o que puder

  • Um serviço diz quais níveis aceita em um arquivo PublishProfile: licenças, origens de recursos, campos obrigatórios, limites de tamanho. Um serviço novo pede um arquivo, não uma edição do analisador

  • Bullet Hero é um híbrido gratuito de jogo de ritmo e bullet hell. Não exige conta, e ainda não há servidor. Os jogadores criam níveis no editor integrado e os trocam como pasta ou arquivo compactado

Notas

  • Uso IA e acho que vale a pena. Mas do jeito certo: como ferramenta cujo trabalho confiro, não como algo que pensa por mim. Usada sem critério, gera muito texto e código que parecem certos e não são

  • Bullet Hero é gratuito, roda no Windows e no Android, e o SDK, a documentação e as builds são abertos. O núcleo aguenta milhares de objetos na tela em celulares e é coberto por mais de 8000 testes

  • Comunidade

    Perguntas, feedback e seus níveis vão para o Discord. Qualquer pessoa pode ajudar o jogo: corrigir um erro na documentação, adicionar uma tradução, relatar um bug ou fazer um nível

  • Conversas e perguntas vão para o Discord, vídeos para o YouTube, bugs do jogo para as issues do repositório bullet-hero/releases. O código-fonte está na organização bullet-hero no GitHub