An action-survival game set in procedural mazes, focused on precision, strategy, and extreme size optimization.
Um jogo de ação e sobrevivência em labirintos procedurais com foco em precisão, estratégia e otimização extrema.
Link para download
ByteMaze combines fast survival action with tactical exploration in procedurally generated mazes. Built from scratch in C using raylib, the game was designed to deliver a modern experience while keeping the final size extremely small.
🏆 1.44MB Game Dev Contest (2P Game Arcade)
Created for the challenge of making a complete, offline, standalone, and fun game that fits within the classic 3.5" floppy disk size limit (1,474,560 bytes).
| Key | Action |
|---|---|
W A S D / Arrow Keys |
Move the player |
SHIFT |
Dash: quick burst movement with limited charges per round |
SPACE |
Shoot: fires toward the aiming direction |
R |
Reload: reloads the weapon magazine |
TAB |
Tactical Map: opens/closes the area view |
C |
Flashlight: toggles the vision light |
F |
Lightning: reveals the full maze for a few seconds |
- Starting Health:
50 HP(maximum:100 HP) - Floor Health Pickup: instantly restores
+15 HP. - Health Shop: increases maximum health by
+5 HPfor100coins.
- Weapon Magazine: holds up to
15loaded bullets. - Starting Ammo:
30total ammo only at the start of a run. - Maximum Ammo:
100total ammo. - Floor Ammo Pickup: adds
+10bullets. - Ammo Shop: adds
+30bullets for100coins. - Persistence: leftover ammo carries between rounds; purchases and pickups add to the current total up to the
100ammo limit.
- Active Drain: drains
1%per second of use +1%activation cost. - Floor Battery Pickup: restores
+15%to both tools. - Battery Shop: restores
+50%to both flashlight and map batteries for100coins, capped at100%.
- Floor Coins:
+25coins when collected. - Round Bonus:
+50coins for each victory. ⚠️ Resources collected during a round are saved only if you win that round.
- 🔴 Red Enemies: patrol the maze and chase the player when detected.
- 🩷 Pink Enemies: attack from range when they have a clear horizontal or vertical line of sight.
- 🟣 Boss: relentlessly chases the player, shoots when aligned, and accelerates when far away.
- 💫 Knockout: hit any enemy 5 times to temporarily disable it for 5 seconds.
- ⚡ Advanced Levels: require finding the golden key to unlock the exit, and introduce traps, low visibility, and map/radar blocking.
The contest requires the executable and all assets to fit inside the uncompressed 1.44 MB envelope.
📊 Project Occupancy Report:
┌────────────────────────┬─────────────────┬──────────┐
│ Component │ Size (Bytes) │ % of Max │
├────────────────────────┼─────────────────┼──────────┤
│ Linux Binary │ ~577,528 B │ 39.16% │
│ Assets (Fonts) │ ~48,404 B │ 3.28% │
├────────────────────────┼─────────────────┼──────────┤
│ MEASURED TOTAL │ 625,932 B │ 42.45% │
└────────────────────────┴─────────────────┴──────────┘
💾 Maximum Limit: 1,474,560 bytes
🟢 Free Space: 848,628 bytes (57.55%)
ℹ️ The
ByteMaze-1.44MB-linux.zippackage contains the Linux binary, required assets, and this README. Uncompressed, it remains below the contest limit.
Make sure the following tools are installed:
- C compiler (
gccorclang) cmakemake- Updated raylib submodule
- Clone the repository with dependencies:
git clone --recursive https://github.com/SofiaAFigueredo/ByteMaze.git
cd ByteMaze- Build the optimized release version:
make release- Run the game:
make run- Check size compliance for submission:
make sizeByteMaze/
├── 📄 Makefile # Automation and byte-check script
├── 📄 README.md # Project documentation
├── 📁 src/
│ ├── 📄 main.c # Complete game logic
│ └── 📁 assets/ # Essential resources
└── 📁 raylib/ # Graphics library source code
📌 The local save file (
bytemaze_save.dat) is ignored and is not part of the submission package.
- Development: Sofia A. Figueredo (@SofiaAFigueredo)
- Technical assistance: OpenAI Codex, used for code review support, balancing, build fixes, and documentation.
- Graphics Engine: This project uses raylib, distributed under the zlib/libpng license. See
raylib/LICENSEfor details.
ByteMaze combina ação frenética de sobrevivência com exploração tática de labirintos gerados proceduralmente. Desenvolvido do zero na linguagem C utilizando a biblioteca raylib, o jogo foi concebido para entregar uma experiência moderna mantendo um consumo de espaço ultra-eficiente.
🏆 1.44MB Game Dev Contest (2P Game Arcade)
Desenvolvido especialmente para o desafio de criar um jogo completo, offline, independente e divertido que caiba no espaço histórico de um disquete de 3.5" (1.474.560 bytes).
| Tecla | Ação |
|---|---|
W A S D / Setas |
Movimentação do personagem |
SHIFT |
Dash: impulso rápido com cargas limitadas por round |
ESPAÇO |
Atirar: dispara na direção da mira |
R |
Recarregar: carrega o pente de munição |
TAB |
Mapa Tático: abre/fecha a visualização da área |
C |
Lanterna: alterna a iluminação da visão |
F |
Raio: revela o labirinto inteiro por alguns segundos |
- Vida Inicial:
50 HP(máximo:100 HP) - Cura no Chão: restaura
+15 HPinstantaneamente. - Loja de Vida: aumenta o limite máximo em
+5 HPpor100moedas.
- Pente da Arma: capacidade de
15balas engatilhadas. - Munição Inicial:
30munições totais apenas no início da corrida. - Limite Máximo:
100munições totais. - Munição no Chão: adiciona
+10projéteis. - Loja de Munição: adiciona
+30projéteis por100moedas. - Persistência: o que sobra continua entre rounds; compras e coletas somam em cima do saldo atual até o limite de
100.
- Consumo Ativo: drena
1%por segundo de uso + custo de1%ao ativar. - Carga no Chão: recarrega
+15%em ambos os dispositivos. - Loja de Bateria: recarrega
+50%na lanterna e no mapa por100moedas, respeitando o limite de100%.
- Moedas no Chão:
+25moedas ao coletar. - Bônus de Round:
+50moedas por vitória. ⚠️ Atenção: os recursos coletados no round só são salvos se você vencer a etapa!
- 🔴 Inimigos Vermelhos: realizam patrulhas e perseguem o jogador quando detectado.
- 🩷 Inimigos Rosas: atacam à distância assim que alinham visão direta no eixo horizontal ou vertical.
- 🟣 O Chefão (Boss): persegue implacavelmente, dispara quando alinhado e ganha aceleração ao se distanciar.
- 💫 Nocaute: acerte qualquer inimigo 5 vezes para desativá-lo temporariamente por 5 segundos.
- ⚡ Níveis Avançados: exigem encontrar a chave dourada para desbloquear a saída, além de introduzir armadilhas, baixa visibilidade e bloqueio de radar.
O limite rigoroso da competição exige que o executável e todos os assets caibam no envelope de 1.44 MB descompactado.
📊 Relatório de Ocupação do Projeto:
┌────────────────────────┬─────────────────┬──────────┐
│ Componente │ Tamanho (Bytes) │ % do Max │
├────────────────────────┼─────────────────┼──────────┤
│ Binário Linux │ ~577,528 B │ 39.16% │
│ Assets (Fontes) │ ~48,404 B │ 3.28% │
├────────────────────────┼─────────────────┼──────────┤
│ TOTAL MEDIDO │ 625,932 B │ 42.45% │
└────────────────────────┴─────────────────┴──────────┘
💾 Limite Máximo: 1,474,560 bytes
🟢 Margem Livre: 848,628 bytes (57.55%)
ℹ️ O pacote
ByteMaze-1.44MB-linux.zipcontém o binário Linux, os assets necessários e este README. Descompactado, ele permanece abaixo do limite da competição.
Certifique-se de ter os seguintes utilitários instalados:
- Compilador C (
gccouclang) cmakemake- Submódulo da biblioteca raylib atualizado
- Clone o repositório com as dependências:
git clone --recursive https://github.com/SofiaAFigueredo/ByteMaze.git
cd ByteMaze- Compile a versão otimizada de lançamento:
make release- Execute o jogo:
make run- Verifique a conformidade de tamanho para a submissão:
make sizeByteMaze/
├── 📄 Makefile # Script de automação e checagem de bytes
├── 📄 README.md # Documentação do projeto
├── 📁 src/
│ ├── 📄 main.c # Lógica completa do jogo
│ └── 📁 assets/ # Recursos essenciais
└── 📁 raylib/ # Código-fonte da biblioteca gráfica
📌 Nota: o arquivo de save gerado localmente (
bytemaze_save.dat) é ignorado e não faz parte do pacote de submissão.
- Desenvolvimento: Sofia A. Figueredo (@SofiaAFigueredo)
- Assistência técnica: OpenAI Codex, usado como apoio em revisão de código, balanceamento, correções de build e documentação.
- Engine Gráfica: Este projeto utiliza a biblioteca raylib, distribuída sob a licença zlib/libpng. Consulte o arquivo
raylib/LICENSEpara mais detalhes.