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?
|
2021-01-15 15:43:32 -06:00
|
|
|
|
|
|
|
### 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 12:33:10 -06:00
|
|
|
|
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.
|