Backlogged logo

BackLogged UniSim - Cohort 3 Group 10

UniSim background

Class Diagrams

Final Version

Final Version

Version 1

Version 1

Version 2

Version 2

Version 3

Version 3

Component Diagrams

Component Diagram

Version 1

Component Diagram UML code

@startuml
package "User Interface" as ui {
  [TitleScreen] as ts
  [MapScreen] as ms
  [SettingsScreen] as ss
  [GameOverScreen] as go
}
package "Persistent Objects" as po {
  [Soundtrack] as st
  [GamePreferences] as gp
  [Constants] as cs
  [InGameTimer] as it
}
package "Buildings" as bd {
  [BuildingManager] as bm
  [BuildingRenderer] as br
  [BuildingFactory] as bf
  [BuildingPlacementManager] as bp
}
interface "Preferences profile" as pp
interface "Soundtrack file" as sf    
ui ..> gp : get preferences
ss ..> gp : set preferences
st ..> gp : get volume
gp --> pp : load/store
ui ..> st : play
go ..> st : pause
ms ..> it : update time
ui ..> cs : get constants
ms ..> bm : choose buildings
ms ..> br : render buildings
st --> sf : stream
bm ..> bp : place buildings
bm ..> bf : create buildings
br ..> bp : get placed buildings
@enduml
                

Concept Art

Logo Ideas

Logo Ideas

Logo V1

Logo V1

Logo V2

Logo V2

Map V1

Map V1

Map V2

Map V2

Title Screen V1

Title Screen V1

TitleScreenV2

Title Screen V2

Gantt Diagrams

Gantt Diagram

Gantt Diagram

Gantt Diagram UML code

@startgantt

Project starts 2024-10-03

-- Risk assessment --

[Risk Assessment] as [a0] requires 14 days and is coloured in Coral

-- Requirements --

[Requirements elicitation] as [r0] requires 14 days and is coloured in Green

[Questions write up] as [r1]  requires 3 days and is coloured in GreenYellow

[Client interview] as [r2] requires 1 day and is coloured in GreenYellow

[User requirements table] as [r3] requires 4 days and is coloured in GreenYellow

[System requirements table] as [r4] requires 4 days and is coloured in GreenYellow

[Additional client consultations] as [r5] requires 1 day and is coloured in GreenYellow

[Final requirements table] as [r6] requires 1 day and is coloured in GreenYellow

-- Method Selection and Planning --

[Method Selection and Planning] as [m0] requires 7 days and starts D+14 and is coloured in MediumOrchid

-- Implementation --

[Prototype development] as [i0] requires 18 days and starts D+14 and is coloured in SteelBlue

[UI Design] as [i1] requires 10 days and starts D+14 and is coloured in LightBlue

[Game logic design] as [i2] requires 5 days and starts D+16 and is coloured in LightBlue

[Prototype design] as [i3] requires 8 days and starts at [i2]'s end and is coloured in LightBlue

[Prototype testing] as [i4] requires 2 days and starts at [i3]'s end and is coloured in LightBlue

[Final prototype] happens on 2024-11-03

[r1] starts at [r0]'s start

[r2] starts at [r1]'s end

[r3] starts at [r2]'s end

[r4] starts at [r3]'s end

[r5] starts at [r4]'s end

[r6] starts at [r5]'s end

@endgantt
                

Meeting Notes

Meeting Notes

Meeting Notes.pdf

Sequence Diagrams

Sequence Diagram

Sequence Diagram

Sequence Diagram UML code

@startuml
!pragma teoz true
actor User
participant Main
participant TitleScreen
participant MapScreen
participant SettingsScreen
participant GameOverScreen
participant BuildingManager
participant InGameTimer
participant GamePreferences
participant Soundtrack
User -> Main: start game
activate Main
activate Soundtrack
activate InGameTimer
activate GamePreferences
Main -> Soundtrack : play()
Soundtrack <-> GamePreferences : getMusicVolume()
Soundtrack -> User : play soundtrack
Main -> TitleScreen : new TitleScreen()
activate TitleScreen
TitleScreen -> User : show()
User -> TitleScreen : Play
activate MapScreen
& TitleScreen -> MapScreen : new MapScreen()
& MapScreen -> BuildingManager : new BuildingManager()
activate BuildingManager
deactivate TitleScreen
MapScreen -> User : show()
User -> MapScreen : Pause
& MapScreen -> InGameTimer : userStopTime()
MapScreen -> MapScreen : change Pause icon to Resume icon
User -> MapScreen : choose building
& MapScreen -> BuildingManager : tryPlaceBuilding()
BuildingManager -> User : location choice mode
User -> BuildingManager : choose location
BuildingManager -> User : render building
User -> MapScreen : Resume
& MapScreen -> InGameTimer : userStartTime()
MapScreen -> MapScreen : change Resume icon to Pause icon
User -> MapScreen : Settings
& MapScreen -> InGameTimer :  systemStopTime()
MapScreen -> SettingsScreen : new SettingsScreen()
activate SettingsScreen
SettingsScreen -> User : show()
User -> SettingsScreen : Change music volume
& SettingsScreen -> GamePreferences : setMusicVolume()
SettingsScreen -> Soundtrack: play()
Soundtrack -> GamePreferences : getMusicVolume()
Soundtrack -> User : play soundtrack with new volume
User -> SettingsScreen : Back
SettingsScreen -> MapScreen : setScreen(previousScreen)
deactivate SettingsScreen
...3 minutes later...
InGameTimer -> MapScreen : time expired
MapScreen -> GameOverScreen : new GameOverScreen()
activate GameOverScreen
deactivate MapScreen
deactivate BuildingManager
GameOverScreen -> Soundtrack : pause()
Soundtrack -> User : pause soundtrack
GameOverScreen -> User : show()
User -> GameOverScreen : Quit
GameOverScreen -> Main : exit()
deactivate InGameTimer
deactivate GamePreferences
deactivate GameOverScreen
deactivate Soundtrack
Main -> User : close game
deactivate Main
@enduml
                

State Diagrams

State Diagram

State Diagram

State Diagram UML code

@startuml
hide empty description
[*] --> MainMenu
MainMenu --> Map : Play button
MainMenu --> SettingsMenu : Settings button
MainMenu --> [*] : Quit button
Map --> PausedMap : Pause button
Map --> BuildingSelection : choose a building
Map --> SettingsMenu : Settings button
Map --> GameOverMenu : timer expired
SettingsMenu --> SettingsMenu : change settings
SettingsMenu --> MainMenu : Back button
SettingsMenu --> Map : Back button
SettingsMenu --> PausedMap: Back button
PausedMap --> Map : Resume button
PausedMap --> BuildingSelection : choose a building
PausedMap --> SettingsMenu : Settings button
BuildingSelection --> Map: place a building
BuildingSelection --> PausedMap : place a building
GameOverMenu --> Map: Try Again button
GameOverMenu --> [*]: Exit button
@enduml
                

Use Cases

Use Case

Use Cases.pdf