Stendhal Achievement Development: Difference between revisions

From Arianne
Jump to navigation Jump to search
Content deleted Content added
imported>Madmetzger
imported>Madmetzger
Line 50: Line 50:
*** <del>key = achievement name, value progress value?</del> statistics should be tracked for everything that might be checked for an achievement --[[User:Madmetzger|Madmetzger]] 07:20, 29 July 2010 (UTC)
*** <del>key = achievement name, value progress value?</del> statistics should be tracked for everything that might be checked for an achievement --[[User:Madmetzger|Madmetzger]] 07:20, 29 July 2010 (UTC)
*** add data recording that can be checked
*** add data recording that can be checked
* <del>find a way to conveniently add new achievements</del> using ChatConditions and the factories makes it easy to add new achievements
**** killed creatures already tracked
** <del>loading system for achievements like stendhal quest system?</del> AchievementNotifier loads achievements on initialization
**** number of finished quests already tracked
** <del>building block system using existing ChatConditions</del> Achievements use the ChatConditions for checking stuff
***** repeatable quests should all count the completions of a player
***** <del>missing counting: Elf Princess Quest</del> (more missing?)
**** looting items (not yet tracked)
**** putting items into bank (not yet tracked)
* find a way to conveniently add new achievements
** loading system for achievements like stendhal quest system?
** building block system using existing ChatConditions
*** <del>killed x creatures</del> already implemented
*** <del>killed x of y different creatures --> is extension of existing condition possible?</del>
*** collected x items
*** <del>finished x times a quest</del> already implemented
*** killed creature without a weapon
*** looted certain collection of items
*** <del>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</del> already implemented by categorizing achievements and checking only the right category at each event
*** <del>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</del> already implemented by categorizing achievements and checking only the right category at each event
==== Quest Achievements ====
* number of finished quests already tracked
* repeatable quests should all count the completions of a player
* <del>missing counting: Elf Princess Quest</del> (more missing?)
* <del>finished x times a quest</del> already implemented
==== Item Achievements ====
* looting items (not yet tracked)
* putting items into bank (not yet tracked)
* collected x items
* looted certain collection of items
==== Fighting Achievements ====
* <del>killed creatures</del> already tracked
* killed creature without a weapon
* <del>killed x creatures</del> already implemented
* <del>killed x of y different creatures --> is extension of existing condition possible?</del>
==== Zone Achievements ====
* for zone visit achievements, how to check them:
* for zone visit achievements, how to check them:
** <del>hardcoded list of zones to visit for the achievement</del> hardcoded zone name lists don't seem to be maintainable
** <del>hardcoded list of zones to visit for the achievement</del> hardcoded zone name lists don't seem to be maintainable
** exclude all zones including "house", "apartment"
** <del>exclude all zones including "house", "apartment"</del>
** zones starting with "int" are interiors, region is within zone name
** <del>zones starting with "int" are interiors, region is within zone name</del> zones have a method isInterior() to check
** zones starting with a number >-1 are above ground, region is within zone name
** <del>zones starting with a number >-1 are above ground, region is within zone name<del> exterior zones have a method getLevel()to check
** zones starting with a number <-1 are below ground, region is within zone name
** <del>zones starting with a number <-1 are below ground, region is within zone name</del> exterior zones have a method getLevel()to check
** use zone level attribute, area is in name/xml file, and add a flag to zone xml for accessibility to all players
** <del>use zone level attribute, area is in name/xml file, and add a flag to zone xml for accessibility to all players</del> implemented

Revision as of 15:49, 27 October 2010


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
  • Have a log about recently reached achievements on the website? (i.e. player has reached Junior Explorer achievement)
  • Have a audio notice when someone reaches an achievement?

Design Ideas

Database and Class Model

  • 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,
    base_score INTEGER,
    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)
)

Ingame tracking and checking

  • check if player has fulfilled an achievement
    • "polling" every x turns via TurnListener, but could be a bad idea as checking might be expensive approach discarded --Madmetzger 07:20, 29 July 2010 (UTC)
    • "telling" when to check, similar to tutorial events or when raising game events (we have possibly the type here)? approach discarded --Madmetzger 07:20, 29 July 2010 (UTC)
    • 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? statistics should be tracked for everything that might be checked for an achievement --Madmetzger 07:20, 29 July 2010 (UTC)
      • add data recording that can be checked
  • find a way to conveniently add new achievements using ChatConditions and the factories makes it easy to add new achievements
    • loading system for achievements like stendhal quest system? AchievementNotifier loads achievements on initialization
    • building block system using existing ChatConditions Achievements use the ChatConditions for checking stuff
      • 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 already implemented by categorizing achievements and checking only the right category at each event

Quest Achievements

  • number of finished quests already tracked
  • repeatable quests should all count the completions of a player
  • missing counting: Elf Princess Quest (more missing?)
  • finished x times a quest already implemented

Item Achievements

  • looting items (not yet tracked)
  • putting items into bank (not yet tracked)
  • collected x items
  • looted certain collection of items

Fighting Achievements

  • killed creatures already tracked
  • killed creature without a weapon
  • killed x creatures already implemented
  • killed x of y different creatures --> is extension of existing condition possible?

Zone Achievements

  • for zone visit achievements, how to check them:
    • hardcoded list of zones to visit for the achievement hardcoded zone name lists don't seem to be maintainable
    • exclude all zones including "house", "apartment"
    • zones starting with "int" are interiors, region is within zone name zones have a method isInterior() to check
    • zones starting with a number >-1 are above ground, region is within zone name exterior zones have a method getLevel()to check
    • zones starting with a number <-1 are below ground, region is within zone name exterior zones have a method getLevel()to check
    • use zone level attribute, area is in name/xml file, and add a flag to zone xml for accessibility to all players implemented