# Deadline A week? A month? Pick a specific date # Roadmap * Save/Load * Serialization and deserialization * What needs to be serialized * Condition * Inventory * Progress * Story progression * Rooms / levels * Health/Condition * Inventory * Equipmentread * Camera follow * Bounded by room * Always faces north * Positioned south of player * First person mode? * Menu UI * Inventory * Difficulty 8 * Importance 7 * Status/Health/Condition * Difficulty 3 * Importance 8 * Story/Log * Difficulty 8 * Importance 5 * Title * Difficulty 6 * Importance 5 * Settings * Difficulty 10 * Importance 4 * Audio * Central mixer for mastering * Sound groups * One shot and looping audio (music and sfx) * Level collisions * Combat * Health * Damage * Scene change * Dialogue * Enemy AI * Enemy spawns * Shaders # Aesthetic direction * Gruel or new? * Leaning toward new * General setting / vibe # Cleanup * Callable/Signal abstraction * Generic rotate_toward method * Separate classes into own files * Organize files into related directories * Separate player logic into more reusable nodes * Generalize input handling * Fix following error that happens on load ``` E 0:00:02:0620 PromiseRejectCallback_: [jsb][Error] unhandled promise rejection: InternalError: [modules/GodotJS/bridge/jsb_primitive_bindings_reflect.cpp:498 call_builtin_function] bad argument: 0 modules/GodotJS/bridge/jsb_environment.cpp:208 @ PromiseRejectCallback_() ``` # Considerations * Monkeypatch math structures * Math operations are painful ```ts const a = new Vector(0, 0, 0) // a + Vector3.ONE const b = Vector3.ADD(Vector3.ONE, a) // (Vector3.ONE * 2) * b + a const c = Vector3.ADD( Vector3.MULTIPLY( Vector3.ADD(Vector3.ONE, Vector3.ONE), b ), a ) ``` * Gltf -> Godot workflow * Easier way to combine animations on single model * Possibly download character animation combiner and automate * Purpose of PlayerAnimation * PlayerInput doing too much