<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>SharkJets</title><description>Unity VR game development, technical tutorials, and real-world tech projects.</description><link>https://www.sharkjets.com/</link><item><title>Making a Unity Game with Claude AI in Two Hours</title><link>https://www.sharkjets.com/posts/making-a-unity-game-with-claude-ai/</link><guid isPermaLink="true">https://www.sharkjets.com/posts/making-a-unity-game-with-claude-ai/</guid><description>I gave Claude and the new Unity CLI two hours to build a Bionic Commando-style game. Here&apos;s the workflow, the demo videos, and why AI makes gamedev easy.</description><pubDate>Thu, 01 Oct 2026 00:00:00 GMT</pubDate><content:encoded>&lt;aside class=&quot;ad-link&quot; aria-label=&quot;Recommended reading&quot; data-astro-cid-6vumcifv&gt;&lt;span data-astro-cid-6vumcifv&gt;Recommended reading&lt;/span&gt;&lt;a href=&quot;https://amzn.to/4qv5S52&quot; data-astro-cid-6vumcifv&gt;Unity Game Development in 24 Hours&lt;/a&gt;&lt;/aside&gt;
&lt;h1 id=&quot;making-a-unity-game-with-claude-ai-in-two-hours&quot;&gt;Making a Unity Game with Claude AI in Two Hours&lt;/h1&gt;
&lt;h2 id=&quot;or-how-ai-is-making-gamedev-hella-easy&quot;&gt;or how AI is making gamedev hella easy.&lt;/h2&gt;
&lt;p&gt;This year I took a break from working on gamedev, I haven’t touched Unity since January when I last worked on ShipVipers. Work and family and life just got a little too busy for me to keep grinding like I was.&lt;/p&gt;
&lt;p&gt;Recently, Valve released their &lt;a href=&quot;https://store.steampowered.com/hardware/steamframe&quot;&gt;Steam Frame&lt;/a&gt; VR headset and I was lucky enough to get on the list. This got me all fired up again. A Quest-like headset with slightly better specs and way better focus on games? Sign me up!&lt;/p&gt;
&lt;p&gt;..and sign me up I did! To the Steam Developer platform. ShipVipers is definitely going to be a Steam Frame game! (say that three times fast)&lt;/p&gt;
&lt;p&gt;Now, as a professional web developer, I’ve been using &lt;a href=&quot;https://claude.ai/referral/Jeae6NArrg?s=claude_ai&quot;&gt;Claude&lt;/a&gt; and Codex (and almost any other LLM you can think of) to help me with my day to day work. I used it in Unity a few times a year ago, but it wasn’t the best experience.&lt;/p&gt;
&lt;p&gt;Every AI update is monumental, so I thought I’d give it another whirl. I installed the latest Unity, which now has an awesome &lt;a href=&quot;https://docs.unity.com/en-us/unity-cli/use-unity-cli&quot;&gt;new CLI&lt;/a&gt; specifically to help agents out! Then I fired up a new project and &lt;a href=&quot;https://en.wikipedia.org/wiki/Commit_(version_control)&quot;&gt;committed&lt;/a&gt; it as a starting point.&lt;/p&gt;
&lt;h4 id=&quot;the-idea&quot;&gt;the idea&lt;/h4&gt;
&lt;p&gt;You can’t go into building something blindly, so the first step was to think about &lt;strong&gt;what&lt;/strong&gt; I wanted to build.&lt;/p&gt;
&lt;p&gt;I’ve been writing a futuristic short story and when I thought about it, for some reason, the NES Classic game Bionic Commando popped into my head.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.sharkjets.com/uploads/2026/bionic-commando-nes.gif&quot; alt=&quot;Bionic Commando gif&quot;/&gt;&lt;/p&gt;
&lt;p&gt;So I went into Claude and had it create a plan for how to create such a game. I used a claude skill I created called &lt;a href=&quot;https://github.com/skidvis/skill-code-mentor&quot;&gt;Code Mentor&lt;/a&gt; which creates nice guides to walk me through whatever I want to build. (This keeps me from forgetting how to code and also teaches me new things!)&lt;/p&gt;
&lt;p&gt;It also has the nice side effect of creating a step-by-step process for the agents to follow. Next, I pointed Claude to the newly created game folder (where the guides are now too) and said “Implement Guide #1.”&lt;/p&gt;
&lt;p&gt;Off it went, writing code, testing what it made, and making adjustments. It was really cool watching it run Unity and fixing things as it went.&lt;/p&gt;
&lt;h4 id=&quot;the-results&quot;&gt;the results&lt;/h4&gt;
&lt;p&gt;After about an hour, and a few pieces of input from me, this is what it made.&lt;/p&gt;
&lt;iframe src=&quot;https://www.youtube-nocookie.com/embed/gil5jZbOIJQ&quot; title=&quot;Demo 1&quot; class=&quot;youtube-embed&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen data-v-28c2fa45&gt;&lt;/iframe&gt;
&lt;p&gt;Not bad at all.&lt;/p&gt;
&lt;p&gt;The next day, I thought I’d spend another hour on it and see where we could get. The more I played it, the more I wondered why I went with Bionic Commando? The character in my story has a jet pack, not a grappling hook! So I asked Claude to replace the grapple with a jetpack.&lt;/p&gt;
&lt;p&gt;Then I:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;imported one of my favorite asset packs, &lt;a href=&quot;https://assetstore.unity.com/packages/3d/environments/surroundead-survival-game-assets-76276?aid=1101l9LBW&amp;amp;utm_source=aff&quot;&gt;SurrounDead&lt;/a&gt; (a zombie game setting)&lt;/li&gt;
&lt;li&gt;imported a handful of animations from Mixamo&lt;/li&gt;
&lt;li&gt;told Claude to create a level and implement the assets.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is where we landed after the second hour of development:&lt;/p&gt;
&lt;iframe src=&quot;https://www.youtube-nocookie.com/embed/KP46Yluovb4&quot; title=&quot;Demo 2&quot; class=&quot;youtube-embed&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen data-v-28c2fa45&gt;&lt;/iframe&gt;
&lt;p&gt;Pretty neat, right?&lt;/p&gt;
&lt;p&gt;I gotta say, we’re going place with AI. I feel like Tony Stark working with Jarvis.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.sharkjets.com/uploads/2026/stark.gif&quot; alt=&quot;Tony Stark from Iron Man&quot;/&gt;&lt;/p&gt;
&lt;p&gt;My plan is to keep hitting this project for an hour a day until Claude finally starts to choke. What if that never happens? Well, I guess I’ll be shipping this game to Steam!&lt;/p&gt;
&lt;p&gt;Stay tuned.&lt;/p&gt;
&lt;aside class=&quot;ad-link&quot; aria-label=&quot;Recommended reading&quot; data-astro-cid-6vumcifv&gt;&lt;span data-astro-cid-6vumcifv&gt;Recommended reading&lt;/span&gt;&lt;a href=&quot;https://amzn.to/4qv5S52&quot; data-astro-cid-6vumcifv&gt;Unity Game Development in 24 Hours&lt;/a&gt;&lt;/aside&gt;</content:encoded></item><item><title>Achieve Stunning Visual Effects with Unity URP Green Screen</title><link>https://www.sharkjets.com/posts/achieve-stunning-visual-effects-with-unity-urp-green-screen/</link><guid isPermaLink="true">https://www.sharkjets.com/posts/achieve-stunning-visual-effects-with-unity-urp-green-screen/</guid><description>In this tutorial, we&apos;ll show you how to use Unity URP to create a green screen scene. This Virtual Production tutorial will teach you how to use Unity URP to create a realistic green screen scene for your video projects!</description><pubDate>Sat, 16 Dec 2023 08:46:33 GMT</pubDate><content:encoded>&lt;aside class=&quot;ad-link&quot; aria-label=&quot;Recommended reading&quot; data-astro-cid-6vumcifv&gt;&lt;span data-astro-cid-6vumcifv&gt;Recommended reading&lt;/span&gt;&lt;a href=&quot;https://amzn.to/4qv5S52&quot; data-astro-cid-6vumcifv&gt;Unity Game Development in 24 Hours&lt;/a&gt;&lt;/aside&gt;

