couch/roadmap.md

109 lines
4.7 KiB
Markdown
Raw Permalink Normal View History

2021-01-12 14:09:38 -06:00
# Couch, the Last Bastion of Interactive Arts Co-operation
## Technical Specifications
- OpenGL is the only officially supported backend
- GLEW to wrangle extensions
- GLFW3 for handling windows and whatnot
- Targets Windows, Linux
2021-01-14 11:52:01 -06:00
- ~~Guile with GOOPS as scripting language~~ ~~Lua is the scripting language with Guile as a stretch goal~~
- Python?
2021-01-12 14:09:38 -06:00
- No editor planned
## Roadmap
### Programmable Balls
I want my balls to be programmable, I need to create a few key classes
1. Balls, duh
2. Transforms, which represent position (of my balls)
3. Camera, to look at my balls
4. Shaders, to render my balls
2021-01-14 11:52:01 -06:00
### Programmable Balls Postmortem
Everything seems to work, but we need a system of what goes in the scene
I think a scene tree like the one in Godot would be cool
I keep switching scripting languages, can I make it so it's programmable in many languages, switchable via command line?
2021-01-14 12:50:20 -06:00
### Windows Compatible
I want to be able to build this for Windows
- I have no clue what that entails
- CMake?
- How to run SWIG on windows?
### Windows Compatible Postmortem
Pretty brittle as a result of needing to download Windows binaries, but it works
Eventually, we might need to include the source files as submodules, and build them all with CMake
For now, what we've got is good
### Better error messages
Okay, now I want a message other than "main.lua not found!" if the lua file fucks up.
Also, I want Lua errors to kill the program with an error message and a stack trace.
2021-01-19 16:01:37 -06:00
### Added model importing
I did this without writing about it in the roadmap. I still want to add a way to get multiple meshes on the same model, but
I'll save skeletal animation until we have a working physics system
### Refactoring pass
I want to clean things up and see if some of the code can be combined into multiple files.
Also, I want a better user experience, so I might wind up removeing the %includes from the
swig files and customizing the interface by hand. I also want to add a whole mess of constants
so that I don't have to test for keypresses. Lastly, I want to test if a function exists before
calling it from the lua file, so stubs aren't necessary to prevent a crash
2021-01-30 16:49:25 -06:00
- [x] Combine files
- [x] Better interface
- [x] Constants for keys and the like
- [x] No crash on calling non-existant scripting hooks
2021-01-21 15:26:39 -06:00
## Lighting
I'm a bit happier with the system now, I think it's time I started the lighting.
We're going to use a pretty basic Phong lighting system, with
Flat and Garourd shaders available (This was all that was available on the PSX!)
2021-01-23 23:31:46 -06:00
## Bump in the road (1/23/21)
Not sure where to go next. I changed to using OBJ files for meshes, which I might need
to revert (shitty animation support). There are a number of systems I want to add next
- GUI (dearimgui or Nuklear) (Maybe expose a raw opengl context for these?)
- Physics engine (Bullet)
- Animation system
- General code cleanup
- Scene editor
- Rest of lighting engine (point lights, spotlights)
- Audio engine
## Physics
Yeah sure let's do physics
2021-01-30 16:49:25 -06:00
- [x] Static, Kinematic and Rigidbodies
- [x] Collision areas
2021-04-21 21:39:37 -05:00
- [x] Ray tracing
2021-01-30 16:49:25 -06:00
- [x] Axis pinning
2021-01-26 16:42:28 -06:00
## Great Refactor
Things are starting to smell, here's what I need to do
2021-04-21 21:39:37 -05:00
- [x] Replace all public attributes with accessors (on classes)
2021-01-30 16:49:25 -06:00
- [x] Seperate prefabs from instances
2021-01-26 16:42:28 -06:00
- [ ] Combine related files (shaders)
2021-03-04 16:58:13 -06:00
- [ ] ~~Create a testing suite~~ Let's be real here...
2021-01-30 16:49:25 -06:00
- [x] Have exceptions thrown to Lua if generated from a user program
2021-03-02 10:39:38 -06:00
## More lights
The great refactor continues, and I will incrementally make progress,
but this project is going to die on the vine if I don't get motivated, and
motivation comes from new features.
2021-03-04 16:58:13 -06:00
- [x] Point Light
- [ ] ~~Spot Light~~ Ehhh who cares...
2021-03-02 10:39:38 -06:00
- [ ] Shadows
2021-03-04 16:58:13 -06:00
## Fix the damn Windows
- [x] Compiles for windows
DLL Hell is still an issue, I have to distribute like 30 of them. Might go back to
simply including them in the package.
2021-04-21 21:39:37 -05:00
## Fresh Eyes (4/21/21)
Okay big things need to happen. I need to revisit the Create/Duplicate/Instantiate cycle and rethink the way
I'm doing prefabs. It might be best to make a generic for instances, like ```Instance<Mesh>``` or something like that
Also the engine is being held back a lot by a lack of animation support. I think I need to give up on importing materials
from blender and go back to importing .gltf files since they support animations. Also, I do think that I need to implement
my own shading language dialect, I need more flexibility with the way I'm doing shaders. User interface is a big thing
too, maybe even mouse support. I could generalize the way I'm doing "Screen" to allow 2d and 3d projection onto screens being
rendered in the game. In any case I'm not sure how much time I'll really have to work on this coming up, but I'll definitely look
at it more this summer.