Como acabei escrevendo um livro pra aprender Dart construindo um roguelike de terminal
O terminal pisca. Você digita o primeiro comando e algo acontece: letras surgem na tela, obedecendo à sua vontade. Não é mágica, é Dart…
Como acabei escrevendo um livro pra aprender Dart construindo um roguelike de terminal

O terminal pisca. Você digita o primeiro comando e algo acontece: letras surgem na tela, obedecendo à sua vontade. Não é mágica, é Dart. Mas a sensação é parecida.
Esta é a abertura do Capítulo 1 do livro que eu não estava planejando escrever. Vou contar como ele apareceu, e por que ele existe da forma que existe.
A inquietação que começou tudo
Já faz uns anos que eu ensino programação. Em sala, em vídeo, em texto. E desde o início percebi um padrão chato: a maioria dos tutoriais técnicos é bom pra explicar conceito, mas ruim pra fazer o conceito grudar. As pessoas leem, balançam a cabeça, fazem o exercício do tutorial, e duas semanas depois esqueceram metade.
A culpa não é da pessoa que aprende. É do formato. Quase todo curso de programação ensina linguagem como se fosse vocabulário solto: “esta é a sintaxe de if, esta é a sintaxe de for, agora faça uma calculadora pra praticar". A calculadora funciona como exercício, mas é descartável. Você termina, fecha o navegador, e o programa vai pra lixeira mental junto.
O que não é descartável é projeto que se acumula. Algo onde cada capítulo novo soma no que você já fez. Algo que no fim tem uma forma reconhecível.
A ideia óbvia que eu vinha adiando
A ideia óbvia, pra quem trabalha com programação há muito tempo, é ensinar fazendo um jogo. Mas jogo gráfico exige aprender também a ferramenta gráfica, se eu pegasse Flutter ou Unity, metade do livro seria sobre configurar sprites, lidar com tela, animar transições. O foco saía da linguagem.
Roguelike resolve isso. Roguelike é o gênero de jogo nascido em 1980 com o Rogue, na Universidade da Califórnia, em terminais Unix de fósforo verde. Tudo ASCII, geração procedural a cada partida, e morte permanente: cai uma vez, recomeça do zero. É um gênero feito de regras e decisões, sem distração visual. Cada caractere na tela tem significado: @ é o herói, # é parede, . é chão, Z é zumbi.
Pedagogicamente, é perfeito. Cada capítulo do livro vira uma feature do jogo. Os primeiros caps são fundamentos da linguagem (variáveis, condições, loops). Depois vem orientação a objetos, modelando inimigos e itens. Depois mundo 2D, geração procedural, campo de visão. Depois economia, progressão, boss final. Por fim refatoração, testes, async, padrões de design.
No último capítulo, você não fica com uma calculadora pra mostrar. Fica com um jogo completo. Que outras pessoas podem baixar e jogar.
A escolha por Dart
Podia ter sido Python, Java, Go, Rust. Escolhi Dart por três razões práticas.
Primeira: sintaxe limpa. Quem nunca programou olha pra Dart e entende mais rápido que pra C++. Quem já programa em outra linguagem migra em uma tarde.
Segunda: ferramentas oficiais maduras. Null safety nativo (que mata uma classe inteira de bugs antes de o programa rodar), analisador estático, formatador automático, gerenciador de pacotes, tudo numa instalação só, mantido pelo Google.
Terceira: porta de entrada estratégica. Se o leitor depois quiser fazer apps mobile, já fala a linguagem do Flutter. Se quiser web, mesma coisa. Investir tempo em Dart agora abre três frentes sem renegociar.
E uma razão pessoal: poucos livros técnicos modernos em português usam Dart. Existe espaço.
O que o livro virou
Trinta e sete capítulos divididos em seis partes. Cada parte tem um título poético e um foco temático:
- A Primeira Tocha — fundamentos Dart
- Sangue, Ouro e Aço — orientação a objetos e combate
- A Masmorra Desperta — mundo 2D, FOV, geração procedural
- O Mercador e a Escada — economia, progressão, boss
- A Forja do Código — refatoração, testes, persistência
- A Mente dos Monstros — design patterns, máquinas de estado, síntese
Em volume bruto: ~190 mil palavras. Cada capítulo tem entre 4 e 5 desafios práticos no final (a Desafios da Masmorra) + um Boss Final, totalizando 190 exercícios. Cada um com gabarito comentado num apêndice próprio, mas a regra do herói é simples: tente o desafio primeiro, espie o gabarito só depois de tentar de verdade.
Tem ainda oito apêndices: referência rápida de Dart, glossário, sistema de conquistas, MUD em rede como projeto opcional, e o último — Lore da Masmorra — que conta a história do Reino de Avëlin, da ordem dos Arquitetos da Pedra, da noite em que o Selo se quebrou e como o calabouço se reinicia a cada lua. Isso entrou porque, depois de um tempo programando o jogo, descobri que o mundo merecia história. Não é necessário pra aprender, mas dá peso narrativo.
O lugar onde mora
Tudo está em masmorra.io. Site estático em Astro (era em Flutter, mas por questões de SEO, eu migrei), gratuito, sem cadastro, sem paywall. Os 37 capítulos são páginas HTML normais, navegáveis no celular ou no terminal (via lynx, se você for desse jeito). Tem busca full-text funcionando offline depois do primeiro load. Tem mapa visual dos conceitos do livro em /conceitos. Tem sistema de conquistas que acompanha sua leitura.
Tem um Guia do Iniciante Absoluto separado em /iniciante, para quem nunca programou. Onze capítulos curtos que cobrem instalação do Dart, primeiro programa, vocabulário mínimo, e como ler o livro principal. Pra quem já programa em outra linguagem, é pular direto - o livro começa amigável.
O código fonte do jogo final está num repositório próprio, organizado em 37 snapshots (um por capítulo). Quem quiser ver como o jogo está em cada etapa, sem ter que implementar tudo, tem todos os checkpoints disponíveis.
O que aprendi escrevendo
Três coisas que não imaginava no começo.
Primeira: estrutura editorial é metade do trabalho. Decisões aparentemente menores (travessão só em diálogo? Pronome “você” ou “o leitor”? Como diferenciar voz da história da voz expositiva?) viram regras que precisam valer pros 37 capítulos. Inventei seis tipos de caixa colorida no livro (Dica do Mestre verde, Vocabulário do Dia violeta, abertura narrativa sépia, Gabarito ciano, Boss Final laranja, Epígrafe cinza) e cada uma tem semântica fixa. Esse trabalho não aparece, mas é o que faz o livro parecer livro e não coleção de tutoriais.
Segunda: revisar é mais caro que escrever. Eu sei. Todo escritor sabe. Mas até você sentir o peso de varrer trinta e sete capítulos atrás de inconsistências de tom, terminologia, exemplos que ficaram desatualizados depois que outro capítulo mudou, é abstrato. Depois, é concreto.
Terceira: fazer no aberto é a melhor parte. O livro está em GitHub, recebe sugestões da comunidade, tem espaço de comentários por capítulo. Cada leitor que aponta um erro melhora a versão pra todos os próximos. É a parte mais bonita do trabalho.
Convite
Se você programa há tempo e quer aprender Dart pra fazer Flutter depois, comece pelo Capítulo 1 e vá rápido, os primeiros sete caps são revisão pra quem já conhece outra linguagem.
Se você nunca programou, comece pelo Guia do Iniciante. Cobre o degrau zero (o que é programar, instalar Dart, primeiro programa) antes do livro principal puxar a corda.
Se você só quer dar uma olhada, leia o Prefácio e o Capítulo 1. Quinze minutos. Decide se faz sentido pra você antes de investir mais.
Tudo em masmorra.io. Gratuito. Sem cadastro. Sem paywall. Vai estar lá amanhã, semana que vem, e provavelmente daqui a dez anos — é estático, hospedado no GitHub Pages, não tem como acabar enquanto eu não decidir desligar.
A descida começa quando você quiser.
메타데이터
- post_id
- c40ee8fbf3ec
- slug
- como-acabei-escrevendo-um-livro-pra-aprender-dart-construindo-um-roguelike-de-terminal-c40ee8fbf3ec
- url
- https://medium.com/@kleberandrade/como-acabei-escrevendo-um-livro-pra-aprender-dart-construindo-um-roguelike-de-terminal-c40ee8fbf3ec
- canonical_url
- https://medium.com/@kleberandrade/como-acabei-escrevendo-um-livro-pra-aprender-dart-construindo-um-roguelike-de-terminal-c40ee8fbf3ec
- author_url
- https://medium.com/@kleberandrade
- status
- ok
- fetched_at
- 2026-06-09 15:37:30