&lt;h1 id=&quot;achieve-stunning-visual-effects-with-unity-urp-green-screen&quot;&gt;Achieve Stunning Visual Effects with Unity URP Green Screen&lt;/h1&gt;
&lt;h3 id=&quot;date-2023-12-16t0846330000---skid-vis&quot;&gt;Date: 2023-12-16T08:46:33+00:00 - (Skid Vis)&lt;/h3&gt;
&lt;p&gt;Welcome to this comprehensive tutorial on creating professional green screen effects in Unity! In this guide, I’ll walk you through the process of putting yourself (or anyone else) into your game using Unity’s Universal Render Pipeline (URP) and a green screen video. This technique is perfect for game developers, content creators, and virtual production enthusiasts looking to blend real-world footage with digital environments.&lt;/p&gt;
&lt;h2 id=&quot;what-youll-learn&quot;&gt;What You’ll Learn&lt;/h2&gt;
&lt;p&gt;In this tutorial, you’ll discover how to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Set up a green screen material in Unity using Shader Graph&lt;/li&gt;
&lt;li&gt;Configure a video player to display green screen footage&lt;/li&gt;
&lt;li&gt;Fine-tune the chroma key effect for clean results&lt;/li&gt;
&lt;li&gt;Position and scale your video subject within the game world&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;prerequisites&quot;&gt;Prerequisites&lt;/h2&gt;
&lt;p&gt;To follow along with this tutorial, you’ll need:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Unity 2022 LTS (or a similar recent version)&lt;/li&gt;
&lt;li&gt;A video with a green screen background&lt;/li&gt;
&lt;li&gt;Basic familiarity with Unity’s interface&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;step-by-step-tutorial&quot;&gt;Step-by-Step Tutorial&lt;/h2&gt;
&lt;h3 id=&quot;1-setting-up-your-project&quot;&gt;1. Setting Up Your Project&lt;/h3&gt;
&lt;p&gt;I’m using Unity 2022 LTS for this tutorial. To get started:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Create a new Unity project or use an existing one&lt;/li&gt;
&lt;li&gt;Add a plane to your scene to serve as a surface for placing objects&lt;/li&gt;
&lt;li&gt;Import your green screen video footage&lt;/li&gt;
&lt;li&gt;Import a screenshot of your video (optional, but helpful for color picking)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;2-creating-the-green-screen-material&quot;&gt;2. Creating the Green Screen Material&lt;/h3&gt;
&lt;p&gt;The heart of this effect is a custom shader that will mask out the green color:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Import the Shader Graph (you can download mine from the link below)&lt;/li&gt;
&lt;li&gt;Right-click on the Shader Graph and select “Create Material”&lt;/li&gt;
&lt;li&gt;In the material settings, ensure:
&lt;ul&gt;
&lt;li&gt;Surface Type is set to “Transparent”&lt;/li&gt;
&lt;li&gt;Blending Mode is set to “Alpha”&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The Shader Graph includes several important parameters:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Texture&lt;/strong&gt;: The video feed to apply the green screen effect to&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Color&lt;/strong&gt;: The specific green color to mask out&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hue Range&lt;/strong&gt;: For fine-tuning which colors get masked&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fuzziness&lt;/strong&gt;: Controls the softness of the mask edges&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;3-setting-up-the-video-player&quot;&gt;3. Setting Up the Video Player&lt;/h3&gt;
&lt;p&gt;Now let’s create the object that will display our green screen video:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Create a new empty GameObject in your scene (I named mine “Player”)&lt;/li&gt;
&lt;li&gt;Add a Video Player component to this object&lt;/li&gt;
&lt;li&gt;Inside the Player object, add a Plane (this will be our video display surface)&lt;/li&gt;
&lt;li&gt;Resize the plane to match your video’s aspect ratio (I used 16:9, so I set X to 16 and Z to 9)&lt;/li&gt;
&lt;li&gt;Scale down the parent object to a reasonable size (I used 0.5)&lt;/li&gt;
&lt;li&gt;Lift the object slightly to prevent Z-clipping&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;4-configuring-the-material-and-video&quot;&gt;4. Configuring the Material and Video&lt;/h3&gt;
&lt;p&gt;Now we need to connect everything together:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Apply the green screen material to the plane&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;In the material settings:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Drag your screenshot into the Texture field (for testing)&lt;/li&gt;
&lt;li&gt;Use the eyedropper tool to select the exact green color to mask out&lt;/li&gt;
&lt;li&gt;Fine-tune the Hue Range and Fuzziness as needed&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Configure the Video Player component:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Drag your green screen video clip into the Video Clip field&lt;/li&gt;
&lt;li&gt;Set Update Mode to “DSP” for smoother playback (especially on slower computers)&lt;/li&gt;
&lt;li&gt;Enable Loop if you want the video to repeat&lt;/li&gt;
&lt;li&gt;Change Render Mode to “Material Override”&lt;/li&gt;
&lt;li&gt;Drag the Plane into the Renderer field&lt;/li&gt;
&lt;li&gt;Uncheck “Auto Select Property” and set it to “texture”&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;5-positioning-and-orientation&quot;&gt;5. Positioning and Orientation&lt;/h3&gt;
&lt;p&gt;To position your video subject correctly in the scene:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Rotate the Player object 90 degrees on the X-axis (so it’s standing upright)&lt;/li&gt;
&lt;li&gt;Adjust the height so the feet touch the ground&lt;/li&gt;
&lt;li&gt;Optional: Add a script to make the player always face the camera for a billboard effect&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;6-testing-the-result&quot;&gt;6. Testing the Result&lt;/h3&gt;
&lt;p&gt;Hit Play to see your green screen video integrated into your Unity scene! The background should be transparent, showing only your subject against the game environment.&lt;/p&gt;
&lt;h2 id=&quot;tips-for-best-results&quot;&gt;Tips for Best Results&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Lighting&lt;/strong&gt;: Ensure your green screen is evenly lit when recording&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Color Selection&lt;/strong&gt;: Use the eyedropper to pick the exact shade of green from your footage&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fine-tuning&lt;/strong&gt;: Adjust the Hue Range and Fuzziness parameters for cleaner edges&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Performance&lt;/strong&gt;: If you experience lag, try reducing video resolution or using a more optimized codec&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;resources-and-support&quot;&gt;Resources and Support&lt;/h2&gt;
&lt;p&gt;For those who want to dive deeper, I’ve made my URP Green Screen Shadergraph available at: &lt;a href=&quot;https://ko-fi.com/s/14f8a769c1&quot;&gt;https://ko-fi.com/s/14f8a769c1&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I would love to connect with you through my Discord server where we can discuss more about Unity and virtual production: &lt;a href=&quot;https://discord.com/invite/CVNuqSZ&quot;&gt;https://discord.com/invite/CVNuqSZ&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If you’d like to support my work, consider becoming a Patreon member: &lt;a href=&quot;http://www.patreon.com/sharkjets&quot;&gt;http://www.patreon.com/sharkjets&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The background music in the video tutorial is by Flawed Human Being, check them out at: &lt;a href=&quot;https://open.spotify.com/artist/0ywnFmJWQwP4adEG9otvYA&quot;&gt;https://open.spotify.com/artist/0ywnFmJWQwP4adEG9otvYA&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;This green screen technique opens up countless possibilities for integrating real-world footage into your Unity projects. Whether you’re creating a game with live-action elements, a mixed reality experience, or just want to put yourself in your game world, this approach provides a professional-looking result with minimal setup.&lt;/p&gt;
&lt;p&gt;If you found this tutorial helpful, please consider subscribing to my channel for more Unity and game development content. If you have any questions or run into issues, feel free to leave a comment on the video!&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=WimFHwsUP6s&quot;&gt;Watch the full tutorial on YouTube&lt;/a&gt;&lt;/p&gt;

&lt;aside class=&quot;ad-link&quot; aria-label=&quot;Recommended reading&quot; data-astro-cid-6vumcifv&gt;&lt;span data-astro-cid-6vumcifv&gt;Recommended reading&lt;/span&gt;&lt;a href=&quot;https://amzn.to/3UMq2f3&quot; data-astro-cid-6vumcifv&gt;How to Make a Video Game All By Yourself: 10 steps, just you and a computer&lt;/a&gt;&lt;/aside&gt;</content:encoded></item><item><title>Level Up Your Game with AI: Unleashing the Future of Game Asset Design</title><link>https://www.sharkjets.com/posts/level-up-your-game-with-ai-unleashing-the-future-of-asset-design/</link><guid isPermaLink="true">https://www.sharkjets.com/posts/level-up-your-game-with-ai-unleashing-the-future-of-asset-design/</guid><description>In this tutorial, we&apos;re going to take a look at how artificial intelligence can help you level up your game asset design skills. By using AI to generate textures, models, and animations, you&apos;ll be able to create assets faster and with less effort.</description><pubDate>Fri, 06 Oct 2023 01:20:53 GMT</pubDate><content:encoded>&lt;aside class=&quot;ad-link&quot; aria-label=&quot;Recommended reading&quot; data-astro-cid-6vumcifv&gt;&lt;span data-astro-cid-6vumcifv&gt;Recommended reading&lt;/span&gt;&lt;a href=&quot;https://amzn.to/3UMq2f3&quot; data-astro-cid-6vumcifv&gt;How to Make a Video Game All By Yourself: 10 steps, just you and a computer&lt;/a&gt;&lt;/aside&gt;

