The database layout is getting finished :) So here it comes:
Category:
The category allows us to build the achievement sidemenu, grouping achievements. Submenus are supported.
Achievement:
Achievements are tied to a category in which they get displayed. They may have a parent achievements so they won't show up until the parent is completed.
Also achievements may be tied to a race, cult or civilization (eg. Reach 100 fame with XX while being Matis/Karavan aligned)
Tasks:
Tasks are considered to be "subachievements". This allows us to define various "levels" of an achievement (eg: Obatin 1,000/10,000/100,000/.... dappers). Achievements like "Break a pick" just have one task.
Objectives:
Since tasks are only a "container", they do not define what has to be done. Objectives are tied to tasks and are used to define the objectives needed to complete a task. The display options for an objective are "simple" (just text), "meta" (tied to another achievement) and "value" (tied to a value that's shown on a progress bar).
Atoms:
Atoms are invisible to the player but the most essential part of the achievements system. Each objective may have 1 to infinite atoms which hold the information needed by the achievement tracker. Atoms may be granted of denied, either progressing an achievement or preventing further progress based on conditions. This may be used by eg. boss scripts to handle complex achievements. Anyhow, atoms basically define the "data source", the "expected value" and "which value" (eg.: XMLapi;>10000;character:money). This part is still WIP.
Tracker:
For now I defined four tables to be filled by the tracker. They store the character's progress with the achievements. The "player_valuecache" can be used to compare changes of a value over time.

No comments:
Post a Comment