{"id":264,"date":"2025-02-14T18:52:08","date_gmt":"2025-02-14T18:52:08","guid":{"rendered":"https:\/\/projects.etc.cmu.edu\/onion-future\/?p=264"},"modified":"2025-02-19T19:13:06","modified_gmt":"2025-02-19T19:13:06","slug":"week-4-feb-7","status":"publish","type":"post","link":"https:\/\/projects.etc.cmu.edu\/onion-future\/week-4-feb-7\/","title":{"rendered":"Week 4 &#8211; Feb. 7"},"content":{"rendered":"\n<p>This week the main focus was on the environment of the Forest, which is what most of our game will consist of. So let&#8217;s take a look at that.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Art<\/h2>\n\n\n\n<p>These are the tiles for our forest that Nina made, and a little sample room that shows them off.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"559\" src=\"https:\/\/projects.etc.cmu.edu\/onion-future\/wp-content\/uploads\/2025\/02\/foresttilesbig-1024x559.png\" alt=\"\" class=\"wp-image-334\" srcset=\"https:\/\/projects.etc.cmu.edu\/onion-future\/wp-content\/uploads\/2025\/02\/foresttilesbig-1024x559.png 1024w, https:\/\/projects.etc.cmu.edu\/onion-future\/wp-content\/uploads\/2025\/02\/foresttilesbig-300x164.png 300w, https:\/\/projects.etc.cmu.edu\/onion-future\/wp-content\/uploads\/2025\/02\/foresttilesbig-768x419.png 768w, https:\/\/projects.etc.cmu.edu\/onion-future\/wp-content\/uploads\/2025\/02\/foresttilesbig.png 1408w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Forest tileset<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"640\" src=\"https:\/\/projects.etc.cmu.edu\/onion-future\/wp-content\/uploads\/2025\/02\/the-real-forest.png\" alt=\"\" class=\"wp-image-336\" srcset=\"https:\/\/projects.etc.cmu.edu\/onion-future\/wp-content\/uploads\/2025\/02\/the-real-forest.png 640w, https:\/\/projects.etc.cmu.edu\/onion-future\/wp-content\/uploads\/2025\/02\/the-real-forest-300x300.png 300w, https:\/\/projects.etc.cmu.edu\/onion-future\/wp-content\/uploads\/2025\/02\/the-real-forest-150x150.png 150w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/figure>\n\n\n\n<p>We&#8217;ve also got the dialogue sprites for our Mayor:<\/p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"712\" height=\"540\" data-id=\"337\" src=\"https:\/\/projects.etc.cmu.edu\/onion-future\/wp-content\/uploads\/2025\/02\/mayorslash.png\" alt=\"\" class=\"wp-image-337\" srcset=\"https:\/\/projects.etc.cmu.edu\/onion-future\/wp-content\/uploads\/2025\/02\/mayorslash.png 712w, https:\/\/projects.etc.cmu.edu\/onion-future\/wp-content\/uploads\/2025\/02\/mayorslash-300x228.png 300w\" sizes=\"auto, (max-width: 712px) 100vw, 712px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"660\" height=\"540\" data-id=\"339\" src=\"https:\/\/projects.etc.cmu.edu\/onion-future\/wp-content\/uploads\/2025\/02\/Mayor_Talking_Sprite.png\" alt=\"\" class=\"wp-image-339\" srcset=\"https:\/\/projects.etc.cmu.edu\/onion-future\/wp-content\/uploads\/2025\/02\/Mayor_Talking_Sprite.png 660w, https:\/\/projects.etc.cmu.edu\/onion-future\/wp-content\/uploads\/2025\/02\/Mayor_Talking_Sprite-300x245.png 300w\" sizes=\"auto, (max-width: 660px) 100vw, 660px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"696\" height=\"540\" data-id=\"341\" src=\"https:\/\/projects.etc.cmu.edu\/onion-future\/wp-content\/uploads\/2025\/02\/mayor3.png\" alt=\"\" class=\"wp-image-341\" srcset=\"https:\/\/projects.etc.cmu.edu\/onion-future\/wp-content\/uploads\/2025\/02\/mayor3.png 696w, https:\/\/projects.etc.cmu.edu\/onion-future\/wp-content\/uploads\/2025\/02\/mayor3-300x233.png 300w\" sizes=\"auto, (max-width: 696px) 100vw, 696px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"712\" height=\"540\" data-id=\"338\" src=\"https:\/\/projects.etc.cmu.edu\/onion-future\/wp-content\/uploads\/2025\/02\/mayorahppy.png\" alt=\"\" class=\"wp-image-338\" srcset=\"https:\/\/projects.etc.cmu.edu\/onion-future\/wp-content\/uploads\/2025\/02\/mayorahppy.png 712w, https:\/\/projects.etc.cmu.edu\/onion-future\/wp-content\/uploads\/2025\/02\/mayorahppy-300x228.png 300w\" sizes=\"auto, (max-width: 712px) 100vw, 712px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"696\" height=\"540\" data-id=\"340\" src=\"https:\/\/projects.etc.cmu.edu\/onion-future\/wp-content\/uploads\/2025\/02\/mayorsad.png\" alt=\"\" class=\"wp-image-340\" srcset=\"https:\/\/projects.etc.cmu.edu\/onion-future\/wp-content\/uploads\/2025\/02\/mayorsad.png 696w, https:\/\/projects.etc.cmu.edu\/onion-future\/wp-content\/uploads\/2025\/02\/mayorsad-300x233.png 300w\" sizes=\"auto, (max-width: 696px) 100vw, 696px\" \/><\/figure>\n<\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Programming<\/h2>\n\n\n\n<p>Programming this week has been a lot of backend stuff. To facilitate map building, Collin divided our maps into 4 layers. (They were originally just one)<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh7-rt.googleusercontent.com\/slidesz\/AGV_vUfdxjHyrKC5FW90XCswiVZ-agva1q9nQQbNYJeUxjiIITAh5ss1weu3xUAc3MF7qPAOd_ZbHRd8C96B2H3eFw6_a5gi0wnTCw9SmZqPAcAmcgD5VlJOKNl5E97MkG-BAzyzS1e4=s2048?key=YcK3ML3cI-OtthcWexASiRFW\" alt=\"\"\/><\/figure>\n\n\n\n<p>Each layer is an array of integers that pull from the forest tileset.<br><strong>Base<\/strong> is used for the floor, <strong>Wall<\/strong> is used for anything that cannot be walked through, <strong>Deco<\/strong> is used for the floor leaves, that are layered on top of the base tiles, and <strong>Canopy<\/strong> is a layer that is drawn <em>on top<\/em> of the player&#8217;s sprite, so we can do things like secret passages that are covered, or have house awnings that the player walk&#8217;s under.<\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><img decoding=\"async\" src=\"https:\/\/lh7-rt.googleusercontent.com\/slidesz\/AGV_vUfRQBlmkBwgiV-WDu0Fnk8Ugy4cz0iSo1bfrx8uJjc_TK06sGohotBIi-UIzFEnIinicatROAjMv8Ylrowdzv1MsmcvO5gwhVPviBgHM-dJYC6EGo5xZ4FM-NUML8MiiLiheu6h4g=s2048?key=YcK3ML3cI-OtthcWexASiRFW\" alt=\"\" style=\"width:800px;height:auto\"\/><\/figure>\n\n\n\n<p>This gif shows our combat system in progress. In our current version of the system, combat is turn-based, but is represented on a map filled with &#8220;nodes&#8221; that represent attacks or defenses. The player selects a path shape on the left, and then uses the crank to angle that path, and assemble a route through the map, picking up nodes along the way. <\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><img decoding=\"async\" src=\"https:\/\/lh7-rt.googleusercontent.com\/slidesz\/AGV_vUfcOqC4ORWpmOCdlAG-HVb1wBrGCnGAdOwNdPYJbngPvLZfUiaKK4t9Px6la-c_2Wir8ZoUSxCYPslGrO8Zm8TwAvtnm66bS3o8rCp9hdvMIG3_YirU2zC_mhdx0vXvEZv2hkBvkg=s2048?key=YcK3ML3cI-OtthcWexASiRFW\" alt=\"\" style=\"width:800px;height:auto\"\/><\/figure>\n\n\n\n<p>This week Derek continued the implementation of this system, and in particular he optimized the way those dotted lines are drawn, as they previously had a heavy impact on performance.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh7-rt.googleusercontent.com\/slidesz\/AGV_vUfhqr4ss0IYzoanZBynYUl18aqpWnTb8lZH22m96Nxdp9Ed9sPJZB0FDE8z0t3SM6xMijY3FBACn9nXu4OGBwEeN1cGeJ5lpeAoL47ygC5RaDRCLSsp6G00n7jcKHASnqpEKbfohQ=s2048?key=YcK3ML3cI-OtthcWexASiRFW\" alt=\"\"\/><\/figure>\n\n\n\n<p>In this new implementation, the dotted lines are made up of line segments that are offset from each other, as opposed to drawing a line that is interrupted at intervals.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This week the main focus was on the environment of the Forest, which is what most of our game will consist of. So let&#8217;s take a look at that. Art These are the tiles for our forest that Nina made, and a little sample room that shows them off. We&#8217;ve also got the dialogue sprites [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":341,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-264","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-devlogs"],"_links":{"self":[{"href":"https:\/\/projects.etc.cmu.edu\/onion-future\/wp-json\/wp\/v2\/posts\/264","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/projects.etc.cmu.edu\/onion-future\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/projects.etc.cmu.edu\/onion-future\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/projects.etc.cmu.edu\/onion-future\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/projects.etc.cmu.edu\/onion-future\/wp-json\/wp\/v2\/comments?post=264"}],"version-history":[{"count":3,"href":"https:\/\/projects.etc.cmu.edu\/onion-future\/wp-json\/wp\/v2\/posts\/264\/revisions"}],"predecessor-version":[{"id":344,"href":"https:\/\/projects.etc.cmu.edu\/onion-future\/wp-json\/wp\/v2\/posts\/264\/revisions\/344"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/projects.etc.cmu.edu\/onion-future\/wp-json\/wp\/v2\/media\/341"}],"wp:attachment":[{"href":"https:\/\/projects.etc.cmu.edu\/onion-future\/wp-json\/wp\/v2\/media?parent=264"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/projects.etc.cmu.edu\/onion-future\/wp-json\/wp\/v2\/categories?post=264"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/projects.etc.cmu.edu\/onion-future\/wp-json\/wp\/v2\/tags?post=264"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}