&lt;h1 id=&quot;level-up-your-game-with-ai-unleashing-the-future-of-game-asset-design&quot;&gt;Level Up Your Game with AI: Unleashing the Future of Game Asset Design&lt;/h1&gt;
&lt;h3 id=&quot;date-2023-10-06t0120530000---skid-vis&quot;&gt;Date: 2023-10-06T01:20:53+00:00 - (Skid Vis)&lt;/h3&gt;
&lt;p&gt;In this comprehensive guide, I’ll show you how to leverage artificial intelligence to revolutionize your game asset creation process. AI tools have transformed the way developers can approach asset design, allowing for rapid prototyping, unique visual elements, and professional-quality results with minimal effort.&lt;/p&gt;
&lt;h2 id=&quot;introduction-the-ai-game-asset-revolution&quot;&gt;Introduction: The AI Game Asset Revolution&lt;/h2&gt;
&lt;p&gt;Game development is resource-intensive, with asset creation often consuming a significant portion of development time and budget. AI-powered tools are changing this landscape dramatically, enabling developers of all skill levels to create high-quality assets quickly and efficiently.&lt;/p&gt;
&lt;p&gt;In this article, I’ll walk you through a real-world example of how I used various AI tools to create a complete commercial for a fictional company called “Ship Vipers” - a post-battle cleanup service in a sci-fi universe. The entire commercial was created using AI tools, with my only contribution being the assembly and editing of the generated elements.&lt;/p&gt;
&lt;h2 id=&quot;the-ai-toolkit-for-game-developers&quot;&gt;The AI Toolkit for Game Developers&lt;/h2&gt;
&lt;p&gt;Let’s explore the powerful AI tools that are transforming game asset creation:&lt;/p&gt;
&lt;h3 id=&quot;1-leonardoai---background-and-environment-generation&quot;&gt;1. Leonardo.ai - Background and Environment Generation&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://leonardo.ai&quot;&gt;Leonardo.ai&lt;/a&gt; is a versatile image generation platform that excels at creating backgrounds, environments, and concept art for games.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How to use Leonardo.ai:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Create an account (free to start with limited credits)&lt;/li&gt;
&lt;li&gt;Configure your generation settings:
&lt;ul&gt;
&lt;li&gt;Number of images to generate&lt;/li&gt;
&lt;li&gt;Image style/type&lt;/li&gt;
&lt;li&gt;Privacy settings&lt;/li&gt;
&lt;li&gt;Resolution&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Enter your prompt (keywords describing what you want)&lt;/li&gt;
&lt;li&gt;Select your preferred visual style&lt;/li&gt;
&lt;li&gt;Click generate&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Leonardo.ai provides several useful features:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Multiple image variations to choose from&lt;/li&gt;
&lt;li&gt;Ability to zoom in/out on generated images&lt;/li&gt;
&lt;li&gt;Background removal&lt;/li&gt;
&lt;li&gt;Download options for different resolutions&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Real Example:&lt;/strong&gt; For my Ship Vipers commercial, I used Leonardo.ai to generate space scenes with escape pods floating in space, creating the perfect backdrop for my sci-fi cleanup service.&lt;/p&gt;
&lt;h3 id=&quot;2-midjourney---artistic-elements-and-logo-design&quot;&gt;2. Midjourney - Artistic Elements and Logo Design&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://midjourney.com&quot;&gt;Midjourney&lt;/a&gt; operates through Discord and excels at creating stylized, artistic images that can give your game a unique visual identity.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How to use Midjourney:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Join the Midjourney Discord server&lt;/li&gt;
&lt;li&gt;Use the &lt;code&gt;/imagine&lt;/code&gt; command followed by your prompt&lt;/li&gt;
&lt;li&gt;Wait for four variations to be generated&lt;/li&gt;
&lt;li&gt;Choose your preferred option:
&lt;ul&gt;
&lt;li&gt;U1-U4: Upscale (higher resolution version)&lt;/li&gt;
&lt;li&gt;V1-V4: Create variations of that specific image&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Midjourney offers additional refinement options:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Zoom out to expand the scene&lt;/li&gt;
&lt;li&gt;Convert to square format&lt;/li&gt;
&lt;li&gt;Pan the camera in different directions&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Real Example:&lt;/strong&gt; I used Midjourney to create the Ship Vipers logo by generating individual elements (a gun, a mop, and a skull) and then combining them in Photoshop to create a unique crossed-guns-and-mop design reminiscent of a skull and crossbones.&lt;/p&gt;
&lt;h3 id=&quot;3-playht---voice-acting-and-narration&quot;&gt;3. Play.ht - Voice Acting and Narration&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://play.ht&quot;&gt;Play.ht&lt;/a&gt; is an AI voice generation platform that can create professional-sounding narration and character voices for your games.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How to use Play.ht:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Visit the website&lt;/li&gt;
&lt;li&gt;Type or paste your script&lt;/li&gt;
&lt;li&gt;Select from a wide variety of voice options (male/female, accents, etc.)&lt;/li&gt;
&lt;li&gt;Generate the audio&lt;/li&gt;
&lt;li&gt;If you’re not satisfied, regenerate for different inflections&lt;/li&gt;
&lt;li&gt;Download the final audio file&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Real Example:&lt;/strong&gt; For my Ship Vipers commercial, I initially recorded my own voice but wanted something different. Using Play.ht, I was able to generate a professional-sounding narrator who delivered the commercial script with perfect inflection and timing.&lt;/p&gt;
&lt;h3 id=&quot;4-d-id---character-animation-and-video-creation&quot;&gt;4. D-ID - Character Animation and Video Creation&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://d-id.com&quot;&gt;D-ID&lt;/a&gt; allows you to animate still images, creating talking head videos that can be used for NPCs, cutscenes, or promotional materials.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How to use D-ID:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Upload an image to serve as your “actor”&lt;/li&gt;
&lt;li&gt;Either:
&lt;ul&gt;
&lt;li&gt;Type text and select one of D-ID’s voices, or&lt;/li&gt;
&lt;li&gt;Upload your own audio file&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Generate the video&lt;/li&gt;
&lt;li&gt;Download the result&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Real Example:&lt;/strong&gt; For the Ship Vipers commercial, I uploaded an image and my Play.ht generated audio. D-ID created a video with perfectly synchronized lip movements, bringing my character to life with minimal effort.&lt;/p&gt;
&lt;h3 id=&quot;5-adobe-photoshops-generative-fill---quick-asset-creation&quot;&gt;5. Adobe Photoshop’s Generative Fill - Quick Asset Creation&lt;/h3&gt;
&lt;p&gt;The latest versions of Photoshop include AI-powered generative fill capabilities that can be incredibly useful for game asset creation.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How to use Generative Fill:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Open Photoshop&lt;/li&gt;
&lt;li&gt;Select an area (or create a blank canvas)&lt;/li&gt;
&lt;li&gt;Access the Generative Fill tool&lt;/li&gt;
&lt;li&gt;Enter a text prompt describing what you want&lt;/li&gt;
&lt;li&gt;Choose from the generated options&lt;/li&gt;
&lt;li&gt;Continue adding elements by selecting new areas and generating more content&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Real Example:&lt;/strong&gt; I demonstrated how you can quickly create a desert sunset scene and then add elements like a truck and an astronaut, showing how this tool can be used to create background elements, props, and environmental details for games.&lt;/p&gt;
&lt;h2 id=&quot;practical-applications-for-game-development&quot;&gt;Practical Applications for Game Development&lt;/h2&gt;
&lt;p&gt;These AI tools have numerous applications in game development:&lt;/p&gt;
&lt;h3 id=&quot;background-elements-and-props&quot;&gt;Background Elements and Props&lt;/h3&gt;
&lt;p&gt;Generate unique props, background elements, and environmental details that would otherwise require significant time to model or illustrate.&lt;/p&gt;
&lt;h3 id=&quot;marketing-materials&quot;&gt;Marketing Materials&lt;/h3&gt;
&lt;p&gt;Create professional-looking promotional materials, trailers, and social media content to market your game.&lt;/p&gt;
&lt;h3 id=&quot;placeholder-assets&quot;&gt;Placeholder Assets&lt;/h3&gt;
&lt;p&gt;Use AI-generated assets as placeholders during development, allowing you to test gameplay and mechanics before final art is complete.&lt;/p&gt;
&lt;h3 id=&quot;supplementary-content&quot;&gt;Supplementary Content&lt;/h3&gt;
&lt;p&gt;Create secondary assets like in-game magazines, posters, photographs, and background details that add depth to your world without consuming significant development resources.&lt;/p&gt;
&lt;h2 id=&quot;best-practices-and-considerations&quot;&gt;Best Practices and Considerations&lt;/h2&gt;
&lt;p&gt;While AI tools are powerful, here are some tips for getting the best results:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Prompt Engineering:&lt;/strong&gt; Learning to write effective prompts is crucial. Be specific about what you want, including style, lighting, perspective, and mood.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Iteration:&lt;/strong&gt; Don’t settle for the first result. Generate multiple options and refine your prompts based on what works.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Combining Tools:&lt;/strong&gt; The most powerful approach is combining multiple AI tools. Generate images with one tool, voices with another, and animations with a third.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Post-Processing:&lt;/strong&gt; Most AI-generated assets benefit from some manual refinement in traditional tools like Photoshop or Blender.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Focus on Secondary Assets:&lt;/strong&gt; While AI can create impressive assets, consider using it primarily for secondary elements while investing in custom-designed primary assets for your game’s unique identity.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;AI tools have democratized game asset creation, allowing developers of all skill levels to create professional-quality assets quickly and efficiently. By incorporating these tools into your workflow, you can focus more on gameplay and mechanics while still achieving impressive visual and audio results.&lt;/p&gt;
&lt;p&gt;The Ship Vipers commercial I created demonstrates how these tools can work together to produce a polished final product with minimal manual asset creation. Whether you’re an indie developer with limited resources or a professional looking to streamline your workflow, AI asset generation tools offer exciting possibilities for the future of game development.&lt;/p&gt;
&lt;p&gt;If you found this guide helpful, please like and subscribe to my channel for more game development content. Let me know in the comments if there are other AI tools or techniques you’d like me to cover in future videos!&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=e3HTztqlKdM&quot;&gt;Watch the full video here&lt;/a&gt; to see these AI tools in action and learn how you can transform your game development process!&lt;/p&gt;

&lt;aside class=&quot;ad-link&quot; aria-label=&quot;Recommended reading&quot; data-astro-cid-6vumcifv&gt;&lt;span data-astro-cid-6vumcifv&gt;Recommended reading&lt;/span&gt;&lt;a href=&quot;https://amzn.to/3UMq2f3&quot; data-astro-cid-6vumcifv&gt;How to Make a Video Game All By Yourself: 10 steps, just you and a computer&lt;/a&gt;&lt;/aside&gt;</content:encoded></item><item><title>Unity XR - How to make a touchscreen</title><link>https://www.sharkjets.com/posts/unity-xr-how-to-make-a-touchscreen/</link><guid isPermaLink="true">https://www.sharkjets.com/posts/unity-xr-how-to-make-a-touchscreen/</guid><description>In this Unity XR tutorial, we&apos;ll be learning how to make a touch screen using Unity. We&apos;ll be creating a simple quest game using Unity and touchscreen controls.</description><pubDate>Sat, 29 Apr 2023 07:06:53 GMT</pubDate><content:encoded>&lt;aside class=&quot;ad-link&quot; aria-label=&quot;Recommended reading&quot; data-astro-cid-6vumcifv&gt;&lt;span data-astro-cid-6vumcifv&gt;Recommended reading&lt;/span&gt;&lt;a href=&quot;https://amzn.to/3UMq2f3&quot; data-astro-cid-6vumcifv&gt;How to Make a Video Game All By Yourself: 10 steps, just you and a computer&lt;/a&gt;&lt;/aside&gt;

&lt;h1 id=&quot;unity-xr---how-to-make-a-touchscreen&quot;&gt;Unity XR - How to make a touchscreen&lt;/h1&gt;
&lt;h3 id=&quot;date-2023-04-29t0706530000---skid-vis&quot;&gt;Date: 2023-04-29T07:06:53+00:00 - (Skid Vis)&lt;/h3&gt;
&lt;p&gt;In this tutorial, I’ll walk you through creating a touchscreen interface in Unity XR. I’ve designed this guide to help you build a simple quest game with touchscreen controls for your Virtual Reality projects.&lt;/p&gt;
&lt;p&gt;By the end of this tutorial, you’ll have all the knowledge needed to implement intuitive touchscreen interactions in your Unity games. This is perfect for those looking to enhance their VR experiences with interactive UI elements.&lt;/p&gt;
&lt;p&gt;I’ve made all the code for this project available at my code bundle site: &lt;a href=&quot;https://code.sharkjets.com/l/code-bundle&quot;&gt;https://code.sharkjets.com/l/code-bundle&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;For this project, I recommend using the VR Interaction Framework (VRIF), which you can get here: &lt;a href=&quot;https://tinyurl.com/vrframework&quot;&gt;https://tinyurl.com/vrframework&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If you’re developing for Oculus devices, I also suggest downloading the Oculus Developer Hub: &lt;a href=&quot;https://developer.oculus.com/documentation/unity/ts-odh/&quot;&gt;https://developer.oculus.com/documentation/unity/ts-odh/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I’d love to connect with you to discuss this project or answer any questions! Join my Discord server at &lt;a href=&quot;https://discord.com/invite/CVNuqSZ&quot;&gt;https://discord.com/invite/CVNuqSZ&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If you found this tutorial helpful, consider supporting my work by becoming a patron: &lt;a href=&quot;http://www.patreon.com/sharkjets&quot;&gt;http://www.patreon.com/sharkjets&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You can watch the full tutorial video here: &lt;a href=&quot;https://www.youtube.com/watch?v=R6IdFnTSW84&quot;&gt;Unity XR - How to make a touchscreen&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Special thanks to Flawed Human Being for the music used in this tutorial. Check out their work on Spotify: &lt;a href=&quot;https://open.spotify.com/artist/0ywnFmJWQwP4adEG9otvYA&quot;&gt;https://open.spotify.com/artist/0ywnFmJWQwP4adEG9otvYA&lt;/a&gt;&lt;/p&gt;

&lt;aside class=&quot;ad-link&quot; aria-label=&quot;Recommended reading&quot; data-astro-cid-6vumcifv&gt;&lt;span data-astro-cid-6vumcifv&gt;Recommended reading&lt;/span&gt;&lt;a href=&quot;https://amzn.to/4qv5S52&quot; data-astro-cid-6vumcifv&gt;Unity Game Development in 24 Hours&lt;/a&gt;&lt;/aside&gt;</content:encoded></item><item><title>Unity XR - How to catch bugs</title><link>https://www.sharkjets.com/posts/unity-xr-how-to-catch-bugs/</link><guid isPermaLink="true">https://www.sharkjets.com/posts/unity-xr-how-to-catch-bugs/</guid><description>Debug.Log will only et you so far, In this tutorial I show you how to manage and track bugs in your app when it&apos;s on the VR headset.</description><pubDate>Fri, 20 Jan 2023 06:33:18 GMT</pubDate><content:encoded>&lt;aside class=&quot;ad-link&quot; aria-label=&quot;Recommended reading&quot; data-astro-cid-6vumcifv&gt;&lt;span data-astro-cid-6vumcifv&gt;Recommended reading&lt;/span&gt;&lt;a href=&quot;https://amzn.to/3UMq2f3&quot; data-astro-cid-6vumcifv&gt;How to Make a Video Game All By Yourself: 10 steps, just you and a computer&lt;/a&gt;&lt;/aside&gt;

