Skip to content

Instantly share code, notes, and snippets.

@VictorTaelin
Created January 21, 2026 12:17
Show Gist options
  • Select an option

  • Save VictorTaelin/24bbeaaf5ead5a052fa7b9fa5c44cc52 to your computer and use it in GitHub Desktop.

Select an option

Save VictorTaelin/24bbeaaf5ead5a052fa7b9fa5c44cc52 to your computer and use it in GitHub Desktop.
vibistudio live dia 1 log

[Live VibStudio Dia 1 - Desenvolvimento Pokémon RPG]

Bom dia, vou implementar o primeiro projeto do VibStudio.com - MonsterCat RPG inspirado em Pokémon Red, porém online competitivo. Usando Claude Opus 4.5, GPT-5.2 Codex, TypeScript, HTML5. Live ficará ligada 20-30 janeiro. Vou ficar narrando meus pensamentos, depois vamos fazer transcript e jogar na IA para qualquer pessoa perguntar sobre o projeto.

VibStudio é o novo estúdio que estou fundando. Dois princípios: usar IA para tarefas repetitivas (código), humanos para tarefas com alma (arte, lore). Todo código será open-source em github.com/studio-vib. Temos funding de 2M, runway de 1.5 anos.

Vou começar copiando fielmente o Pokémon Red como base, depois vou desconstruir completamente para não infringir propriedade intelectual. Consultei GPT sobre legalidade - se formos 100% compliant e Nintendo mandar cease & desist, só removemos. Comprei sprites da Yanako para usar temporariamente.

O jogo será battle royale competitivo - todos começam na cidade inicial, capturam criaturas, treinam durante partida de 30-40min, batalha final determina vencedor. Sistema ranqueado estilo LOL.

[Primeiro Prompt Principal] Vou implementar retro cat monster RPG inspirado em Pokémon Red. TypeScript, HTML5, CSS, Bun.js para build, bun serve porta 3000. Canvas para renderização, sem WebGL.

Preciso implementar interface: onPost(key) para inputs, onTick() chamada 60fps. Estado do jogo será objeto imutável. Mapa liga Position (x,y números) para Tile. Tile tem floor e maybe Entity. Entity pode ser Item ou Creature.

Creature tem: nome, position atual, position anterior (para interpolação), party (array até 6 PartyMon), maybe dialogue, direction. PartyMon tem: current_hp, level, experience, species_id, nickname.

Vamos ter mapa estático de species_id para atributos (HP, ATK, DEF, SPA, SPD, SPE, move_pool). GameState tem map e player_pos indicando onde está personagem principal.

Quando apertar WASD, checar se passaram 16 ticks desde last_move (4 movimentos/segundo), mover entidade em player_pos checando colisão. Canvas 160x160 (10x10 tiles de 16px). Câmera centralizada no bottom-right pixel do player.

Se entidade tem previous_pos != current_pos, interpolar posição visual. Com 64fps e 16 ticks/movimento, cada tick = 1 pixel movimento. Exemplo: se player em (100,100) moveu de (99,100) há 8 ticks, desenhar 8 pixels à direita da posição anterior.

Implementar funções swap/set/get para manter imutabilidade. Por hora só mapa com tiles aleatórios, 2 entidades (NPC e player). Floors como quadrados coloridos, entities como círculos.

[Ferramenta Tile Slicer] Preciso recortar sprites. Prompt simples: criar aplicativo web, upload imagem, usuário seleciona grid NxM com inputs, preview visual com retângulo vermelho, apertar espaço pede nome e baixa zip com tiles 16x16 nomeados X_Y.png.

Claude fez em 1 minuto! Perfeito na primeira tentativa. Vou usar para recortar grass, cave, tree, house, boy dos sprites Yanako.

[Problema com Prompt] GPT demorou 40min mas fez ASCII art em vez de usar sprites! Descobri que copiei errado pro Vim, perdi parte crucial. Recuperei da gravação Twitch (Isabella configurou VODs).

Reenviei especificando diretório assets/ com sprites 16x16. Três tipos:

  • Border sprites (cave) - nomeados cave_XX_YY, sistema auto-detecta bordas
  • Building sprites (house) - 5x5 tiles, cada célula diferente
  • Entity sprites (boy) - grid 4x4: linhas=animação, colunas=direção (down/left/up/right)

