Stendhal Achievement Development
Collecting Ideas
- collect more achievement ideas and nice titles at Stendhal Achievement Ideas
- gives hints for further design decisions
- can help structuring achievements into categories
- should fulfilling an achievement be rewarded?
Client and Website
- Should achievements be visible within the game? (low prio)
- look action on player could be extended by a title based on the amount of fullfilled achievements
- Website should be extended with a hall of fame section on achievements
- calculate a score on difficulty of an achievement (killing x rats gets less points than reaching max xp for example)
- basic score for each achievement
- actual score for each reached achievement = basic score / number of players having reached that achievement
- display medals on character pages; different colours or design in relation to the calculate point
- calculate a score on difficulty of an achievement (killing x rats gets less points than reaching max xp for example)
- Have a log about recently reached achievements on the website? (i.e. player has reached Junior Explorer achievement)
Design Ideas
- database table(s) to display achievements on website
- table for achievment types? maybe not needed, strings could be applied in the reached achievements table
- table for player has reached achievement
- possible class model draft and a corresponding table draft
CREATE TABLE achievement IF NOT EXISTS (
id INTEGER AUTO_INCREMENT NOT NULL,
identifier VARCHAR,
title VARCHAR,
category VARCHAR,
description VARCHAR,
PRIMARY KEY(id)
)
CREATE TABLE reached_achievement IF NOT EXISTS (
id INTEGER AUTO_INCREMENT NOT NULL,
charname VARCHAR,
timedate TIMESTAMP default CURRENT_TIMESTAMP,
achievement_id INTEGER,
PRIMARY KEY(id)
)
- check if player has fulfilled an achievement
- "polling" every x turns via TurnListener, but could be a bad idea as checking might be expensive
- "telling" when to check, similar to tutorial events or when raising game events (we have possibly the type here)?
- store reached achievements as string set in player object: load reached achievements from database on login into a volatile set in player object
- how to store progress for a certain achievement?
- using a map?
- key = achievement name, value progress value?
- find a way to conveniently add new achievements
- loading system for achievements like stendhal quest system?
- building block system similar to ChatConditions?
- killed x creatures
- killed x of y different creatures
- collected x items
- finished x quests
- killed creature without a weapon
- looted certain collection of items
- categorized by type of event to determine what to check, i.e. killed x creatures of type y condition should only be checked when having killed a creature but not on looting an item