&lt;h1 id=&quot;unity-xr---how-to-catch-bugs&quot;&gt;Unity XR - How to catch bugs&lt;/h1&gt;
&lt;h3 id=&quot;date-2023-01-20t0633180000---skid-vis&quot;&gt;Date: 2023-01-20T06:33:18+00:00 - (Skid Vis)&lt;/h3&gt;
&lt;p&gt;Debugging VR applications presents unique challenges that traditional debugging methods don’t adequately address. In this comprehensive guide, I’ll show you how to effectively track and manage bugs in your Unity XR applications, especially when they’re running on a headset where you can’t see the console logs.&lt;/p&gt;
&lt;h2 id=&quot;the-problem-with-traditional-debugging-in-vr&quot;&gt;The Problem with Traditional Debugging in VR&lt;/h2&gt;
&lt;p&gt;When developing standard Unity applications, &lt;code&gt;Debug.Log&lt;/code&gt; is often our go-to tool for troubleshooting issues. We can see messages appear in the console, track variables, and identify where problems occur. However, this approach falls short in VR development for several reasons:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;You can’t see the console while wearing a VR headset&lt;/strong&gt; - This makes real-time debugging difficult&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Console logs aren’t available in production builds&lt;/strong&gt; - Once your app is deployed, you lose access to these logs&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;User-reported bugs are hard to reproduce&lt;/strong&gt; - Without detailed error information, it’s challenging to understand what went wrong for your users&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;To demonstrate this limitation, I’ve set up a simple scene in Unity 2021 LTS with:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A VRIF player rig&lt;/li&gt;
&lt;li&gt;A small red cube that can be grabbed&lt;/li&gt;
&lt;li&gt;A blue trigger box that detects when objects enter it&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In a traditional approach, we might use code like this to detect interactions:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8;overflow-x:auto&quot; tabindex=&quot;0&quot; data-language=&quot;csharp&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;private&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; void&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; OnTriggerEnter&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;Collider&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; other&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    Debug.&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;Log&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&amp;quot;You have entered the trigger&amp;quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;While this works fine during development when you can see the Unity console, it’s useless once your application is deployed to users or when you’re testing with a headset on.&lt;/p&gt;
&lt;h2 id=&quot;introducing-bugsnag-remote-error-tracking-for-vr&quot;&gt;Introducing Bugsnag: Remote Error Tracking for VR&lt;/h2&gt;
&lt;p&gt;To solve this problem, we can use &lt;a href=&quot;https://bugsnag.com&quot;&gt;Bugsnag&lt;/a&gt;, a powerful error monitoring platform that supports Unity applications. Bugsnag allows you to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Track errors and custom events remotely&lt;/li&gt;
&lt;li&gt;Receive detailed information about the device, OS, and application state&lt;/li&gt;
&lt;li&gt;Monitor issues in production builds&lt;/li&gt;
&lt;li&gt;Get notified when new errors occur&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Best of all, Bugsnag offers a free tier that’s sufficient for most indie developers and small projects.&lt;/p&gt;
&lt;h2 id=&quot;setting-up-bugsnag-in-your-unity-xr-project&quot;&gt;Setting Up Bugsnag in Your Unity XR Project&lt;/h2&gt;
&lt;p&gt;Let’s walk through the process of integrating Bugsnag into your Unity VR application:&lt;/p&gt;
&lt;h3 id=&quot;step-1-create-a-bugsnag-account&quot;&gt;Step 1: Create a Bugsnag Account&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Visit &lt;a href=&quot;https://bugsnag.com&quot;&gt;bugsnag.com&lt;/a&gt; and sign up for a free account&lt;/li&gt;
&lt;li&gt;Once logged in, create a new project&lt;/li&gt;
&lt;li&gt;Select “Unity” as your platform&lt;/li&gt;
&lt;li&gt;Give your project a name and click “Continue”&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;step-2-install-the-bugsnag-package-in-unity&quot;&gt;Step 2: Install the Bugsnag Package in Unity&lt;/h3&gt;
&lt;p&gt;Bugsnag provides a Unity package that you can install directly via the Package Manager:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;In Unity, open the Package Manager (Window &amp;gt; Package Manager)&lt;/li&gt;
&lt;li&gt;Click the “+” button in the top-left corner&lt;/li&gt;
&lt;li&gt;Select “Add package from git URL…”&lt;/li&gt;
&lt;li&gt;Paste the Bugsnag Unity package URL provided in your Bugsnag dashboard&lt;/li&gt;
&lt;li&gt;Click “Add”&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Unity will download and install the Bugsnag package from GitHub.&lt;/p&gt;
&lt;h3 id=&quot;step-3-configure-bugsnag-in-unity&quot;&gt;Step 3: Configure Bugsnag in Unity&lt;/h3&gt;
&lt;p&gt;After installation, you need to configure Bugsnag with your API key:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;In Unity, go to Window &amp;gt; Bugsnag Settings&lt;/li&gt;
&lt;li&gt;Copy your API key from the Bugsnag dashboard&lt;/li&gt;
&lt;li&gt;Paste it into the API Key field in the Bugsnag Settings window&lt;/li&gt;
&lt;li&gt;Save your settings&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;step-4-replace-debuglog-with-bugsnagnotify&quot;&gt;Step 4: Replace Debug.Log with Bugsnag.Notify&lt;/h3&gt;
&lt;p&gt;Now you can update your code to use Bugsnag instead of Debug.Log:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8;overflow-x:auto&quot; tabindex=&quot;0&quot; data-language=&quot;csharp&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;private&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; void&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; OnTriggerEnter&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;Collider&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; other&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6A737D&quot;&gt;    // Instead of Debug.Log&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    Bugsnag.&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;Notify&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&amp;quot;triggered&amp;quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&amp;quot;You have entered a trigger&amp;quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&amp;quot;nothing here&amp;quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The &lt;code&gt;Bugsnag.Notify&lt;/code&gt; method takes three parameters:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Error name or type&lt;/li&gt;
&lt;li&gt;Error message&lt;/li&gt;
&lt;li&gt;Stack trace (optional, you can leave this empty or add custom context)&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;step-5-handling-exceptions-with-try-catch&quot;&gt;Step 5: Handling Exceptions with Try-Catch&lt;/h3&gt;
&lt;p&gt;Bugsnag really shines when handling exceptions. You can wrap potentially problematic code in try-catch blocks and report any exceptions to Bugsnag:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8;overflow-x:auto&quot; tabindex=&quot;0&quot; data-language=&quot;csharp&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;try&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6A737D&quot;&gt;    // Your code that might throw an exception&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6A737D&quot;&gt;    // For example, processing an in-app purchase or loading external data&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;catch&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;Exception&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; e&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6A737D&quot;&gt;    // Report the exception to Bugsnag&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    Bugsnag.&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;Notify&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(e, &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&amp;quot;error&amp;quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&amp;quot;On trigger for the Box&amp;quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6A737D&quot;&gt;    // You can also specify severity&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6A737D&quot;&gt;    // Bugsnag.Notify(e, Bugsnag.Severity.Error, &amp;quot;On trigger for the Box&amp;quot;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;real-world-use-cases&quot;&gt;Real-World Use Cases&lt;/h2&gt;
&lt;h3 id=&quot;testing-with-friends-and-beta-users&quot;&gt;Testing with Friends and Beta Users&lt;/h3&gt;
&lt;p&gt;When you distribute your VR application to friends or beta testers, Bugsnag allows you to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;See exactly what errors they encounter&lt;/li&gt;
&lt;li&gt;Get detailed information about their device and OS&lt;/li&gt;
&lt;li&gt;Understand the frequency and impact of issues&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;monitoring-production-applications&quot;&gt;Monitoring Production Applications&lt;/h3&gt;
&lt;p&gt;For released applications, Bugsnag helps you:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Identify issues affecting multiple users&lt;/li&gt;
&lt;li&gt;Prioritize fixes based on frequency and severity&lt;/li&gt;
&lt;li&gt;Track the effectiveness of your updates&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;tracking-custom-events&quot;&gt;Tracking Custom Events&lt;/h3&gt;
&lt;p&gt;Beyond error reporting, you can use Bugsnag to track important events in your application:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Completed levels or achievements&lt;/li&gt;
&lt;li&gt;Feature usage statistics&lt;/li&gt;
&lt;li&gt;Performance metrics&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;viewing-and-managing-errors&quot;&gt;Viewing and Managing Errors&lt;/h2&gt;
&lt;p&gt;Once your application is sending data to Bugsnag, you can view all reported issues in your Bugsnag dashboard:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Each error appears in your project’s inbox&lt;/li&gt;
&lt;li&gt;You can see when the error occurred&lt;/li&gt;
&lt;li&gt;Detailed information about the device, OS, and application state is provided&lt;/li&gt;
&lt;li&gt;You can assign, comment on, and track the status of each issue&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;While &lt;code&gt;Debug.Log&lt;/code&gt; is a valuable tool during development, it falls short when debugging VR applications in production environments. By implementing Bugsnag in your Unity XR projects, you gain powerful remote error tracking capabilities that help you identify, understand, and fix issues more efficiently.&lt;/p&gt;
&lt;p&gt;This approach is especially valuable for VR development where traditional debugging methods are limited by the nature of the platform. With Bugsnag, you can continue to monitor and improve your application even after it’s in users’ hands.&lt;/p&gt;
&lt;p&gt;For VR development, I use the &lt;a href=&quot;https://tinyurl.com/vrframework&quot;&gt;VR Interaction Framework (VRIF)&lt;/a&gt;, which provides a solid foundation for building interactive VR experiences.&lt;/p&gt;
&lt;p&gt;If you’d like to discuss VR development further, feel free to join &lt;a href=&quot;https://discord.com/invite/CVNuqSZ&quot;&gt;my Discord server&lt;/a&gt; where we can chat about various aspects of XR development.&lt;/p&gt;
&lt;p&gt;For those who want to support my work, consider &lt;a href=&quot;http://www.patreon.com/sharkjets&quot;&gt;becoming a Patreon member&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The music in &lt;a href=&quot;https://www.youtube.com/watch?v=4LH4WjFHPXM&quot;&gt;my video&lt;/a&gt; is by Flawed Human Being, whose work you can find on &lt;a href=&quot;https://open.spotify.com/artist/0ywnFmJWQwP4adEG9otvYA&quot;&gt;Spotify&lt;/a&gt;.&lt;/p&gt;

&lt;aside class=&quot;ad-link&quot; aria-label=&quot;Recommended reading&quot; data-astro-cid-6vumcifv&gt;&lt;span data-astro-cid-6vumcifv&gt;Recommended reading&lt;/span&gt;&lt;a href=&quot;https://amzn.to/3UMq2f3&quot; data-astro-cid-6vumcifv&gt;How to Make a Video Game All By Yourself: 10 steps, just you and a computer&lt;/a&gt;&lt;/aside&gt;</content:encoded></item><item><title>Unity XR - Oculus Point and Spawn Objects</title><link>https://www.sharkjets.com/posts/unity-xr-oculus-point-and-spawn-objects/</link><guid isPermaLink="true">https://www.sharkjets.com/posts/unity-xr-oculus-point-and-spawn-objects/</guid><description>Want to point and make things appear? In this tutorial I quickly setup raycast spawning with VRIF.</description><pubDate>Tue, 29 Nov 2022 15:09:59 GMT</pubDate><content:encoded>&lt;aside class=&quot;ad-link&quot; aria-label=&quot;Recommended reading&quot; data-astro-cid-6vumcifv&gt;&lt;span data-astro-cid-6vumcifv&gt;Recommended reading&lt;/span&gt;&lt;a href=&quot;https://amzn.to/4qv5S52&quot; data-astro-cid-6vumcifv&gt;Unity Game Development in 24 Hours&lt;/a&gt;&lt;/aside&gt;

