Mark | Description |
---|---|
bullet | work not started |
🏃 | in progress |
✔️ | complete |
Priorities:
- Set up
archetypes
directory to output pre-constructed entities - Set up lose state
- Set up Behavior generator type
- 🏃 Create loading bar. Might need to set up canvas prior to everything else to render loading bar
- Add (three.js) gyroscopes
This will be helpful for locking hitBoxes in place if entities have rotations
- Turn
StrictNullChecks
on - Add core ui components: input box, button, touch button, radio button, checkbox, etc.
Secondaries:
- Make generic key binder. Custom controls for the given platform. Will need a clean looking keyboard UI that shows which keys are used in the game, what they do, and an easy way to rebind these controls (good home screen idea too for game jams)
- Hard code a sprite mesh into the engine class and have sprites transform that to prevent recreating a new sprite mesh every time we need a new sprite
- Clean up changes from adding Engine class. I.e. move setSprite to engline class.
- Write script to export project to electron using
electron-builder
Electron will now use
dist
folder. Web build will now usewww
folder - Create skeletal animation data interpreter system that takes skeletal anim data from a program like blender and applies it to specified assets. State machine for animation data. Look into using three.js' animation layer
- Create level editor (tile based?)
- Write a generic custom shader
- Add particle effect renderer
- Swap out usage of HTMLAudioElement with web audio API (not started)
- Write geometry loader. Add new geometry folder in assets where each file is a separate geometry i.e. plane.ts create and returns a 1x1 plane
- 🏃 Start on Wiki to explain the various parts of the engine. Setting up new projects, helper methods, adding new components, systems, and consuming existing APIs, etc. etc.
- Setup VSCode debugging
- Name framework pieces of Boardhouse library in a type definition file
- Add library as an npm package
search-engine "npm publishing typescript"
- Before this can be done, we must package and pull the existing library locally
This will require distinguishing between current framework code and engine code. Library can be part application (see
ui
insrc
) and part engine (seebasestate.ts
) - Example tsconfig.json:
"boardhouse-pure-browser": { "front-end": "../src/app", "back-end": "../src/framework" }, "boardhouse-full-stack": { "front-end": "../src/app", "middleware": "../src/node", "back-end": "../src/framework" } // Search engine: "typescript module resolution"
Finished
- :heavy_checkmark: event handling now happens in state. Event listeners are set up at start of engine
- ✔️ Add screen shake method back to game state
- ✔️ Remove hurtBox code in lieu of hitBox changes
- ✔️
NoImplicitAny
true - ✔️ Move new collision stuff over
- ✔️ Define interface for system function
- ✔️ Component design for
<root />
element so global UI state can be passed from the game state and filter down to all UI components.See current parent -> child passing usage with state
- ✔️ Update
removeChild()
method onWidget
class so UI can be hidden and/or deleted. Use empty three JS methods for both text and sprite properties. - ✔️ update TypeScript compiler
- ✔️ Fix callback hell scenario when adding additional loaders
- Add scene transitions
- ✔️ Update three.js