Development whiteboard: Difference between revisions

no edit summary
No edit summary
Line 280: Line 280:


=== Catalog microservice ===
=== Catalog microservice ===
This microservice contains the store, ownership and "physical" representation of the games.


==== Content ====
==== Content ====
Line 328: Line 329:
|If false, only visible to the creator (and moderators)
|If false, only visible to the creator (and moderators)
|false
|false
|-
|privacy*
|enum (public, friends, unlisted, private)
|Only applies to games(?)
Visibility of content on the platform.
|public
|-
|-
|type*
|type*
Line 340: Line 347:
|content
|content
|-
|-
|opensource*
|open_source*
|boolean
|boolean
|Content is open source - can be downloaded / reused
|Content is open source - can be downloaded / reused
|false
|-
|multiown*
|boolean
|Users can own multiple instances of this item
|false
|false
|-
|-
Line 363: Line 365:
|FK UUID
|FK UUID
|User id
|User id
|
|-
|created_at
|datetime
|
|
|-
|updated_at
|datetime
|
|
|}
{| class="wikitable"
|+Content revision
!Key
!Type
!Description
!Default
|-
|id*
|PK int 10
|Revision ID
|
|-
|content_id*
|FK int 10
|Content ID
|
|-
|user_id*
|FK UUID
|User ID
|
|
|-
|-
Line 390: Line 424:
|FK int 10
|FK int 10
|Content ID
|Content ID
|
|-
|revision_id*
|FK int 10
|Revision ID
|
|
|-
|-
Line 451: Line 490:
|FK int 10
|FK int 10
|Content ID
|Content ID
|
|-
|revision_id*
|FK int 10
|Revision ID
|
|
|-
|-
Line 520: Line 564:
|updated_at
|updated_at
|datetime
|datetime
|
|
|}
{| class="wikitable"
|+Game object
!Key
!Type
!Description
!Default
|-
|id*
|FK int 10
|Content ID
|
|-
|privacy*
|enum (public, friends, unlisted, private)
|
|private
|-
|
|
|
|
|-
|
|
|
|
|}
{| class="wikitable"
|+Character object
!Key
!Type
!Description
!Default
|-
|id*
|FK int 10
|Content ID
|
|-
|
|
|
|
|
|
Line 747: Line 747:
|-
|-
| colspan="4" |M2M relation with moderator action
| colspan="4" |M2M relation with moderator action
|}
=== Game microservice ===
{| class="wikitable"
|+Game
!Key
!Type
!Description
!Default
|-
|id*
|FK int 10
|Game ID, same as the Content ID
|
|-
|hosted*
|boolean
|If true, only uses self-hosted servers
|false
|-
|max_players*
|int
|Max player count
|16
|}
{| class="wikitable"
|+Game supports
!Key
!Type
!Description
!Default
|-
|id*
|PK int 10
|Relation ID
|
|-
|game_id*
|FK int 10
|Game ID
|
|-
|flag*
|enum
|Support flag:
* character
* individual character features
* chat
|
|-
|enabled*
|boolean
|Flag is enabled
|true
|-
|content_id
|FK int 10
|Supported content ID (character)
|
|}
{| class="wikitable"
|+Hosted game server
!Key
!Type
!Description
!Default
|-
|id*
|PK int 10
|Relation ID
|
|-
|token*
|text
|Server token
|
|-
|user_id*
|FK UUID
|Owner user ID
|
|-
|game_id
|FK int 10
|Currently hosted game ID
|
|-
|socket_host
|text
|Socket host
|
|-
|socket_port
|int
|Socket port
|
|-
|api_host
|text
|API host
|
|-
|api_port
|int
|API port
|443
|-
|country
|varchar 255
|Country of server
|
|-
|provision
|boolean
|If true, can be provisioned by session service
|false
|-
|quarantine
|boolean
|If true, cannot be joined to. Set by moderators.
|false
|-
|active
|boolean
|If false, server is not used for new sessions
|
|-
|server_info
|json
|Server-uploaded information about itself
|
|-
|ping
|int
|Last ping in milliseconds
|
|-
|created_at
|datetime
|
|
|-
|updated_at
|datetime
|
|
|-
|pinged_at
|datetime
|Server keepalive ping
|
|-
| colspan="4" |M2M relation with games for multi-game support
|}
==== Provisioned game server ====
{| class="wikitable"
!Key
!Type
!Description
!Default
|-
|id*
|PK int 10
|Relation ID
|
|-
|token*
|text
|Server token
|
|-
|game_id
|FK int 10
|Currently running game ID
|
|-
|socket_host
|text
|Socket host
|
|-
|socket_port
|int
|Socket port
|
|-
|api_host
|text
|API host
|
|-
|api_port
|int
|API port
|443
|-
|country
|varchar 255
|Country of server
|
|-
|active
|boolean
|If false, server is not used for new sessions
|
|-
|server_info
|json
|Server-uploaded information about itself
|
|-
|ping
|int
|Last ping in milliseconds
|
|-
|created_by
|FK UUID
|User id
|
|-
|updated_by
|FK UUID
|User id
|
|-
|created_at
|datetime
|
|
|-
|updated_at
|datetime
|
|
|-
|pinged_at
|datetime
|Server keepalive ping
|
|}
=== Session microservice ===
==== Session ====
Created when player presses Play. Server gets token on connection. Server validates token against service and receives character.
{| class="wikitable"
|+
!Key
!Type
!Description
!Default
|-
|id*
|PK int 10
|Relation ID
|
|-
|token*
|text
|Session token
|
|-
|user_id*
|FK UUID
|Owner user ID
|
|-
|character_id*
|FK int 10
|Character ID
|
|-
|game_id*
|FK int 10
|Played game ID
|
|-
|server_id*
|FK int 10
|Server ID
|
|-
|server_type*
|enum (host, provision)
|Server type
|provision
|-
|created_at*
|datetime
|
|
|-
|joined_at
|datetime
|Set when the server validates the token
|
|-
|pinged_at
|datetime
|Session keepalive ping
|
|}
|}