Skip to content

Rovetown/DoomIsGenius

Repository files navigation

JDSL DOOM Proof-of-Concept Repository

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 & Repository Growth

  • 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.

Local Git Repository Setup

Option 1: Local-Only Repository

  • Simply run git init in 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.

Option 2: Simulated Remote with a Bare Repository

To simulate full push/pull operations:

  1. Create a Bare Repository (to act as your "remote"):
mkdir myproject-remote.git
 cd myproject-remote
 git init --bare
  1. 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
  1. Push Commits:
git push origin master

This setup simulates a real-world remote environment with full push/pull cycles.


Hardware Requirements

  • 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.

Software & Tools

  • 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.

Project-Specific Requirements (JDSL DOOM Implementation)

  • 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.

Summary & Recommendations

  • Local-Only Option:

    • A simple git init in your project folder is enough to record the 1-frame-per-commit experience locally.
  • 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!


DO NOT CODE THIS ALONE JESUS CHRIST THIS ABOMINATION IS THE SON OF THE DEVIL HIMSELF

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published