&lt;h1 id=&quot;unity-xr---oculus-point-and-spawn-objects&quot;&gt;Unity XR - Oculus Point and Spawn Objects&lt;/h1&gt;
&lt;h3 id=&quot;date-2022-11-29t1509590000---skid-vis&quot;&gt;Date: 2022-11-29T15:09:59+00:00 - (Skid Vis)&lt;/h3&gt;
&lt;p&gt;In this tutorial, I demonstrate how to set up a raycast spawning system with VRIF (Virtual Reality Interaction Framework) in Unity. If you’ve ever wanted to point and make objects appear in your VR application, this is the perfect guide for you!&lt;/p&gt;
&lt;p&gt;I’ve made all the code available at my code bundle site: &lt;a href=&quot;https://code.sharkjets.com/l/code-bundle&quot;&gt;https://code.sharkjets.com/l/code-bundle&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If you want to follow along with the video tutorial, you can watch it here: &lt;a href=&quot;https://www.youtube.com/watch?v=E7YzTsaFEBw&quot;&gt;Unity XR - Oculus Point and Spawn Objects&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;To get started, you’ll need the VRIF framework, which you can pick up here: &lt;a href=&quot;https://tinyurl.com/vrframework&quot;&gt;https://tinyurl.com/vrframework&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I cover everything from setting up the raycast to creating spawnable objects in your VR environment. This technique is especially useful for interactive VR experiences where users need to create or place objects in the virtual world.&lt;/p&gt;
&lt;p&gt;If you have any questions or want to discuss this further, I’d love to have you join my Discord server: &lt;a href=&quot;https://discord.com/invite/CVNuqSZ&quot;&gt;https://discord.com/invite/CVNuqSZ&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;For those who appreciate my tutorials and want to support my work, you can become a Patreon member: &lt;a href=&quot;http://www.patreon.com/sharkjets&quot;&gt;http://www.patreon.com/sharkjets&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Special thanks to Flawed Human Being for the music used in the tutorial! Check out their work on Spotify: &lt;a href=&quot;https://open.spotify.com/artist/0ywnFmJWQwP4adEG9otvYA&quot;&gt;https://open.spotify.com/artist/0ywnFmJWQwP4adEG9otvYA&lt;/a&gt;&lt;/p&gt;

&lt;aside class=&quot;ad-link&quot; aria-label=&quot;Recommended reading&quot; data-astro-cid-6vumcifv&gt;&lt;span data-astro-cid-6vumcifv&gt;Recommended reading&lt;/span&gt;&lt;a href=&quot;https://amzn.to/4qv5S52&quot; data-astro-cid-6vumcifv&gt;Unity Game Development in 24 Hours&lt;/a&gt;&lt;/aside&gt;</content:encoded></item><item><title>Q &amp; A: How NFTs can be used in Game Development</title><link>https://www.sharkjets.com/posts/q-a-how-nfts-can-be-used-in-game-development/</link><guid isPermaLink="true">https://www.sharkjets.com/posts/q-a-how-nfts-can-be-used-in-game-development/</guid><description>I was recently invited to discuss the potential for using an NFT in gamedev.</description><pubDate>Fri, 21 Jan 2022 20:59:25 GMT</pubDate><content:encoded>&lt;aside class=&quot;ad-link&quot; aria-label=&quot;Recommended reading&quot; data-astro-cid-6vumcifv&gt;&lt;span data-astro-cid-6vumcifv&gt;Recommended reading&lt;/span&gt;&lt;a href=&quot;https://amzn.to/4qv5S52&quot; data-astro-cid-6vumcifv&gt;Unity Game Development in 24 Hours&lt;/a&gt;&lt;/aside&gt;

&lt;h1 id=&quot;q--a-how-nfts-can-be-used-in-game-development&quot;&gt;Q &amp;amp; A: How NFTs can be used in Game Development&lt;/h1&gt;
&lt;h3 id=&quot;date-2022-01-21t2059250000---skid-vis&quot;&gt;Date: 2022-01-21T20:59:25+00:00 - (Skid Vis)&lt;/h3&gt;
&lt;p&gt;I was recently invited by Dan Violet Sagmiller to discuss the potential for using NFTs in game development. In this Q&amp;amp;A session, I share my insights on how blockchain technology and NFTs can be integrated into games, addressing common misconceptions and exploring exciting future possibilities for the gaming industry.&lt;/p&gt;
&lt;h2 id=&quot;understanding-nfts-and-blockchain-technology&quot;&gt;Understanding NFTs and Blockchain Technology&lt;/h2&gt;
&lt;h3 id=&quot;what-exactly-are-nfts&quot;&gt;What Exactly Are NFTs?&lt;/h3&gt;
&lt;p&gt;NFTs (Non-Fungible Tokens) are often misunderstood, so I started by explaining the fundamentals. At their core, NFTs are entries in a blockchain - essentially a permanent, immutable digital ledger that everyone can see but no one can alter.&lt;/p&gt;
&lt;p&gt;Think of a blockchain as a giant journal floating in space that records ownership. Once something is written in this journal, it can’t be changed - only added to through new transactions. This immutability is what gives NFTs their value.&lt;/p&gt;
&lt;p&gt;For example, if the blockchain records that you own a particular digital asset (like an in-game item), everyone can verify your ownership by checking the blockchain. No one can fraudulently claim it’s theirs or alter the record.&lt;/p&gt;
&lt;h3 id=&quot;common-misconceptions&quot;&gt;Common Misconceptions&lt;/h3&gt;
&lt;p&gt;One major misconception I addressed is that owning an NFT means owning the copyright to the content. This isn’t the case - similar to how buying an MP3 doesn’t give you rights to the song itself. When you purchase an NFT, you’re buying proof of ownership of a specific digital item, not the intellectual property rights.&lt;/p&gt;
&lt;p&gt;I referenced a recent example where a group spent millions on a copy of the book “Dune,” mistakenly believing they had purchased the copyright to the entire franchise. This highlights the importance of understanding what NFTs actually represent.&lt;/p&gt;
&lt;h2 id=&quot;nfts-in-gaming-beyond-the-hype&quot;&gt;NFTs in Gaming: Beyond the Hype&lt;/h2&gt;
&lt;h3 id=&quot;a-living-achievement-system&quot;&gt;A Living Achievement System&lt;/h3&gt;
&lt;p&gt;One of the most exciting applications I discussed is what I call a “living achievement system.” Imagine if your gaming achievements weren’t locked to a single platform or company but existed on a public, decentralized ledger.&lt;/p&gt;
&lt;p&gt;For example, if you beat The Legend of Zelda 35 years ago on Nintendo, that achievement could be recorded on the blockchain. Then, decades later, when you start playing a completely different game from a different company (like Assassin’s Creed), it could check this public ledger and reward you with a special item - perhaps a Master Sword-inspired weapon - acknowledging your past achievement.&lt;/p&gt;
&lt;p&gt;This creates a persistent gaming identity and history that transcends individual games and platforms - something like the interconnected world seen in “Ready Player One.”&lt;/p&gt;
&lt;h3 id=&quot;true-digital-ownership&quot;&gt;True Digital Ownership&lt;/h3&gt;
&lt;p&gt;Another compelling use case is true ownership of in-game assets. I shared my personal experience with World of Warcraft, where I spent countless hours grinding for gold and items, even occasionally purchasing gold from third parties. When I eventually stopped playing, I had nothing to show for my investment of time and money.&lt;/p&gt;
&lt;p&gt;With blockchain technology, in-game currencies and items could have real value outside the game. If you decide to stop playing or if the game shuts down, you could potentially trade or sell your assets, preserving the value of your time and financial investment.&lt;/p&gt;
&lt;h3 id=&quot;cross-game-asset-utilization&quot;&gt;Cross-Game Asset Utilization&lt;/h3&gt;
&lt;p&gt;I also discussed how NFTs could enable items to be used across different games. Imagine earning a special vehicle in one racing game that you could then use in any other compatible racing game. This creates an ecosystem where your digital possessions have utility beyond a single game’s ecosystem.&lt;/p&gt;
&lt;h2 id=&quot;addressing-concerns-and-criticisms&quot;&gt;Addressing Concerns and Criticisms&lt;/h2&gt;
&lt;h3 id=&quot;energy-consumption&quot;&gt;Energy Consumption&lt;/h3&gt;
&lt;p&gt;One of the most common criticisms of blockchain technology is its energy consumption. I clarified that while Bitcoin does consume significant energy due to its “proof of work” consensus mechanism, many newer blockchains that support NFTs use “proof of stake” instead, which requires far less energy.&lt;/p&gt;
&lt;p&gt;I explained the difference between these approaches:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Proof of Work&lt;/strong&gt;: Requires millions of computers solving complex mathematical problems to validate transactions, consuming enormous amounts of energy&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Proof of Stake&lt;/strong&gt;: Validates transactions by having participants lock up (stake) their own tokens as collateral, requiring minimal computational resources&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Most modern NFT platforms like Ethereum (which is transitioning to proof of stake), Polygon, and Solana are moving toward or already using these more energy-efficient methods.&lt;/p&gt;
&lt;h3 id=&quot;corporate-adoption-challenges&quot;&gt;Corporate Adoption Challenges&lt;/h3&gt;
&lt;p&gt;We discussed whether game companies would actually embrace this technology, given that they currently benefit from keeping players locked into their ecosystems. I suggested that companies could still profit by creating their own tokens and holding reserves, potentially benefiting from the increased value if their game and token ecosystem becomes popular.&lt;/p&gt;
&lt;p&gt;This creates an interesting alignment of incentives - if the game succeeds and its token economy thrives, both players and developers benefit.&lt;/p&gt;
&lt;h2 id=&quot;the-future-of-nfts-in-gaming&quot;&gt;The Future of NFTs in Gaming&lt;/h2&gt;
&lt;h3 id=&quot;play-to-earn-models&quot;&gt;Play-to-Earn Models&lt;/h3&gt;
&lt;p&gt;Looking ahead, I believe we’ll see more “play-to-earn” models where players can make real money simply by playing games. This is already happening in some economies where the income from playing certain blockchain games exceeds what people can earn in traditional jobs.&lt;/p&gt;
&lt;h3 id=&quot;standardization-and-mainstream-adoption&quot;&gt;Standardization and Mainstream Adoption&lt;/h3&gt;
&lt;p&gt;I compared the current state of blockchain gaming to the early days of MP3s, when there was controversy, resistance from established industries, and a lack of standardized platforms. Eventually, services like Spotify emerged to create user-friendly experiences that gained mainstream adoption.&lt;/p&gt;
&lt;p&gt;We’re still in the “Wild West” phase of NFTs in gaming, with many competing blockchains and approaches. Over time, standards will likely emerge that balance benefits for both companies and players.&lt;/p&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;While NFTs in gaming are still in their early stages, the technology offers exciting possibilities for creating persistent player identities, enabling true digital ownership, and developing new economic models in games.&lt;/p&gt;
&lt;p&gt;The key is finding implementations that provide genuine value to players rather than simply capitalizing on the NFT trend. As the technology matures and standards develop, we’ll likely see more meaningful integrations that enhance gaming experiences rather than just serving as marketing gimmicks.&lt;/p&gt;
&lt;hr/&gt;
&lt;p&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=kCmh7wlI69E&quot;&gt;Watch the video on YouTube&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If you’re interested in the full discussion, you can watch the complete version on Twitch at &lt;a href=&quot;https://www.twitch.tv/danvioletsagmiller&quot;&gt;Dan Violet Sagmiller’s channel&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;For those interested in exploring NFT projects I’ve mentioned:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Check out &lt;a href=&quot;https://bit.ly/everdragons&quot;&gt;Everdragons2&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Try the DragonMound matic game at &lt;a href=&quot;https://www.dragonmound.com/&quot;&gt;dragonmound.com&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I’d love to continue this conversation with you! Join my Discord server and let’s chat: &lt;a href=&quot;https://discord.com/invite/CVNuqSZ&quot;&gt;Discord Invite&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If you appreciate my content and want to support my work, consider becoming a Patreon member: &lt;a href=&quot;http://www.patreon.com/sharkjets&quot;&gt;Patreon&lt;/a&gt;&lt;/p&gt;

