Skip to content

mouraluck/Iterum

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ITERUM

Simulador de Exploração e Farm 2D — C + SDL2


Descrição

Iterum é um jogo de exploração 2D escrito em C99 usando SDL2. O jogador navega por 5 mapas interconectados via portais, abre baús e coleta joias. A ordem dos mapas é gerada aleatoriamente a cada partida (grafo cíclico embaralhado).


Mecânicas Implementadas

Feature Detalhes
5 Mapas temáticos Floresta, Ruínas, Cavernas, Planície, Templo
Grafo aleatório Ordem dos mapas embaralhada (Fisher-Yates) a cada sessão
Portais Dois por mapa (NEXT / PREV), detecção por colisão circular
3 Baús por mapa Sorteados entre 10 POIs fixos — spawn determinístico por map_id
Proximidade automática Distância² < 2500px (raio 50px) abre o baú sem tecla
6 tipos de joias Rubi, Safira, Esmeralda, Diamante, Ametista, Topázio
Congrats modal Primeira descoberta pausa o jogo e exibe modal centralizado
Floating text Coletas repetidas geram +N Gema que sobe e desvanece em 1s
HUD lateral Painel fixo com ícones, quantidades em tempo real e mapa atual
State Machine MENU → PLAYING → CONGRATS / MAP_TRANSITION
Sem malloc Toda memória pré-alocada na struct Game estática
Font bitmap Fonte 5×7 pixels embutida — sem arquivos externos

Controles

Tecla Ação
W A S D ou ↑ ↓ ← → Mover personagem
Espaço / Enter Fechar modal (Congrats / Menu)
Fechar janela Sair do jogo

Estrutura do Projeto

iterum/
├── CMakeLists.txt        # Build system
├── build.sh              # Script auxiliar Linux/macOS
├── README.md
├── include/
│   ├── types.h           # Todas as structs, enums e constantes
│   ├── game.h            # Lógica principal (state machine, update)
│   ├── world.h           # Geração de mapas e portais
│   ├── render.h          # Pipeline de renderização SDL2
│   └── font.h            # Fonte bitmap 5×7 embutida
└── src/
    ├── main.c            # Entry point: SDL init, game loop
    ├── game.c            # Player, colisão, portais, baús, loot
    ├── world.c           # Geração procedural dos 5 mapas
    ├── render.c          # Renderização completa (tiles, HUD, modais)
    └── font.c            # Bitmap font 128 glifos, sem dependências

Dependências

  • GCC (C99 ou superior)
  • SDL2 (runtime + headers de desenvolvimento)
  • CMake 3.16+

Como Compilar

Ubuntu / Debian

sudo apt-get install libsdl2-dev cmake build-essential
chmod +x build.sh && ./build.sh
./build/iterum

Fedora / RHEL

sudo dnf install SDL2-devel cmake gcc
chmod +x build.sh && ./build.sh
./build/iterum

Arch Linux

sudo pacman -S sdl2 cmake gcc
chmod +x build.sh && ./build.sh
./build/iterum

macOS (Homebrew)

brew install sdl2 cmake
chmod +x build.sh && ./build.sh
./build/iterum

Windows (MSYS2 / MinGW)

pacman -S mingw-w64-x86_64-SDL2 mingw-w64-x86_64-cmake mingw-w64-x86_64-gcc
mkdir build && cd build
cmake .. -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Release
mingw32-make
iterum.exe

Manual (sem CMake)

gcc -std=c99 -O2 -Iinclude \
    src/main.c src/game.c src/world.c src/render.c src/font.c \
    $(sdl2-config --cflags --libs) -lm \
    -o iterum

Arquitetura de Memória

Toda memória é alocada estaticamente na struct Game (stack ou BSS segment):

static Game g;   // ~100KB — alocado uma vez no boot

Durante o gameplay, zero chamadas a malloc/free.
Os 5 mapas, 15 baús, 10 portais e 8 floating texts são todos pré-alocados.


Extensões Futuras Sugeridas

  • SDL_ttf para fonte TrueType
  • SDL_mixer para efeitos sonoros e música
  • Sistema de saves com fwrite/fread
  • Mini-mapa no HUD
  • Inimigos com pathfinding A*
  • Receitas de crafting com joias

Desenvolvido conforme especificação técnica Iterum v1.0

About

Criação de um jogo em C

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors