<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Joseph Daws Jr.</title>
    <description>The latest articles on DEV Community by Joseph Daws Jr. (@joejr).</description>
    <link>https://dev.to/joejr</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F671176%2F3ba9623b-eaf9-40ca-aad8-595ae9d51281.jpeg</url>
      <title>DEV Community: Joseph Daws Jr.</title>
      <link>https://dev.to/joejr</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/joejr"/>
    <language>en</language>
    <item>
      <title>Setting the scope for alphabet superset 2023</title>
      <dc:creator>Joseph Daws Jr.</dc:creator>
      <pubDate>Thu, 24 Aug 2023 02:42:18 +0000</pubDate>
      <link>https://dev.to/joejr/setting-the-scope-for-alphabet-superset-2023-2h96</link>
      <guid>https://dev.to/joejr/setting-the-scope-for-alphabet-superset-2023-2h96</guid>
      <description>&lt;p&gt;The YouTube algorithm has revealed to me some of my favorite media. This week it gave yet another unearned surprise (well I guess I paid for it by watching YouTube ads XD). The YouTuber &lt;code&gt;struthless&lt;/code&gt; released a &lt;a href="https://youtu.be/0tTOQT4HhXI"&gt;call to action&lt;/a&gt; for creative people to build 26 parts of a cohesive body of work in 26 weeks (one week for each letter of alphabet). Although I'm feeling fulfilled in my day job, I was feeling in a bit of a rut on my side projects. I haven't made progress on my &lt;a href="https://github.com/joedaws/lofi-eldritch-cosmos"&gt;simulation of eldritch beings&lt;/a&gt; in a few months. I think &lt;strong&gt;ALPHABET SUPERSET&lt;/strong&gt; is a good chance to make some progress on my creative endeavors. So following the &lt;a href="https://www.alphabetsuperset.com/worksheets"&gt;guide&lt;/a&gt; provided, here is my attempt to properly scope and define a theme for my 26 creations.&lt;/p&gt;

&lt;h1&gt;
  
  
  Week 1 -- constraints
&lt;/h1&gt;

&lt;p&gt;The goal of weeks 1 and 2 is prepare a creative framework to make the 26 weeks streamlined. In week one &lt;code&gt;struthless&lt;/code&gt; asks creatives to contemplate certain constraints to guide a framework where your creativity will bloom. I really appreciate this guidance. So far in my project I've just let my creative heart dictate scope expansion after scope expansion. Even though I've never used them seriously in creative work, I do believe well chosen constraints accelerate creativity! The constraints are &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;medium constraints&lt;/li&gt;
&lt;li&gt;style constraints&lt;/li&gt;
&lt;li&gt;output constraints&lt;/li&gt;
&lt;li&gt;theme constraints&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Medium Constraints
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Core Medium
&lt;/h3&gt;

&lt;p&gt;I intend to make my &lt;a href="https://github.com/joedaws/lofi-eldritch-cosmos"&gt;simulation of eldritch beings&lt;/a&gt; as my core medium of creativity. This will include building a UI for viewing the simulation and interacting with it. I need to learn about how to design a properly compelling "game loop" to keep the viewer/player engaged with the simulation. Right now it's a bit aimless. My original goal was to create a simulation of a system which invites the viewer to question how agents interacting in a system both influence and become influenced by the system. And in particular, what kind of systems tend to encourage agents to behave selfishly, and which kinds of systems encourage and reward agents to take actions which benefit the others? I don't have a solid plan for conveying this, so I hope to figure it out in part by partaking in this exercise.&lt;/p&gt;

&lt;h3&gt;
  
  
  Communication Medium
&lt;/h3&gt;

&lt;p&gt;I'd like to use blog posts here on dev! I'll also make direct updates to my UI and simulation itself. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;words and drawings&lt;/li&gt;
&lt;li&gt;Simple UI work using &lt;a href="https://hexdocs.pm/scenic/welcome.html#:~:text=Scenic%20Scenic%20is%20an%20application%20framework%20written%20directly,operating%20systems%2C%20including%20MacOS%2C%20Ubuntu%2C%20Nerves%2FLinux%2C%20and%20more."&gt;&lt;code&gt;scenic&lt;/code&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Simulation built using &lt;code&gt;elixir&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Style Constraints
&lt;/h2&gt;

&lt;p&gt;Five aesthetic rules&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;UI assets will be created with pen and paper this is consistent with the initial design of the UI being a book&lt;/li&gt;
&lt;li&gt;Unique and specific beings will be prioritized over fully procedurally generated beings&lt;/li&gt;
&lt;li&gt;Sound is not to be integrated into the UI&lt;/li&gt;
&lt;li&gt;Animations are not to be integrated into the UI&lt;/li&gt;
&lt;li&gt;Keep is simple, if I can't figure out how to implement it in a week, then it's not going to be built during &lt;strong&gt;alphabetsuperset&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Output Constraints
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;What thing will you make every week&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;1 asset, 1 design choice, 1 story element, or 1 code improvement to the simulation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How will you post this every week&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I'll create a tweet or a blog post (or both about the creation). This will require the additional work of writing down what was created and why it was created.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How long will this take&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I guess about 3 -- 6 hours per week.&lt;/p&gt;

