Skip to content

Latest commit

 

History

13 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SingleMon

Work in progress. This is an active side project alongside my main game development, so progress is intermittent — expect bugs, missing features, and rough edges.

Bug reports, feedback, or contributions are welcome via GitHub issues/PRs, or email midwestmysterymeatstudios@gmail.com. If you'd like to support the work, tips are appreciated but never expected.

A clean, Gen 1-accurate creature-battle engine in Love2D — 94 species, the exact classic damage formula, deterministic seeded battles, and a headless test suite.

What it does

SingleMon is a reference implementation of a monster-collector battle system. It faithfully reproduces the Generation 1 damage formula (stat stages, STAB, dual-type effectiveness over a custom 13-type chart) with burn/poison/paralyze/blind status handled by the correct classic rules (burn halving physical attack, 1/16 end-of-turn ticks, speed-tie coin flips), priority moves, and fully deterministic seeded RNG so battles are reproducible. Content: 94 species across evolution chains, with a novel bond-based evolution system (creatures evolve by relationship level, not raw XP level), trainer and wild battles, catching, a shop, a storage box, party management, and JSON saves. The battle/creature engine is pure Lua (no LÖVE dependency), which is what makes it testable and reusable.

Status

Fixed, tested, and boots — was previously unbootable. As of 2026-07-02 the engine runs and a 1099-assertion headless test suite passes (data integrity for every species/move/type, plus battle mechanics). Three bugs that prevented it from launching at all were fixed: an invalid JSON escape, a scene router named goto (a reserved keyword under LÖVE's LuaJIT), and a signed-bit PRNG bug that biased every probability roll. Rough edges: sprites mount from an external MONCLONE asset path that doesn't resolve under LÖVE 11 (the game runs on colored shapes), and there's no goal structure (gyms/champion) yet.

How to run

Requires LÖVE 11.4.

love .                        # play (renders shapes unless you set config.lua assetPath)
lua tests/run_tests.lua       # 1099-assertion headless suite, ~1s, no LÖVE needed

Sprites are optional: config.lua points assetPath at a MONCLONE asset folder; if it's missing (the default), the game logs a warning and renders colored shapes.

Screenshots

TODO — add a battle-screen capture.

Known issues / roadmap

See docs/GAP_ANALYSIS.md. This is meant to stay a lean reference engine (the expanded fork with IVs/cards/abilities is a separate project). Priority: party switching as a battle action + critical hits → sleep/freeze + multi-hit moves → audio bleeps + nicknames → a goal structure (trainer dens + champion). Note: the PRNG fix changed RNG streams, so anything tuned by feel (catch/proc rates) should be re-playtested.

AI development note

Developed and repaired with AI assistance — Anthropic Claude (Claude Code) for implementation and OpenAI Codex for review. Human direction owned the design and the Gen 1 accuracy goal. The 2026-07-02 rescue pass (three boot-blocking fixes + the 1099-assertion suite) was done with Claude. There is no LLM or AI in the game itself — it's a deterministic rules engine.

License

Licensed under the Apache License 2.0 — free to use, modify, fork and build on, commercially or not.

Credit is required. Apache-2.0 §4(c)–(d) obliges you to keep the copyright notice and to reproduce NOTICE in anything you distribute, including binaries and hosted builds. Credit it as SingleMon by MysteryMeat (https://github.com/MidwestMysteryMeat/SingleMon) in your credits screen, About box, or docs. The project name and the MysteryMeat name are not licensed for endorsement or promotion (§6).

Sprite assets are not bundled (they load from an external MONCLONE path), so Apache-2.0 covers the shipped code, which is original.


Support development — Ko-fi

About

SingleMon — Love2D Gen1-style creature battle engine: 94 species, deterministic seeded battles, headless test suite

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages