Old Heros

Tabuleiro 3D · Código aberto · Feito em Godot3D board · Open source · Made in Godot

Old Heros

Um jogo de masmorra aberto para você jogar, remixar e expandir.An open dungeon game for you to play, remix and expand.

Heróis, monstros, dados e névoa num tabuleiro 3D. O código é livre e foi escrito com ajuda de IA. Falta gente para criar quests, arte, regras e jogos novos a partir dele.Heroes, monsters, dice and fog on a 3D board. The code is free and was written with help from AI. What it needs now is people to create quests, art, rules and new games from it.

Quero contribuirI want to contribute Ver o códigoSee the code

Deu 6 e 5.
Clique nos dados para rolar de novo.Click the dice to roll again.

Captura do jogo: sala da masmorra em 3D com Bárbaro, Anão, Elfo e Mago; fichas de pergaminho do Goblin e do Mago; cartas de feitiço na base da tela e o registro da rodada 7.

Rodada 7 — MagoRound 7 — Wizard

Captura real do jogo, sem retoque.Real in-game screenshot, no retouching.

O que já funcionaWhat already works

Não é protótipo de papel. Dá para baixar, abrir no Godot e jogar uma quest inteira.This isn't a paper prototype. You can download it, open it in Godot and play a whole quest.

Captura de outra quest: os heróis começam na sala da escada de uma masmorra grande cheia de goblins, orcs, Chaos Warriors e um Fimir; a ficha do Bárbaro fica no canto superior direito e o texto da quest no inferior.

Outra quest — Rodada 4, BárbaroAnother quest — Round 4, Barbarian

Objetivo: matar Verag, a gárgula, e voltar à escada.Goal: kill Verag the gargoyle and return to the stairs.

Tabuleiro 3D3D board

Salas, corredores e portas divididos em casas, com as miniaturas em pé sobre a mesa.Rooms, corridors and doors laid out in squares, with the miniatures standing on the table.

Combate com dadosDice combat

Ataque rola caveiras, defesa rola escudos. Cada caveira que passa vira dano no corpo.Attack rolls skulls, defense rolls shields. Every skull that gets through becomes body damage.

IA dos monstrosMonster AI

Goblins, orcs e companhia andam, cercam e atacam sozinhos no turno deles.Goblins, orcs and friends move, surround and attack on their own during their turn.

Névoa de guerraFog of war

A masmorra fica escura até um herói abrir a porta. O que está do outro lado é surpresa.The dungeon stays dark until a hero opens the door. Whatever is on the other side is a surprise.

Armadilhas e tesourosTraps and treasure

Procure antes de andar. Algumas casas guardam ouro; outras, um fosso.Search before you step. Some squares hide gold; others, a pit.

MagiaMagic

Cartas de feitiço por escola, como Bola de Fogo e Pele de Pedra, com teste de resistência.Spell cards by school, like Fireball and Stone Skin, with resistance rolls.

CampanhaCampaign

Quests em sequência, armeria entre uma e outra para gastar o ouro, e save do progresso.Quests in sequence, an armory between them to spend your gold, and saved progress.

Multiplayer onlineOnline multiplayer

Crie uma sala, mande o código e cada amigo controla um herói pela internet.Create a room, share the code, and each friend controls a hero over the internet.

Como participarHow to join

Escolha uma carta. Tem lugar para quem escreve, quem desenha, quem programa e quem quer fazer o próprio jogo.Pick a card. There's room for writers, artists, programmers and anyone who wants to make their own game.

Escrever questsWrite quests

Sem programarNo coding

Uma quest é um arquivo JSON: o mapa, as portas, os monstros, os tesouros, as armadilhas e o objetivo. Desenhe a masmorra, descreva em texto e o jogo monta tudo.A quest is a JSON file: the map, the doors, the monsters, the treasure, the traps and the goal. Sketch the dungeon, describe it in text and the game builds the rest.

Propor uma quest →Propose a quest →

Criar heróis e monstrosCreate heroes and monsters

Blender · ilustração · IABlender · illustration · AI

Cada personagem precisa de uma miniatura e de uma ficha. Modele no Blender, pinte o retrato da carta, ou gere com IA e acerte à mão. Monstros novos trazem seus atributos em JSON.Every character needs a miniature and a stat card. Model it in Blender, paint the card portrait, or generate it with AI and touch it up by hand. New monsters bring their stats in JSON.

Mostrar sua arte →Show your art →

Mexer nas regrasTweak the rules

GDScript

Movimento, combate, magia e o turno dos monstros estão em GDScript, sem depender das cenas. Quer outra regra de defesa ou um monstro mais esperto? Mude o código e rode os testes.Movement, combat, magic and the monsters' turn live in GDScript, independent of the scenes. Want a different defense rule or a smarter monster? Change the code and run the tests.

Ler o código das regras →Read the rules code →

Fazer um jogo derivadoMake a spin-off game

Fork e troca o temaFork it and reskin

Faça um fork, troque modelos, cartas e textos e publique com outro nome. Uma nave infestada, uma cripta, um navio pirata: o motor de turnos e dados continua o mesmo.Fork it, swap the models, cards and text, and publish it under a new name. An infested starship, a crypt, a pirate ship: the turn and dice engine stays the same.

Fazer um fork →Fork it →

Por que é fácil derivarWhy it's easy to remix

Três decisões de projeto fazem o trabalho pesado por você.Three design decisions do the heavy lifting for you.

  1. Regras separadas do visualRules kept apart from visuals

    A lógica do jogo não sabe como as peças são desenhadas. Dá para trocar modelos, texturas e cartas sem quebrar o combate, e mudar o combate sem abrir o Blender.The game logic doesn't know how the pieces are drawn. You can swap models, textures and cards without breaking combat, and change combat without opening Blender.

  2. Tudo em arquivos JSONEverything in JSON files

    Heróis, monstros, feitiços, itens e quests são dados. Um tema novo começa editando texto, não reescrevendo sistemas.Heroes, monsters, spells, items and quests are data. A new theme starts with editing text, not rewriting systems.

  3. A partida é uma semente e uma lista de jogadasA match is a seed and a list of moves

    Com a mesma semente, os dados caem do mesmo jeito. Guardando só as jogadas, o jogo refaz a partida inteira. É isso que dá replay, save e online sem código extra para cada um.With the same seed, the dice land the same way. By storing only the moves, the game can rebuild the whole match. That's what gives you replay, save and online play without extra code for each.

partida.json

{
  "semente": 48213,
  "jogadas": [
    ["Barbaro", "mover",   [6, 4]],
    ["Anao",    "atacar",  "Orc"],
    ["Mago",    "feitico", "pele_de_pedra", "Mago"],
    ["Mago",    "feitico", "bola_de_fogo",  "Orc"]
  ]
}

Exemplo ilustrativo. O formato real está no repositório.

match.json

{
  "seed": 48213,
  "moves": [
    ["Barbarian", "move",   [6, 4]],
    ["Dwarf",     "attack", "Orc"],
    ["Wizard",    "spell",  "stone_skin", "Wizard"],
    ["Wizard",    "spell",  "fireball",   "Orc"]
  ]
}

Illustrative example. The real format is in the repository.

semente + jogadasseed + moves replay save online

Entre no projetoJoin the project

Abra uma issue contando o que você quer fazer: uma quest, um monstro, uma regra ou um jogo inteiro. A resposta vem com um ponto de partida.Open an issue telling us what you want to make: a quest, a monster, a rule or a whole game. The reply comes with a starting point.

Abrir uma issue no GitHubOpen an issue on GitHub Fazer um forkFork it