<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Griffon Hanson</title>
	<atom:link href="https://griff.pw/feed/" rel="self" type="application/rss+xml" />
	<link>https://griff.pw</link>
	<description>Multiplayer Gameplay Engineer</description>
	<lastBuildDate>Wed, 26 Mar 2025 18:56:05 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://griff.pw/wp-content/uploads/2023/11/cropped-grifflogo_1024-32x32.png</url>
	<title>Griffon Hanson</title>
	<link>https://griff.pw</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Cloud Assassin</title>
		<link>https://griff.pw/2025/03/26/cloud-assassin/</link>
		
		<dc:creator><![CDATA[griffon]]></dc:creator>
		<pubDate>Wed, 26 Mar 2025 18:33:48 +0000</pubDate>
				<category><![CDATA[Current Projects]]></category>
		<guid isPermaLink="false">https://griff.pw/?p=350</guid>

					<description><![CDATA[A live-action game with hidden information, hosted in the cloud. ]]></description>
										<content:encoded><![CDATA[
<hr class="wp-block-separator has-alpha-channel-opacity wp-embed-aspect-16-9 wp-has-aspect-ratio"/>



<div class="wp-block-columns wp-embed-aspect-16-9 wp-has-aspect-ratio is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full"><img fetchpriority="high" decoding="async" width="790" height="561" src="https://griff.pw/wp-content/uploads/2025/03/Assassin-System-Diagram.png" alt="" class="wp-image-353" srcset="https://griff.pw/wp-content/uploads/2025/03/Assassin-System-Diagram.png 790w, https://griff.pw/wp-content/uploads/2025/03/Assassin-System-Diagram-300x213.png 300w, https://griff.pw/wp-content/uploads/2025/03/Assassin-System-Diagram-768x545.png 768w" sizes="(max-width: 790px) 100vw, 790px" /></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<h2 class="wp-block-heading has-large-font-size">Information</h2>



<p class="has-medium-font-size"><em>January 2025 &#8211; Current</em></p>



<p class="has-medium-font-size">Hosted with Azure using Kubernetes and CosmosDB</p>
</div>
</div>



<hr class="wp-block-separator has-alpha-channel-opacity wp-embed-aspect-16-9 wp-has-aspect-ratio"/>



<p class="wp-embed-aspect-16-9 wp-has-aspect-ratio has-medium-font-size"><a href="https://en.wikipedia.org/wiki/Assassin_(game)" data-type="link" data-id="https://en.wikipedia.org/wiki/Assassin_(game)">From Wikipedia:</a> <em>&#8220;Assassin (also Killer) is a live-action game in which players try to eliminate one another using mock weapons, in an effort to become the last surviving player.&#8221; </em>A charming game with an information management problem. Players require private information such as who their target is but to keep this information private, the game requires a host who cannot be a player in order to manage targets, points, etc. I solved this a few years ago by making a discordJS bot for my friend group to play. I figured this would be a good final project for my Cloud System Design class. It is still currently in progress as of 3/26/2025.</p>



<p></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Networked Cowboy Shooter</title>
		<link>https://griff.pw/2024/11/25/networked-cowboy-shooter/</link>
		
		<dc:creator><![CDATA[griffon]]></dc:creator>
		<pubDate>Mon, 25 Nov 2024 20:53:37 +0000</pubDate>
				<category><![CDATA[Current Projects]]></category>
		<guid isPermaLink="false">https://griff.pw/?p=320</guid>

					<description><![CDATA[An educational project about fairness in multiplayer shooters. ]]></description>
										<content:encoded><![CDATA[
<p><em>August 2024 – December 2024</em></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p class="has-medium-font-size">Despite growing up on games like <em>Counter-Strike</em>, I have never tried my hand at making a multiplayer shooter. I decided to come up with a simple premise and use my understanding of <a href="https://docs-multiplayer.unity3d.com/netcode/current/tutorials/get-started-ngo/" data-type="link" data-id="https://docs-multiplayer.unity3d.com/netcode/current/tutorials/get-started-ngo/">Unity 6 and Netcode for GameObjects</a> to expand my understanding of the multiplayer implementations in shooters. Here is the premise: </p>



<p class="has-medium-font-size">The project will have two phases. The first phase of action will be a classic cowboy draw. Each player takes two shots to kill, so after this first phase one player is a single shot away from losing whilst the other has an advantage for the second phase. The player(s) that was shot gets teleported behind cover in one of the four corners of the level at random. This gives an interesting dynamic where one player has better positioning but only one health where as the other is out in the open but with full health. That’s it, a simple design but one that will be beneficial to my understanding of multiplayer programming.</p>



<div class="wp-block-media-text is-stacked-on-mobile"><figure class="wp-block-media-text__media"><video controls src="https://griff.pw/wp-content/uploads/ShooterSideBySide.mp4"></video></figure><div class="wp-block-media-text__content">
<p>This video demonstrates the two phases of the project over the internet. It features a peer-to-peer connection using Unity Relay, connecting my browser in Seattle with my friend Aaron&#8217;s browser in Dallas. Aaron, a seasoned Valorant player, was instrumental in testing this project. I knew my work wasn&#8217;t complete until he confirmed that the gameplay felt responsive and fair.</p>
</div></div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<div class="iframe-container">
                  <iframe mozallowfullscreen="true" allow="autoplay; fullscreen" src="https://griff.pw/shooter/index.html" style="border:0px #000000 none;" name="Networked Shooter" scrolling="no" msallowfullscreen="true" allowfullscreen="true" webkitallowfullscreen="true" allowtransparency="true" frameborder="0"></iframe>
                        </div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p><strong>Additional Credits</strong></p>



<ul class="wp-block-list">
<li>Aaron Nguyen &#8211; Testing Help</li>
</ul>



<p></p>
]]></content:encoded>
					
		
		<enclosure url="https://griff.pw/wp-content/uploads/ShooterSideBySide.mp4" length="12470678" type="video/mp4" />

			</item>
		<item>
		<title>Poker Prototype</title>
		<link>https://griff.pw/2024/02/28/poker-prototype/</link>
		
		<dc:creator><![CDATA[griffon]]></dc:creator>
		<pubDate>Wed, 28 Feb 2024 22:38:20 +0000</pubDate>
				<category><![CDATA[Finished Projects]]></category>
		<guid isPermaLink="false">https://griff.pw/?p=271</guid>

					<description><![CDATA[A prototype for a simple poker game using a custom action system.]]></description>
										<content:encoded><![CDATA[
<p><em>January 2024 – March 2024</em></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p class="has-medium-font-size">This poker prototype was a school project for my Technical Design class at DigiPen. The project was created using a custom action system in order to quickly create polished looking gameplay for a simple poker-type game. It also has an automated play mode (activated by pressing &#8220;A&#8221;) which plays runs the game and selects random options for the player. This prints telemetry data to a CSV file when run as a PC build.  </p>



<p><em>The following is a post-mortem I wrote as part of the assignment. </em></p>



<p>The project went very well! I found it a relaxing chance to practice Unity and found myself embracing the action list system alongside my usual Unity patterns. For example, I often use coroutines when doing things over time in my other Unity projects, however I found a nice balance of coroutines and actions to solve a lot of problems that I think would normally get solved by blocking groups within the context of this project. Now, when I return to my other games I find myself wanting to use actions as I really appreciate the speed they can be used to prototype ideas with a simple level of polish from the easing.<br><br>I wrote the game as an assignment without much organization for the structure of the code leading to most things being contained within the GameManager.cs file. This has already caused issues when trying to iterate towards the end of the project for anything related to gameplay. If I were to continue this project, refactoring the gameplay logic would be the first priority. I also considered the idea of using this as a base to build a little WebGL multiplayer poker game using Netcode for GameObjects which I think would work out well since I could just add RPC functionality to the actions and that would take care of a lot of the implementation.</p>



<p></p>



<p class="has-medium-font-size">Play the prototype below:</p>



<div class="iframe-container">
                  <iframe mozallowfullscreen="true" allow="autoplay; fullscreen" src="https://griff.pw/poker/index.html" style="border:0px #000000 none;" name="Poker Prototype" scrolling="no" msallowfullscreen="true" allowfullscreen="true" webkitallowfullscreen="true" allowtransparency="true" frameborder="0"></iframe>
                        </div>



<p></p>



<p></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Isshin</title>
		<link>https://griff.pw/2023/11/01/isshin/</link>
		
		<dc:creator><![CDATA[griffon]]></dc:creator>
		<pubDate>Wed, 01 Nov 2023 22:49:31 +0000</pubDate>
				<category><![CDATA[Finished Projects]]></category>
		<guid isPermaLink="false">https://griff.pw/?p=111</guid>

					<description><![CDATA[A lethal 3rd person action game focusing on the beautiful lethal dance of samurai-style combat. ]]></description>
										<content:encoded><![CDATA[
<hr class="wp-block-separator has-alpha-channel-opacity"/>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-large post-image-with-background"><img decoding="async" width="1024" height="576" src="https://griff.pw/wp-content/uploads/2023/11/Splash-1024x576.png" alt="" class="wp-image-113" srcset="https://griff.pw/wp-content/uploads/2023/11/Splash-1024x576.png 1024w, https://griff.pw/wp-content/uploads/2023/11/Splash-300x169.png 300w, https://griff.pw/wp-content/uploads/2023/11/Splash-768x432.png 768w, https://griff.pw/wp-content/uploads/2023/11/Splash.png 1193w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="has-small-font-size"><em><em>Splash Art by <a href="https://www.linkedin.com/in/vasiliki-makris/overlay/about-this-profile/">Vasiliki Makris</a> </em> </em></p>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<h2 class="wp-block-heading has-large-font-size">Information</h2>



<p class="has-medium-font-size"><em>August 2023 &#8211; April 2024</em></p>



<p class="has-medium-font-size"><strong>Engine: </strong>Unreal C++ and Blueprints</p>



<p class="has-medium-font-size"><strong>My Role:</strong> Producer and Programmer</p>
</div>
</div>



<hr class="wp-block-separator has-alpha-channel-opacity wp-embed-aspect-16-9 wp-has-aspect-ratio"/>



<figure class="wp-block-embed aligncenter 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">
<iframe title="ISSHIN Trailer" width="640" height="360" src="https://www.youtube.com/embed/GX7iaSS8HlQ?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>
</div></figure>



<p class="wp-embed-aspect-16-9 wp-has-aspect-ratio has-medium-font-size"><strong>Isshin</strong> is a lethal 3rd person action game focusing on the beautiful lethal dance of samurai-style combat. I am currently the producer on a team of 17 students where I am organizing cross-disciplinary work across art, audio, design, and tech. I am also a gameplay programmer using C++ and Blueprint in Unreal 5.2.</p>



<p class="wp-embed-aspect-16-9 wp-has-aspect-ratio has-medium-font-size"><br><strong>What I did on the project:</strong></p>



<ul class="wp-block-list">
<li class="has-medium-font-size">General gameplay systems including interactions, dialogue, and progression</li>



<li class="has-medium-font-size">Company game systems including using frame-data to automatically time Unreal montages for melee combat sequences</li>



<li class="has-medium-font-size">God of War inspired enemy director and associated enemy behaviors</li>



<li class="has-medium-font-size">Oversaw department schedules and kept everything on track with our production plan</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<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">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" data-id="313" src="https://griff.pw/wp-content/uploads/2023/11/Isshin-Win64-Shipping_XtOsm6M3A6-1024x576.jpg" alt="" class="wp-image-313" srcset="https://griff.pw/wp-content/uploads/2023/11/Isshin-Win64-Shipping_XtOsm6M3A6-1024x576.jpg 1024w, https://griff.pw/wp-content/uploads/2023/11/Isshin-Win64-Shipping_XtOsm6M3A6-300x169.jpg 300w, https://griff.pw/wp-content/uploads/2023/11/Isshin-Win64-Shipping_XtOsm6M3A6-768x432.jpg 768w, https://griff.pw/wp-content/uploads/2023/11/Isshin-Win64-Shipping_XtOsm6M3A6-1536x864.jpg 1536w, https://griff.pw/wp-content/uploads/2023/11/Isshin-Win64-Shipping_XtOsm6M3A6.jpg 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" data-id="311" src="https://griff.pw/wp-content/uploads/2023/11/Isshin-Win64-Shipping_PtCEM3EpRM-1024x576.jpg" alt="" class="wp-image-311" srcset="https://griff.pw/wp-content/uploads/2023/11/Isshin-Win64-Shipping_PtCEM3EpRM-1024x576.jpg 1024w, https://griff.pw/wp-content/uploads/2023/11/Isshin-Win64-Shipping_PtCEM3EpRM-300x169.jpg 300w, https://griff.pw/wp-content/uploads/2023/11/Isshin-Win64-Shipping_PtCEM3EpRM-768x432.jpg 768w, https://griff.pw/wp-content/uploads/2023/11/Isshin-Win64-Shipping_PtCEM3EpRM-1536x864.jpg 1536w, https://griff.pw/wp-content/uploads/2023/11/Isshin-Win64-Shipping_PtCEM3EpRM.jpg 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" data-id="309" src="https://griff.pw/wp-content/uploads/2023/11/Isshin-Win64-Shipping_5CopkeDP80-1024x576.jpg" alt="" class="wp-image-309" srcset="https://griff.pw/wp-content/uploads/2023/11/Isshin-Win64-Shipping_5CopkeDP80-1024x576.jpg 1024w, https://griff.pw/wp-content/uploads/2023/11/Isshin-Win64-Shipping_5CopkeDP80-300x169.jpg 300w, https://griff.pw/wp-content/uploads/2023/11/Isshin-Win64-Shipping_5CopkeDP80-768x432.jpg 768w, https://griff.pw/wp-content/uploads/2023/11/Isshin-Win64-Shipping_5CopkeDP80-1536x864.jpg 1536w, https://griff.pw/wp-content/uploads/2023/11/Isshin-Win64-Shipping_5CopkeDP80.jpg 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" data-id="312" src="https://griff.pw/wp-content/uploads/2023/11/Isshin-Win64-Shipping_pWKRO47o92-1024x576.jpg" alt="" class="wp-image-312" srcset="https://griff.pw/wp-content/uploads/2023/11/Isshin-Win64-Shipping_pWKRO47o92-1024x576.jpg 1024w, https://griff.pw/wp-content/uploads/2023/11/Isshin-Win64-Shipping_pWKRO47o92-300x169.jpg 300w, https://griff.pw/wp-content/uploads/2023/11/Isshin-Win64-Shipping_pWKRO47o92-768x432.jpg 768w, https://griff.pw/wp-content/uploads/2023/11/Isshin-Win64-Shipping_pWKRO47o92-1536x864.jpg 1536w, https://griff.pw/wp-content/uploads/2023/11/Isshin-Win64-Shipping_pWKRO47o92.jpg 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</figure>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Strike Back</title>
		<link>https://griff.pw/2023/10/31/strike-back/</link>
		
		<dc:creator><![CDATA[griffon]]></dc:creator>
		<pubDate>Tue, 31 Oct 2023 00:08:55 +0000</pubDate>
				<category><![CDATA[Finished Projects]]></category>
		<guid isPermaLink="false">https://griff.pw/?p=14</guid>

					<description><![CDATA[A grounded, 1v1 fighting game made in a custom engine with rollback netcode.]]></description>
										<content:encoded><![CDATA[
<hr class="wp-block-separator has-alpha-channel-opacity is-style-default"/>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<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">
<iframe loading="lazy" title="Strike Back DigiPen Showcase Trailer 2023" width="640" height="360" src="https://www.youtube.com/embed/d7UgyWLVeNI?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>
</div></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<h2 class="wp-block-heading has-large-font-size">Information</h2>



<p class="has-medium-font-size"><em>August 2022 &#8211; January 2024</em></p>



<p class="has-medium-font-size"><strong>Engine:<em> </em></strong>Custom ECS engine with C++ and OpenGL</p>



<p class="has-medium-font-size"><strong>My Role:</strong> Producer and Programmer</p>
</div>
</div>



<hr class="wp-block-separator has-alpha-channel-opacity wp-embed-aspect-16-9 wp-has-aspect-ratio"/>



<p class="wp-embed-aspect-16-9 wp-has-aspect-ratio has-medium-font-size"><strong>Strike Back</strong> was my sophomore game project at DigiPen, created with a team of 19 students. I initially joined the team as a programmer; however, in the middle of the first semester, some interpersonal conflicts arose, leading the producer to leave the project. I didn&#8217;t know anyone on the team before joining, but despite that, they offered me the opportunity to take on the producer role. I was successful in facilitating cross-department communication and creating an achievable timeline after reducing the scope of the animation set. Despite numerous challenges, given the ambitious nature of the student project, we ultimately succeeded in creating a finished product of which we were all proud.<br><br><strong>What I did on the project:</strong></p>



<ul class="wp-block-list">
<li class="has-medium-font-size">Worked with a sound designer as the team&#8217;s audio programmer</li>



<li class="has-medium-font-size">Created UI system and implemented most UI</li>



<li class="has-medium-font-size">Implemented json-loaded scenes </li>



<li class="has-medium-font-size">Created event system based on <a href="https://bastian.rieck.me/blog/posts/2015/event_system_cxx11/" data-type="link" data-id="https://bastian.rieck.me/blog/posts/2015/event_system_cxx11/">this</a></li>



<li class="has-medium-font-size">Refactored the entire engine to use shared and unique pointers
<ul class="wp-block-list">
<li class="has-medium-font-size">This was done the summer after and made the game way more stable for publishing</li>
</ul>
</li>



<li class="has-medium-font-size">Created a generalized state machine system</li>



<li class="has-medium-font-size">Integrated GGPO Multiplayer</li>
</ul>



<div class="wp-block-buttons is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-16018d1d wp-block-buttons-is-layout-flex">
<div class="wp-block-button"><a class="wp-block-button__link wp-element-button" href="https://games.digipen.edu/games/strike-back"><strong>Strike Back on the DigiPen Game Gallery</strong></a></div>
</div>



<p></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading has-text-align-center">Relevant Code Samples</h2>



<p class="has-text-align-center has-small-font-size"><em>Copyright © 2022 DigiPen (USA) Corporation.</em></p>



<p class="has-medium-font-size"><strong>ImGui Wwise Window</strong></p>



<p>One of my jobs on the project was to implement the audio events created by our sound designer. However, there was no easy way to hear those events so I made this ImGui window that would read the header file that Wwise generates and create a list of buttons so each event could be previewed. This greatly helped with audio implementation and debugging. </p>



<pre class="wp-block-code"><code lang="cpp" class="language-cpp line-numbers">namespace Editor::WwiseWindow
{
    // Initialize an input file stream for reading Wwise header file
    std::ifstream wwiseIDs;

    // Runs every frame ImGui updates the window. This code is only used in debug mode.
	// Open variable is unused as this code is only run when the window is open
    void Show(bool* open)
    {
        ImGui::Begin("WwiseWindow", open, ImGuiWindowFlags_NoCollapse);

        // Check if the file is open; if not, open the Wwise header file
        if (wwiseIDs.is_open() == false)
        {
            wwiseIDs.open("./Assets/Audio/Banks/Wwise_IDs.h");
        }

        // Check if the file is in a bad state such as if it reached the end of the file, and reset it if needed
        if (wwiseIDs.good() == false)
        {
            wwiseIDs.clear();
            wwiseIDs.seekg(0);
        }

        std::string myline;
        bool inEvents = false;

        // Read the file line by line
        while (wwiseIDs.good())
        {
            std::getline(wwiseIDs, myline);

            if (inEvents)
            {
                // Check if we're inside the EVENTS namespace. 
				// This is since the header file from Wwise contains a bunch of stuff other than events
                if (myline.find("namespace EVENTS") != std::string::npos)
                {
                    inEvents = false;
                    continue;
                }

                // Skip lines containing '{' or '}' as they are not events
                if (myline.find("{") != std::string::npos || myline.find("}") != std::string::npos)
                {
                    continue;
                }

                // Extract the event name
                std::size_t nameStart = myline.find("AkUniqueID") + strlen("AkUniqueID ");
                std::size_t nameEnd = myline.find(" = ");
                std::string name = myline.substr(nameStart, nameEnd - nameStart);

                // Create a button for the event
                if (ImGui::Button(name.c_str(), ImVec2(200, 20)))
                {
                    // Trigger the event using SoundManager
                    SoundManager::GetInstance().TriggerEvent(AK::SoundEngine::GetIDFromString(name.c_str()));
                }
            }
            else
            {
                // Check if we're entering the EVENTS namespace
                if (myline.find("namespace EVENTS") != std::string::npos)
                {
                    inEvents = true;
                    continue;
                }
            }
        }

        ImGui::End();
    }
}
</code></pre>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Breach</title>
		<link>https://griff.pw/2023/10/29/breach/</link>
		
		<dc:creator><![CDATA[griffon]]></dc:creator>
		<pubDate>Sun, 29 Oct 2023 22:55:10 +0000</pubDate>
				<category><![CDATA[Finished Projects]]></category>
		<guid isPermaLink="false">https://griff.pw/?p=116</guid>

					<description><![CDATA[A co-op puzzle platformer where you play as two little robots trying to infiltrate the center terminal.]]></description>
										<content:encoded><![CDATA[
<hr class="wp-block-separator has-alpha-channel-opacity"/>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<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">
<iframe loading="lazy" title="Breach Full Walkthrough - No Audio" width="640" height="360" src="https://www.youtube.com/embed/ni8Tv7X7lxw?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>
</div></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<h2 class="wp-block-heading has-large-font-size">Information</h2>



<p class="has-medium-font-size"><em>August 2021 -December 2021</em></p>



<p class="has-medium-font-size"><strong>Engine: </strong><a href="https://github.com/DigiPen-Faculty/CProcessing" data-type="link" data-id="https://github.com/DigiPen-Faculty/CProcessing">C Processing</a> </p>



<p class="has-medium-font-size"><strong>My Role:</strong> Gameplay Programmer and Level Designer</p>
</div>
</div>



<hr class="wp-block-separator has-alpha-channel-opacity wp-embed-aspect-16-9 wp-has-aspect-ratio"/>



<p class="wp-embed-aspect-16-9 wp-has-aspect-ratio has-medium-font-size">Breach was my first semester project on team of three students. It is a co-op puzzle platformer where you play as two little robots trying to infiltrate the center terminal. It was inspired by <em>Fireboy and Watergirl</em>. I worked in an engine provided by DigiPen where I implemented different systems in C. <br><br><strong>What I did on the project:</strong></p>



<ul class="wp-block-list">
<li class="has-medium-font-size">Setup level creation system </li>



<li class="has-medium-font-size">Designed and implemented all levels</li>



<li class="has-medium-font-size">Created core gameplay objects</li>



<li class="has-medium-font-size">Designed and implemented all UI</li>
</ul>



<p></p>



<p class="has-medium-font-size"><strong>Team: </strong>Andrew Sumanto, Gavin Kay, and Griffon Hanson</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<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">
<iframe loading="lazy" title="Breach - DigiPen GAM 100" width="640" height="360" src="https://www.youtube.com/embed/gVUC2X-cT4Y?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>
</div></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<p class="has-medium-font-size">Here is a video of some instructors at DigiPen playing through Breach.</p>
</div>
</div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading has-text-align-center">Relevant Code Samples</h2>



<p class="has-text-align-center has-small-font-size"><em>Copyright © 2021 DigiPen (USA) Corporation.</em></p>



<p class="has-medium-font-size"><strong>Switch and Switchable Object</strong></p>



<p>This project was the first time I was practically using C to make a game so it was a great learning experience that really accelerated my understanding of the language. This is some code that setups a &#8220;switchable&#8221; object like a door and a switch for those objects. </p>



<pre class="wp-block-code"><code lang="cpp" class="language-cpp line-numbers">/**
 * Creates a Switchable object with the specified parameters.
 * 
 * @param type             The type of Switchable (enum SWITCHABLE_TYPES).
 * @param position         The position of the Switchable.
 * @param width            The width of the Switchable.
 * @param height           The height of the Switchable.
 * @param closedColor      The color when the Switchable is closed.
 * @param callbackOnTouch  The callback function to execute when touched.
 * @param moveDirection    The direction in which the Switchable can move.
 * @param keyType          The type of key required to activate the Switchable.
 * 
 * @return A pointer to the created Switchable.
 */
Switchable* CreateSwitchable(enum SWITCHABLE_TYPES type, Vector2 position, float width, float height, CP_Color closedColor, FunctionPtr callbackOnTouch, enum MOVE_DIRECTIONS moveDirection, enum KEY_TYPES keyType)
{
    Switchable switchable;
    switchable.type = type;
    switchable.moveDirection = moveDirection;

	// Setup the object collider and other properties
    Vector2 zero = CreateVector2(0, 0);
    switchable.collider = CreateCollider(position, zero, width, height, 1, 0);
    switchable.drawnPosition = position;
    switchable.triggerState = 0;
    switchable.closedColor = closedColor;
    switchable.key = keyType;

    // Check the type of Switchable
    if (type == SWITCHABLE_GAP)
    {
        switchable.triggerState = 1;
        switchable.collider-&gt;isTrigger = 1;
    }
    else
    {
        switchable.triggerSound = CP_Sound_Load("./Assets/silence.wav");
    }

    // Check if a key is required and if it's obtained
    if (keyType != KEY_NONE &amp;&amp; IsKeyObtained(keyType))
    {
        switchable.triggerState = 1;
        switchable.collider-&gt;isTrigger = 1;

        switchable.triggerSound = CP_Sound_Load("./Assets/silence.wav");
        CP_Sound_Play(switchable.triggerSound);
    }

    switchable.callbackOnTouch = callbackOnTouch;

    // Add the created Switchable to the switchableList
    switchableList[numSwitchables] = switchable;
    numSwitchables++;

    // Return a pointer to the last created Switchable
    return &amp;switchableList[numSwitchables - 1];
}

/**
 * Creates a Switch object with the specified parameters.
 * 
 * @param type             The type of Switch (enum SWITCH_TYPES).
 * @param position         The position of the Switch.
 * @param width            The width of the Switch.
 * @param height           The height of the Switch.
 * @param switchable       The associated Switchable.
 * @param timeInSeconds    The time interval for toggling the switch.
 * @param exclusive        Flag indicating if the switch is exclusive.
 * @param moveDirection    The direction in which the Switch can move.
 * 
 * @return A pointer to the created Switch.
 */
Switch* CreateSwitch(enum SWITCH_TYPES type, Vector2 position, float width, float height, Switchable* switchable, float timeInSeconds, int exclusive, enum MOVE_DIRECTIONS moveDirection)
{
	// Switch properties
    Switch switch;
    switch.type = type;
    switch.moveDirection = moveDirection;
    switch.pressedOriginalPosition = position;
    switch.exclusive = exclusive;

	// Setup object properties
    Vector2 zero = CreateVector2(0, 0);
    switch.collider = CreateCollider(position, zero, width, height, 1, 0);
    switch.drawnPosition = position;
    switch.triggerState = 0;
    switch.switchable = switchable;
    switch.toggleTime = timeInSeconds;
    switch.triggerSound = CP_Sound_Load("./Assets/Switch.wav");
    switch.unTriggerSound = CP_Sound_Load("./Assets/SwitchReverse.wav");

    // Check the type of Switch
    if (type == SWITCH_PRESS)
    {
        Vector2 offset = CreateVector2(switch.collider-&gt;point2.x, 0);
        switch.leftCollider = CreateCollider(add(&amp;position, &amp;offset), CreateVector2(0, 0), width * collisionWidth, height * collisionHeight, 1, 0);
		
        offset = CreateVector2(switch.collider-&gt;point1.x, 0);
        switch.rightCollider = CreateCollider(add(&amp;position, &amp;offset), CreateVector2(0, 0), width * collisionWidth, height * collisionHeight, 1, 0);
    }
    else
    {
        switch.leftCollider = NULL;
        switch.rightCollider = NULL;
        switch.collider-&gt;isTrigger = 1;
    }

    // Add the created Switch to the switchList
    switchList[numSwitches] = s;
    numSwitches++;

    // Return a pointer to the last created Switch
    return &amp;switchList[numSwitches - 1];
}
</code></pre>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Level Design Projects</title>
		<link>https://griff.pw/2023/10/27/level-design-projects/</link>
		
		<dc:creator><![CDATA[griffon]]></dc:creator>
		<pubDate>Fri, 27 Oct 2023 00:07:04 +0000</pubDate>
				<category><![CDATA[Finished Projects]]></category>
		<guid isPermaLink="false">https://griff.pw/?p=131</guid>

					<description><![CDATA[A collection of smaller experiences.]]></description>
										<content:encoded><![CDATA[
<hr class="wp-block-separator has-alpha-channel-opacity"/>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<h2 class="wp-block-heading">Little Mouse, Big Moon</h2>



<p class="has-medium-font-size"><em>Fall 2022, DES 214: Level Design Methods</em></p>



<p class="has-medium-font-size">This was my final project for my first level design class at DigiPen created in Unity. You play as a little mouse walking through a city environment until you make your way to the big moon on the search for cheese.</p>



<div class="wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex">
<div class="wp-block-button"><a class="wp-block-button__link wp-element-button" href="https://griff.pw/downloads/LittleMouseBigMoon.zip">Download it here.</a></div>
</div>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-2 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" data-id="191" src="https://griff.pw/wp-content/uploads/2023/11/LittleMouseBigMoon_WKo7zYpfih-1024x576.png" alt="" class="wp-image-191" srcset="https://griff.pw/wp-content/uploads/2023/11/LittleMouseBigMoon_WKo7zYpfih-1024x576.png 1024w, https://griff.pw/wp-content/uploads/2023/11/LittleMouseBigMoon_WKo7zYpfih-300x169.png 300w, https://griff.pw/wp-content/uploads/2023/11/LittleMouseBigMoon_WKo7zYpfih-768x432.png 768w, https://griff.pw/wp-content/uploads/2023/11/LittleMouseBigMoon_WKo7zYpfih-1536x864.png 1536w, https://griff.pw/wp-content/uploads/2023/11/LittleMouseBigMoon_WKo7zYpfih.png 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" data-id="190" src="https://griff.pw/wp-content/uploads/2023/11/LittleMouseBigMoon_I1AxVF92UB-1024x576.png" alt="" class="wp-image-190" srcset="https://griff.pw/wp-content/uploads/2023/11/LittleMouseBigMoon_I1AxVF92UB-1024x576.png 1024w, https://griff.pw/wp-content/uploads/2023/11/LittleMouseBigMoon_I1AxVF92UB-300x169.png 300w, https://griff.pw/wp-content/uploads/2023/11/LittleMouseBigMoon_I1AxVF92UB-768x432.png 768w, https://griff.pw/wp-content/uploads/2023/11/LittleMouseBigMoon_I1AxVF92UB-1536x864.png 1536w, https://griff.pw/wp-content/uploads/2023/11/LittleMouseBigMoon_I1AxVF92UB.png 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" data-id="193" src="https://griff.pw/wp-content/uploads/2023/11/LittleMouseBigMoon_7vIY9t7uqU-1024x576.png" alt="" class="wp-image-193" srcset="https://griff.pw/wp-content/uploads/2023/11/LittleMouseBigMoon_7vIY9t7uqU-1024x576.png 1024w, https://griff.pw/wp-content/uploads/2023/11/LittleMouseBigMoon_7vIY9t7uqU-300x169.png 300w, https://griff.pw/wp-content/uploads/2023/11/LittleMouseBigMoon_7vIY9t7uqU-768x432.png 768w, https://griff.pw/wp-content/uploads/2023/11/LittleMouseBigMoon_7vIY9t7uqU-1536x864.png 1536w, https://griff.pw/wp-content/uploads/2023/11/LittleMouseBigMoon_7vIY9t7uqU.png 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" data-id="192" src="https://griff.pw/wp-content/uploads/2023/11/LittleMouseBigMoon_QCQXAaCbH9-1024x576.png" alt="" class="wp-image-192" srcset="https://griff.pw/wp-content/uploads/2023/11/LittleMouseBigMoon_QCQXAaCbH9-1024x576.png 1024w, https://griff.pw/wp-content/uploads/2023/11/LittleMouseBigMoon_QCQXAaCbH9-300x169.png 300w, https://griff.pw/wp-content/uploads/2023/11/LittleMouseBigMoon_QCQXAaCbH9-768x432.png 768w, https://griff.pw/wp-content/uploads/2023/11/LittleMouseBigMoon_QCQXAaCbH9-1536x864.png 1536w, https://griff.pw/wp-content/uploads/2023/11/LittleMouseBigMoon_QCQXAaCbH9.png 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</figure>
</div>
</div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<h2 class="wp-block-heading">Procedural Dungeons</h2>



<p class="has-medium-font-size"><em>Fall 2022, DES 214: Level Design Methods</em></p>



<p class="has-medium-font-size">The first half of DES214 was spent on a procedurally generated dungeon prototype in Unity. This is since it was level design for computer science majors. I took a unique approach on this project by creating a hexagonal grid which created interesting natural cover in the map.</p>



<div class="wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex">
<div class="wp-block-button"><a class="wp-block-button__link wp-element-button" href="https://griff.pw/downloads/ProceduralDungeons.zip">Download it here.</a></div>
</div>



<p class="has-medium-font-size">You can also play it below.</p>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="600" height="338" src="https://griff.pw/wp-content/uploads/2023/10/ezgif-1-9f40ddb05a.gif" alt="" class="wp-image-201" style="aspect-ratio:1.7751479289940828;width:416px;height:auto"/></figure>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="576" src="https://griff.pw/wp-content/uploads/2023/10/ProceduralDungeons_EkU6x2C0lX-1024x576.png" alt="" class="wp-image-202" style="width:416px" srcset="https://griff.pw/wp-content/uploads/2023/10/ProceduralDungeons_EkU6x2C0lX-1024x576.png 1024w, https://griff.pw/wp-content/uploads/2023/10/ProceduralDungeons_EkU6x2C0lX-300x169.png 300w, https://griff.pw/wp-content/uploads/2023/10/ProceduralDungeons_EkU6x2C0lX-768x432.png 768w, https://griff.pw/wp-content/uploads/2023/10/ProceduralDungeons_EkU6x2C0lX-1536x864.png 1536w, https://griff.pw/wp-content/uploads/2023/10/ProceduralDungeons_EkU6x2C0lX.png 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</div>
</div>



<div class="iframe-container">
                  <iframe mozallowfullscreen="true" allow="autoplay; fullscreen" src="https://griff.pw/proceduraldungeons/index.html" style="border:0px #000000 none;" name="Pong: Star Wars Remix" scrolling="no" msallowfullscreen="true" allowfullscreen="true" webkitallowfullscreen="true" allowtransparency="true" frameborder="0"></iframe>
                        </div>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Obscura</title>
		<link>https://griff.pw/2023/10/24/obscura/</link>
		
		<dc:creator><![CDATA[griffon]]></dc:creator>
		<pubDate>Tue, 24 Oct 2023 23:06:34 +0000</pubDate>
				<category><![CDATA[Finished Projects]]></category>
		<guid isPermaLink="false">https://griff.pw/?p=121</guid>

					<description><![CDATA[A puzzle-platformer in which the player uses different cameras to find colorful solutions to problems in a monochromatic world.]]></description>
										<content:encoded><![CDATA[
<hr class="wp-block-separator has-alpha-channel-opacity"/>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<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">
<iframe loading="lazy" title="Obscura Teaser" width="640" height="360" src="https://www.youtube.com/embed/gyTPl2O32Ac?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>
</div></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<h2 class="wp-block-heading has-large-font-size">Information</h2>



<p class="has-medium-font-size"><em>November 2020 – June 2021</em></p>



<p class="has-medium-font-size"><strong>Engine: </strong>Unity</p>



<p class="has-medium-font-size"><strong>My Role:</strong> Programmer and designer</p>
</div>
</div>



<hr class="wp-block-separator has-alpha-channel-opacity wp-embed-aspect-16-9 wp-has-aspect-ratio"/>



<p class="has-medium-font-size"><strong>Obscura</strong>&nbsp;is a puzzle-platformer in which the player uses different cameras to find colorful solutions to problems in a monochromatic world. The game was developed as a high school project by Griffon Hanson and Ty Morrow, and it won 7th place in the Computer Game &amp; Simulation Programming event at the 2021 FBLA National Leadership Conference.</p>



<p class="has-medium-font-size">Everything the player sees is in black and white, but throughout the levels are cameras which display a primary color. Objects that match that primary color come into existence, which will allow the player to solve puzzles that they&#8217;d be faced with. However, they may also create objects that block the player&#8217;s path, maybe causing the player to leave a camera behind to hold a perspective that they wouldn&#8217;t be able to hold on their own.&nbsp;<strong>Obscura</strong>&nbsp;plays with perspective, platforming, and color as tools for creating an engaging experience for players. On top of this is the online leaderboard in which players race to climb for the top spot.</p>



<p></p>



<div class="wp-block-buttons is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-16018d1d wp-block-buttons-is-layout-flex">
<div class="wp-block-button"><a class="wp-block-button__link wp-element-button" href="https://store.steampowered.com/app/1699830/Obscura/"><strong>Obscura on Steam</strong></a></div>
</div>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-3 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="578" data-id="185" src="https://griff.pw/wp-content/uploads/2023/10/obscura1-1024x578.jpg" alt="" class="wp-image-185" srcset="https://griff.pw/wp-content/uploads/2023/10/obscura1-1024x578.jpg 1024w, https://griff.pw/wp-content/uploads/2023/10/obscura1-300x169.jpg 300w, https://griff.pw/wp-content/uploads/2023/10/obscura1-768x433.jpg 768w, https://griff.pw/wp-content/uploads/2023/10/obscura1-1536x866.jpg 1536w, https://griff.pw/wp-content/uploads/2023/10/obscura1.jpg 1915w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="600" height="337" data-id="183" src="https://griff.pw/wp-content/uploads/2023/10/obscura2.jpg" alt="" class="wp-image-183" srcset="https://griff.pw/wp-content/uploads/2023/10/obscura2.jpg 600w, https://griff.pw/wp-content/uploads/2023/10/obscura2-300x169.jpg 300w" sizes="auto, (max-width: 600px) 100vw, 600px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="600" height="337" data-id="184" src="https://griff.pw/wp-content/uploads/2023/10/obscura.jpg" alt="" class="wp-image-184" srcset="https://griff.pw/wp-content/uploads/2023/10/obscura.jpg 600w, https://griff.pw/wp-content/uploads/2023/10/obscura-300x169.jpg 300w" sizes="auto, (max-width: 600px) 100vw, 600px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" data-id="182" src="https://griff.pw/wp-content/uploads/2023/10/obscura3-1024x576.jpg" alt="" class="wp-image-182" srcset="https://griff.pw/wp-content/uploads/2023/10/obscura3-1024x576.jpg 1024w, https://griff.pw/wp-content/uploads/2023/10/obscura3-300x169.jpg 300w, https://griff.pw/wp-content/uploads/2023/10/obscura3-768x432.jpg 768w, https://griff.pw/wp-content/uploads/2023/10/obscura3-1536x864.jpg 1536w, https://griff.pw/wp-content/uploads/2023/10/obscura3.jpg 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</figure>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>The On-the-go Wizard’s Guide to the Vegetable and Real Estate Markets: A Veget-a-bullet Train Adventure</title>
		<link>https://griff.pw/2023/10/22/the-on-the-go-wizards-guide-to-the-vegetable-and-real-estate-markets-a-veget-a-bullet-train-adventure/</link>
		
		<dc:creator><![CDATA[griffon]]></dc:creator>
		<pubDate>Sun, 22 Oct 2023 04:43:06 +0000</pubDate>
				<category><![CDATA[Finished Projects]]></category>
		<guid isPermaLink="false">https://griff.pw/?p=242</guid>

					<description><![CDATA[An educational simulation for the purpose of informing travelling wizards magically trapped aboard enchanted locomotives on the processes of growing and selling vegetabullets to potential and perhaps unwitting passersby.]]></description>
										<content:encoded><![CDATA[
<p><em>February 2023</em></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p class="has-medium-font-size"><strong>tOtgWGttVaREM:aVTA</strong> is an educational simulation for the purpose of informing travelling wizards magically trapped aboard enchanted locomotives on the processes of growing and selling vegetabullets to potential and perhaps unwitting passersby. Utilizing state of the art advanced aggressive sales tactics they will experience utilizing the power of &#8220;The Canon&#8221; in securing profit necessary for unlocking wards binding them aboard their prison. With enough practice, patience, and perserverence, any wizard who finds themselves in such a scenario will have a complete guide for getting off the road, and back to their tower where they can once again put down their roots and live a happy and fulfilling life!</p>



<p class="has-medium-font-size">The project was made on a team of five students with three programmers and two artists during the 2023 Global Game Jam. I took on much of the gameplay programming responsibilities and had a great time creating a little project. You can see a presentation of the game below.</p>



<figure class="wp-block-embed aligncenter 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">
<iframe loading="lazy" title="DigiPen Global Game Jam 2023 - The On-the-go Wizard’s Guide to the Vegetable and Real Estate Markets" width="640" height="360" src="https://www.youtube.com/embed/t70GVzBoQk8?start=33&#038;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>
</div></figure>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Residuum</title>
		<link>https://griff.pw/2023/10/07/residuum/</link>
		
		<dc:creator><![CDATA[griffon]]></dc:creator>
		<pubDate>Sat, 07 Oct 2023 04:35:15 +0000</pubDate>
				<category><![CDATA[Finished Projects]]></category>
		<guid isPermaLink="false">https://griff.pw/?p=233</guid>

					<description><![CDATA[A multi-platform factory building prototype.]]></description>
										<content:encoded><![CDATA[
<p class="has-medium-font-size"><em>September 2020 – May 2021</em></p>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-4 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="533" data-id="236" src="https://griff.pw/wp-content/uploads/2023/11/im5-1024x533.png" alt="" class="wp-image-236" srcset="https://griff.pw/wp-content/uploads/2023/11/im5-1024x533.png 1024w, https://griff.pw/wp-content/uploads/2023/11/im5-300x156.png 300w, https://griff.pw/wp-content/uploads/2023/11/im5-768x400.png 768w, https://griff.pw/wp-content/uploads/2023/11/im5.png 1214w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="411" data-id="237" src="https://griff.pw/wp-content/uploads/2023/11/im4-1024x411.png" alt="" class="wp-image-237" srcset="https://griff.pw/wp-content/uploads/2023/11/im4-1024x411.png 1024w, https://griff.pw/wp-content/uploads/2023/11/im4-300x120.png 300w, https://griff.pw/wp-content/uploads/2023/11/im4-768x308.png 768w, https://griff.pw/wp-content/uploads/2023/11/im4.png 1501w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="625" data-id="234" src="https://griff.pw/wp-content/uploads/2023/11/im7-1024x625.png" alt="" class="wp-image-234" srcset="https://griff.pw/wp-content/uploads/2023/11/im7-1024x625.png 1024w, https://griff.pw/wp-content/uploads/2023/11/im7-300x183.png 300w, https://griff.pw/wp-content/uploads/2023/11/im7-768x469.png 768w, https://griff.pw/wp-content/uploads/2023/11/im7.png 1090w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</figure>



<p class="has-medium-font-size">Residuum is a multi-platform factory building simulation. The project’s main goal was to learn about AR, and how to integrate both a desktop and simulated version. The game was a high school project between myself, <a rel="noreferrer noopener" href="https://www.lakuna.pw/" target="_blank">Travis Martin</a>, and <a rel="noreferrer noopener" href="https://griff.pw/" target="_blank">Ty Morrow</a>. The music was created by me and can be found <a href="https://typack.bandcamp.com/">here</a>.</p>



<div class="wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex">
<div class="wp-block-button"><a class="wp-block-button__link wp-element-button" href="https://ty.business/wp-content/uploads/2021/06/Residuum-1.0.zip">Download Windows</a></div>



<div class="wp-block-button"><a class="wp-block-button__link wp-element-button" href="https://ty.business/wp-content/uploads/2021/06/android.zip">Download Android APK</a></div>
</div>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