&lt;h2&gt;
  
  
  Theme Constraints
&lt;/h2&gt;

&lt;p&gt;My theme is &lt;strong&gt;systems and relations of eldritch beings&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Systems and relations are core components which influence individual behavior. They are themselves also influenced by a collection of individual actions. Understanding the relationships between systems and individuals acting in those systems is important to me because discovering and promoting systems and relations that support all individuals involved is a path for world growth and peace that I'd like to advocate for. However, there are major barriers to communicating about such things. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I'm not an expert in systems and relations and have limited capacity to communicate about it using prose or mathematics. I need to improve (and I think I can do this through this creative endeavour).&lt;/li&gt;
&lt;li&gt;Communicating with others through purely informational or purely mathematical frameworks will have a limited reach. Stories and interactive media have a better chance of conveying what can be done to improve our systems and relations since they ground abstract ideas in familiar or semi-familiar narrative structures.&lt;/li&gt;
&lt;li&gt;I am fascinated by "weird science fiction" and the Cthulhu mythos so it will be fun to united systems and relations with a specific genre of science fiction.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;I'm not sure I've appropriately scoped the project, but that's part of the learning process. I'm also looking forward to seeing what other participants in &lt;strong&gt;alphabetsuperset&lt;/strong&gt; create, especially those creating interactive media.&lt;/p&gt;

