{"id":279,"date":"2025-07-01T15:38:57","date_gmt":"2025-07-01T05:38:57","guid":{"rendered":"https:\/\/nonlinearexperience.com\/?p=279"},"modified":"2025-07-07T15:32:11","modified_gmt":"2025-07-07T05:32:11","slug":"the-knowledge-guiding-principles-2","status":"publish","type":"post","link":"https:\/\/nonlinearexperience.com\/index.php\/2025\/07\/01\/the-knowledge-guiding-principles-2\/","title":{"rendered":"Guiding principles"},"content":{"rendered":"<h1 class=\"wp-block-post-title\">Guiding principles<\/h1>\n\n\n<ul class=\"wp-block-list\">\n<li>A collection of algorithms and approaches to 2d game design and development<\/li>\n\n\n\n<li>I should probably keep doing some tutorials and trying out different approaches and then document them in here. There are many ways to achieve the same thing<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Other places that have lots of good info:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>http:\/\/www-cs-students.stanford.edu\/~amitp\/gameprog.html<\/li>\n\n\n\n<li>https:\/\/heyjavascript.com\/roguelike-game-programming-and-development-in-javascript\/<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Guiding principles<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>use as little code as possible to get the job done<\/li>\n\n\n\n<li>do as little processing as possible<\/li>\n\n\n\n<li>reuse what you can as much as possible &#8211; assets, loaded data, results of calculations etc. (discard only what is necessary to achieve principle 1 &amp; 2)<\/li>\n\n\n\n<li>&#8220;it\u2019s easier to make a fun game fast than it is to make a fast game fun&#8221; (Nystrom, 2014)<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">I think what I am looking for is an APPROACH, rather than an engine\u2026<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The approach, for example, could be:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>list out the core functionality\n<ul class=\"wp-block-list\">\n<li>starting conditions &#8211;&nbsp;<\/li>\n\n\n\n<li>winning conditions &#8211; there is no end, just continue to increase score<\/li>\n\n\n\n<li>losing conditions &#8211; getting caught<\/li>\n\n\n\n<li>player controls<\/li>\n\n\n\n<li>how do turns work &#8211; realtime\/turn-based &#8211; what are the timeframes?<\/li>\n\n\n\n<li>what are the variables and changeable bits?<\/li>\n\n\n\n<li>what are the static elements? &#8211; the map\/game board<\/li>\n\n\n\n<li>what are the immutable elements? &#8211; trees\/rocks\/ground<\/li>\n\n\n\n<li>what are the mutable elements? &#8211; supplies\/equipment<\/li>\n\n\n\n<li>what are the dynamic elements? &#8211; the hunters &#8211; the player &#8211; events such as the weather<\/li>\n\n\n\n<li>what happens in the game loop<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>mock up and design the UI\/what it looks like\n<ul class=\"wp-block-list\">\n<li>dimensions<\/li>\n\n\n\n<li><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>break down the graphics<\/li>\n\n\n\n<li>code up the core\n<ul class=\"wp-block-list\">\n<li>focus on the top 2 or 3 features and get them happening FAST<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">when coding, it is LIKELY that it should have the following:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>a game loop (play\/update)\n<ul class=\"wp-block-list\">\n<li>&#8216;active&#8217; or<\/li>\n\n\n\n<li>&#8216;turn-based&#8217; or<\/li>\n\n\n\n<li>a mix for different sections (an example is Chrono Trigger)<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>a means to load the assets (load\/preload)<\/li>\n\n\n\n<li>a means to set up the game (setup\/create)<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">It was reading<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Selecting solutions<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">What do you need it to do? How much data does it need? Is that data already available, or available in a different form that can then be adapted?<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">References<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Nystrom, R. (2014). Architecture, Performance, and Games \u00b7 Introduction \u00b7 Game Programming Patterns. https:\/\/gameprogrammingpatterns.com\/architecture-performance-and-games.html<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Open chars<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/silveiraneto.net\/2010\/05\/19\/openpixels-%E2%80%93-chars\/\">https:\/\/silveiraneto.net\/2010\/05\/19\/openpixels-%E2%80%93-chars\/<\/a>Open in gimp &#8211; <a href=\"http:\/\/silveiraneto.net\/downloads\/open_chars.xcf\">http:\/\/silveiraneto.net\/downloads\/open_chars.xcf<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Docs to include<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>APESHIP<\/li>\n\n\n\n<li>Game Design Challenges<\/li>\n\n\n\n<li>Phaser<\/li>\n\n\n\n<li>Game analysis &#8211; Zelda &#8211; A Link To The Past<\/li>\n\n\n\n<li>Overworld Overload: An Analysis of Link to the Past\u2019s Light World, Part 1<\/li>\n\n\n\n<li>PTTLA<\/li>\n\n\n\n<li>game design<\/li>\n\n\n\n<li><a href=\"https:\/\/docs.google.com\/spreadsheets\/u\/0\/d\/1Z2oqTydFfanMDEkQxY9dRN1WU8dw68tJh3szTZs-4L8\/edit\">undertow &#8211; where the bits fit<\/a><\/li>\n\n\n\n<li>the utone <em>how to<\/em> booky <a href=\"https:\/\/docs.google.com\/document\/u\/0\/d\/1eupVIA4boApYZuqrdD8nGPi7re4DYUISivFw3hmsbQw\/edit\">howtome<\/a><\/li>\n\n\n\n<li>for the project stuff, stick around~ <a href=\"https:\/\/docs.google.com\/spreadsheets\/u\/0\/d\/11WSZmet32CVdkkcd3gdE6yo_QX1e20LA1bsTVJXCwXo\/edit\">undertone core GANTT CHART<\/a><\/li>\n\n\n\n<li>for all technical and technique stuff, go here > <a href=\"https:\/\/docs.google.com\/document\/u\/0\/d\/1AG3jOFts8Txf6aYTNznSe3lBOa0GsQ8yWp8YigJkfGc\/edit\">The Knowledge<\/a><\/li>\n\n\n\n<li>for all game design theory etc, go here > <a href=\"https:\/\/docs.google.com\/document\/d\/17jrySusIjkLkY2tn81brN8ja8l71-6lRrhxT4MsFPu4\/edit\">game design<\/a><\/li>\n\n\n\n<li>for info about pizza legends go here &#8211; <a href=\"https:\/\/docs.google.com\/document\/d\/1-F5AUCgCMoi2p-x4N3mE8R-R8_VvGjWPZEpikCZUDdw\/edit\">Pizza legends<\/a><\/li>\n\n\n\n<li>gitlab stuff > <a href=\"https:\/\/docs.google.com\/presentation\/u\/0\/d\/17RQ0TUhrxyxSPrInRuM8FTMecYLvdkVPALV3ahrmQhg\/edit\">git workflow<\/a><\/li>\n\n\n\n<li>stuff about pixel graphics > <a href=\"https:\/\/docs.google.com\/document\/d\/11iq8Wl2LzeR3CsGDG1B6xbP-cYzYfGEAAq0SEGVSq78\/edit\">Pixely<\/a><\/li>\n\n\n\n<li>stuff about web audio >\u00a0<a href=\"https:\/\/docs.google.com\/document\/d\/1H_MIO0e-htknFZSj1lCxN20dUvbnrouvEN8Lpqr4h6k\/edit\">web audio<\/a><\/li>\n\n\n\n<li>CS50<\/li>\n\n\n\n<li>python games<\/li>\n\n\n\n<li>Tiles<\/li>\n\n\n\n<li>1-bit GODOT<\/li>\n\n\n\n<li>godot<\/li>\n\n\n\n<li>godot game engine<\/li>\n\n\n\n<li>Mobile app dev in Godot<\/li>\n\n\n\n<li>JSRPG<\/li>\n\n\n\n<li>Pizza Legends<\/li>\n\n\n\n<li>wispgard<\/li>\n\n\n\n<li>web game dev<\/li>\n\n\n\n<li>platformers<\/li>\n\n\n\n<li>roguelike<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Other places that have lots of good info: Guiding principles I think what I am looking for is an APPROACH, rather than an engine\u2026 The approach, for example, could be: when coding, it is LIKELY that it should have the following: It was reading Selecting solutions What do you need it to do? How much [&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-279","post","type-post","status-publish","format-standard","hentry","category-the-knowledge"],"_links":{"self":[{"href":"https:\/\/nonlinearexperience.com\/index.php\/wp-json\/wp\/v2\/posts\/279","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=279"}],"version-history":[{"count":4,"href":"https:\/\/nonlinearexperience.com\/index.php\/wp-json\/wp\/v2\/posts\/279\/revisions"}],"predecessor-version":[{"id":357,"href":"https:\/\/nonlinearexperience.com\/index.php\/wp-json\/wp\/v2\/posts\/279\/revisions\/357"}],"wp:attachment":[{"href":"https:\/\/nonlinearexperience.com\/index.php\/wp-json\/wp\/v2\/media?parent=279"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nonlinearexperience.com\/index.php\/wp-json\/wp\/v2\/categories?post=279"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nonlinearexperience.com\/index.php\/wp-json\/wp\/v2\/tags?post=279"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}