&lt;aside class=&quot;ad-link&quot; aria-label=&quot;Recommended reading&quot; data-astro-cid-6vumcifv&gt;&lt;span data-astro-cid-6vumcifv&gt;Recommended reading&lt;/span&gt;&lt;a href=&quot;https://amzn.to/3UMq2f3&quot; data-astro-cid-6vumcifv&gt;How to Make a Video Game All By Yourself: 10 steps, just you and a computer&lt;/a&gt;&lt;/aside&gt;</content:encoded></item><item><title>Unity XR - Oculus Hand Tracking</title><link>https://www.sharkjets.com/posts/unity-xr-oculus-hand-tracking/</link><guid isPermaLink="true">https://www.sharkjets.com/posts/unity-xr-oculus-hand-tracking/</guid><description>Oculus Meta makes it easy to track your hands. In this tutorial I quickly setup hand tracking with VRIF and Oculus Integration.</description><pubDate>Tue, 11 Jan 2022 03:15:22 GMT</pubDate><content:encoded>&lt;aside class=&quot;ad-link&quot; aria-label=&quot;Recommended reading&quot; data-astro-cid-6vumcifv&gt;&lt;span data-astro-cid-6vumcifv&gt;Recommended reading&lt;/span&gt;&lt;a href=&quot;https://amzn.to/4qv5S52&quot; data-astro-cid-6vumcifv&gt;Unity Game Development in 24 Hours&lt;/a&gt;&lt;/aside&gt;

&lt;h1 id=&quot;unity-xr---oculus-hand-tracking&quot;&gt;Unity XR - Oculus Hand Tracking&lt;/h1&gt;
&lt;h3 id=&quot;date-2022-01-11t0315220000---skid-vis&quot;&gt;Date: 2022-01-11T03:15:22+00:00 - (Skid Vis)&lt;/h3&gt;
&lt;p&gt;In this tutorial, I demonstrate how to quickly set up hand tracking with VRIF (Virtual Reality Interaction Framework) and Oculus Integration. Oculus Meta makes it easy to track your hands in VR applications, and I walk through the process step by step.&lt;/p&gt;
&lt;p&gt;If you’re looking to implement hand tracking in your Unity XR project, this tutorial will help you get started right away!&lt;/p&gt;
&lt;h2 id=&quot;resources&quot;&gt;Resources&lt;/h2&gt;
&lt;p&gt;For those following along, you can get VRIF here:
&lt;a href=&quot;https://tinyurl.com/vrframework&quot;&gt;https://tinyurl.com/vrframework&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I’d love to connect with you! Join my Discord server and let’s chat:
&lt;a href=&quot;https://discord.com/invite/CVNuqSZ&quot;&gt;https://discord.com/invite/CVNuqSZ&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If you enjoy my content and want to support my work, consider becoming a Patreon member:
&lt;a href=&quot;http://www.patreon.com/sharkjets&quot;&gt;http://www.patreon.com/sharkjets&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&quot;video-tutorial&quot;&gt;Video Tutorial&lt;/h2&gt;
&lt;p&gt;For the complete walkthrough, check out &lt;a href=&quot;https://www.youtube.com/watch?v=jqN4WHL8SYU&quot;&gt;my tutorial on Unity XR - Oculus Hand Tracking&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;music-credits&quot;&gt;Music Credits&lt;/h2&gt;
&lt;p&gt;Music by: Flawed Human Being
&lt;a href=&quot;https://open.spotify.com/artist/0ywnFmJWQwP4adEG9otvYA&quot;&gt;https://open.spotify.com/artist/0ywnFmJWQwP4adEG9otvYA&lt;/a&gt;&lt;/p&gt;

&lt;aside class=&quot;ad-link&quot; aria-label=&quot;Recommended reading&quot; data-astro-cid-6vumcifv&gt;&lt;span data-astro-cid-6vumcifv&gt;Recommended reading&lt;/span&gt;&lt;a href=&quot;https://amzn.to/4qv5S52&quot; data-astro-cid-6vumcifv&gt;Unity Game Development in 24 Hours&lt;/a&gt;&lt;/aside&gt;</content:encoded></item><item><title>Unity - Load NFT from OpenSea</title><link>https://www.sharkjets.com/posts/unity-load-nft-from-opensea/</link><guid isPermaLink="true">https://www.sharkjets.com/posts/unity-load-nft-from-opensea/</guid><description>In this tutorial I show you how to parse a JSON api to load an NFT image into your unity game.</description><pubDate>Thu, 23 Dec 2021 00:12:08 GMT</pubDate><content:encoded>&lt;aside class=&quot;ad-link&quot; aria-label=&quot;Recommended reading&quot; data-astro-cid-6vumcifv&gt;&lt;span data-astro-cid-6vumcifv&gt;Recommended reading&lt;/span&gt;&lt;a href=&quot;https://amzn.to/3UMq2f3&quot; data-astro-cid-6vumcifv&gt;How to Make a Video Game All By Yourself: 10 steps, just you and a computer&lt;/a&gt;&lt;/aside&gt;

&lt;h1 id=&quot;unity---load-nft-from-opensea&quot;&gt;Unity - Load NFT from OpenSea&lt;/h1&gt;
&lt;h3 id=&quot;date-2021-12-23t0012080000---skid-vis&quot;&gt;Date: 2021-12-23T00:12:08+00:00 - (Skid Vis)&lt;/h3&gt;
&lt;p&gt;In this tutorial, I’ll show you how to integrate NFTs from OpenSea into your Unity game. Whether you want to display a player’s NFT collection or incorporate NFT artwork into your virtual world, this step-by-step guide will walk you through the process of fetching NFT data from the OpenSea API and displaying it in your Unity project.&lt;/p&gt;
&lt;h2 id=&quot;introduction&quot;&gt;Introduction&lt;/h2&gt;
&lt;p&gt;NFTs (Non-Fungible Tokens) have become increasingly popular in the digital space, and many game developers are looking for ways to incorporate them into their projects. By connecting to the OpenSea API, you can access a vast marketplace of digital assets and display them within your Unity game.&lt;/p&gt;
&lt;p&gt;In this tutorial, we’ll:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Explore the OpenSea API&lt;/li&gt;
&lt;li&gt;Convert JSON responses to C# classes&lt;/li&gt;
&lt;li&gt;Create Unity scripts to fetch and display NFT images&lt;/li&gt;
&lt;li&gt;Set up a simple scene to showcase the NFT&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;prerequisites&quot;&gt;Prerequisites&lt;/h2&gt;
&lt;p&gt;To follow along with this tutorial, you’ll need:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Unity 2019 or newer&lt;/li&gt;
&lt;li&gt;Basic understanding of C# and Unity&lt;/li&gt;
&lt;li&gt;Internet connection to access the OpenSea API&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;step-1-understanding-the-opensea-api&quot;&gt;Step 1: Understanding the OpenSea API&lt;/h2&gt;
&lt;p&gt;First, let’s explore the OpenSea API to understand what data we can access. Visit the &lt;a href=&quot;https://docs.opensea.io/reference/getting-assets&quot;&gt;OpenSea API documentation&lt;/a&gt; to see the available endpoints.&lt;/p&gt;
&lt;p&gt;For this tutorial, we’ll focus on the “Retrieving Assets” endpoint, which allows us to fetch NFT data including images. The endpoint URL looks like this:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8;overflow-x:auto&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;https://api.opensea.io/api/v1/assets&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You can test this endpoint directly in the documentation by clicking the “Try it” button. This will show you the JSON response structure, which includes an array of assets with properties like ID, image URL, and metadata.&lt;/p&gt;
&lt;h2 id=&quot;step-2-converting-json-to-c-classes&quot;&gt;Step 2: Converting JSON to C# Classes&lt;/h2&gt;
&lt;p&gt;To work with the JSON response in Unity, we need to convert it to C# classes. Here’s how:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Copy a sample JSON response from the OpenSea API documentation&lt;/li&gt;
&lt;li&gt;Visit &lt;a href=&quot;https://json2csharp.com/&quot;&gt;JSON to C# converter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Paste the JSON and convert it to C# classes&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;When copying the JSON, make sure to include the complete structure with proper closing brackets. The converter will generate C# classes that match the JSON structure, which we’ll use in our Unity project.&lt;/p&gt;
&lt;h2 id=&quot;step-3-creating-the-c-classes-in-unity&quot;&gt;Step 3: Creating the C# Classes in Unity&lt;/h2&gt;
&lt;p&gt;Now, let’s create our first script in Unity:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Create a new C# script named &lt;code&gt;OpenSea.cs&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Replace the default code with the converted C# classes&lt;/li&gt;
&lt;li&gt;Make the following modifications to make it compatible with Unity:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8;overflow-x:auto&quot; tabindex=&quot;0&quot; data-language=&quot;csharp&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6A737D&quot;&gt;// Add these using statements&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;using&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; System&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;using&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; System&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;Collections&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;Generic&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6A737D&quot;&gt;// Add [Serializable] attribute to all classes&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;Serializable&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; Asset&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;    public&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; string&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; id&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;    public&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; string&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; image_url&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6A737D&quot;&gt;    // Other properties...&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;Serializable&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; OpenSea&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;    public&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; List&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;Asset&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&amp;gt; &lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;assets&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Important modifications to make:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Replace property getters/setters with simple fields (e.g., change &lt;code&gt;public string id { get; set; }&lt;/code&gt; to &lt;code&gt;public string id;&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Add the &lt;code&gt;[Serializable]&lt;/code&gt; attribute to all classes to make them compatible with Unity’s serialization system&lt;/li&gt;
&lt;li&gt;Rename the root class from &lt;code&gt;Root&lt;/code&gt; to &lt;code&gt;OpenSea&lt;/code&gt; to match our file name&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;step-4-creating-the-api-handler-script&quot;&gt;Step 4: Creating the API Handler Script&lt;/h2&gt;
&lt;p&gt;Next, we’ll create a script to handle the API requests:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Create a new C# script named &lt;code&gt;OpenSeaAPI.cs&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Add the following code:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8;overflow-x:auto&quot; tabindex=&quot;0&quot; data-language=&quot;csharp&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;using&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; System&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;Collections&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;using&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; System&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;IO&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;using&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; System&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;Net&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;using&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; UnityEngine&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;using&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; UnityEngine&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;Networking&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;using&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; UnityEngine&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;UI&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; OpenSeaAPI&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; : &lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;MonoBehaviour&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    [&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;SerializeField&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;private&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; RawImage&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; img&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;    void&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; Start&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;()&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;        FetchNFT&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;    void&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; FetchNFT&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;()&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;        string&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; url&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &amp;quot;https://api.opensea.io/api/v1/assets&amp;quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;        &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;        HttpWebRequest&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; request&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;HttpWebRequest&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;)WebRequest.&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;Create&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(url);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;        HttpWebResponse&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; response&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;HttpWebResponse&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;)request.&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;GetResponse&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;        &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;        StreamReader&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; reader&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; StreamReader&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(response.&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;GetResponseStream&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;());&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;        string&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; json&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; reader.&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;ReadToEnd&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;        &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;        OpenSea&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; openSea&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; JsonUtility.&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;FromJson&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;OpenSea&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&amp;gt;(json);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;        &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;        StartCoroutine&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;DownloadImage&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(openSea.assets[&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;].image_url));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;    IEnumerator&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; DownloadImage&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;string&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; url&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;        UnityWebRequest&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; request&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; UnityWebRequestTexture.&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;GetTexture&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(url);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;        yield&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; return&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; request.&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;SendWebRequest&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;        &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;        Texture2D&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; texture&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; DownloadHandlerTexture.&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;GetContent&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(request);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;        img.texture &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; texture;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This script does the following:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Makes a web request to the OpenSea API&lt;/li&gt;
&lt;li&gt;Reads the JSON response&lt;/li&gt;
&lt;li&gt;Converts the JSON to our C# classes&lt;/li&gt;
&lt;li&gt;Starts a coroutine to download the image from the NFT’s image URL&lt;/li&gt;
&lt;li&gt;Assigns the downloaded image to a RawImage component&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Note: We’re using &lt;code&gt;assets[1]&lt;/code&gt; to get the second asset in the array, as the first one might not always have an image. In a production environment, you’d want to add error checking and handle cases where images might be missing.&lt;/p&gt;
&lt;h2 id=&quot;step-5-setting-up-the-unity-scene&quot;&gt;Step 5: Setting Up the Unity Scene&lt;/h2&gt;
&lt;p&gt;Now, let’s set up our Unity scene to display the NFT:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Create an empty GameObject and attach the &lt;code&gt;OpenSeaAPI&lt;/code&gt; script to it&lt;/li&gt;
&lt;li&gt;Create a Canvas (set to World Space for 3D projects)&lt;/li&gt;
&lt;li&gt;Add a RawImage component to the Canvas&lt;/li&gt;
&lt;li&gt;Adjust the Canvas scale to make it visible in your scene (e.g., 0.01 for a 3D scene)&lt;/li&gt;
&lt;li&gt;Drag the RawImage component into the &lt;code&gt;img&lt;/code&gt; field of the &lt;code&gt;OpenSeaAPI&lt;/code&gt; script in the Inspector&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;step-6-testing-the-implementation&quot;&gt;Step 6: Testing the Implementation&lt;/h2&gt;
&lt;p&gt;When you run the game, the script will:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Fetch NFT data from OpenSea&lt;/li&gt;
&lt;li&gt;Extract the image URL from the second asset in the response&lt;/li&gt;
&lt;li&gt;Download the image&lt;/li&gt;
&lt;li&gt;Display it on the RawImage component&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If everything is set up correctly, you should see an NFT image displayed in your game!&lt;/p&gt;
&lt;h2 id=&quot;customizing-the-implementation&quot;&gt;Customizing the Implementation&lt;/h2&gt;
&lt;p&gt;This basic implementation can be extended in several ways:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Fetch specific NFTs&lt;/strong&gt;: Modify the API URL to fetch NFTs from a specific wallet or collection&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Display multiple NFTs&lt;/strong&gt;: Create a grid or gallery of images to showcase multiple NFTs&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Add interactivity&lt;/strong&gt;: Allow players to interact with the NFTs in your game&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Use NFT metadata&lt;/strong&gt;: Incorporate other NFT properties like name, description, or attributes&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;By following this tutorial, you’ve learned how to integrate OpenSea NFTs into your Unity game. This opens up possibilities for creating NFT galleries, allowing players to showcase their collections, or incorporating NFT artwork into your virtual worlds.&lt;/p&gt;
&lt;p&gt;While this example focuses on displaying images, the same approach can be used to access any API data, making it a valuable technique for connecting your Unity games to external services.&lt;/p&gt;
&lt;p&gt;If you’d like to discuss this topic further or have questions, I invite you to join my &lt;a href=&quot;https://discord.com/invite/CVNuqSZ&quot;&gt;Discord server&lt;/a&gt; where we can chat about Unity, NFTs, and game development.&lt;/p&gt;
&lt;p&gt;For those interested in supporting my work, consider becoming a &lt;a href=&quot;http://www.patreon.com/sharkjets&quot;&gt;Patreon member&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The background music in the video tutorial is by Flawed Human Being, who you can find on &lt;a href=&quot;https://open.spotify.com/artist/0ywnFmJWQwP4adEG9otvYA&quot;&gt;Spotify&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Check out the full tutorial &lt;a href=&quot;https://www.youtube.com/watch?v=5rwrL5T-Wso&quot;&gt;here on YouTube&lt;/a&gt;.&lt;/p&gt;

