A Modular Multi-purpose Game Engine for .NET
Infrastructure • Core • Toolkits • Framework
JOT.NET is a modern C# port of the original JOT (Just One Thing) Modular Multi-purpose Game Engine.
Designed for experimentation, education, prototyping, and massively multiplayer online games, JOT.NET aims to provide a clean, extensible, and fully modular architecture where every subsystem can be understood, modified, replaced, or rebuilt.
The goal of JOT.NET is not to become the largest engine, but to remain understandable, extensible, and replaceable.
- 📜 Origins
- ⚙️ Installation
- 🚀 Usage
- 🏗️ Architecture
- 📖 Core Principles
- 🌐 MMO-First Philosophy
- 🌍 Browser Client Strategy
- 🧩 Layer Responsibilities
- 📂 Project Organization
- 🧪 Templates and Examples
- 🛠️ Technology Stack
- 🗺️ Roadmap
- 📬 Contact & Usage Notice
- ✅ Final Rule
JOT.NET is a modern C#/.NET reimplementation of the original JOT (Just One Thing) Modular Multi-purpose Game Engine, preserving its modular architecture while adopting contemporary technologies and development practices.
The original JOT project was created as a modular game engine for experimentation, education, research, and massively multiplayer online games. Its layered architecture remains the foundation of JOT.NET today. GitHub - g-amador/JOT: JOT: A Modular Multi-purpose Game Engine
- GitHub Repository: https://github.com/g-amador/JOT
- Original Engine: JOT: A Modular Multi-purpose Game Engine
- Research Paper: JOT: A Modular Multi-purpose Minimalistic Massively Multiplayer Online Game Engine 【2-1a2a36】【3-e90429】
JOT.NET preserves the core principles that made the original engine unique:
- Layered architecture
- Modular design
- Replaceable subsystems
- Core versus Toolkit separation
- Framework abstraction layer
- MMO-oriented design philosophy
JOT.NET modernizes the original technology stack while preserving the architectural concepts.
| Original JOT (Java) | JOT.NET (C#/.NET) |
|---|---|
| JOGL / JogAmp | Silk.NET |
| Apache Commons Math | System.Numerics |
| Assimp Java Bindings | AssimpNet |
| JGroups | DotNetty |
| NetBeans | Visual Studio / VS Code / Rider |
| Maven | .NET SDK / NuGet |
The goal of JOT.NET is not simply to translate Java code into C#, but to redesign the engine around modern .NET technologies while remaining faithful to the architecture, modularity, and educational value of the original project.
Required:
- Windows 10 or newer
- .NET SDK 9.0+
- Git
- Visual Studio 2022, VS Code, or Rider
- OpenGL 4.6 or Vulkan compatible GPU
Verify installation:
dotnet --version
git --versionRequired:
- 64-bit Linux distribution
- .NET SDK 9.0+
- Git
- GCC / build-essential
- OpenGL 4.6 or Vulkan compatible GPU
Example:
sudo apt update
sudo apt install git build-essentialVerify installation:
dotnet --version
git --versionRequired:
- macOS Sonoma or newer
- .NET SDK 9.0+
- Git
- Xcode command-line tools
Install:
xcode-select --installVerify:
dotnet --version
git --versiongit clone https://github.com/g-amador/JOT.NET.git
cd JOT.NETdotnet restoredotnet build🔝 #toc
Run:
dotnet run --project demos/templates/core-templateUses:
Infrastructure + Core
Ideal for:
- Learning the engine
- Lightweight applications
- Custom engine development
Run:
dotnet run --project demos/templates/full-templateUses:
Infrastructure + Core + Toolkits + Framework
Ideal for:
- Complete games
- Prototypes
- MMO experiments
Examples are located at:
demos/examples
Example:
dotnet run --project demos/examples/rendering-showcase🔝 #toc
docs/images/architecture.png
Framework
↓
Toolkits
↓
Core
↓
Infrastructure
Each layer may only depend on itself or lower layers.
Benefits:
- Replaceability
- Testability
- Maintainability
- Scalability
🔝 #toc
No subsystem is permanent.
Rendering, networking, AI, physics, asset pipelines, and GUI systems must be replaceable.
Framework
↓
Toolkits
↓
Core
↓
Infrastructure
Rules:
- No circular dependencies
- No upward dependencies
- No cross-layer shortcuts
Current technologies:
- Silk.NET
- AssimpNet
- System.Numerics
- DotNetty
- Protocol Buffers
Infrastructure must never contain:
- Game logic
- AI
- Scene management
- Gameplay systems
Core includes:
- Math
- Input
- Resources
- Rendering foundations
- Basic collision detection
- Utilities
Examples:
- AI
- Networking
- ECS
- Serialization
- Geometry Generation
- Extended Physics
Examples:
- Asset Management
- Scene Management
- State Management
- GUI Systems
🔝 #toc
JOT.NET is designed with multiplayer support from the very beginning.
Key considerations:
- Replication
- Serialization
- Bandwidth efficiency
- Scalability
- Deterministic state
Single-player is treated as a special case of multiplayer.
🔝 #toc
Desktop is the primary target.
Future targets include:
- WebAssembly
- WebGPU
- WebSockets
Desktop Client
│
▼
Shared Core
▲
│
Browser Client
🔝 #toc
┌─────────────────────────┐
│ Framework │
│ Scenes, Assets, GUI │
└─────────────▲───────────┘
│
┌─────────────┴───────────┐
│ Toolkits │
│ AI, Networking, ECS │
└─────────────▲───────────┘
│
┌─────────────┴───────────┐
│ Core │
│ Math, Physics, Input │
└─────────────▲───────────┘
│
┌─────────────┴───────────┐
│ Infrastructure │
│ Silk.NET, AssimpNet │
│ DotNetty, Numerics │
└─────────────────────────┘
- Windowing
- Rendering APIs
- Audio APIs
- Networking adapters
- Resources
- Input
- Rendering foundations
- Physics foundations
- AI
- ECS
- Networking
- Serialization
- Extended Physics
- Scene System
- Asset Management
- GUI
- Application Management
🔝 #toc
JOT.NET/
├── assets/
├── demos/
│ ├── templates/
│ │ ├── core-template/
│ │ └── full-template/
│ └── examples/
├── docs/
│ └── images/
├── engine/
│ ├── infrastructure/
│ ├── core/
│ ├── toolkits/
│ └── framework/
├── client-desktop/
├── client-browser/
├── server/
├── LICENSE
└── README.md
🔝 #toc
Demonstrates:
Infrastructure + Core
Demonstrates:
Infrastructure + Core + Toolkits + Framework
Examples may include:
- Rendering Showcase
- Physics Showcase
- Networking Showcase
- AI Showcase
- MMO Prototype
🔝 #toc
| Purpose | Technology |
|---|---|
| Rendering / Input / Audio | Silk.NET |
| Mathematics | System.Numerics |
| Model Loading | AssimpNet |
| Networking | DotNetty |
| Serialization | Protocol Buffers |
Technologies may evolve.
Architectural principles must not.
🔝 #toc
- Infrastructure
- Windowing
- Rendering
- Input
- Core Systems
- Resources
- Mathematics
- Physics Foundations
- Networking Toolkit
- ECS Toolkit
- AI Toolkit
- Framework
- Scene Management
- GUI
- Asset Management
- MMO Prototype
- Browser Client
🔝 #toc
JOT.NET is released under the Apache License 2.0.
You are free to use, modify, distribute, and build upon JOT.NET, including creating your own templates, demos, games, extensions, tools, or ports.
Please keep the following in mind:
- You may not claim authorship of JOT or JOT.NET.
- If you extend the engine, create templates, demos, games, or port the engine to another language, I would be delighted to hear about it.
- Contributions, feedback, bug reports, and architectural discussions are always welcome.
For full legal details, please refer to the LICENSE file.
If you have questions, suggestions, or want to share your work:
Good luck, and have fun building with JOT.NET!
🔝 #toc
When choosing between two designs, prefer the one that:
- Introduces fewer dependencies.
- Produces cleaner module boundaries.
- Is easier to replace.
- Is easier to understand.
- Keeps Core small.
If a feature does not belong in Core, it belongs in a Toolkit or outside the engine entirely.
JOT.NET is not built to be the biggest engine.
JOT.NET is built to be the engine that can be understood, modified, and rebuilt.
🔝 #toc