<?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>The walking of birds</title><link>https://www.sharkjets.com/posts/the-walking-of-birds/</link><guid isPermaLink="true">https://www.sharkjets.com/posts/the-walking-of-birds/</guid><description>One weekend rebuilding a Unity VR game with Claude turned into many projects: a pixel map generator, Remixastro, a Common Scripts package, and an endless-music port for Unity.</description><pubDate>Mon, 19 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/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;p&gt;&lt;img src=&quot;https://www.sharkjets.com/images/posts/birdwalking.gif&quot; alt=&quot;pigeon gif&quot;/&gt;&lt;/p&gt;
&lt;p&gt;If you’ve ever spent any amount of time looking at pigeons, you’ll know exactly what birdwalking is. It’s when you intend to go one place, but you end up somewhere else.&lt;/p&gt;
&lt;p&gt;Over the course of this weekend, I’ve worked on seven different “projects”. I certainly didn’t &lt;em&gt;intend&lt;/em&gt; to. You see, I’m working on rebuilding a Unity VR game that &lt;a href=&quot;https://www.sharkjets.com/posts/bring-out-your-dead&quot;&gt;I accidentally deleted&lt;/a&gt;. It’s actually turned out to be a &lt;em&gt;good&lt;/em&gt; thing.&lt;/p&gt;
&lt;p&gt;Claude helped me start from near-scratch, and I’ve just been blown away by how good it is. I tried gamedev with AI about a year ago, and it was ok, but now it’s smooth as butter.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.sharkjets.com/images/posts/pixelmap.png&quot; alt=&quot;map tool&quot;/&gt;&lt;/p&gt;
&lt;p&gt;While working on the game, I needed to make maps, so I had Claude make a tool to simplify that; the &lt;a href=&quot;https://www.sharkjets.com/posts/pixels-to-dungeons/&quot;&gt;Pixel-based Map Generator&lt;/a&gt;. It works so good, I decided to pop that bish up on &lt;a href=&quot;https://skidvis.itch.io/pixel-based-map-generator&quot;&gt;itch.io&lt;/a&gt;. That tool takes 2D pixel art and turns it into 3D maps. I still needed the 2D pixel art, so I had Claude make a thing that &lt;a href=&quot;https://maps.sharkjets.com&quot;&gt;makes the thing&lt;/a&gt;, and that too was great!&lt;/p&gt;
&lt;p&gt;I was so jazzed about it all, that I posted a video about it on my &lt;a href=&quot;https://www.youtube.com/@SharkJets/videos&quot;&gt;Youtube channel&lt;/a&gt;, which I haven’t done in a while.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.sharkjets.com/images/posts/vis-2026-10-19.png&quot; alt=&quot;Vis in VR&quot;/&gt;&lt;/p&gt;
&lt;p&gt;Then I got back to work on my game. Having Claude make tools for spawning enemies a certain way. I had it look through my graveyard of projects for any scripts I might want to reuse. That eventually turned into a “Common Scripts” package that I can just import into any project.&lt;/p&gt;
&lt;p&gt;I was having Claude troubleshoot an issue I was encountering on the headset, and while I waited I noticed how quiet it was. Nobody else was home and I wasn’t playing any music, so I had the paradox of choice trying to figure out what music to play.&lt;/p&gt;
&lt;p&gt;When I make Youtube videos, I have to find background music to play there, and I remembered that, which reminded me of a tool I used to use called &lt;a href=&quot;https://github.com/drensin/Remixatron&quot;&gt;Remixatron&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;It’s a python tool that lets you feed it an mp3, tell it how long you want it to be, and it remixes it into a new song of the specified length. Remixatron itself was inspired by a website called “The Infinite Jukebox”, where similarly you could upload a file to have it play forever. That site is gone, and Remixatron is kind of a pain to work with, so once again I turned to Claude.&lt;/p&gt;
&lt;p&gt;I like to use Astro, Vue, and Tailwind to make websites, so I asked..&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Hey Claude, can we even remake this in Astro??&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;To my surprise, &lt;em&gt;we could&lt;/em&gt; and &lt;strong&gt;we did&lt;/strong&gt;! So that turned into &lt;a href=&quot;https://remix.sharkjets.com&quot;&gt;Remixastro&lt;/a&gt;. It too, works so well. Using &lt;em&gt;that&lt;/em&gt; reminded me that I was having music trouble on one of my game’s levels.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.sharkjets.com/images/posts/remixastro.png&quot; alt=&quot;Remixastro&quot;/&gt;&lt;/p&gt;
&lt;p&gt;On one level only, the background music was not looping. Now, some things irk me. Noticing when a background song loops is one of them, and the songs I’m using aren’t made to loop. Wait a second, I just made something that makes songs last forever!&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Claude, baby, you know that thing you just did with javascript? Can we do that in C# for Unity??&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https://www.sharkjets.com/images/posts/chris-evans.gif&quot; alt=&quot;Lucas Lee&quot;/&gt;&lt;/p&gt;
&lt;p&gt;Claude was all like, “Hold my beer,” and quicker than I could pick my jaw off the floor, we had that working too.&lt;/p&gt;
&lt;h4 id=&quot;for-the-birds&quot;&gt;For the birds&lt;/h4&gt;
&lt;p&gt;You see? Birdwalking. AI lets you move at the speed of thought. I did so many things in just &lt;em&gt;two days&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Here’s the thing though, I’m in a flow state. I know AI is coming for my job; that’s a very real fear. But I also know that not everyone knows how to use AI &lt;em&gt;well&lt;/em&gt;, if at all. That’s a muscle I’m building. I’m finding faster and better ways to amplify my thoughts.&lt;/p&gt;
&lt;p&gt;That’s the real skill and, unlike a bench press, I’m having fun doing it.&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>Pixels to Dungeons</title><link>https://www.sharkjets.com/posts/pixels-to-dungeons/</link><guid isPermaLink="true">https://www.sharkjets.com/posts/pixels-to-dungeons/</guid><description>I ditched Houdini and had Claude build me a pixel-art-to-3D map tool for Unity, then a dungeon generator to feed it. Making game maps has never been easier.</description><pubDate>Sat, 17 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;iframe src=&quot;https://www.youtube-nocookie.com/embed/7W3zaClAz8c&quot; title=&quot;Pixels to Dungeons&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;If you’ve been &lt;a href=&quot;https://www.sharkjets.com/posts/bring-out-your-dead&quot;&gt;keeping up&lt;/a&gt;, you know I deleted a game and had Claude help me bring it back from the dead.&lt;/p&gt;
&lt;p&gt;Now that I’ve been playing it, I have some ideas and I want to keep adding to it.&lt;/p&gt;
&lt;h4 id=&quot;disappearin-like-houdini&quot;&gt;Disappearin’ like Houdini&lt;/h4&gt;
&lt;p&gt;Back in the day, I used to use &lt;a href=&quot;https://sidefx.com&quot;&gt;Houdini&lt;/a&gt; to help me build maps. It’s not free though, and kind of overkill for what I was using it for.&lt;/p&gt;
&lt;p&gt;Thankfully, Claude can now take its place for a lot lot less.&lt;/p&gt;
&lt;p&gt;In no time flat I had it generate a Unity Editor tool which will replace pixels in a 2d map with prefabs based on the pixel colors, and it works like a charm!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.sharkjets.com/images/posts/pixelmap.png&quot; alt=&quot;map example&quot;/&gt;&lt;/p&gt;
&lt;h4 id=&quot;now-i-need-pixel-maps&quot;&gt;Now I need pixel maps!&lt;/h4&gt;
&lt;p&gt;But why should &lt;strong&gt;I&lt;/strong&gt; be the one to make them??&lt;/p&gt;
&lt;p&gt;I needed a quicker way, so I turned to Google to see how DnD DMs are going about making their maps. That’s when I found &lt;a href=&quot;https://watabou.itch.io/one-page-dungeon&quot;&gt;this cool site&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;It generates a random tabletop gaming map. Cool, but not exactly what I need. So of course I had Claude &lt;a href=&quot;https://maps.sharkjets.com&quot;&gt;whip up&lt;/a&gt; a more specific one for my needs.&lt;/p&gt;
&lt;p&gt;It looks the same for the most part, but it lets me create wider passages, as well as export the map in pixel form.&lt;/p&gt;
&lt;p&gt;Now I can generate infinite maps with just a few clicks. Now if I was &lt;em&gt;really&lt;/em&gt; lazy.. No, I mustn’t! :)&lt;/p&gt;
&lt;h4 id=&quot;this-is-the-new-way&quot;&gt;This is the (new) way&lt;/h4&gt;
&lt;p&gt;Claude/Codex/Whatever now give indie devs a quick and easy way to make the tools we either would have gone without, or bought, in no time flat. Helping us do the thing we really want to do.. make games.&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>Bring Out Your Dead</title><link>https://www.sharkjets.com/posts/bring-out-your-dead/</link><guid isPermaLink="true">https://www.sharkjets.com/posts/bring-out-your-dead/</guid><description>I lost the source code to my old VR game DemBows. With just two APKs and Claude, I had it restored and running again in three hours.</description><pubDate>Fri, 16 Oct 2026 12:42:11 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;p&gt;&lt;img src=&quot;https://www.sharkjets.com/images/dembows-old.gif&quot; alt=&quot;original Dembows video&quot;/&gt;&lt;/p&gt;
&lt;p&gt;Back in 2020, at the peak of.. well.. you know, I was accepted into Meta’s Launchpad program. It was a Meta bootcamp for teaching people how to get into making VR games on the Quest. They provided headsets, swag, a discord community, and several video calls discussing the ins and out of development, marketing, the review process, and so on.&lt;/p&gt;
&lt;p&gt;It was a good time. (So good that I applied again in 2021 and got in.) As a part of launchpad, we had to make a VR project in order to put what we learned to use. I made a little project I called &lt;strong&gt;DemBows&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Now, if you’re familiar with Reggaeton artists like Daddy Yankee or Bad Bunny, that style of music is based on a Reggae song called “Dem Bow,” and in my game you have a bow. In the game you basically navigate mazes trying to find all the targets as fast as possible. Naturally, the music would be reggaeton.&lt;/p&gt;
&lt;p&gt;Not groundbreaking, but it was my first project so I kept it simple.&lt;/p&gt;
&lt;p&gt;A few days ago a friend of mine reached out and said,&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“I was watching my gameplay video of your game DemBows, such a good game! Ever plan to do anything further with it?”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I was like, really? Luckily, I still had it loaded on my headset, so I fired it up and tried it out. It was pretty fun! Low stakes and relaxing. I played through all seven levels I had made. I wondered how hard it would be to modernize the source code to bring it up to date.&lt;/p&gt;
&lt;p&gt;Sadly.. I deleted the source code. I’ve replaced my hard drive since I made it, and stopped paying Github for large files, so it was deleted there too. The only thing I have is two apk’s. An earlier, unsigned demo and the latest signed apk on Meta’s Developer Hub.&lt;/p&gt;
&lt;p&gt;I pulled them both into a folder and fired up Claude. I said,&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“Claude.. I lost the source code to this game, can you help me recover it?”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I thought it would hit the brakes and see it as some act of piracy, but to my surprise the response was more &lt;em&gt;I got you, fam!&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;A few minutes later it had extracted all the assets and scripts into backup folders. I then spun up a new Unity project, copied the files there, and told Claude to create a restore plan: updating the project to support &lt;em&gt;most&lt;/em&gt; XR headsets, not just Quest.&lt;/p&gt;
&lt;h4 id=&quot;three-hours-later&quot;&gt;Three Hours Later…&lt;/h4&gt;
&lt;p&gt;&lt;img src=&quot;https://www.sharkjets.com/images/dembows-new.gif&quot; alt=&quot;remade Dembows video&quot;/&gt;&lt;/p&gt;
&lt;p&gt;Just 3 short hours later and I was up and running. It didn’t just recover it, it improved it. I was flabbergasted. It’s no wonder there are so many stories popping up from indie devs about having their games stolen. All I had was 2 apk’s!&lt;/p&gt;
&lt;p&gt;On the one hand, man, that’s terrifying; but on the other.. I have a graveyard filled with dozens of game ideas I fiddled with before they died. Now, with AI, I can resurrect those ideas, maybe even have Claude pick out something worth saving from all of them and create a new Frankenstein game that’s better, faster, stronger.&lt;/p&gt;
&lt;p&gt;There’s never been a better time to..&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.sharkjets.com/images/bringoutdead.gif&quot; alt=&quot;Monty Python gif&quot;/&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>The 80/20 Rules of Game Development</title><link>https://www.sharkjets.com/posts/the-80-20-rules-of-game-development/</link><guid isPermaLink="true">https://www.sharkjets.com/posts/the-80-20-rules-of-game-development/</guid><description>How the Pareto principle shows up in gamedev: why prototypes are fast, why polish takes forever, knowing when to ship, and picking the one thing to make perfect.</description><pubDate>Fri, 02 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;h4 id=&quot;80-of-what-players-see-is-20-of-the-development-time&quot;&gt;80% of what players see is 20% of the development time.&lt;/h4&gt;
&lt;p&gt;Ask any game developer how many games are in their “unfinished games graveyard” and I bet they’ll give you a sad look. Being a game developer, especially a solo game developer, is crazy hard.&lt;/p&gt;
&lt;p&gt;If you look on Youtube you’ll see a ton of videos claiming to have made a game in 24 hours (or less). Those videos grind my gears because what they’ve actually made is a vertical slice or a prototype.&lt;/p&gt;
&lt;p&gt;There’s a whole lot that goes into a finished game, and one of the main reasons game devs burn out is because we can get from zero-to-show in almost no time. Create a core loop, add some graphics, record a video.. done.&lt;/p&gt;
&lt;p&gt;..but that’s just the &lt;strong&gt;start&lt;/strong&gt;! The rest of the time is spent level-building, story-building, refining assets or controls, etc.; things that are much, much harder to show off. So by the time we’re on our fourth or fifth video demo, people are like, “what changed?” That can be demotivating to a dev who spent a lot of time buffing out a barely noticeable scratch.&lt;/p&gt;
&lt;p&gt;That’s why it’s very important to write down your game plan. Have a to-do list you can mark tasks off of as they get done; it can help you see your progress, even if nobody else notices.&lt;/p&gt;
&lt;h4 id=&quot;the-last-20-of-development-takes-80-of-the-time&quot;&gt;The last 20% of development takes 80% of the time.&lt;/h4&gt;
&lt;p&gt;Right on the heels of the first rule, the stuff nobody will pat you on the back for will take 80% of your dev time. Micro-adjustments, polish, finding the right music or sound effect to get your vision across, fine-tuning character looks or animations. You will obsess over these details and they will be the bulk of your work.&lt;/p&gt;
&lt;p&gt;You have to be careful here though.&lt;/p&gt;
&lt;p&gt;The thing that separates hobby game devs from professional game devs is that the pros know &lt;em&gt;when&lt;/em&gt; a product is ready to ship. We could spend an eternity trying to get our games perfect, but the pros understand that every minute spent without shipping is a dollar unearned and a minute stolen from the next game.&lt;/p&gt;
&lt;p&gt;Perfect is the enemy of Good, and getting to good is going to take &lt;em&gt;enough&lt;/em&gt; of your time.&lt;/p&gt;
&lt;h4 id=&quot;80-of-a-players-enjoyment-comes-from-20-of-the-games-features&quot;&gt;80% of a player’s enjoyment comes from 20% of the game’s features.&lt;/h4&gt;
&lt;p&gt;Think of your favorite game. Are you thinking of a souls-like with terrible controls? Probably not.&lt;/p&gt;
&lt;p&gt;While developing Breath of the Wild, Nintendo created a &lt;a href=&quot;https://www.youtube.com/watch?v=30jGWna4-Ns&amp;amp;t=257s&quot;&gt;2D version&lt;/a&gt; of the game just to make sure the physics and interactions were perfect.&lt;/p&gt;
&lt;p&gt;As I’ve already mentioned, a ton goes into developing a game, but our favorite games have something that’s got so much love put into it that we can’t resist. Maybe it’s how you can juggle enemies in Devil May Cry, or maybe it’s how the cars handle in Gran Turismo. Whatever it is, it keeps you hooked.&lt;/p&gt;
&lt;p&gt;We have to find that nugget in our own games. What one part will you not compromise on? Perfect is the enemy of Good, yes, but make &lt;em&gt;one&lt;/em&gt; thing perfect.&lt;/p&gt;
&lt;h4 id=&quot;honorable-mentions&quot;&gt;Honorable Mentions&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;20% of bugs cause 80% of crashes. Fix the big ones.&lt;/li&gt;
&lt;li&gt;20% of the feedback would make the game better for 80% of players. Focus on those.&lt;/li&gt;
&lt;/ul&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>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/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;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;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;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/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 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/4qv5S52&quot; data-astro-cid-6vumcifv&gt;Unity Game Development in 24 Hours&lt;/a&gt;&lt;/aside&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/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 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;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/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 - 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;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/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>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/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;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/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;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;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/4qv5S52&quot; data-astro-cid-6vumcifv&gt;Unity Game Development in 24 Hours&lt;/a&gt;&lt;/aside&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/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 - 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;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/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 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/4qv5S52&quot; data-astro-cid-6vumcifv&gt;Unity Game Development in 24 Hours&lt;/a&gt;&lt;/aside&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/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></channel></rss>