&lt;aside class=&quot;ad-link&quot; aria-label=&quot;Recommended reading&quot; data-astro-cid-6vumcifv&gt;&lt;span data-astro-cid-6vumcifv&gt;Recommended reading&lt;/span&gt;&lt;a href=&quot;https://amzn.to/3UMq2f3&quot; data-astro-cid-6vumcifv&gt;How to Make a Video Game All By Yourself: 10 steps, just you and a computer&lt;/a&gt;&lt;/aside&gt;</content:encoded></item><item><title>Unity XR - Oculus Meta In-App Purchases</title><link>https://www.sharkjets.com/posts/unity-xr-oculus-meta-in-app-purchases/</link><guid isPermaLink="true">https://www.sharkjets.com/posts/unity-xr-oculus-meta-in-app-purchases/</guid><description>Oculus Meta now let&apos;s Unity gamedevs have in-app puchases (IAP) in AppLab games. In this tutorial I show you how to start getting paid quickly.</description><pubDate>Thu, 18 Nov 2021 12:57:10 GMT</pubDate><content:encoded>&lt;aside class=&quot;ad-link&quot; aria-label=&quot;Recommended reading&quot; data-astro-cid-6vumcifv&gt;&lt;span data-astro-cid-6vumcifv&gt;Recommended reading&lt;/span&gt;&lt;a href=&quot;https://amzn.to/3UMq2f3&quot; data-astro-cid-6vumcifv&gt;How to Make a Video Game All By Yourself: 10 steps, just you and a computer&lt;/a&gt;&lt;/aside&gt;

&lt;h1 id=&quot;unity-xr---oculus-meta-in-app-purchases&quot;&gt;Unity XR - Oculus Meta In-App Purchases&lt;/h1&gt;
&lt;h3 id=&quot;date-2021-11-18t1257100000---skid-vis&quot;&gt;Date: 2021-11-18T12:57:10+00:00 - (Skid Vis)&lt;/h3&gt;
&lt;p&gt;In this tutorial, I demonstrate how to implement in-app purchases (IAP) in your Oculus Meta AppLab games using Unity. Oculus Meta now allows Unity game developers to monetize their AppLab games through IAP, giving you another revenue stream beyond the initial purchase price.&lt;/p&gt;
&lt;p&gt;I’ve put together a comprehensive guide on getting started with in-app purchases quickly so you can start earning money from your VR applications. The process is straightforward once you understand the basics.&lt;/p&gt;
&lt;p&gt;For those looking to implement this in their own projects, I’ve made the code available at: &lt;a href=&quot;https://code.sharkjets.com/l/code-bundle&quot;&gt;https://code.sharkjets.com/l/code-bundle&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If you’re working with VR in Unity, I highly recommend checking out VRIF (Virtual Reality Interaction Framework): &lt;a href=&quot;https://tinyurl.com/vrframework&quot;&gt;https://tinyurl.com/vrframework&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;To test and manage your Oculus applications, you’ll want to download the Oculus Developer Hub: &lt;a href=&quot;https://developer.oculus.com/documentation/unity/ts-odh/&quot;&gt;https://developer.oculus.com/documentation/unity/ts-odh/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I’d love to connect with fellow VR developers! Join my Discord server and let’s chat: &lt;a href=&quot;https://discord.com/invite/CVNuqSZ&quot;&gt;https://discord.com/invite/CVNuqSZ&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If you enjoy my content and would like to support my work, consider becoming a patron: &lt;a href=&quot;http://www.patreon.com/sharkjets&quot;&gt;http://www.patreon.com/sharkjets&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Special thanks to Flawed Human Being for the music In this tutorial: &lt;a href=&quot;https://open.spotify.com/artist/0ywnFmJWQwP4adEG9otvYA&quot;&gt;https://open.spotify.com/artist/0ywnFmJWQwP4adEG9otvYA&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=VidVPzFikmE&quot;&gt;Watch the full tutorial on YouTube&lt;/a&gt;&lt;/p&gt;

&lt;aside class=&quot;ad-link&quot; aria-label=&quot;Recommended reading&quot; data-astro-cid-6vumcifv&gt;&lt;span data-astro-cid-6vumcifv&gt;Recommended reading&lt;/span&gt;&lt;a href=&quot;https://amzn.to/4qv5S52&quot; data-astro-cid-6vumcifv&gt;Unity Game Development in 24 Hours&lt;/a&gt;&lt;/aside&gt;</content:encoded></item><item><title>Unity XR - Unity crashes on Play exit with Oculus Integration</title><link>https://www.sharkjets.com/posts/unity-xr-crashes-on-play-exit-with-oculus-integration/</link><guid isPermaLink="true">https://www.sharkjets.com/posts/unity-xr-crashes-on-play-exit-with-oculus-integration/</guid><description>If your Unity crashes when you press Play and you&apos;re using Oculus Integration, it can cause an error on UnityEngine.SubsystemBindings.DestroySubsystem. In this tutorial we find the culprit.</description><pubDate>Sat, 25 Sep 2021 16:22:09 GMT</pubDate><content:encoded>&lt;aside class=&quot;ad-link&quot; aria-label=&quot;Recommended reading&quot; data-astro-cid-6vumcifv&gt;&lt;span data-astro-cid-6vumcifv&gt;Recommended reading&lt;/span&gt;&lt;a href=&quot;https://amzn.to/3UMq2f3&quot; data-astro-cid-6vumcifv&gt;How to Make a Video Game All By Yourself: 10 steps, just you and a computer&lt;/a&gt;&lt;/aside&gt;

