This task focuses on developing a brand new 3D game prototype that utilizes a 2.5D visual style, effectively replacing the original 2D game. All artwork and game mechanics will be freshly created, leveraging the capabilities of 3D environments and "3D sprites" (using 2D graphics) for characters. This new approach aims to establish a foundational style and gameplay mechanics for the entire development moving forward.
Objectives
Build a basic 3D scene that will serve as the template for future development.
Implement one new "3D sprite" character with simplified 2D spritesheet for ease of character creation.
Develop new game mechanics tailored to the 2.5D perspective.
walk
jump
camera movement with mouse? Or, will we have a fixed camera?
Key Components
New 3D Environment Setup:
Design and implement a completely new 3D scene in Godot, suitable for 2.5D gameplay.
The initial environment can be very basic to simply showcase player movement and basic collisions
Character Design and Implementation:
Create new 2D graphics for a character that is visually simplified but maintain a coherent aesthetic with the game’s theme.
Integrate this character into the game as a "3D sprites" to maintain ease of animation and movement.
New Mechanics and Collision System:
Design new game mechanics that are appropriate for a 3D environment but maintain the feel of traditional 2D gameplay.
Ensure collisions work as expected, such as with the ground and objects (a cube)
Camera System and Control Scheme:
Ensure the camera is intuitive and follows existing conventions
Consider starting with a fixed-perspective camera for simplicity
Implementation Considerations
Fresh Start: This is a new beginning for the game, and old code and assets from the 2D prototype will not be used. Feel free to delete old code and assets from your branch when creating the pull request, so they will be removed from the project when the pull-request is merged.
Optimization and Performance: Ensure the new 3D elements are optimized for desktop platforms, maintaining smooth gameplay without sacrificing visual quality.
Implement a simple system for transitioning between different scenes within the game. This system should manage the loading and unloading of environments seamlessly, ensuring a smooth and engaging player experience. The transition system will be critical for maintaining immersion and minimizing disruption during gameplay.
Objectives
Seamless Transitions: Create transitions that are smooth and visually appealing to enhance the player's immersion in the game.
Loading Efficiency: Optimize the loading times of scenes to reduce any perceptible delays or performance issues.
Flexibility: Ensure the system can handle various types of scene transitions, such as from indoors to outdoors, between different levels, or during key narrative moments.
Requirements
The system must support transitions between all major game environments (e.g., home, school, other key locations).
It must handle the preservation of game state and context during transitions, ensuring no data is lost.
Transitions should include a loading indicator or screen when necessary to manage player expectations.
In the most simple form, quick transitions can be done via cross-fade, such as fade out/fade in.
Tasks
Design Transition Framework:
Outline the technical requirements for the transition system, including methods for loading, unloading, and displaying scenes.
Design a generic transition handler that can be adapted for various scene types.
Implement Transition Triggers:
Develop triggers within each game scene that initiate transitions. These could be spatial triggers (e.g., doorways, paths) or event-based (e.g., after a conversation or completing a task).
Include animations or effects that enhance the transition (e.g., fade in/out, screen wipes).
Optimize Loading and Performance:
Implement efficient loading strategies, such as asynchronous loading and resource management techniques, to minimize transition delays.
Test and optimize the performance of transitions on all target hardware to ensure consistent frame rates and responsiveness.
User Interface for Transitions:
Design and implement a user-friendly interface element, such as a loading screen or progress bar, that informs players during longer transitions.
Ensure that these UI elements align with the game’s aesthetic and user experience goals.
Testing and Refinement:
Test the transition system extensively under various gameplay conditions to ensure reliability and smooth operation.
Collect feedback from players during testing phases to refine and improve the transition experience.
Acceptance Criteria
Transitions between scenes must be smooth and maintain the player's immersion without causing disorientation or frustration.
Loading times should be optimized to be as short as possible, with progress clearly communicated to the player.
The system should be robust and flexible enough to handle new scenes and transitions as the game expands.
We aim to develop a comprehensive inventory system for our educational game that allows players to collect, manage, and use various items throughout different locations, like their home and school. The inventory system will support interactions such as adding, removing, and using items and will feature a dynamic grid that expands as the player progresses in the game.
Design Goals
Interactivity: Players should be able to interact with items throughout the game world and manage these items within a user-friendly inventory interface.
Scalability: The inventory should start with a limited number of slots and expand as the player achieves specific milestones or progresses through the game.
Usability: The inventory UI must be intuitive, allowing players to easily manage their collected items, including adding, removing, and using these items.
Key Components
Global Script (Inventory Manager): Manages all inventory-related functions, including item tracking, slot management, and interaction rules.
Inventory Item: Each item's behavior and properties, including pickup and use effects.
Item Spawner: Controls the spawning of items within the game world for players to collect.
Interaction Sensor: Detects player interactions with items enabling item pickup.
Inventory Grid: A dynamic grid that organizes and displays items within the player's UI.
Inventory UI: A graphical interface that players use to interact with their inventory, designed for clarity and ease of use.
Implementation Considerations
Ensure modularity in the design so each component can be developed and maintained independently.
Utilize a data-driven approach for item definitions to facilitate easy updates and modifications.
Optimize for performance, especially when managing large numbers of items, potentially using techniques like object pooling.
Development Tips
Start with basic prototypes of each component to ensure foundational systems work correctly before expanding.
Involve end-users early in the process through testing prototypes to gather feedback and refine the system.
Regularly review and refactor the system based on user feedback and technical requirements.
Reference Material
For guidance on implementing a dynamic slot-based inventory system in Godot 4, please refer to the following YouTube playlist which provides a detailed tutorial series: Godot 4 Dynamic Slot-Based Inventory System Series
Action Items
Draft initial design documents outlining the inventory system.
Create prototypes for each of the key components.
Set up initial user testing sessions to evaluate the usability of the inventory system.
Review and integrate feedback into the development cycle.
Please carefully consider the implementation of this feature as it is central to the gameplay experience and integral to achieving the educational objectives of our game.
Develop an extensive 3D scene of a school environment, including multiple key areas such as the schoolyard, foyer, hallway, and at least one classroom. This environment will serve as a critical gameplay area and should be designed to support various educational and interactive elements.
Objectives
Design and Modeling: Construct a detailed and immersive 3D model of the school environment that supports the narrative and educational goals of the game.
Integration: Ensure the entire scene is compatible with and optimized for Godot.
Interactivity: Include interactive components that are integral to gameplay and learning experiences.
Requirements
The scene must be compatible with Godot, using preferred formats like .dae, .glb, or .gltf.
The design should align with the aesthetic and educational objectives of the game.
Each area (schoolyard, foyer, hallway, classroom) must be distinct and include elements conducive to interactive learning.
Tasks
Scene Design:
Plan and design each area of the school environment with attention to detail and educational functionality.
Model textures, furniture, and other props that enhance the realism and engagement of each space.
Scene Integration:
Import and assemble the 3D model into Godot, ensuring correct placement and scaling.
Check that textures and materials render properly in the engine and adjust as needed.
Functionality and Interactivity:
Develop interactive zones within each area, such as doors that open to different rooms, educational tools that can be interacted with, and items that can be collected or examined.
Script interactions and ensure they link seamlessly with educational objectives and gameplay mechanics.
Optimization:
Optimize scene elements to maintain performance across all target devices, focusing on reducing load times and maintaining high frame rates.
Perform stress tests to identify and fix any performance bottlenecks.
Testing:
Conduct thorough in-game testing to ensure the environment functions well with other game systems.
Collect and incorporate feedback from test sessions to refine the design and interactivity.
Acceptance Criteria
Each area of the school environment must be fully navigable with simple interactions like doors.
Interactive elements must function correctly, with appropriate player feedback.
The environment should meet performance standards without compromising visual quality.
This issue is dedicated to exploring, comparing, and finalizing the camera system and controls for our game. The current fixed-camera setup may not fully support our vision for player interaction and game environment exploration. We aim to evaluate different camera styles, document their trade-offs, and decide on the most suitable camera system for our game’s unique needs.
Objectives
Conduct prerequisite research on various camera control systems used in third-person 3D games.
Compare fixed, rotating, automatic, and rail camera systems in terms of their impact on gameplay, player experience, and level design.
Document trade-offs and gather team input via GitHub discussions.
Finalize the camera system choice, detailing the rationale in our Game Design Document.
Implement the chosen camera style if a change from the fixed-camera approach is decided.
Tasks
Research Phase:
Gather information on various camera systems used in similar games.
Document findings and share with the team for preliminary feedback.
Comparison and Evaluation:
Develop a comparison matrix for the different camera systems focusing on usability, player engagement, technical complexity, and integration with existing game mechanics.
Create prototypes or simulations if necessary to demonstrate the potential impact of each system.
Discussion and Documentation:
Initiate a GitHub discussion thread to collect input and preferences from the development team.
Summarize discussion findings and potential decisions.
Decision and Documentation:
Finalize the decision on the camera system to be used based on comprehensive evaluations and team consensus.
Document the decision and its rationale in the Game Design Document, acknowledging the trade-offs of the chosen system.
Implementation (if applicable):
Begin the implementation of the new camera system.
Adjust game levels and controls to align with the new camera setup.
Conduct initial tests to refine camera behavior and ensure smooth integration.
Expected Outcomes
A well-documented decision process that considers various perspectives and expert insights.
An updated Game Design Document that reflects the final camera system choice.
If applicable, an implemented camera system that enhances the gameplay experience and supports the game’s educational and engagement objectives.
This feature will introduce a background music player into our game to enhance the player experience with engaging and thematic audio. The music player will handle the playback of various audio tracks across different game scenes and manage transitions and volume control.
Design Goals
Atmospheric Enhancement: Use background music to enhance the game atmosphere and immersion.
Dynamic Audio Handling: Music tracks should dynamically adapt to game contexts, such as changing based on the player’s location or in-game events.
User Control: Provide players with options to adjust music volume or mute background music completely.
Key Components
AudioStreamPlayer3D (or AudioStreamPlayer for 2D):
Functionality: Responsible for playing back music tracks.
Features: Should support looping, volume adjustments, and smooth transitions between tracks.
Music Manager Script:
Purpose: Manages the playlist, track transitions, and contextual music changes.
Functions:
play_track(track_id): Plays a specified track from the playlist.
stop_track(): Stops the current track.
fade_transition(to_track_id, duration): Fades from the current track to another track over a specified duration.
adjust_volume(level): Adjusts the music volume.
UI Integration:
Settings Menu: Include background music controls in the game’s settings menu.
Controls: Sliders for volume adjustment and a toggle for muting the music.
Implementation Considerations
Audio File Management: Organize audio files efficiently in the project directory to ensure quick loading and optimal performance.
Memory Management: Be mindful of memory usage, especially when streaming high-quality audio tracks.
Accessibility: Ensure that audio does not hinder the accessibility of the game, providing adequate controls for users with different audio preferences.
Development Tips
Utilize Godot’s built-in AudioStreamPlayer nodes for straightforward audio playback.
For smoother audio transitions, consider scripting custom fade-in/fade-out effects using audio bus manipulation.
Test audio levels to ensure that music and sound effects are balanced and neither overwhelms the other.
Reference Material
For further understanding of handling audio in Godot, refer to the Godot documentation on audio management:
Implement the Music Manager script to handle dynamic audio playback.
Integrate music controls into the game’s settings UI.
Conduct thorough testing across different devices to ensure consistent audio performance.
Rationale
This music player will significantly contribute to the overall atmosphere and quality of the player’s experience, making the game more immersive and enjoyable.
Develop and integrate a Credits Screen that acknowledges all contributors, collaborators, and any external resources used in the development of the game. This screen should be accessible from the Main Menu and designed to match the aesthetic of the overall game.
Objectives
Aesthetic Consistency: Ensure the Credits Screen aligns visually with the rest of the game’s user interface.
Easy Accessibility: Incorporate the screen into the Main Menu to allow users easy access.
Scrollable Interface: Design the Credits Screen to handle potentially long lists of names and contributions in a user-friendly manner.
Requirements
The Credits Screen must be seamlessly integrated with the Main Menu, with an option to return to the Main Menu easily.
Ensure text readability and visual appeal across all device types and screen resolutions.
Include all necessary legal notices and copyright information in a clear and concise format.
Tasks
Design Layout:
Create a visually appealing design for the Credits Screen that fits with the game's UI theme.
Plan a layout that includes sections for different types of contributions (e.g., Development Team, Artwork, Sound Design, Special Thanks).
Implement Navigation:
Develop navigation controls for accessing the Credits Screen from the Main Menu and returning to the Main Menu.
Ensure navigation is intuitive and consistent with other menu interactions.
Content Compilation:
Compile a comprehensive list of all individuals and entities to credit.
Organize the content to ensure clarity and ease of reading (consider categorization and alphabetical ordering).
Scroll Functionality:
Implement a smooth scrolling mechanism for long lists to enhance user experience.
Consider auto-scroll with pause/resume options for user convenience.
Testing and Refinement:
Test the Credits Screen on various devices to ensure consistent functionality and appearance.
Adjust the design and functionality based on feedback from testers and stakeholders.
Acceptance Criteria
The Credits Screen must visually align with the game’s design and be accessible via the Main Menu.
All text should be legible with appropriate font sizes and colors that suit various background conditions.
Navigation between the Credits Screen and Main Menu should be smooth and error-free.
Feedback from user testing should indicate that the Credits Screen is clear, informative, and easy to navigate.
To enhance visual coherence and player engagement, we need to integrate 2D spritesheet animations for the player character in the existing 3D scene. This will replace or augment the current static or placeholder graphics, providing more dynamic and expressive player movement.
Objectives
Integration: Implement 2D animated sprites that correspond to different player actions (walking, running, jumping, interacting) within the 3D environment.
Synchronization: Ensure that the animation frames are perfectly synced with the player’s movements and actions in the game.
Visual Quality: Maintain high visual quality and consistency of animations across various game scenes.
Requirements
Spritesheet Creation: Develop or refine the existing spritesheet to include all necessary animations.
Animation System: Utilize Godot’s AnimatedSprite3D node to integrate the spritesheet.
Testing: Conduct thorough testing to ensure animations work seamlessly with current player controls and movements.
Tasks
Prepare the Spritesheet: Ensure the spritesheet includes all required animations and is optimized for seamless looping.
Animation Integration:
Implement the AnimatedSprite3D node within the existing player setup.
Configure animations to trigger based on player actions (input handling).
Adjustment and Optimization:
Fine-tune the animation transitions to ensure smooth gameplay.
Optimize performance to prevent any frame drops or glitches.
Testing:
Test animations in various scenarios within the game to ensure they react appropriately to all player actions.
Gather feedback from test players and make adjustments as necessary.
Acceptance Criteria
Player animations must align with movement and actions without any noticeable delays or discrepancies.
Animations should not impact the performance of the game negatively.
Feedback from test sessions indicates that players find the animations enhance their gaming experience.
Develop and implement the initial Main Menu for the game, providing players with navigation options such as 'Start Game', 'Settings', 'Credits', and 'Exit'. The menu should be visually appealing and align with the game's overall aesthetic. It should also be intuitive, allowing for easy navigation and accessibility.
Objectives
Visual Design: Create a Main Menu that is both aesthetically pleasing and consistent with the game’s graphic style.
Navigation Efficiency: Ensure that the menu is easy to navigate, with clearly labeled options and responsive controls.
Functionality: Integrate all necessary menu options to provide full game access and settings adjustments.
Menu items like "settings" and "credits" can be placeholder scenes for now
Requirements
The Main Menu must include the following options: Start Game, Settings, Credits, and Exit.
The design should be scalable to different screen resolutions and aspect ratios.
Menu selections should have audible and visual feedback to enhance usability.
Tasks
Menu Design:
Design the layout and visual elements of the Main Menu, including background, font styles, and button designs.
Create animations or effects for button interactions, such as hover effects or clicks.
Menu Functionality:
Implement the navigation logic that allows players to move between menu options using keyboard, mouse, or gamepad.
Set up actions for each menu item:
'Start Game' should lead to the game’s starting point or a new game setup.
'Settings' should open a sub-menu for game settings like audio and graphics.
'Credits' should display the game's credits page with scrollable content.
'Exit' should close the game application safely.
Adaptive Layout:
Ensure that the Main Menu layout adapts to various screen sizes and resolutions without any layout issues or text overlap.
Test responsiveness across multiple devices.
User Interaction Feedback:
Incorporate sound effects for selecting and hovering over menu options.
Add visual feedback like button animation or color change on interaction.
Testing:
Conduct user testing sessions to gather feedback on the menu’s usability and aesthetic appeal.
Refine menu interactions based on tester feedback to ensure intuitive usability.
Acceptance Criteria
The Main Menu must be fully functional, allowing navigation to all listed options without errors.
Visual and auditory feedback should clearly indicate interaction and selection.
The design and functionality of the menu should be well-received in user testing, indicating high usability and satisfaction.
This feature aims to establish a robust interaction system allowing players to engage with various in-game objects like doors, chests, and items necessary for progressing through the game. The system will rely on two main components: Interactable and Interactor, enhancing the game's interactivity and player engagement.
Design Goals
Enhanced Player Engagement: Enable players to interact seamlessly with objects in the game environment.
Flexibility: Design a system that can be extended to various types of interactive objects and different interactor entities (e.g., NPCs, vehicles).
Intuitive Feedback: Provide clear visual and auditory feedback when objects are interactable or being interacted with.
Key Components
Interactable:
Node Setup: Implemented as an Area3D node with a CollisionShape3D child, defining the interaction zone.
Signals:
focused: Emitted when an interactor focuses on the object.
unfocused: Emitted when an interactor loses focus on the object.
interacted: Emitted when an interaction is performed.
Behavior Handling: Manages state changes and visual feedback based on interaction status.
Interactor:
Node Setup: Also an Area3D node with a CollisionShape3D, defining the active area for initiating interactions.
Functionality:
Manages detection and interaction logic.
Maintains a reference to the controller object (e.g., player character).
PlayerInteractor (a subclass of Interactor):
Specialization: Specifically tailored to the player, tracking nearby interactable objects and handling player inputs.
Interaction Handling:
Monitors player commands to interact with objects.
Manages focused and unfocused states based on player proximity and input.
Implementation Considerations
Modular Design: Ensure that components are reusable and can be integrated with different game entities.
Performance Optimization: Optimize interaction detection to minimize performance overhead, especially in dense interactive environments.
User Feedback: Implement clear feedback mechanisms, such as highlighting or sounds, to indicate interactable objects.
Development Tips
Start with foundational prototypes for the Interactable and Interactor components to refine interaction mechanics.
Utilize Godot’s built-in signal system for robust and flexible event handling between components.
Continuously test with actual game scenarios to ensure interactions feel intuitive and responsive.
Reference Material
For further guidance and best practices in implementing interaction systems in Godot, refer to the following resources:
Design and implement the basic Interactable and Interactor components.
Develop the PlayerInteractor subclass with extended functionality for player-specific interactions.
Set up initial user testing sessions to evaluate the interaction mechanics.
Summary
This system is foundational for enabling meaningful player engagements within the game world, thereby enriching the gaming experience and supporting the game's educational objectives.
Conduct research and design a save game system that enables players to save their progress reliably and efficiently. The system should be compatible with our game's architecture and designed to be user-friendly, ensuring a seamless experience for players when saving and loading game states.
Objectives
Research Existing Solutions: Investigate existing save game systems to understand best practices and common methodologies.
Design a Flexible System: Develop a design for a save system that is flexible, robust, and integrates smoothly with our game's specific features and requirements.
Plan for Future Scalability: Ensure the system is scalable and can handle additional features and complexities that may be added in the future.
Requirements
The save system must support serialization of game states, including player progress, in-game settings, and dynamic game elements.
It should be capable of handling multiple save slots to give players options for managing different game progressions.
Design should prioritize data integrity and minimize the risk of data loss or corruption.
Tasks
Research Phase:
Review literature and case studies on popular save game systems used in similar games, particularly in the Godot engine if possible.
Analyze the pros and cons of various approaches, such as local storage, cloud saves, and autosaves.
Design Documentation:
Create a detailed design document outlining the proposed save game system architecture.
Specify the data structures, storage formats, and interfaces needed for the save system.
User Experience Design:
Plan the user interface for the save system, including menu integration and user interaction flows for saving and loading games.
Ensure the system design includes feedback mechanisms for successful saves, errors, and data restoration processes.
Scalability and Security Planning:
Define strategies for data encryption and protection, especially if saves are cloud-based or include sensitive information.
Ensure the design allows for future expansions, such as additional save slots or cross-platform syncing.
Feedback Collection:
Gather input from the development team and potential users on the proposed design through surveys or discussions.
Adjust the design based on feedback to improve functionality and user satisfaction.
Acceptance Criteria
A comprehensive design document for the save game system that includes technical specifications, user interface designs, and interaction diagrams.
The design should be validated by the development team and key stakeholders, ensuring it meets technical feasibility and user experience goals.
A plan for future implementation steps that outlines necessary resources, potential challenges, and milestones.
Develop a basic 3D scene of the home environment where the game starts. This scene will be the foundational setting for the player’s in-game experience and will include various interactive elements that are critical to gameplay.
Objectives
Design and Modeling: Create a detailed 3D model of the home environment, including key living spaces that the player can explore.
Integration: Ensure the scene is compatible with Godot and functions smoothly within the game framework.
Interactivity: Design the scene with interactive elements such as doors, items, and furniture that players can engage with.
Requirements
The scene must be delivered in a format compatible with Godot (e.g., .dae, .glb, .gltf).
The design should reflect the game's aesthetic and narrative style.
Include areas that are important for gameplay, such as a living room, kitchen, and any other relevant spaces.
Tasks
Scene Design:
Finalize the layout and major components of the home environment.
Create detailed models for each room, including textures and lighting that match the game’s visual style.
Scene Integration:
Import the 3D model into Godot and position it correctly within the game world.
Ensure that all textures and materials display correctly in Godot.
Functionality and Interactivity:
Implement interactive elements within the scene, such as doors that can open or items that can be picked up.
Ensure that these elements are properly scripted and integrated with the game's interaction system.
Optimization:
Optimize the scene for performance, ensuring that it runs smoothly on all target platforms.
Conduct stress tests and resolve any issues related to frame rate drops or graphical glitches.
Testing:
Test the scene extensively within the game to ensure it integrates well with other gameplay elements.
Gather feedback from testers to refine the environment and its interactivity.
Acceptance Criteria
The scene must be fully navigable and integrate seamlessly with the existing game mechanics.
All interactive elements must function as intended, with appropriate feedback and effects.
The scene should meet all specified performance benchmarks on target hardware.
We will want to have dialogues in our game to convey the story.
This feature aims to implement a robust NPC dialogue system that supports interactive and dynamic conversations within the game. This system will be integral for quests and general NPC interactions, with the capability to respond to game states, such as player achievements or changes triggered by other in-game actions.
Design Goals
Dynamic Interactions: The dialogue system must adapt to changes in the game's state, reflecting players' previous choices and achievements.
Extensibility: Easily integrate with existing and future game mechanics, such as quests, item inventory, and character development.
User Engagement: Enhance player engagement through meaningful dialogue that contributes to the narrative and educational goals.
Key Components
Dialogue Management:
Utilize a robust dialogue editor that allows for branching conversations based on player choices and game states.
Include support for conditions and effects, enabling dialogues to trigger changes in the game environment or update the player's status.
Integration with Game State:
Ensure dialogues can access and modify global game states, such as quest progress or inventory items, to allow for conditions like "if player has item X, say Y."
NPC Scripting:
Each NPC should have scripts that define their dialogue paths and the conditions under which different paths are taken.
Support for multiple languages and voiceovers would be considered for future updates.
Existing Framework Consideration
Dialogic: Currently stable in Godot 3.5; pending update for Godot 4 compatibility. Known for its user-friendly dialogue editor and robust handling of branching dialogues.
Alternative Solutions: If Dialogic is not updated timely, assess other dialogue systems with similar functionalities and a strong architectural foundation. Consider custom development if suitable frameworks are lacking.
Implementation Considerations
Performance: Ensure the dialogue system does not adversely affect game performance, particularly on lower-end devices.
Modularity: Design the dialogue system to be as modular as possible, allowing for easy updates and maintenance.
Accessibility: Implement features like text size adjustments and color-blind modes to make dialogues accessible to all players.
Development Tips
Monitor the updates on Dialogic for Godot 4 and participate in its community for potential early adoption.
If opting for a custom solution, base the architecture on proven models from existing dialogue systems, ensuring scalability and flexibility.
Action Items
Research and evaluate the current status of Dialogic for Godot 4.
If Dialogic is unavailable, identify and evaluate alternative frameworks.
Design and implement a prototype dialogue system, either with Dialogic (if updated) or another chosen framework.
Integrate the prototype with a small scale NPC setup to test functionality.
Gather feedback from testers to refine dialogue interactions.