Clockwork - a game engine from scratch
The goal of this project is to build a game engine, I still don't know what it needs to do, but will update this README as things progress.
The purpose of this repo is to document my journey and all my findings throughout the project. The clockwork-kb sub-folder is an Obsidiant Vault, feel free to clone and check it out. I don't know if I'll ever finish this project but that doesn't matter, I'm more excited to start it.
Guide:
For a start, I'll be following the tutorial series by: Travis Roman called TypeScript Game Engine Tutorial.
This will envolve a lot of copying and pasting before adding my own custom stuff. You may be wondering why I'm using TS, well, it's what I use in my day job, so, I might aswell keep using and webgl seems fun, so why not.
P.S: I might switch to C++, later on, who knows ¯_(ツ)_/¯.
Projects Using this Engine
I think the first game I'll build using this game engine will be a 2D tower defense game, anyone remember Zuma?
Future Plans:
Project to do:
- Use Vite (WIP)
- Update all undefined checks to null checks and make use of the new TS features.
- Remove namespaces and switch to modules.
- Ship package to github packages.
Engine to do:
This todo list was copied from the original project, but hasn't been updated for the last 3 years, so I may aswell try and implement some of these stuff.
- Asset loader error handling
- UI System with controls:
- GameScreens
- Panel (scrollable if set)
- Label
- Button
- ImageBox
- Checkbox
- Radio Button
- Window/Dialogs
- Multi-page bitmap fonts
- Configurable bitmap fonts
- Configurable audio
- State Machines
- System fonts?
- Advanced audio
- Configurable materials
- Networking (including server?)
- 3D
- Lighting
- Normal maps
- Specular maps
- Physics
- Object/mesh loading
- Animation system
- RenderBuffer/PostFX system
- WebGL2?
- Input handler overhaul
- Zone overhaul - potentially change to a better format