Commit Graph

328 Commits

Author SHA1 Message Date
Z. Cliffe Schreuders
62967d5234 feat(npc): Add final implementation review for NPC behavior system 2025-11-09 16:05:32 +00:00
Z. Cliffe Schreuders
289c326765 Refactor NPC Behavior Implementation Plan and Documentation
- Updated IMPLEMENTATION_PLAN.md to reflect new architecture and simplified lifecycle management due to rooms never unloading.
- Added critical prerequisites in Phase -1 for walk animations, player position checks, and phone NPC filtering.
- Revised QUICK_REFERENCE.md and README.md for clarity on implementation status and next steps.
- Introduced QUICK_TAKEAWAYS.md summarizing key changes from the code review.
- Created UPDATE_SUMMARY.md detailing updates applied based on maintainer clarifications.
- Adjusted review README.md to streamline navigation and highlight important documents for developers and stakeholders.
2025-11-09 15:15:21 +00:00
Z. Cliffe Schreuders
b97ebb3960 Implement Phase -1 Action Plan for NPC Behavior
- Added PHASE_MINUS_ONE_ACTION_PLAN.md detailing critical fixes needed before Phase 1 implementation.
- Updated README.md to include new action plan and review status.
- Created README_REVIEWS.md as a navigation guide for review documents.
- Addressed critical issues including walk animations, player position tracking, phone NPC filtering, and environment collisions.
- Established a checklist for testing and verification of fixes.
- Revised estimated timelines for implementation phases.
2025-11-09 11:07:36 +00:00
Z. Cliffe Schreuders
418f5b497a feat(npc): Update NPC behavior implementation plan and review documents
- Created CHANGES_SUMMARY.md to summarize updates and fixes post-review.
- Added PLAN_REVIEW_AND_RECOMMENDATIONS.md detailing critical issues and recommendations for NPC behavior implementation.
- Fixed critical issues regarding animation creation timing, integration points, and validation for patrol bounds and sprite references.
- Updated implementation plan to include a new Phase 0 for animation prerequisites.
- Clarified NPC collision configuration and ensured roomId is stored in NPC data.
- Enhanced documentation across multiple files to reflect changes and provide troubleshooting guidance.
2025-11-09 10:16:23 +00:00
Z. Cliffe Schreuders
1f6166ccf6 Add review changes and improvements for NPC behavior implementation
- Created CHANGES_APPLIED.md to document critical clarifications and updates based on code review findings.
- Established a new review and improvements document (REVIEW_AND_IMPROVEMENTS.md) outlining 9 critical improvements and 12 enhancement opportunities for NPC behavior.
- Updated TECHNICAL_SPEC.md, IMPLEMENTATION_PLAN.md, QUICK_REFERENCE.md, and example_scenario.json with necessary changes regarding roomId tracking, sprite storage, wall collision setup, animation creation timing, and personal space behavior.
- Clarified async import patterns and depth update requirements in the implementation plan.
- Enhanced personal space behavior design to ensure NPCs back away slowly while maintaining eye contact with players.
- Documented all changes and improvements to ensure better integration with existing systems and reduce complexity in NPC behavior implementation.
2025-11-09 02:43:17 +00:00
Z. Cliffe Schreuders
2b3642f2d3 Update Ink best practices and NPC dialogue for consistency in player choices and exit handling 2025-11-09 01:09:41 +00:00
Z. Cliffe Schreuders
0b32d076e3 Add documentation for #exit_conversation tag usage and implement tag detection in phone chat minigame 2025-11-09 00:58:11 +00:00
Z. Cliffe Schreuders
9229df8bc8 Enhance phone chat functionality by adding NPC filtering; update related systems to support allowed NPCs in conversations and inventory management 2025-11-08 22:35:31 +00:00
Z. Cliffe Schreuders
f83b2a7388 Refactor NPC trust system to influence system; add new NPCs and phone interactions
- Changed trust_level variable to influence in helper-npc.ink and updated related logic.
- Adjusted dialogue and conditions to reflect influence instead of trust.
- Introduced new NPCs: Neye Eve and Gossip Girl, with timed messages for Gossip Girl.
- Updated itemsHeld in various NPCs to include phones with specific interactions.
2025-11-08 22:23:55 +00:00
Z. Cliffe Schreuders
5ae0c4c54e Implement NPC Influence System with visual feedback for relationship changes 2025-11-08 20:47:10 +00:00
Z. Cliffe Schreuders
6d49c79174 Preserve NPC context in container minigame state and enhance return flow after notes minigame 2025-11-08 16:10:55 +00:00
Z. Cliffe Schreuders
9b4fab0071 Refactor player movement logic to prioritize keyboard input and add idle animation state 2025-11-08 16:01:19 +00:00
Z. Cliffe Schreuders
cb95a857fd Implement global variable system for NPC conversations
- Introduced a data-driven global variable system to manage narrative state across NPC interactions.
- Added support for global variables in scenario JSON, allowing for easy extension and management.
- Implemented synchronization of global variables between Ink stories and the game state, ensuring real-time updates across conversations.
- Enhanced state persistence, allowing global variables to survive page reloads and be restored during conversations.
- Created comprehensive documentation and testing guides to facilitate usage and verification of the new system.
2025-11-08 15:44:24 +00:00
Z. Cliffe Schreuders
472ce9dbd5 Enhance NPC conversation flow and inventory synchronization
- Added a small delay before restarting conversations after NPC inventory interactions to ensure a smoother user experience.
- Updated the item synchronization logic in PersonChatConversation and PhoneChatConversation to set variables for items not in inventory, improving accuracy in item tracking.
- Enhanced the helper NPC dialogue to provide clearer options for item requests, enriching player engagement.
2025-11-08 12:41:48 +00:00
Z. Cliffe Schreuders
c782a98e7e Refactor Equipment Officer NPC dialogue and inventory interactions
- Streamlined conversation flow for the Equipment Officer NPC, enhancing player engagement with clearer options for item inquiries.
- Added a new option to show specialist items, improving inventory management.
- Removed redundant trust level increments to simplify interaction logic.
- Updated exit conversation handling for a more polished user experience.
2025-11-08 12:31:31 +00:00
Z. Cliffe Schreuders
7be8b67f27 Add ContainerMinigame NPC return flow and conversation management
- Introduced a new method in ContainerMinigame to handle returning to conversations after NPC inventory interactions, enhancing user experience.
- Updated minigame exports to include the new return function for better integration.
- Enhanced PersonChatMinigame and PhoneChatMinigame to track current conversation context, improving narrative continuity.
- Added a new sprite asset for character representation in the game.
2025-11-08 12:30:30 +00:00
Z. Cliffe Schreuders
14e2600e5c Add NPC item giving examples and enhance container UI functionality
- Created a new documentation file detailing usage examples for the NPC item giving system, including immediate and container-based item transfers.
- Updated the ContainerMinigame to support additional NPC context, enhancing the user experience when interacting with NPC inventories.
- Implemented new NPC configurations in the scenario JSON to demonstrate item giving mechanics and container UI features.
- Added an Ink script for the Equipment Officer NPC, showcasing how to present items through the container UI and manage player interactions.
2025-11-08 10:44:34 +00:00
Z. Cliffe Schreuders
14bc9af43e Add NPC inventory management and UI enhancements
- Introduced new NPC inventory system allowing NPCs to hold and give items to players.
- Updated ContainerMinigame to support NPC mode, displaying NPC avatars and available items.
- Enhanced chat and conversation systems to sync NPC item states with Ink variables, improving narrative interactions.
- Added event listeners for item changes, ensuring dynamic updates during conversations.
- Implemented new methods in NPCGameBridge for item giving and inventory display, streamlining item interactions.
2025-11-08 10:26:50 +00:00
Z. Cliffe Schreuders
4dd2a839f4 Enhance PersonChatUI to track characters with parallax animation
- Introduced a Set to keep track of characters that have undergone parallax animation, ensuring that the animation resets only for new speakers.
- Updated the logic to conditionally reset the parallax animation based on whether the speaker has been seen before, improving visual continuity during conversations.
2025-11-07 20:37:27 +00:00
Z. Cliffe Schreuders
d36b61f20e Enhance PersonChatMinigame and UI with improved caption area and parallax animation
- Updated CSS for the caption area to span the full width of the screen, enhancing visual consistency.
- Introduced a new inner container for caption content to maintain a maximum width, improving layout structure.
- Added parallax animation functionality in PersonChatPortraits for a more dynamic visual experience during conversations.
- Implemented automatic parallax animation reset when the speaker changes, ensuring smooth transitions between dialogues.
2025-11-07 20:33:54 +00:00
Z. Cliffe Schreuders
6f69ab52c1 Enhance PersonChatMinigame and related classes to support optional background images
- Added support for optional background image paths in PersonChatMinigame, PersonChatPortraits, and PersonChatUI, allowing for more dynamic visual presentations during conversations.
- Updated NPCManager to handle background image paths in timed conversations, improving narrative context.
- Enhanced canvas rendering logic to accommodate background images, ensuring proper scaling and alignment with character sprites.
2025-11-07 19:51:13 +00:00
Z. Cliffe Schreuders
8315abc932 Update sprite positioning in PersonChatPortraits to enhance visual alignment
- Adjusted sprite positioning by shifting it 20% away from the direction the character is facing, improving the visual representation for both NPCs and players.
- Ensured consistent handling of sprite and image centering across the canvas for better overall aesthetics.
2025-11-07 17:41:54 +00:00
Z. Cliffe Schreuders
717221cb3c Refactor PersonChatMinigame and update canvas handling in portraits
- Removed the outdated PersonChatMinigame implementation to streamline the codebase.
- Updated CSS for image handling in the chat minigame to use 'contain' for better aspect ratio maintenance.
- Improved canvas size management in PersonChatPortraits to ensure optimal rendering based on container dimensions, enhancing visual fidelity.
2025-11-07 17:27:35 +00:00
Z. Cliffe Schreuders
9a8ef9b9f5 Add Timed Conversations feature for Person NPCs
- Introduced a new documentation file detailing the Timed Conversations feature, which allows NPCs to automatically initiate dialogues after a specified delay.
- Included configuration examples and use cases to enhance narrative flow in scenarios.
- Updated NPCManager to support scheduling and triggering of timed conversations, improving interaction dynamics in the game.
2025-11-07 16:24:27 +00:00
Z. Cliffe Schreuders
1d889fe148 Enhance NPCManager to support timed conversations and update dialogue handling in PersonChatMinigame
- Added functionality to schedule timed conversations in NPCManager, allowing NPCs to automatically initiate dialogues after a specified delay.
- Updated PersonChatMinigame to handle multiple dialogue lines and speakers, improving the display logic for accumulated dialogue.
- Modified scenario JSON and Ink files to include timed conversation configurations for NPCs, enhancing narrative flow.
2025-11-07 16:15:52 +00:00
Z. Cliffe Schreuders
3f06b8fc8c Update GAME_CONFIG to disable debug mode for arcade physics 2025-11-07 00:36:22 +00:00
Z. Cliffe Schreuders
17848115a1 Implement NPCLazyLoader for per-room NPC loading and refactor related systems
- Introduced NPCLazyLoader class to handle NPC loading on a per-room basis, optimizing memory usage and performance.
- Updated the create() function to utilize the new lazy loading mechanism for NPCs in the starting room.
- Refactored loadRoom function to support asynchronous NPC loading, ensuring NPCs are registered before room visuals are created.
- Adjusted PersonChatMinigame to load NPCs from the current room context, enhancing NPC management.
- Updated scenarios to reflect the new NPC structure, moving NPC definitions from scenario root to individual rooms.
2025-11-07 00:33:22 +00:00
Z. Cliffe Schreuders
d4deec2376 Refactor NPC loading implementation and enhance error handling
- Consolidated async function updates for NPC loading in the `create()` function to streamline the process.
- Improved error handling during NPC loading for the starting room, ensuring room creation continues even if NPC loading fails.
- Updated documentation to reflect changes in the implementation checklist for better clarity on migration steps.
2025-11-07 00:17:19 +00:00
Z. Cliffe Schreuders
ffc7394fcd Enhance NPC migration documentation and progress tracking
- Updated various planning documents to include additional details and clarity on the NPC migration process.
- Added new sections to CLIENT_SERVER_SEPARATION_PLAN.md, NPC_MIGRATION_OPTIONS.md, RAILS_ENGINE_MIGRATION_PLAN.md, and README.md to improve overall documentation and ensure comprehensive coverage of migration strategies.
- Ensured all documents reflect the latest architectural decisions and implementation plans for better guidance during the migration process.
2025-11-07 00:12:24 +00:00
Z. Cliffe Schreuders
17603b3c97 Add comprehensive planning and implementation documentation for NPC lazy-loading architecture
- Create README.md outlining the entire migration plan, including executive summary, technical details, migration guide, API specification, and testing checklist.
- Introduce START_HERE.md as a quick start guide for implementation, detailing initial steps and phase breakdown.
- Develop VISUAL_GUIDE.md with diagrams and visual references for current vs. target architecture, NPC types, implementation phases, and memory usage comparisons.
2025-11-06 23:55:31 +00:00
Z. Cliffe Schreuders
75b7b3c5b2 feat(css): Improve caption area layout and adjust font sizes for better readability 2025-11-06 11:18:54 +00:00
Z. Cliffe Schreuders
09d35af661 feat(dialogue): Enhance dialogue block display to include choice handling after completion 2025-11-06 10:54:46 +00:00
Z. Cliffe Schreuders
6ab2340e54 feat(dialogue): Enhance sequential dialogue display with line accumulation 2025-11-06 10:49:29 +00:00
Z. Cliffe Schreuders
5a752d0aca feat(ui): Refactor dialogue and controls layout for improved interaction and visibility 2025-11-06 10:43:43 +00:00
Z. Cliffe Schreuders
b1686fc5eb feat(css): Enhance minigame styles with max-width and margin for better layout
refactor(js): Remove unused asset loading in preload function
feat(js): Implement optimal scale calculation for pixel-perfect rendering in person chat portraits
2025-11-06 01:54:55 +00:00
Z. Cliffe Schreuders
13f71baa82 feat(ui): Update font sizes for dialogue and speaker name for improved readability 2025-11-06 00:54:08 +00:00
Z. Cliffe Schreuders
f055d6c536 feat(npc): Update conversation flow to handle exit choices and NPC responses 2025-11-05 20:15:33 +00:00
Z. Cliffe Schreuders
2d0e30f157 Add helper NPC dialogue and interactions for mission assistance
- Created a new JSON file for the helper NPC with various dialogue options and interactions.
- Implemented responses for asking about the NPC, unlocking the CEO's office, and providing items.
- Enhanced trust-building mechanics with the NPC, allowing for item exchanges and hints based on player actions.
- Updated existing NPC dialogue to integrate new features and improve player guidance throughout the mission.
2025-11-05 20:15:26 +00:00
Z. Cliffe Schreuders
78cc3beab4 feat(person-chat): Implement click-through mode for dialogue advancement and enhance UI with continue button 2025-11-05 09:18:58 +00:00
Z. Cliffe Schreuders
4daaa87534 feat(npc): Implement conversation state management and enhance NPC interaction features 2025-11-05 01:03:08 +00:00
Z. Cliffe Schreuders
d217e5a02a feat(npc-interaction): Enhance NPC interaction system with click handling and distance checks 2025-11-04 23:25:41 +00:00
Z. Cliffe Schreuders
2c9d3a739c feat(npc-collisions): Implement comprehensive collision setup for NPC sprites including walls and chairs 2025-11-04 22:22:29 +00:00
Z. Cliffe Schreuders
518d8916be feat(person-chat): Implement multi-character support and enhance dialogue handling 2025-11-04 22:11:32 +00:00
Z. Cliffe Schreuders
e0cef60f37 feat(npc): Add talk icon system and update NPC sprite configurations 2025-11-04 21:31:00 +00:00
Z. Cliffe Schreuders
9f82abd072 feat(person-chat): Enhance player interaction by adding scenario data and improving dialogue handling 2025-11-04 14:21:35 +00:00
Z. Cliffe Schreuders
e73a6a038b Add NPC sprite test scenario, server for development, and HTML test pages
- Created a new JSON scenario file for testing NPC sprite functionality.
- Implemented a simple HTTP server with caching headers for development purposes.
- Added an HTML page for testing NPC interactions, including system checks and game controls.
- Introduced a separate HTML page for testing item delivery through person chat interactions.
2025-11-04 14:16:48 +00:00
Z. Cliffe Schreuders
5fd7ad9307 feat(interactions): Enhance interaction distance calculation for diagonal movements 2025-11-01 11:14:42 +00:00
Z. Cliffe Schreuders
6aa6fd4beb feat(sound): Refactor sound manager initialization to reuse instance across preload and create phases 2025-11-01 11:07:54 +00:00
Z. Cliffe Schreuders
cb8a9399a9 feat(npc): Remove unregisterNPC method and associated cleanup logic 2025-11-01 10:43:48 +00:00
Z. Cliffe Schreuders
1bd037d969 feat(npc): Enhance message handling by adding metadata support in addMessage method 2025-11-01 10:42:37 +00:00