{"id":386,"date":"2026-04-06T21:06:20","date_gmt":"2026-04-06T21:06:20","guid":{"rendered":"https:\/\/projects.etc.cmu.edu\/archigram-20-26\/?p=386"},"modified":"2026-04-23T20:28:48","modified_gmt":"2026-04-23T20:28:48","slug":"week-13","status":"publish","type":"post","link":"https:\/\/projects.etc.cmu.edu\/archigram-20-26\/week-13\/","title":{"rendered":"Week 13"},"content":{"rendered":"\n<p>In our collaboration with Luxodd this week, we established a set of standards, such as the <strong>connection rules between modules<\/strong> shown in the image below.<\/p>\n\n\n\n<p>The core abstraction is the <strong>module<\/strong> \u2014 a discrete gameplay segment with defined entry and exit conditions, physical requirements, and difficulty parameters.<\/p>\n\n\n\n<p>Seven module types are defined, each corresponding to a distinct parkour mechanic:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Module<\/th><th>Gameplay<\/th><th>Physical Constraint<\/th><\/tr><\/thead><tbody><tr><td>B \u2014 Blank<\/td><td>Recovery platform<\/td><td>None (breather segment)<\/td><\/tr><tr><td>C \u2014 UpPlatform<\/td><td>Ascending traversal<\/td><td>Requires positive height delta<\/td><\/tr><tr><td>D \u2014 DownPlatform<\/td><td>Descending traversal<\/td><td>Requires negative height delta<\/td><\/tr><tr><td>E \u2014 PathBlock<\/td><td>Obstacle jumping<\/td><td>No directional constraint<\/td><\/tr><tr><td>F \u2014 WallRun<\/td><td>Lateral wall traversal<\/td><td>Requires straight path (no turns)<\/td><\/tr><tr><td>G \u2014 Slide<\/td><td>Low-clearance sliding<\/td><td>Requires straight path (no turns)<\/td><\/tr><tr><td>H \u2014 Rope<\/td><td>Narrow bridge crossing<\/td><td>No directional constraint<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>The authoring layer also defines the <strong>adjacency table<\/strong> \u2014 a constraint matrix specifying which module types may follow which. This is not merely a visual constraint (as in WFC) but a <strong>physical gameplay constraint<\/strong>: a WallRun module cannot follow a segment where the path turns 90 degrees, because the player\u2019s momentum would carry them away from the wall. Similarly, an UpPlatform cannot follow a segment with a negative height delta, as the resulting geometry would be physically discontinuous.<\/p>\n\n\n\n<p>The adjacency table is encoded as a per-module list of valid successors:<\/p>\n\n\n\n<p>B \u2192 {C, D, E, F, G, H} &nbsp; &nbsp; (blank connects to everything)<br>C \u2192 {B, D, E, F, G, H} &nbsp; &nbsp; (up connects to everything)<br>D \u2192 {B, C, E, F, G, H} &nbsp; &nbsp; (down connects to everything)<br>E \u2192 {B, C, D, F, G, H} &nbsp; &nbsp; (obstacle connects to everything)<br>F \u2192 {B, C, D, E, G, H} &nbsp; &nbsp; (wall run \u2014 restricted by direction constraint)<br>G \u2192 {B, C, D, E}&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (slide \u2014 restricted, cannot chain with wall run or rope)<br>H \u2192 {B, C, D, E, F, G} &nbsp; &nbsp; (rope connects to most)<\/p>\n\n\n\n<p>This week, we also explored a new artistic direction: <strong>AI real-time texture generation<\/strong> based on screen capture, as shown below.<\/p>\n\n\n\n<figure class=\"wp-block-video\"><video height=\"670\" style=\"aspect-ratio: 1572 \/ 670;\" width=\"1572\" controls src=\"https:\/\/projects.etc.cmu.edu\/archigram-20-26\/wp-content\/uploads\/2026\/04\/msedge_WL8j7wXMCA.mp4\"><\/video><\/figure>\n\n\n\n<p>Another approach is the traditional way.<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Archigram Art Demo\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/77J9orxmCj8?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p>We have submitted our plugin to the <strong>UE Fab store<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"40\" src=\"https:\/\/projects.etc.cmu.edu\/archigram-20-26\/wp-content\/uploads\/2026\/04\/img_v3_0210i_8b51a1c8-e876-43b0-b250-aede6caf28ix-1024x40.png\" alt=\"\" class=\"wp-image-390\" srcset=\"https:\/\/projects.etc.cmu.edu\/archigram-20-26\/wp-content\/uploads\/2026\/04\/img_v3_0210i_8b51a1c8-e876-43b0-b250-aede6caf28ix-1024x40.png 1024w, https:\/\/projects.etc.cmu.edu\/archigram-20-26\/wp-content\/uploads\/2026\/04\/img_v3_0210i_8b51a1c8-e876-43b0-b250-aede6caf28ix-300x12.png 300w, https:\/\/projects.etc.cmu.edu\/archigram-20-26\/wp-content\/uploads\/2026\/04\/img_v3_0210i_8b51a1c8-e876-43b0-b250-aede6caf28ix-768x30.png 768w, https:\/\/projects.etc.cmu.edu\/archigram-20-26\/wp-content\/uploads\/2026\/04\/img_v3_0210i_8b51a1c8-e876-43b0-b250-aede6caf28ix-1536x60.png 1536w, https:\/\/projects.etc.cmu.edu\/archigram-20-26\/wp-content\/uploads\/2026\/04\/img_v3_0210i_8b51a1c8-e876-43b0-b250-aede6caf28ix-2048x80.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In our collaboration with Luxodd this week, we established a set of standards, such as the connection rules between modules shown in the image below. The core abstraction is the module \u2014 a discrete gameplay segment with defined entry and exit conditions, physical requirements, and difficulty parameters. Seven module types are defined, each corresponding to [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-386","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/projects.etc.cmu.edu\/archigram-20-26\/wp-json\/wp\/v2\/posts\/386","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/projects.etc.cmu.edu\/archigram-20-26\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/projects.etc.cmu.edu\/archigram-20-26\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/projects.etc.cmu.edu\/archigram-20-26\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/projects.etc.cmu.edu\/archigram-20-26\/wp-json\/wp\/v2\/comments?post=386"}],"version-history":[{"count":9,"href":"https:\/\/projects.etc.cmu.edu\/archigram-20-26\/wp-json\/wp\/v2\/posts\/386\/revisions"}],"predecessor-version":[{"id":398,"href":"https:\/\/projects.etc.cmu.edu\/archigram-20-26\/wp-json\/wp\/v2\/posts\/386\/revisions\/398"}],"wp:attachment":[{"href":"https:\/\/projects.etc.cmu.edu\/archigram-20-26\/wp-json\/wp\/v2\/media?parent=386"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/projects.etc.cmu.edu\/archigram-20-26\/wp-json\/wp\/v2\/categories?post=386"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/projects.etc.cmu.edu\/archigram-20-26\/wp-json\/wp\/v2\/tags?post=386"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}