{"id":319,"date":"2025-07-07T11:57:30","date_gmt":"2025-07-07T01:57:30","guid":{"rendered":"https:\/\/nonlinearexperience.com\/?p=319"},"modified":"2025-09-03T17:51:40","modified_gmt":"2025-09-03T07:51:40","slug":"progression-and-achievement-system","status":"publish","type":"post","link":"https:\/\/nonlinearexperience.com\/index.php\/2025\/07\/07\/progression-and-achievement-system\/","title":{"rendered":"Progression and achievement system"},"content":{"rendered":"<h1 class=\"wp-block-post-title\">Progression and achievement system<\/h1>\n\n\n<p class=\"wp-block-paragraph\">Requirements:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>track progress for individual players<\/li>\n\n\n\n<li>mini games added over time<\/li>\n\n\n\n<li>progress of the mini games will be tracked for individual players<\/li>\n\n\n\n<li>incorporate the progress and completion of the mini games into the main game, as well as other mini games<\/li>\n\n\n\n<li>an efficient, extensible solution<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">mini-games and core have inividual identifiers<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">local logic for success tracking<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">player progress schema<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Observer pattern could be a good choice<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Story progression &#8211; flags and tags &#8211; empty tags in char thing &#8211; start off set to no&#8230; add more? Work backwards from goal &#8211; knowing the goal\/objective &#8211; usua\u013aly stated at the start of game &#8211; this is the ebd of the dependency chain &#8211; e.g. what the winning state looks like&#8230;The whole lamp thing &#8211; need lamp to see in the dungeon<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That question that i asked about how to design it &#8211; add that in&#8230;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Achievement system &#8211; using custom events for decoupling amd extensibility<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Schema validation<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/github.com\/colinhacks\/zod\">https:\/\/github.com\/colinhacks\/zod<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Resources<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/www.gamedeveloper.com\/design\/designing-and-building-a-robust-comprehensive-achievement-system\">https:\/\/www.gamedeveloper.com\/design\/designing-and-building-a-robust-comprehensive-achievement-system<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/gamedev.stackexchange.com\/questions\/139136\/implementing-achievement-system-in-javascript\">https:\/\/gamedev.stackexchange.com\/questions\/139136\/implementing-achievement-system-in-javascript<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/medium.com\/@joshua.wiscaver\/how-to-create-a-basic-achievement-system-in-unity-a9aabe4ccd70\">https:\/\/medium.com\/@joshua.wiscaver\/how-to-create-a-basic-achievement-system-in-unity-a9aabe4ccd70<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Requirements: mini-games and core have inividual identifiers local logic for success tracking player progress schema Observer pattern could be a good choice Story progression &#8211; flags and tags &#8211; empty tags in char thing &#8211; start off set to no&#8230; add more? Work backwards from goal &#8211; knowing the goal\/objective &#8211; usua\u013aly stated at the [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"wp-custom-template-nlx-the-knowledge-page","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[],"class_list":["post-319","post","type-post","status-publish","format-standard","hentry","category-the-knowledge"],"_links":{"self":[{"href":"https:\/\/nonlinearexperience.com\/index.php\/wp-json\/wp\/v2\/posts\/319","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nonlinearexperience.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nonlinearexperience.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nonlinearexperience.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/nonlinearexperience.com\/index.php\/wp-json\/wp\/v2\/comments?post=319"}],"version-history":[{"count":5,"href":"https:\/\/nonlinearexperience.com\/index.php\/wp-json\/wp\/v2\/posts\/319\/revisions"}],"predecessor-version":[{"id":593,"href":"https:\/\/nonlinearexperience.com\/index.php\/wp-json\/wp\/v2\/posts\/319\/revisions\/593"}],"wp:attachment":[{"href":"https:\/\/nonlinearexperience.com\/index.php\/wp-json\/wp\/v2\/media?parent=319"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nonlinearexperience.com\/index.php\/wp-json\/wp\/v2\/categories?post=319"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nonlinearexperience.com\/index.php\/wp-json\/wp\/v2\/tags?post=319"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}