[Sistema Mapa ASCII] Vou implementar parseMapString. String representa mapa inicial - espaço=grass, H=house, C=cave, T=tree, Y=car, P=player. Casa expande 5x5 automaticamente, cave gera bordas baseado em vizinhos.

CCCCCCCCCCCC
C..........C
C..HHHH....C
C..HHHH..T.C
C.P......Y.C
CCCCCCCCCCCC

GPT implementou corretamente. Personagem anda, casa renderiza, bordas automáticas funcionam!

[Refatoração Código] Código desorganizado. Vou pedir refatoração completa:

  • types.ts: consolidar tipos com convenção consistente
  • math.ts: funções numéricas (clamp, lerp)
  • position.ts: funções posição (posToKey, deltaToDirection)
  • state.ts: lógica estado (move, createInitialState)
  • map/parseString.ts: parsing mapa ASCII
  • Eliminar utils.ts genérico
  • Manter imutabilidade sempre

GPT levou 30min (muito lento para refatoração). Nota: usar Claude para refatorações simples.

[Interior Casa] Interior fica em área distante do mapa principal (evita múltiplos mapas). Porta em house_02_04 sempre. Teleporte instantâneo. Vou melhorar com transição depois.

[Sistema Diálogos] dialogue = array de parágrafos, paragraph = array de linhas. Renderiza 2 linhas simultaneamente, área de 3 tiles altura. Texto aparece caractere por caractere, 3 ticks/char (20 chars/segundo).

GameState adiciona: dialogue_state com text (array arrays strings), cursor (paragraph/line indices), last_interaction_tick. Ao apertar J com diálogo completo, scrolla linha bottom para top, próxima linha aparece. Transição parágrafos quando termina último. Último parágrafo fecha.

[Menu Start] Apertar L abre menu ocupando esquerda da tela menos última linha. 7 opções texto, navegação W/S com wrap. Triângulo preto 20px padding aponta seleção. J por hora não faz nada, K fecha menu.

[Discussão: AI e Aprendizado] Pergunta sobre usar AI na graduação. Minha opinião forte: foque em criar, não em aprender algoritmos isolados. Dijkstra, FFT serão como fatoração de primos manual - interessante mas sem valor econômico.

Paralelo histórico perfeito: 20 anos atrás debates idênticos sobre Assembly. "Precisa saber Assembly senão não entende computador real" - hoje ninguém fala isso. Linguagens alto nível eram vistas como "caminho fácil". História se repete com AI.

O que aprender então? Crie projetos ambiciosos com melhores ferramentas disponíveis. Aprenda on-demand quando bugs aparecerem. Se AI resolver tudo sem bugs, aquele conhecimento já está commoditizado.

Ser humano é muito bom em ver o que perde com mudança, péssimo em ver o que ganha. Quando Assembly "morreu", surgiram problemas mais complexos - bancos dados, VMs, compiladores. Mesmo padrão acontecerá agora.

Exemplo concreto: se aprender fazer sistema operacional, faz prompt e AI faz. Vamos resolver problemas incompreensíveis hoje - orquestrar swarms de agentes, modelar corpo humano nível molecular, estrelas Dyson. Algoritmos atuais vão virar história.

[Bend 2 e SubGen] Bend 2 terá provas formais - garante matematicamente ausência bugs. Você escreve teoremas sobre código, compilador prova verdadeiros. Exemplo: "impossível player acessar sala Mewtwo sem 8 badges" - sistema garante zero bugs violando isso.

Tecnologia existe (Coq desde 1989, Lean) mas cara - 100k linhas prova para 1k código. Usado em partes críticas: sort() Python, partes compilador C são formalmente verificadas.

SubGen: quando AI trava provando teorema, faz busca simbólica (não AI) por função satisfazendo exemplos. Você dá input->output, ele acha função matematicamente correta. Futuro: humanos escrevem teoremas, AI escreve código, Bend prova correção.

Comparação cérebro: inteligência humana não veio de gradient descent do cérebro - veio de algoritmo evolutivo discreto no DNA ao longo de gerações. Se objetivo é criar inteligência, por que não usar algoritmo que já funcionou?

[Melhorando Tile Slicer] Problema: sprites Yanako têm transparência, Pokémon original não tem. Vou adicionar: click direito seleciona background tile (highlight laranja 30% opacity), depois recorta normal com background incluído. Claude implementou em 2min.

