This repository demonstrates a proof-of-concept implementation of running DOOM using a true JDSL approach. In this system, every frame (at ~35 frames per second) is recorded as an individual Git commit--i.e. one commit per frame. This over-engineered method uses Git to track the game state via a continuous commit history.
-
Commit Frequency (at 35 FPS):
- Per Second: ~35 commits
- Per Minute: ~2,100 commits
- Per 5 Minutes: ~10,500 commits
-
Estimated Repository Growth:
- Approximately 50 KB per commit → ~105 MB per minute (~525 MB in 5 minutes)
- Note: For a short proof of concept (1-5 minutes), this growth is acceptable. Longer play sessions will inflate the repo size rapidly.
- Simply run
git initin your project folder to record all commits locally. - In this setup, all commits, pulls, and pushes occur on your local machine.
- Limitation: You won't experience remote push/pull cycles since there's no server involved.
To simulate full push/pull operations:
- Create a Bare Repository (to act as your "remote"):
mkdir myproject-remote.git
cd myproject-remote
git init --bare- Add the Bare Repository as a Remote in your working repository:
cd /path/to/working/repo
git remote add origin /path/to/myproject-remote.git- Push Commits:
git push origin masterThis setup simulates a real-world remote environment with full push/pull cycles.
- CPU: Fast multi-core processor (e.g., i7-14700K) to handle high commit frequencies.
- Storage: SSD with ample free space (several GB free, as the repo can grow quickly).
- Memory: Sufficient RAM to manage rapid file I/O and processing loads.
-
Git:
- Install the latest version of Git.
- Familiarity with basic Git commands (commit, push, pull, etc.).
-
Scripting Environment:
- Use Bash, Python, or a similar scripting language to automate 35 commits per second.
-
Build and Development Tools:
- C compiler and build tools (e.g., Make or CMake) for building a custom C interpreter.
- A JSON library for C (e.g., cJSON or Jansson) to handle function metadata.
-
Monitoring & Maintenance:
- Tools like git-sizer to monitor repository size and structure.
- Basic logging/backup scripts to track and manage repository growth.
-
Custom C Interpreter:
- A runtime that reads and executes JSON metadata representing game logic.
- Clear JSON schema definitions for each function (e.g.,
MovePlayer,TickGameLogic) and variable.
-
JDSL Workflow Management:
- Map game ticks (frames) to individual commits.
- Handle state updates based on commit history (replaying commits as game state transitions).
-
Automation Scripts:
- A script to automatically commit changes at 35 commits per second.
- Scripts for timing, logging, and optionally batching commits if needed (although the goal here is one commit per frame).
-
Documentation:
- Clear documentation on the JSON schema and interpreter design to help maintain and extend the system.
-
Local-Only Option:
- A simple
git initin your project folder is enough to record the 1-frame-per-commit experience locally.
- A simple
-
Simulated Remote Option:
- To simulate push/pull behavior, create a bare repository on your local machine and add it as a remote.
-
Full Requirements Recap:
- Hardware: i7-14700K (or equivalent), SSD storage, ample RAM.
- Software: Latest Git, automation scripting tools, C compiler and build tools, JSON library.
- Project Tools: Custom C interpreter for JSON-based game logic, clear JSON schema definitions, automation scripts for high-frequency commits.
- Monitoring: Use tools like git-sizer to monitor repo size and health.
This setup provides a full "true-to-source" JDSL experience with one commit per frame. Enjoy building your over-engineered DOOM proof-of-concept!