Kiosks: Difference between revisions

From OuroDev
(Created page with "== Schema == cohdb.dbo.Stats Three basic columns: ContainerId / SubId: Unique primary key to add multiple rows per character Name: numeric ID of entry in vars.attribute The...")
 
 
(9 intermediate revisions by the same user not shown)
Line 1: Line 1:
== Schema ==
[[File:Kiosk Model.png|thumb|Kiosk terminal in Atlas Park]]
Kiosks, or Community Information terminals, are an in-game leaderboard for the stat tracker system. There are kiosks scattered all around blueside maps, but it’s not likely to find them outside of that. They were eventually left non-functional for performance reasons.
[[File:Kiosk Leaderboard.png|thumb|In-game leaderboard window]]
<br />
 
==Schema==


cohdb.dbo.Stats
cohdb.dbo.Stats


Three basic columns:
Three basic columns:
ContainerId / SubId: Unique primary key to add multiple rows per character
Name: numeric ID of entry in vars.attribute


The remaining columns follow this format, “Category_Period,” e.g. General_Today, Kills_ThisMonth, Time_ThisWeek.
*ContainerId / SubId: Unique primary key to add multiple rows per character


Actions and events in MapServer increment or add to these columns.
*Name: numeric ID of entry in vars.attribute


== Process ==
The remaining columns follow this format, “Category_Period,” e.g. General_Today, Kills_ThisMonth, Time_Yesterday.


=== DBServer ===
Actions and events in MapServer increment or add to these columns.
1. DBServer loads vars.attribute


2. Each var name is read into a global stashtable. The name are lowercased for case-insensitivity.
==Process==


3. DBServer reads dbo.Stats and compiles a list of top ranks per unique Name in a valid time period.
===DBServer===


4. DBServer broadcasts top ranks periodically to all connected MapServers.
#DBServer loads vars.attribute
#Each var name is read into a global stashtable. The name are lowercased for case-insensitivity.*
#DBServer reads dbo.Stats and compiles a list of top stats per unique Name in a valid time period.
#DBServer regenerates, rotates, and broadcasts top stats periodically to all connected MapServers.


=== MapServer ===
<nowiki>*</nowiki>In merge request 205 this has been changed to load vars.attribute as-is
1. MapServer registers stat tables based off villain groups, zones, and common names — does not read vars.attribute. Names must be lowercased during this registration function to match DBServer broadcasts.


2. MapServer receives broadcasted stats and stores them in memory.
===MapServer===


3. MapServer records player statistics and flushes individual player’s updated stats to the database when the player is unloaded (zone transfer or logging out). DBServer reads the database and requires this data to be flushed to account for new stats.
#MapServer registers stat tables based off villain groups, zones, and common names — does not read vars.attribute. Names must match DBServer's broadcasts
#MapServer receives broadcasted stats and stores them in memory.
#MapServer records player statistics and flushes individual player’s updated stats to the database when the player is unloaded (zone transfer or logging out). DBServer reads the database and requires this data to be flushed to account for new stats.
#If a client opens a relevant kiosk and topic, it generates HTML and sends it to the client. MapServer regenerates and sends new HTML each time a topic is loaded.


4. If a client opens a relevant kiosk and topic, it generates HTML and sends it to the client. MapServer regenerates and sends new HTML each time a topic is loaded.
===Client===


=== Client ===
#Client renders HTML in uiSMFView.
1. Client renders HTML in uiSMFView.

Latest revision as of 10:33, 1 June 2021

Kiosk terminal in Atlas Park

Kiosks, or Community Information terminals, are an in-game leaderboard for the stat tracker system. There are kiosks scattered all around blueside maps, but it’s not likely to find them outside of that. They were eventually left non-functional for performance reasons.

In-game leaderboard window


Schema

cohdb.dbo.Stats

Three basic columns:

  • ContainerId / SubId: Unique primary key to add multiple rows per character
  • Name: numeric ID of entry in vars.attribute

The remaining columns follow this format, “Category_Period,” e.g. General_Today, Kills_ThisMonth, Time_Yesterday.

Actions and events in MapServer increment or add to these columns.

Process

DBServer

  1. DBServer loads vars.attribute
  2. Each var name is read into a global stashtable. The name are lowercased for case-insensitivity.*
  3. DBServer reads dbo.Stats and compiles a list of top stats per unique Name in a valid time period.
  4. DBServer regenerates, rotates, and broadcasts top stats periodically to all connected MapServers.

*In merge request 205 this has been changed to load vars.attribute as-is

MapServer

  1. MapServer registers stat tables based off villain groups, zones, and common names — does not read vars.attribute. Names must match DBServer's broadcasts
  2. MapServer receives broadcasted stats and stores them in memory.
  3. MapServer records player statistics and flushes individual player’s updated stats to the database when the player is unloaded (zone transfer or logging out). DBServer reads the database and requires this data to be flushed to account for new stats.
  4. If a client opens a relevant kiosk and topic, it generates HTML and sends it to the client. MapServer regenerates and sends new HTML each time a topic is loaded.

Client

  1. Client renders HTML in uiSMFView.