[Debugging Movimento] Cloud colocou player centralizado, não bottom-right como especifiquei. Diferença crucial - toda matemática câmera depende disso. GPT acertou, Cloud errou. Previous_pos não salvava corretamente, quebrava interpolação.

[VibStudio Modelo Negócio] Open-source não é problema. Tesla abriu código, ainda domina. Cenários possíveis:

  1. Revenue servidor oficial + skins (código aberto, servidor proprietário)
  2. Empresa desenvolvimento usando nossas ferramentas internas (Bend + SubGen v5)
  3. Canal educacional se viralizar
  4. Consultoria/desenvolvimento para outras empresas

Se comunidade pegar nosso código e fizer algo melhor, ainda associado à marca VibStudio. Superfície de sorte aumenta. Repositório base Pokémon privado 2 semanas (muito similar), depois público após desconstrução total.

[Instruções Equipe] Leon/John: próximas 2 semanas só Pokémon Showdown competitivo. Chegar alto ELO, entender metagame profundamente. Não é ter zerado jogo - competitivo é totalmente diferente. Estudar tier lists, criar equipes, testar estratégias.

Carol/Lúcia: transcrever lives, criar highlights TikTok/YouTube, gerenciar Discord. Amanhã começam estudar codebase através dos prompts salvos.

Procurando pixel artists versáteis - diferentes projeções (top-down, isométrica, oblíqua tipo Tibia). Diego 2h/dia não suficiente para múltiplos projetos.

[Notas Técnicas Acumuladas] Canvas exatamente 160x160 (10x10 tiles 16px). 64 FPS lógico, 16 ticks por movimento = 1px/tick interpolação perfeita. Estado sempre imutável via funções pure. Mapa é banco dados central - tudo existe dentro dele. Player identificado por posição, não ID (evita dessincronização).

TypeScript strict mode obrigatório. Sem frameworks - vanilla JS/TS apenas. Bun.js build/serve. Cada sprite próprio arquivo (não spritesheets agrupados). Nomenclatura rígida: tipo_XX_YY.png.

[Discussão Ragnarok/MMOs] Adoraria fazer Ragnarok-like mas reaction-based combat. Poder bloquear, dash, não turn-based rígido. Problema sprites Tibia: projeção oblíqua específica, não isométrica padrão. Personagem diagonal mas objetos verticais - muito difícil acertar.

Pokétibia exemplo de projeção errada - por isso parece estranho. Se fizer MMO, pensar em diferentes superfícies monetização mantendo open-source.

[Performance Modelos] Codex (GPT-5.2): 20% melhor, 5x mais lento. Use para base/fundação onde bugs custam caro. Claude: rápido, bom para refatoração/features simples. Gemini 2.0: muito inteligente mas instruction following péssimo.

Planos: $200/mês cada (OpenAI/Anthropic). Talvez exagero mas nunca bati limite. Google tem próprios chips mas Anthropic tem metade autores paper Attention - talento > hardware.

[Filosofia Desenvolvimento] Código desse projeto não é arte - é repetitivo, já fiz mil vezes. Arte está em design, narrativa, visuais. Por isso AI para código, humanos para resto.

Assembly era "fundamental" - hoje ninguém usa. Multiplicação manual era profissão (computador humano) - calculadoras mataram. Sempre vemos o que perdemos, nunca o que ganhamos.

Criar coisas > aprender isolado. Se bug aparecer, você aprende. Se não aparecer, conhecimento desnecessário. Otimização prematura do aprendizado é perda tempo.

[Estado Final Dia 1] Implementado:

  • Movimento com interpolação suave 64fps
  • Parse mapa ASCII com auto-borders cave
  • Casa com interior (teleporte)
  • Sistema diálogos completo (typewriter, scroll, parágrafos)
  • Menu Start funcional
  • Editor tiles com background
  • Refatoração arquitetura
  • ~95k tokens gastos

Amanhã 8h: sistema batalha. Meta 10 dias: replicar todo Red. Depois 2 semanas: desconstruir, criar jogo próprio.

12 horas trabalhadas. Com AI fiz em 1 dia o que levaria semanas. Ferramenta tiles: 1 minuto. Sistema diálogos: 5 minutos. Não é substituir programadores - é amplificar capacidade 100x.

100+ viewers inesperados. Obrigado! Sigam @studio_vib, entrem Discord. Lives formato ruim - esperem highlights editados. Vou mudar para só usar Claude em refatorações, economizar 75% tempo.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment