Skip to content

System Architecture Documentation

dolerich-hirnfiedler edited this page Dec 5, 2023 · 45 revisions

1. Introduction and Goals

Underwatch

Underwatch is a roguelike adventure that immerses players in an enigmatic underworld. Here, they take on the role of fearless explorers, armed with a diverse and imaginative array of weapons. As they navigate through procedurally generated environments, they must confront relentless bullet storms, vanquish formidable adversaries, and challenge one-of-a-kind bosses.

1.1 Requirements Overview

Underwatch consists of three parts:

  1. The game
  2. A database storing individual high scores
  3. A website to show the high scores archived by the players

1.2 Quality Goals

Goal Description
1. User Engagement The users should be engaged while playing the game
2. Self-descriptiveness The game should be easy to understand with low efforts
3. Installability The game should run on all major platforms (windows, linux, mac)

1.3 Stakeholders

Explicit overview of stakeholders of the system, i.e. all person, roles or organizations that

  • should know the architecture
  • have to be convinced of the architecture
  • have to work with the architecture or with code
  • need the documentation of the architecture for their work
  • have to come up with decisions about the system or its development
Stakeholder Group Desire
Students Developers Implement the Game
Miss Li Investor Finished good project according to the software engineering course

1.3.1 Personas

1.3.1.1 Persona 1 "Casual Gamer"

  • Persona Name: Sarah Miller
  • Age: 28
  • Gender: Female
  • Location: Los Angeles, California
  • Occupation: Graphic Designer

Background: Sarah is a graphic designer with a passion for video games. She spends long hours in front of her computer creating visual designs, and she enjoys gaming as a way to relax and unwind. She's a fan of hack-and-slash games and appreciates good design in games.

Goals and Needs:

  • Primary Goal: To find a visually captivating and engaging hack-and-slash game that offers a simple gaming experience.
  • Needs: Sarah is looking for a simple designed game with. She values a smooth and responsive gaming experience.

Demographics:

  • Age: 28
  • Gender: Female
  • Location: Los Angeles, California
  • Marital Status: Single
  • Education: Bachelor's degree in Graphic Design

Behavior and Preferences:

  • Preferred Communication Channels: Social Media, Gaming Forums
  • Technology Proficiency: Tech-savvy
  • Hobbies and Interests: Graphic design, gaming, art, reading fantasy novels
  • Motivations: Seeking an escape from her daily routine, experiencing immersive worlds, and enjoying artistic game design.
  • Frustrations: Slow or unresponsive gameplay, poorly designed games.

Usage of Your Product/Service:

  • How they use your product/service: Sarah plays the game during her free time, often in the evenings or on weekends.
  • Frequency of use: She plays the game regularly, around 10-15 hours per week.
  • Key Pain Points: Any lag or technical issues within the game and poorly designed graphics.

Scenarios:

  1. Sarah starts a new game and is looking for a visually appealing and challenging hack-and-slash experience.
  2. She encounters a difficult battle and seeks strategies.
  3. After completing the game, she provides feedback on the gameplay and game design.

Goals with Your Product/Service:

  • Sarah hopes to find a game that provides an exciting and immersive hack-and-slash experience with well-designed graphics.

Feedback and Suggestions:

  • Sarah might provide feedback on game mechanics and game design.
  • She could suggest improvements for better user engagement and artistic design elements.

This user persona, Sarah Miller, represents a potential player of your 2D, top-down, hack-and-slash game. Understanding Sarah's goals, needs, and preferences will help you design a game that resonates with players like her.

1.3.1.2 Persona 2 "Streamer"

  • Name: Alex "ShadowHunter"
  • Age: 25
  • Gender: Male
  • Location: Chicago, Illinois
  • Occupation: Professional Game Streamer

Background

  • Background: Alex, known as "ShadowHunter" in the gaming community, is a dedicated and skilled game streamer specializing in roguelike adventures. He has built a substantial following over the years, thanks to his in-depth knowledge of the genre and his engaging on-screen personality.

Goals and Needs

  • Goals: Alex's primary goal is to entertain and educate his audience by delivering top-tier Underwatch gameplay, expert tips, and strategies. He also aims to expand his streaming channel's reach and foster collaborations with fellow gaming content creators.

  • Needs: Alex requires an active and supportive gaming community, up-to-date information about Underwatch, and a reliable gaming setup to ensure high-quality streams.

