From 2588df5f89da62b857287344d6a7f2cc6951e938 Mon Sep 17 00:00:00 2001 From: NielsCoding <48092678+heavydemon21@users.noreply.github.com> Date: Wed, 15 Mar 2023 18:56:15 +0100 Subject: architecture docu --- docs/architecture.md | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) (limited to 'docs/architecture.md') diff --git a/docs/architecture.md b/docs/architecture.md index 5001eed..94f17a4 100644 --- a/docs/architecture.md +++ b/docs/architecture.md @@ -1,3 +1,38 @@ +# Hooded Havic: Miniboss Mania +![intro arcade game](../assets/hh_introScreen.png) + +# introduction +Welcome to Hooded Havoc: Miniboss Mania, an exciting 2D platformer game created by our team Joshua, Loek, Bjorn, Frenk and Niels! This game was developed using the STM32 microcontroller as the game engine and the FPGA as the Picture Processing Unit (PPU). + +In Hooded Havoc: Miniboss Mania, you will take on the role of a brave hero who must battle through multiple levels filled with challenging obstacles and formidable minibosses. With smooth gameplay and engaging graphics, you will feel immersed in a world of adventure and excitement. + +Our use of the STM32 microcontroller and FPGA PPU allowed us to create a unique and innovative gaming experience. The STM32 provides efficient and reliable processing power, while the FPGA ensures that our graphics are rendered smoothly and accurately. + +So get ready to embark on a thrilling journey through Hooded Havoc: Miniboss Mania, and see how far you can make it! +## Objective +The objective of Hooded Havoc: Miniboss Mania is to guide the hero through multiple levels, defeating minibosses and overcoming obstacles along the way. The ultimate goal is to reach the final boss and defeat them to retrieve the stolen staff. + +To achieve this objective, the player must use their platforming skills to jump, run, and dodge obstacles while also battling enemies and minibosses. Each level presents a unique challenge that will require the player to adapt and strategize to overcome. + +As the player progresses through the game, they will unlock new abilities and power-ups that will aid them in their journey. The player must use these abilities wisely to defeat the minibosses and ultimately save the world. + +So, the objective of Hooded Havoc: Miniboss Mania is not only to provide an exciting and engaging gaming experience but also to challenge players to use their skills and strategic thinking to overcome obstacles and emerge victorious. +## Problem statement +One potential problem that could arise in the development of Hooded Havoc: Miniboss Mania is related to the PPU and communication between the STM32 and PPU. + +The PPU is responsible for rendering the graphics and displaying them on the screen, while the STM32 is responsible for processing the game logic and input from the player. However, if there is a problem with the communication between these two components, it could lead to synchronization issues and graphical glitches that could affect the player's experience. + +For example, if the PPU is unable to keep up with the processing speed of the STM32, the graphics may lag or appear distorted, causing the game to become unplayable. Similarly, if there is a delay in communication between the STM32 and PPU, it could result in a mismatch between the game logic and the displayed graphics, leading to confusion for the player. + +To ensure a smooth and enjoyable gaming experience, it is essential to address any potential issues with the PPU and communication between the STM32 and PPU during the development process. This may involve optimizing the code for both components, adjusting the communication protocol, or adding buffer systems to prevent lag or synchronization issues. +### architecture ( top level) +![Top level architecture](../assets/TopLevelArchi); + + + + +### design document (mid-low level) + # General system architecture ![Top-down system architecture diagram](../assets/architecture-level-1.svg) -- cgit v1.2.3 From 2346a009fefb6e880bd7a36bb132cad833185080 Mon Sep 17 00:00:00 2001 From: NielsCoding <48092678+heavydemon21@users.noreply.github.com> Date: Wed, 15 Mar 2023 19:46:54 +0100 Subject: bob --- assets/TopLevel.PNG | Bin 0 -> 13919 bytes assets/TopLevelArchi | 1 - docs/BobSprint2.md | 19 +++++++++++++++++++ docs/architecture.md | 3 ++- 4 files changed, 21 insertions(+), 2 deletions(-) create mode 100644 assets/TopLevel.PNG delete mode 100644 assets/TopLevelArchi create mode 100644 docs/BobSprint2.md (limited to 'docs/architecture.md') diff --git a/assets/TopLevel.PNG b/assets/TopLevel.PNG new file mode 100644 index 0000000..2a7b16d Binary files /dev/null and b/assets/TopLevel.PNG differ diff --git a/assets/TopLevelArchi b/assets/TopLevelArchi deleted file mode 100644 index bd8c538..0000000 --- a/assets/TopLevelArchi +++ /dev/null @@ -1 +0,0 @@ -zVdNc5swEP01PrYDFlD76NhpOtN0yowPSY8KbECtYD3y4o/++kpGfDuJkzp1fTG72hXSe29XYsTm2e5G8VX6DWOQo7ET70ZsMRqPXT9w9J/x7EvP1JuUjkSJ2AY1jqX4DdZp85JCxLDuBBKiJLHqOiPMc4io4+NK4bYb9oiy+9YVT2DgWEZcDr13IqbUet1g2gx8AZGk9tWT8adyIONVsN3JOuUxblsudj1ic4VI5VO2m4M04FW4lHmfnxitF6Ygp1MSvPAuyxcOfL1NQr8QyfebOPzg27XRvtowxHr/1kRFKSaYc3ndeK8UFnkMZlZHW03MLeJKO13t/AlEe0smLwi1K6VM2lG9YLW/t/kH44cxPvqVudi1Bxd7a5VrNQt8EgLrWmOhInhm38xKiasE6Jk4ryZKKxwwA70enadAchKb7jq4lVpSxzVs6AdLyCvIsYvccFnYN4WS70ENONPSWpnHIpOziFBprDagSGgZ3/IHkCGuBQnMdcgDEmGmA6QZuOLRr+TA5xylydOzscfDrzXHTIrE5JLht00kFiRFDvO69hqWTC7snudpiKtN8G3J2J7hVSW0bVWgY31pq/jcKvHsVHgDKnTDIYVSHqGjWyDbVBAsV/ygx63ukl0MzwAXG3fx8t0hXpNjcLnvBdf0om3F7bYV1vu90GUOVghKaChAnb/1BCe2HnbJ1hMM9L6MFED+32md+ZMLa72auIXVghO/OFK+00OKHemi4yNQ1fidH6rhiTZsFHk8M/c2bUWSr9ci6lX5TtB967l1ddBWU9PGeIeLg3di9brOcXJa4PtHsK98J1e5fUOIQu+k5t7rnaBBn9JynzarfWnsTdQXUcB6E5VADCY6yKPe9l8oZnjwvl4xT5wL//C6WfWIF2UTXFI1bp/s6RtV4/bl551LNdpsvpjK8Oa7k13/AQ== \ No newline at end of file diff --git a/docs/BobSprint2.md b/docs/BobSprint2.md new file mode 100644 index 0000000..6fff8fc --- /dev/null +++ b/docs/BobSprint2.md @@ -0,0 +1,19 @@ + + +# Proud of +Simulation: We're proud of the simulation that we created to test our game because it allows us to identify and address potential issues before the game is released. This helps ensure that the game is as polished and bug-free as possible. + +PPU: Our use of an FPGA-based PPU (Picture Processing Unit) in our game engine allows us to achieve high-quality graphics and smooth animation. This is important because it helps create an immersive and engaging gaming experience. + +Upscaling: We've implemented a sophisticated upscaling that allows us to scale up our game. This Ensures that our game runs smoothly and without any + +Collisions: We've put a lot of effort into making sure that our collision detection system is accurate and reliable. This ensures that the game mechanics work as intended and that players are able to navigate the game world without frustration. + +Artwork: We're proud of the artwork that was created which is stunning and imaginative artwork that brings the game world to life. From character designs to background artwork, every aspect of the game has been given careful attention to ensure that it looks as good as it plays. And more is coming! +# Challegens +Upscaling: While our upscaling algorithm is sophisticated, one of the challenges we faced was synchronization. Because we're upscaling in real-time, we had to ensure that the upscaling process didn't cause any lag or delay in the game. This required careful optimization of the algorithm and synchronization with other game components. + +PPU: While the use of an FPGA-based PPU allowed us to achieve high-quality graphics, it also presented some challenges. Specifically, the limited resources of the FPGA required us to optimize the PPU code to ensure that it could handle the demands of real-time gameplay. + +Communication bug fixes on the STM32: As with any complex system, we encountered some bugs in the communication between the STM32 microcontroller and the other components of the system. This required careful debugging and troubleshooting to identify and fix the issues. + diff --git a/docs/architecture.md b/docs/architecture.md index 94f17a4..d4632b5 100644 --- a/docs/architecture.md +++ b/docs/architecture.md @@ -25,8 +25,9 @@ The PPU is responsible for rendering the graphics and displaying them on the scr For example, if the PPU is unable to keep up with the processing speed of the STM32, the graphics may lag or appear distorted, causing the game to become unplayable. Similarly, if there is a delay in communication between the STM32 and PPU, it could result in a mismatch between the game logic and the displayed graphics, leading to confusion for the player. To ensure a smooth and enjoyable gaming experience, it is essential to address any potential issues with the PPU and communication between the STM32 and PPU during the development process. This may involve optimizing the code for both components, adjusting the communication protocol, or adding buffer systems to prevent lag or synchronization issues. + ### architecture ( top level) -![Top level architecture](../assets/TopLevelArchi); +![Top level architecture](../assets/TopLevel.PNG.); -- cgit v1.2.3 From 6a70bf52bc2ed5d28b7d08854fabfaee27be3e84 Mon Sep 17 00:00:00 2001 From: NielsCoding <48092678+heavydemon21@users.noreply.github.com> Date: Wed, 15 Mar 2023 20:08:12 +0100 Subject: architecture and design --- docs/architecture.md | 38 ++++++++++++++++++++++++++++++++------ 1 file changed, 32 insertions(+), 6 deletions(-) (limited to 'docs/architecture.md') diff --git a/docs/architecture.md b/docs/architecture.md index d4632b5..cf4440f 100644 --- a/docs/architecture.md +++ b/docs/architecture.md @@ -26,14 +26,40 @@ For example, if the PPU is unable to keep up with the processing speed of the ST To ensure a smooth and enjoyable gaming experience, it is essential to address any potential issues with the PPU and communication between the STM32 and PPU during the development process. This may involve optimizing the code for both components, adjusting the communication protocol, or adding buffer systems to prevent lag or synchronization issues. -### architecture ( top level) +# architecture ( top level) ![Top level architecture](../assets/TopLevel.PNG.); - - - -### design document (mid-low level) - +## STM32 +### game engine +### user input +### PPU communication +### APU communication +### level editing pipeline + +## FPGA (PPU) +### PPU +### SPI +### APU + +## Screen +### VGA + + +# design document (mid-low level) +## STM32 +### game engine +### user input +### PPU communication +### APU communication +### level editing pipeline + +## FPGA (PPU) +### PPU +### SPI +### APU + +## Screen +### VGA # General system architecture ![Top-down system architecture diagram](../assets/architecture-level-1.svg) -- cgit v1.2.3 From 51ee4672d5f2f734eb40f4312a2aefd2f8c6dc03 Mon Sep 17 00:00:00 2001 From: BjornMartens <113104306+BjornMartens@users.noreply.github.com> Date: Thu, 16 Mar 2023 09:58:34 +0100 Subject: Added top level stm --- docs/architecture.md | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'docs/architecture.md') diff --git a/docs/architecture.md b/docs/architecture.md index cf4440f..3b4a877 100644 --- a/docs/architecture.md +++ b/docs/architecture.md @@ -31,6 +31,17 @@ To ensure a smooth and enjoyable gaming experience, it is essential to address a ## STM32 ### game engine +The game engine is designed to run a 2D platformer game. The game engine has to manage all the different game states. To do this it will utilize a finite state machine (FSM). The game engine will also cover de input handling from the player, the game logic for example enemy handling or the powerup handling it will also send out data to the APU (Audio processing unit) so that the right sounds will be played. + +FSM is a useful tool for managing game states and transitions. The game has many different states such as: title screen, shop and gameplay state. Each state represents a particular configuration from the with different logic and variables. + +The state machine is designed to have the following states: +1. Initialization: The initialization state will be responsible for initializing all game-related variables and subsystems, including the FPGA-based picture processing unit. +2. Title Screen: The title screen state will display the game's title screen and wait for user input to start the game or access the options menu. +3. Options: The options state will allow the user to configure game settings, such as sound and graphics options. +4. Game Play: The game play state will be responsible for running the game logic and updating the game state. +5. Game Over: The game over state will display the game over screen and wait for user input to restart the game or return to the title screen. + ### user input ### PPU communication ### APU communication -- cgit v1.2.3