</description>
      <category>alphabetsuperset</category>
      <category>creativity</category>
      <category>design</category>
    </item>
    <item>
      <title>Toward a network model for Metroidvania Speed Run Routing -- Part 1</title>
      <dc:creator>Joseph Daws Jr.</dc:creator>
      <pubDate>Fri, 29 Oct 2021 03:21:34 +0000</pubDate>
      <link>https://dev.to/joejr/toward-a-network-model-for-metroidvania-speed-run-routing-part-1-1c31</link>
      <guid>https://dev.to/joejr/toward-a-network-model-for-metroidvania-speed-run-routing-part-1-1c31</guid>
      <description>&lt;p&gt;I've seen many posts and comments in various corners of the web asking &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Isn't &lt;a href="https://en.wikipedia.org/wiki/Speedrun"&gt;speed run routing&lt;/a&gt; a kind of travelling salesman problem?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;or&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Isn't speed run routing a shortest path problem?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Or any variant of this question. I also asked this question after taking a network flows course which used the classic &lt;a href="https://books.google.com/books/about/Network_flows.html?id=WnZRAAAAMAAJ"&gt;network flows text&lt;/a&gt; by Ahuja, Magnanti, and Orlin. In that course, shortest path algorithms and max flow algorithms were discussed. I think the text explains the concepts well (after all I felt like I had some understanding after reading some of the chapters), but what especially stuck out to me were the applications. Chapter 19 is entirely dedicated to ways in which the previously described problems and algorithms can be used to frame and solve &lt;em&gt;real-world&lt;/em&gt; problems as network problems. Some of them, taken at face value, sound like they would be able to help in routing a speed run. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://en.wikipedia.org/wiki/Shortest_path_problem"&gt;Shortest path problems&lt;/a&gt; seem helpful if you know you need to get from one point to another provided you have an appropriate graph model to describe the geography of the game.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://en.wikipedia.org/wiki/Knapsack_problem"&gt;Knapsack problems&lt;/a&gt; see useful for finding the most optimal collection of times in order to pass a portion of the game (I have in mind the number of missile expansions collected before facing a certain Super Metroid boss).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I still don't know how these pieces might fit together to actually find an optimal route, but that's what I aim to write about here. The general question seems to be, &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"how might speed running routing be formulated as a network problem or combination of network problems?" &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;To answer this, I'll try to provide a problem formulation and an algorithm to solve the problem of finding the optimal route for a &lt;strong&gt;Super Metroid&lt;/strong&gt; speed run (I'll defer talking about which category of speed run I want to consider until more details of the network model become apparent to me). Almost certainly, this will take me a good bit of time to think about, but I want to keep a log of my thoughts using these posts. Moreover, if you know that this kind of thing has already been solved, I'd love see what you've developed or discovered.&lt;/p&gt;

&lt;h3&gt;
  
  
  Goals
&lt;/h3&gt;

&lt;p&gt;I enjoy consuming speed running content. I especially like to hear the details of how certain strategies came to be. By trying to formulate an automated process to route runs, I think it may lead to a good idea for a tool or app to help routers. &lt;/p&gt;

&lt;h3&gt;
  
  
  Why focus on Metroidvania?
&lt;/h3&gt;

&lt;p&gt;Besides the fact that I find them very interesting and fun to play, I think they have certain properties which will make formulating the problem easier. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;To define a network model useful for solving a real-world problem, one needs to define what the nodes and edges of the network represent. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Many Metroidvanias feature discrete rooms with a finite number of "doors" between them. This seems like a good place to start as it reduces the cardinality of paths one needs to consider (one might have a hard time quantifying how many paths between point A and point B there are in an open-world game like Skyrim). This finiteness also limits the number of ways in which nodes and edges can be associated with discrete game locations or objects.&lt;/p&gt;

&lt;h3&gt;
  
  
  Is it possible to prove the current WR route is optimal?
&lt;/h3&gt;

&lt;p&gt;Many network problems, such as the shortest path problem, can be formulated as &lt;a href="https://en.wikipedia.org/wiki/Linear_programming"&gt;linear programs&lt;/a&gt;. This is a really nice class of problems because it is known when they have unique optimal solutions and when they do not. My gut feeling is there is no way that there is a formulation of speed run routing for which it is easy to know when an optimal solution exists and when it does not (regardless of whether there is an algorithm to find it if it exists). But it's still too early to tell. Wouldn't it be a happy surprise to find that the current world record route is also the one found by the algorithm?&lt;/p&gt;

&lt;h3&gt;
  
  
  Caveats
&lt;/h3&gt;

&lt;p&gt;The algorithm I hope to find probably won't help a runner find new exploits or skips. Out of bounds paths can be considered in this algorithm if they are known already, but the algorithm won't search for new ways to get around the world.&lt;/p&gt;

&lt;p&gt;A awesome category of speed run are &lt;a href="https://en.wikipedia.org/wiki/Speedrun#Randomizers"&gt;randomizers&lt;/a&gt;. I don't feel confident the model will be directly helpful for routing a randomize Metroidvania.&lt;/p&gt;

&lt;h3&gt;
  
  
  An overly simplistic start
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--bGkMnKm0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jvpb8zdht9x5fvpstkjo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--bGkMnKm0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jvpb8zdht9x5fvpstkjo.png" alt="Image description" width="800" height="615"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For the purpose of exploring different ways of formulating the problem, consider the overly simplistic Metroidvania, &lt;code&gt;Super Simpl Land&lt;/code&gt;. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The game consists of 7 rooms labelled &lt;code&gt;A&lt;/code&gt; to &lt;code&gt;G&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;The player can travel between rooms connected with an arrow. &lt;/li&gt;
&lt;li&gt;The objective is to beat the final boss!&lt;/li&gt;
&lt;li&gt;You must collect the key in room &lt;code&gt;A&lt;/code&gt; to pass the barrier between rooms &lt;code&gt;F&lt;/code&gt; and &lt;code&gt;G&lt;/code&gt;. &lt;/li&gt;
&lt;li&gt;There are items in room &lt;code&gt;C&lt;/code&gt; and &lt;code&gt;D&lt;/code&gt;. &lt;/li&gt;
&lt;li&gt;While you don't need items to defeat the boss, it's easier and quicker to do the fight using items.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This setup represents my idea of a minimum viable Metroidvania (though I don't think this game would be much fun to play). It includes, collectables, a barrier which requires a particular collectable (the key) to pass, and multiple paths between certain rooms.&lt;/p&gt;

&lt;p&gt;Super Simpl land is also interesting (slightly more interesting than trivial) from the routing point of view because different strategies can be compared. For instance, if it is much faster to beat the boss with both items obtained then it is worth the extra time to go get them. An algorithm to route this game would take this into account.&lt;/p&gt;

&lt;h3&gt;
  
  
  A network model for &lt;code&gt;Super Simpl Land&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;My current goal is to form a network model which is helpful for routing this silly game. To that end, the first thing that occurs to me is to let the &lt;code&gt;nodes&lt;/code&gt; represent partial paths in the game, e.g.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;B --&amp;gt; A --&amp;gt; B --&amp;gt; E
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;is a partial path the player may take on their way to the boss.&lt;br&gt;
The &lt;code&gt;edges&lt;/code&gt; represent different to represent different ways to extend a current path. For example, the partial path above could become&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;B --&amp;gt; A --&amp;gt; B --&amp;gt; E --&amp;gt; D
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;or&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;B --&amp;gt; A --&amp;gt; B --&amp;gt; E --&amp;gt; F
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The 3 nodes and two edges would look like&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--nFdU15es--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2abg1fezf6b6utfonhty.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--nFdU15es--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2abg1fezf6b6utfonhty.png" alt="Image description" width="740" height="440"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So the task is set. Is this even a useful model at all? I'm not sure yet, but this is what I'll work on until the next post.&lt;/p&gt;

</description>
      <category>devjournal</category>
    </item>
  </channel>
</rss>