Demographics

  • Age: 25
  • Gender: Male
  • Location: Chicago, Illinois
  • Marital Status: Single
  • Education: Bachelor's Degree in Computer Science

Behavior and Preferences

  • Preferred Communication Channels: Twitch for streaming, Discord for community interaction, Twitter for updates, and YouTube for posting highlights.

  • Technology Proficiency: Tech-savvy; well-versed in streaming software, gaming peripherals, and PC hardware.

  • Hobbies and Interests: Gaming (particularly roguelike and indie games), game development, cosplay, and participation in gaming conventions.

  • Motivations: Alex is motivated by his passion for gaming and his desire to build a strong and supportive gaming community. He also seeks opportunities for sponsorships and partnerships within the gaming industry.

  • Frustrations: Unreliable internet connections, technical issues during streams, and dealing with toxic individuals in his audience or the gaming community.

Usage of Your Product/Service

  • How they use our product/service: Alex employs Underwatch as the primary game for his streaming content. He showcases his gameplay, explores various character builds, and interacts with his audience while discussing strategies and lore within the game.

  • Frequency of use: He streams Underwatch at least four days a week, with each session lasting 3-4 hours.

  • Key Pain Points: Alex occasionally encounters issues with server stability, which can disrupt his streams. He also seeks constant updates and patches for the game to keep his content fresh and engaging.

Additional Information

  • Quotes:

    • "Underwatch is not just a game for me; it's an adventure, and I love sharing that adventure with my audience."
    • "I'm always on the lookout for new game mechanics and hidden secrets in Underwatch to share with my viewers."
  • Image: [Insert Image of Alex "ShadowHunter" - A confident, tech-savvy game streamer with a dynamic and energetic presence.]

Scenarios

  • Alex will play Underwatch live on his Twitch channel, engaging with his viewers, sharing tips and strategies, and discussing the latest updates and developments in the game.

  • He may host special events or challenges for his audience, like speed runs or viewer-submitted character builds in Underwatch.

  • Alex could participate in community tournaments or collaborations with other streamers centered around Underwatch.

Goals with Our Product/Service

  • Alex aims to keep his Underwatch streams entertaining and informative by exploring new content and sharing in-depth guides and strategies. He hopes to maintain a close connection with his viewers, providing them with the latest news and updates about the game.

Feedback and Suggestions

  • Alex may provide feedback on game balance, feature requests, or bug reports related to Underwatch, as his audience often identifies issues while watching his streams. He may also suggest ways to improve the community engagement features within the game.

1.3.1.3 Persona 3 "Professional Gamer"

  • Name: Jimmy Catch
  • Age: 12
  • Gender: male
  • Location: Sweden
  • Occupation: Student

Background

  • Background: Jimmy is a professional video gamer. He likes rapid, fast paced action games which have a simple graphic.

Goals and Needs

  • Goals: He wants to practice his aim and warm up before competitive play.
  • Needs: A quick to learn, hard to master mechanical game.

Behaviour and Preferences

  • Preferred Communication Channels: Social Media, rarely mail
  • Technology Proficiency: Tech-savvy
  • Hobbies and Interests: video gaming
  • Motivations: getting better competitively
  • Frustrations: control lock and forced cutscenes

Usage of Your Product/Service

  • How they use our product/service: They use the game on a casual basis to practice their aim as well as an easy way to warm up
  • Frequency of use: They will use the game on a daily basis with the average session time being around 30min to 1h
  • Key Pain Points: Quick start up times, rapid gameplay, workable visuals

1.3.1.4 Persona 4 "Laptop Gamer"

  • Name: Michael Hoffmann
  • Age: 20
  • Gender: Male
  • Location: Austria
  • Occupation: Student

Background:

  • Background: Michael is a Student at a University in Austria. He just uses his Laptop to play a few games in th break or while beeing in the train. Therefore his laptop has just low computing power. He also has no num-pad and cannot allways use is mouse.

Goals and Needs:

  • Goals: He just want to have a bit of fun and games that doesn't require a lot of time to have progress.
  • Needs: Needs a simple game that runs on a laptop, doesn't need a num-pad.