&lt;h1 id=&quot;unity-xr---unity-crashes-on-play-exit-with-oculus-integration&quot;&gt;Unity XR - Unity crashes on Play exit with Oculus Integration&lt;/h1&gt;
&lt;h3 id=&quot;date-2021-09-25t1622090000---skid-vis&quot;&gt;Date: 2021-09-25T16:22:09+00:00 - (Skid Vis)&lt;/h3&gt;
&lt;p&gt;If you’re developing VR applications with Unity and Oculus Integration, you might have encountered a frustrating issue: Unity crashes every time you exit Play mode. This problem has been affecting many developers, particularly with Oculus Integration version 32. In this guide, I’ll walk you through the exact steps to fix this issue and get your development workflow back on track.&lt;/p&gt;
&lt;h2 id=&quot;the-problem&quot;&gt;The Problem&lt;/h2&gt;
&lt;p&gt;When using Oculus Integration in Unity (particularly version 32 at the time of this writing), you may experience the following scenario:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;You enter Play mode to test your VR application&lt;/li&gt;
&lt;li&gt;Everything works fine while in Play mode&lt;/li&gt;
&lt;li&gt;When you click the Play button again to exit Play mode, Unity crashes with an error related to &lt;code&gt;UnityEngine.SubsystemBindings.DestroySubsystem&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This crash is not caused by your code or project setup - it’s related to how the Oculus Integration package interacts with Unity’s XR systems, particularly around the new OpenXR backend.&lt;/p&gt;
&lt;h2 id=&quot;the-solution-step-by-step-guide&quot;&gt;The Solution: Step-by-Step Guide&lt;/h2&gt;
&lt;p&gt;The fix involves reinstalling the Oculus Integration package and making specific choices during the setup process. Here’s how to resolve the issue:&lt;/p&gt;
&lt;h3 id=&quot;step-1-remove-the-current-oculus-integration&quot;&gt;Step 1: Remove the Current Oculus Integration&lt;/h3&gt;
&lt;p&gt;First, we need to completely remove the current Oculus Integration package:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Navigate to your project’s Assets folder&lt;/li&gt;
&lt;li&gt;Find and delete the Oculus folder (this contains the Oculus Integration assets)&lt;/li&gt;
&lt;li&gt;Reopen your Unity project&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;At this point, you’ll notice that any Oculus-related components in your scene (like the OVR Player Controller) will be missing their references.&lt;/p&gt;
&lt;h3 id=&quot;step-2-reinstall-oculus-integration&quot;&gt;Step 2: Reinstall Oculus Integration&lt;/h3&gt;
&lt;p&gt;Now we’ll reinstall the Oculus Integration package, but with specific settings:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Open the Package Manager (Window &amp;gt; Package Manager)&lt;/li&gt;
&lt;li&gt;Switch to “My Assets” (you may need to be logged into your Unity account)&lt;/li&gt;
&lt;li&gt;Find and select “Oculus Integration”&lt;/li&gt;
&lt;li&gt;Click “Download” or “Import” (depending on whether you’ve downloaded it before)&lt;/li&gt;
&lt;li&gt;In the import window, select all assets (or customize as needed for your project)&lt;/li&gt;
&lt;li&gt;Click “Import”&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;step-3-critical-setup-choices&quot;&gt;Step 3: Critical Setup Choices&lt;/h3&gt;
&lt;p&gt;This is the most important part. After importing, you’ll receive a series of popup dialogs. Here’s how to respond to each one:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;First popup&lt;/strong&gt; - “New plugin detected…” - Click &lt;strong&gt;Yes&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;This acknowledges the Oculus plugin&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Second popup&lt;/strong&gt; - “OpenXR Backend…” - Click &lt;strong&gt;Cancel&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;This is crucial! Do NOT select “Use OpenXR” as this is what causes the crashes&lt;/li&gt;
&lt;li&gt;By clicking Cancel, you’re sticking with the legacy OVR plugin which is more stable&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Third popup&lt;/strong&gt; - “The standard legacy OVR plugin will be activated by default…” - Click &lt;strong&gt;Restart&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;This confirms you want to use the legacy plugin and restarts the editor&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Fourth popup&lt;/strong&gt; - “Audio Spatializer Plugin…” - Click &lt;strong&gt;Yes&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;This updates the audio spatializer plugin&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Final popup&lt;/strong&gt; - “Plugin was updated…” - Click &lt;strong&gt;Restart&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;This completes the installation and restarts the editor again&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;step-4-verify-the-fix&quot;&gt;Step 4: Verify the Fix&lt;/h3&gt;
&lt;p&gt;After Unity restarts:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Set up your scene again if needed (re-add any missing Oculus components)&lt;/li&gt;
&lt;li&gt;Enter Play mode to test your VR application&lt;/li&gt;
&lt;li&gt;Exit Play mode&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Unity should now exit Play mode without crashing!&lt;/p&gt;
&lt;h2 id=&quot;why-this-works&quot;&gt;Why This Works&lt;/h2&gt;
&lt;p&gt;The key to fixing this issue is avoiding the OpenXR backend that’s included in Oculus Integration. While OpenXR is the future standard for XR development, the implementation in Oculus Integration version 32 has compatibility issues with Unity’s subsystem management.&lt;/p&gt;
&lt;p&gt;By choosing the legacy OVR plugin instead, you bypass these compatibility issues while still having full access to Oculus functionality.&lt;/p&gt;
&lt;h2 id=&quot;additional-tips&quot;&gt;Additional Tips&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;This solution works for Unity 2020 and similar versions&lt;/li&gt;
&lt;li&gt;If you’re using VRIF (VR Interaction Framework) alongside Oculus Integration, this fix should resolve compatibility issues between them&lt;/li&gt;
&lt;li&gt;Future versions of Oculus Integration may resolve this issue, but until then, this workaround is your best option&lt;/li&gt;
&lt;li&gt;If you update Oculus Integration in the future, you may need to repeat these steps&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;This seemingly simple issue can cause major headaches for VR developers, leading to lost time and frustration. By following the steps outlined above, you can avoid the Unity crashes when exiting Play mode and maintain a smooth development workflow.&lt;/p&gt;
&lt;p&gt;Remember that VR development tools are constantly evolving, and sometimes these kinds of issues arise during transitional periods between different standards and implementations. Staying informed about workarounds like this can save you countless hours of troubleshooting.&lt;/p&gt;
&lt;p&gt;If you’re experiencing this frustrating crash, check out my solution in the &lt;a href=&quot;https://www.youtube.com/watch?v=dU4HPEWKG4g&quot;&gt;video walkthrough here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;For those working on VR projects, I recommend checking out VRIF (VR Interaction Framework) which you can find at:
&lt;a href=&quot;https://tinyurl.com/vrframework&quot;&gt;https://tinyurl.com/vrframework&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I’d love to chat with you about any VR development challenges you’re facing! Join my Discord server at:
&lt;a href=&quot;https://discord.com/invite/CVNuqSZ&quot;&gt;https://discord.com/invite/CVNuqSZ&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If you appreciate my content, please consider becoming a Patreon member:
&lt;a href=&quot;http://www.patreon.com/sharkjets&quot;&gt;http://www.patreon.com/sharkjets&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The music In this tutorial is by Flawed Human Being, who you can find on Spotify:
&lt;a href=&quot;https://open.spotify.com/artist/0ywnFmJWQwP4adEG9otvYA&quot;&gt;https://open.spotify.com/artist/0ywnFmJWQwP4adEG9otvYA&lt;/a&gt;&lt;/p&gt;

&lt;aside class=&quot;ad-link&quot; aria-label=&quot;Recommended reading&quot; data-astro-cid-6vumcifv&gt;&lt;span data-astro-cid-6vumcifv&gt;Recommended reading&lt;/span&gt;&lt;a href=&quot;https://amzn.to/4qv5S52&quot; data-astro-cid-6vumcifv&gt;Unity Game Development in 24 Hours&lt;/a&gt;&lt;/aside&gt;</content:encoded></item><item><title>Unity XR - How to change the way the bow looks in your Quest games using VRIF</title><link>https://www.sharkjets.com/posts/unity-xr-how-to-change-the-way-bow-looks-in-your-quest-games-using-vrif/</link><guid isPermaLink="true">https://www.sharkjets.com/posts/unity-xr-how-to-change-the-way-bow-looks-in-your-quest-games-using-vrif/</guid><description>If you&apos;re making Oculus Quest 2 games with Unity and VRIF, this video will show you how to change the  default VRIF bow to give your game a custom look.</description><pubDate>Tue, 07 Sep 2021 01:50:53 GMT</pubDate><content:encoded>&lt;aside class=&quot;ad-link&quot; aria-label=&quot;Recommended reading&quot; data-astro-cid-6vumcifv&gt;&lt;span data-astro-cid-6vumcifv&gt;Recommended reading&lt;/span&gt;&lt;a href=&quot;https://amzn.to/3UMq2f3&quot; data-astro-cid-6vumcifv&gt;How to Make a Video Game All By Yourself: 10 steps, just you and a computer&lt;/a&gt;&lt;/aside&gt;

&lt;h1 id=&quot;unity-xr---how-to-change-the-way-the-bow-looks-in-your-quest-games-using-vrif&quot;&gt;Unity XR - How to change the way the bow looks in your Quest games using VRIF&lt;/h1&gt;
&lt;h3 id=&quot;date-2021-09-07t0150530000---skid-vis&quot;&gt;Date: 2021-09-07T01:50:53+00:00 - (Skid Vis)&lt;/h3&gt;
&lt;p&gt;In this tutorial, I’ll show you how to customize the appearance of the bow in your Oculus Quest 2 games developed with Unity and VRIF (Virtual Reality Interaction Framework).&lt;/p&gt;
&lt;p&gt;If you’re looking to give your game a more unique look by changing the default VRIF bow, you’ve come to the right place. This customization will help your VR game stand out with a more personalized weapon design.&lt;/p&gt;
&lt;h2 id=&quot;resources-youll-need&quot;&gt;Resources You’ll Need&lt;/h2&gt;
&lt;p&gt;To follow along with this tutorial, you’ll need:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://tinyurl.com/vrframework&quot;&gt;VRIF (Virtual Reality Interaction Framework)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://assetstore.unity.com/packages/3d/props/weapons/free-pack-of-medieval-weapons-136607?aid=1101l9LBW&quot;&gt;Free Pack of Medieval Weapons&lt;/a&gt; for the bow assets&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;watch-the-tutorial&quot;&gt;Watch the Tutorial&lt;/h2&gt;
&lt;p&gt;For a detailed step-by-step guide, check out my full video tutorial:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=YSaxTEp83lc&quot;&gt;Unity XR - How to change the way the bow looks in your Quest games using VRIF&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&quot;connect-with-me&quot;&gt;Connect With Me&lt;/h2&gt;
&lt;p&gt;I’d love to hear about your game development projects and answer any questions you might have:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Join my &lt;a href=&quot;https://discord.com/invite/CVNuqSZ&quot;&gt;Discord server&lt;/a&gt; to chat and connect with other developers&lt;/li&gt;
&lt;li&gt;Support my tutorials by becoming a &lt;a href=&quot;http://www.patreon.com/sharkjets&quot;&gt;Patreon member&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;music-credits&quot;&gt;Music Credits&lt;/h2&gt;
&lt;p&gt;The music in the video is by Flawed Human Being. Check them out on &lt;a href=&quot;https://open.spotify.com/artist/0ywnFmJWQwP4adEG9otvYA&quot;&gt;Spotify&lt;/a&gt;.&lt;/p&gt;

&lt;aside class=&quot;ad-link&quot; aria-label=&quot;Recommended reading&quot; data-astro-cid-6vumcifv&gt;&lt;span data-astro-cid-6vumcifv&gt;Recommended reading&lt;/span&gt;&lt;a href=&quot;https://amzn.to/4qv5S52&quot; data-astro-cid-6vumcifv&gt;Unity Game Development in 24 Hours&lt;/a&gt;&lt;/aside&gt;</content:encoded></item></channel></rss>