Masmorras que sempre se encaixam.

O Tapiti cava andares conectados e validados a partir de uma semente: salas de cinco formas, corredores com folga de verdade, o mesmo mapa toda vez.

Semente ⁨26⁩

tempo mediano para cavar um andar validado do nível 5, medido neste servidor
⁨41⁩ ms
andares passaram em todas as verificações, nas sementes de 1 a ⁨60⁩
⁨60⁩ de ⁨60⁩
de sementes, cada uma sempre com o mesmo andar
4,3 bilhões

Salas de cinco formas, portas que se alinham

Retângulos, discos, octógonos, salas em L e estrelas truncadas se encaixam na grade. As portas ficam em trechos retos de parede, então todo corredor sai da sala em ângulo reto.

  • retângulo
  • disco
  • octógono
  • sala em L
  • estrela truncada

Um validador que sabe dizer não

Cinco verificações rodam em todo andar: conectividade, folgas, portas, geometria dos corredores e a distância da entrada até a escada. Um andar que falha é descartado e cavado de novo a partir de uma semente derivada.

Semente ⁨17⁩, primeira tentativa, rejeitada:

V5 the stairs are 3 hops from the start (least 4)

Como um andar é cavado

  1. Uma semente

    Um número e um conjunto de parâmetros alimentam um gerador pequeno e determinístico. As mesmas entradas dão o mesmo andar, no desktop ou no navegador.

  2. Câmaras

    As salas são encaixadas bloco a bloco, forma a forma, com os pesos e limites que você define.

  3. Túneis

    Primeiro as portas, depois corredores com poucas dobras, que se ramificam em junções T e X, sempre a uma folga das salas que não ligam.

  4. Luz do dia

    O validador abre a porta e olha. Só um andar que passa em todas as verificações é devolvido.

Rode do seu jeito

App desktop
cargo run --release
No navegador
Abrir o laboratório
Crate Rust
tapiti-core = { git = "https://github.com/Lucas-BRT/tapiti" }
Docker
docker compose -f compose.local.yml up --build

Cave seu primeiro andar.