Behaviour and Preferences

  • Preferred Communication Channels: Social Media, Messanger
  • Hobbies and Interests: video gaming, sports, ...
  • Motivations: get some distaction
  • Frustrations: no changes in the gameplay

Usage of Your Product/Service

  • How they use our product/service: They use the game on a casual basis to get distraction
  • Frequency of use: They will use the game on a daily basis (except the weekend) with the average session time being around 30min to 1h
  • Key Pain Points: Easy to lern, distracting, entertaining

2. Constraints

  1. Deadline until the end of the 4. semester
  2. Underwatch shall be platform independent
  3. Installable as an application.

3. Context and Scope

3.1 Business Context

3.1.1 Website Context

UseCase-diagram

3.1.2 Game Context

ucd_001

3.2 Technical Context

System scope and context - as the name suggests - delimits your system (i.e. your scope) from all its communication partners (neighboring systems and users, i.e. the context of your system). It thereby specifies the external interfaces.

If necessary, differentiate the business context (domain specific inputs and outputs) from the technical context (channels, protocols, hardware).

system_and_scope drawio

Technical interfaces (channels and transmission media) linking your system to its environment. In addition a mapping of domain specific input/output to the channels, i.e. an explanation with I/O uses which channel.

4. Solution Strategy

There are three parts to consider, when developing the Underwatch game system.

  1. The game engine: We decideded to use the Java game library libgdx https://libgdx.com/

  2. The backend technology: We will use Java and Spring Boot for our backend and as our database we will use PostgreSQL as our database technology

  3. The frontend framework: We will use React https://react.dev/ to build the website containing the high scores and a frontpage in order to advertise Underwatch

5. Building Block View

5.1 White Box Overall System

6. Runtime View

6.1 Player wants to purchase an Item

a_dg_001

sequence_diagram_for_shopping_item drawio

6.2 Player Shoots a weapon

a_dg_002

6.3 Player wants to see high scores on website

Activity-diagram_2

6.3 Player wants to filter high scores on website

korregiertmithintergrund drawio

6.4 Player enters highscore after playing the game

player-sends-highscore

7. Deployment view

7.1 Infrastructure Level 1

7.1.1 <Infrastructure element 1>

8. Crosscutting Concepts

This section describes overall, principal regulations and solution ideas that are relevant in multiple parts (→ cross-cutting) of your system. Such concepts are often related to multiple building blocks. They include many different topics, such as

9. Architecture Decisions

ADR'S have the following form:

9.1 <ADR 1>

Date Title Context Decision Status Consequences

10. Quality Requirements

For our quality requirements we will use the ISO 25010 Product Quality standard. For more informations regarding this standard you can visit the site https://iso25000.com/index.php/en/iso-25000-standards/iso-25010 .This section contains all quality requirements as quality tree with scenarios. The most important ones have already been described in section 1.2. (quality goals)

Screenshot 2023-10-18 at 14 38 01

10.1 Quality Requirements

From the quality requirements mentioned above. For our project we have identified the following as most important for the success of the project iso25010

10.2 Quality Scenarios

We found the following usecases for our project:

Who Event Influence Condition Action Measurement
Developer Add new Weapon Code Development-time Weapon is equipable and usable in game In 3 hours
User Download the Game System Runtime User can play the game 2 min
User want to change keybindings System Normal Operation keybinds are changed max 3 interacations to get to change keybindings screen
play tester integration testing System Development finish the game content in 1 hour
designer add new asset Code Design time new asset is on latest main branch 2 hours
user i want to see a history of high-scores System Normal Operation user can see highscores latency of 0.5 seconds
user wants to see informations for the game System Normal operation user can see the wiki entry at most 5 interactions with the website
developer update game data data within the system Development new version release CI passes is
user filter website highscores for different game versions System Normal Operation user can see highscorers latency of 0.5 sec
developer update the wiki code Development time the wiki entry is updated for the newest version 1 hour

11. Risks and Technical Debt

A list of identified technical risks or technical debts, ordered by priority Important. Risks should be specific for the project, and not things, that always are a risk for example: Developer is sick. This is a general risk for every project

12. Glossary

a table of words with specific meaning in the project