tag:blogger.com,1999:blog-16673138092390094732024-02-19T11:46:03.794+01:00runevision blogThe projects and visions of programmer and designer Rune Skovbo Johansen.Rune Skovbo Johansenhttp://www.blogger.com/profile/10793811736803423054noreply@blogger.comBlogger126125tag:blogger.com,1999:blog-1667313809239009473.post-24621177570832016992024-01-08T16:03:00.001+01:002024-01-09T22:55:21.436+01:002023 retrospective and goals for the new year<p>2023 was a pretty good year for me!</p>
<p>I'll touch here briefly on my personal life, then go on to talk about the Quest 2 release and sales of Eye of the Temple, and finally talk about my new game project and goals for 2024.</p>
<h3>Personal life</h3>
<p>It's the first year since the pandemic that didn't feel affected by it. I moved from Denmark to Finland in 2020, just as the pandemic began, so on the social side it was some slow years initially.</p>
<p>Things picked up in 2022, but especially in 2023 we had lots of family and friends from Denmark visit us here and have a great time, and we also made more strides on the local social network front.</p>
<p>Particularly memorable was a wonderful weekend celebrating the 40th birthdays of me and a friend, with some of my closest family and friends from Denmark and Finland at a site called Herrankukkaro in the beautiful Finnish archipelago.</p>
<h3>Eye of the Temple released on Quest and turned a profit</h3>
<p>In April 2023, a year and a half after the original PC release on Steam, my VR game Eye of the Temple was <a href="https://blog.runevision.com/2023/05/behind-the-design-of-eye-of-the-temple-out-on-quest-2.html" target="_blank">finally released for Quest 2</a>, with the help of <a href="https://salmi.de/" target="_blank">Salmi Games</a>. While it was super tough getting there, in the end we managed to ship the game at a level of quality I'm very proud of. Others agreed; it got a great critical reception, as well as a high user rating of 4.7 out of 5 stars.</p>
<iframe allowfullscreen="" src="https://www.youtube.com/embed/mM5vLkPpJi8?rel=0"></iframe>
<p>It's super gratifying regularly seeing new reviews of the game from people who say it's the best VR experience they've had. Oh, and recently, <a href="https://www.uploadvr.com/top-25-best-meta-quest-3-games/" target="_blank">UploadVR ranked it the 5th best game for Quest 3</a> and <a href="https://screenrant.com/meta-quest-2-games-download-play-first/" target="_blank">Screen Rant ranked it the 6th best game for Quest 2</a>. Wow, what an achievement for my little game! (But remember, critical acclaim does not equal sales…)</p>
<p>I’m no longer working on the game at this point. After being occupied with it over a span of seven years, I really want to move on, and I'm also done with VR in general for now. But the sales of the game are still developing, so let's talk a bit about that.</p>
<p>My thinking about the game’s sales performance has changed a lot over time. I didn't pay myself a regular salary during the game’s three years of full time work. But when evaluating the game financially, I use the old salary from my previous job as reference, and calculate whether my time investment at that salary (I’ll refer to it as just “my investment”) would be covered retroactively by the game’s revenue. Of course, I also keep in mind that the covered percentage would be higher if I based it on a more moderate salary.</p>
<p>I was initially slightly disappointed in the Steam sales. As I <a href="https://blog.runevision.com/2021/11/launching-eye-of-temple-this-was-my.html" target="_blank">wrote about</a> back in November 2021, the projected year one sales would only cover 25% of my investment. Back then I expected the Steam year one revenue to make up the majority of the game's lifetime revenue. <a href="https://blog.runevision.com/2022/10/one-year-later.html" target="_blank">One year later</a>, the sales had outperformed that projection, and my investment was actually covered 40%.</p>
<p>A lot has happened since then, in particular due to the Quest launch.</p>
<p>Comments from many VR developers in 2021 and 2022 had indicated that Quest sales could commonly be 5x-10x as large as Steam VR sales. For Eye of the Temple, the Quest week one revenue was merely twice of what the Steam week one revenue had been, so it was not quite as high as Salmi Games and I had hoped for. Speaking with other VR developers in 2023, it seems that the time when Eye of the Temple launched on Quest was generally a bad period for Quest game sales.</p>
<p>Still, Quest is easily the most important VR platform, and later the sales picked up significantly, with the recent Black Friday and Xmas sales combined having as big an impact on revenue as the launch sales. Already, 70% of total revenue has come from Quest and 30% from Steam, with the Quest version having been out for a shorter time.</p>
<img alt="Cumulative revenue from Steam and Quest" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpXnlSsN7sOkcPRZ784zlesqYbxmHoCYMvEeBOEYbud7le659N627qzlGJZWFIbi3BEjW78dDY2IbNMvjjdOJ2607kJ06QlAFUcCQydIlU08g57aMX0bpzX91Zzr9gxAJjOcZPntzRKFKG4iXOE_TA-r_NyazXa3SCXJ6RdVaYvIVFZG_Homv6_klgbZY/s1600/CumulativeRevenueFromSteamAndQuest.png" />
<p>My investment is now covered 140%. In other words, even based on a proper salary for myself that's fitting for my experience, Eye of the Temple has recently flipped well into profitability. That still doesn't make it a runaway hit, but it's really nice to know that it's a success not only creatively and as a passion project, but also in terms of financial sustainability. Back in 2020 when I was still developing the game, I had not expected that at all for my first commercial title.</p>
<h3>My new project: The Big Forest</h3>
<p>So what comes after Eye of the Temple? Like I wrote above, I'm done with VR for now.</p>
<p>The working title of the new game I'm developing is "The Big Forest". It's set in a big mystical forest and has a strong focus on exploration. The gameplay will involve light puzzles based on connecting clues found through exploration and gradually gaining access to new areas.</p>
<p>The project is in its early stages. The game will be fully procedurally generated, and so far I've been working on a series of disconnected experiments and proofs of concept that will eventually all be rolled into the game. These include procedural generation of terrain, gameplay progression, creatures and music.</p>
<p>I started working on the game in 2022, but I put it on hold shortly after, when I started working on the Quest 2 version of Eye of the Temple. In the last third of 2023, I started working on the procedural landscape for the game again. You can see an overview of that progress in the video below.</p><p>
<iframe allowfullscreen="" src="https://www.youtube.com/embed/VxMwggFQRQM?rel=0"></iframe>
</p><p>As for what the game is about in general, I made <a href="https://runevision.com/multimedia/thebigforest/" target="_blank">this page about The Big Forest</a> where you can read more about it.</p>
<h3>Goals for 2024</h3>
<p>I expect The Big Forest to be my focus for several years (and that might end up being an understatement).</p>
<p>But I also have a list of more concrete things I hope to get done in 2024, not all directly related to my game:</p>
<h4>Present my Fractal Dithering technique</h4>
<p>I want to release a video, blog post, and source code for a rendering technique I call <a href="https://mastodon.gamedev.place/@runevision/110508837173343595" target="_blank">Fractal Dithering</a>. It's unrelated to my game — just something I developed because I had an idea for it and had to try it out. The code is all done, and I worked on an explainer video (not the one here below) back in June-July 2023. But making the video took so long that I ended up having to take a break from it because I was losing motivation. Let's get that wrapped up.</p>
<video autobuffer="autobuffer" controls="controls" loop="loop" width="100%">
<source src="https://runevision.com/blog/videos/20230608_DitheringImprovedMultipleScenes.mp4" type="video/mp4"></source>
</video>
<h4>Release my Layer-Based ProcGen for Infinite Worlds framework as open source</h4>
<p>I've put more than a decade into developing a framework for contextual procedural generation of infinite worlds. I <a href="https://blog.runevision.com/2013/09/layer-based-procedural-generation-for.html" target="_blank">wrote about it here</a> in 2013. I originally developed it for the game The Cluster I was working on at the time. I since abandoned that game, but now I'm using the framework for The Big Forest. I think the framework could be useful for others as well, which is why I'd like to open-source it.</p>
<p>The generality of the framework is proven by using it for two entirely different games - The Cluster being a 2.5D platformer where the world is made out of generated meshes and The Big Forest being a first/third-person game based on generated terrains. In 2023 I put some work into removing cruft from the framework that was only relevant to The Cluster, and generally streamlining it. There's still some more of that work left to do.</p>
<h4>Wrap up and release The Cluster as a free abandoned game</h4>
<p>I already <a href="https://blog.runevision.com/2022/10/one-year-later.html" target="_blank">wrote about it here</a> in 2022, but I'd like to wrap up my old game The Cluster and release it for free as an unfinished game, partly because the game is fully playable and one can easily have a few hours of fun playing it, and partly because the game demonstrates a lot of interesting things that can be done with my Layer-Based Procedural Generation for Infinite Worlds framework in areas including level design and pathfinding. It's the longest-running project of my life, and it'd be nice to get it out there, even if it's in an incomplete state.</p>
<iframe allowfullscreen="" src="https://www.youtube.com/embed/KsGy-Hc_AWk?rel=0"></iframe>
<h4>Make better use of my YouTube channel</h4>
<p>Until recently, <a href="https://www.youtube.com/@runevision" target="_blank">my YouTube channel</a> just had various videos that show off things with little or no comment, and without any channel branding or identity. I'd like to start making videos in a more "classic YouTube format" where I discuss a subject with a proper intro and outro, channel branding, background music, etc.</p>
<p>I've just recently kickstarted that effort with the video about <a href="https://www.youtube.com/watch?v=VxMwggFQRQM" target="_blank">developing a procedural landscape for The Big Forest</a> that I embedded further up this page. I aim to produce a few more such videos in 2024, for example one video for each of the subjects mentioned above.</p>
<h4>What would you like to see?</h4>
<p>The goals above all relate to things I'd like to share, so I'm very interested in gauging which of those things might be of interest to you all. If there's anything you'd be interested in in particular, let me know!</p>Rune Skovbo Johansenhttp://www.blogger.com/profile/10793811736803423054noreply@blogger.com4tag:blogger.com,1999:blog-1667313809239009473.post-23054221247000716312023-09-15T16:39:00.003+02:002024-01-08T14:46:34.690+01:00Charts to visualize how much you owe Unity for their per-install Runtime Fee<p>Unity Technologies has announced a new Unity Runtime Fee that charges developers a fee of up to $0.20 per installed game above certain thresholds. According to my calculations, it can be a bankruptcy death-trap, at least in certain cases.</p>
<p>Shockingly, the owed percentage is unbounded to the point that the owed amount can exceed gross revenue, since it depends on installs, not sales.</p>
<p><b>Update:</b> <i>Unity since <a href="https://blog.unity.com/news/open-letter-on-runtime-fee" target="_blank">backtracked and apologized</a> for the announced changes. With the new updates to the terms, Unity will clamp the install fees to be at maximum 2.5% of revenue. And the changes will not be retroactive after all. Furthermore, John Riccotello is stepping down as CEO. There are more details in the linked blog post.</i></p>
<p><i>Even with these rollbacks, the changes to the terms still constitute a price hike, at least for developers earning more than one million dollars in a year. Furthermore, Unity has suffered a tremendous decrease in trust and goodwill, which already was not great before. With the rollbacks, there is less urgency for developers to switch to a different engine, but the whole situation has highlghted the importance of being prepared for such a scenario and have eyes and ears open towards other engines as well.</i></p>
<p><i>The original post continues below.</i></p>
<p>You can check out the specifications in their <a href="https://blog.unity.com/news/plan-pricing-and-packaging-updates" target="_blank">blog post</a>. Based on those, I've made two charts where you can look up how big a percentage of your gross revenue you would owe Unity, based on the number of installs and on how much revenue you make for each of those installs. The fee specifications are different for Unity Personal and Unity Pro, so there is a chart for each.</p>
<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXFh624JSWU2oQNLi15HWtKl36PpdDVCtNne769g_U1mIhPUpCGgxxO3Xw5SZffBWcv7oygby0-dNcmp_S6wlDUUV0UwiJBS9i7WlUTPxxyEoNxfFNjufO4gzzUHekaMStNYxElLHwXUmTEIfDcBBc4j6b-4EpHm9dlH7X4pRmpMV3AvZV4RbduuneUNs/s1600/UnityInstallFeeGraphPersonal3.png"/>
<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZRB2_Jl9NLSveBM1_5XwNzeR5KKCPrvDb5puhX76ebIN0g8cF75oGuH1SMbgJK0FAe3evu_Md-2xUItYBsiDoXV-GYIbS-LI3h1f5uKRijC_0cFgkU0VFYOtNCvwNDLM1X4bXHtkkIwr5eop1Si9DN7QVys5CcboP0kgil68LEbvsrBGpGbrYnNVKA3A/s1600/UnityInstallFeeGraphPro3.png"/>
<p>If you want to check the math used for the charts, you can check out the source for the <a href="https://www.desmos.com/calculator/iayndiv9d5" target="_blank">chart for Unity Personal</a> and the <a href="https://www.desmos.com/calculator/n1xtoon4j7" target="_blank">chart for Unity Pro</a>.</p>
<h3>Effect on free-to-play games</h3>
<p>The first takeaway is that free-to-play games are kind of screwed, since the average revenue per user is often very low in that monetization model. This is probably deliberate. See, Unity is reducing or waiving the new fees for games that make use of certain services of theirs, such as Unity Gaming Services or Unity LevelPlay mediation for mobile ad-supported games. And there are reports that getting more games to adopt these services and <a href="https://mobilegamer.biz/unity-is-offering-a-runtime-fee-waiver-if-you-switch-to-levelplay-as-it-tries-to-kill-applovin/" target="_blank">kill off the competition</a> was the whole point of introducing the new fees. This sounds like a rather shitty anti-competitive practice.</p>
<p>Enough about free-to-play though; I don't personally care that much about it and my knowledge about this area is very limited. What about premium games? Even if those are just collateral damage in Unity's strategy, they are still profoundly impacted.</p>
<h3>Effect on premium games</h3>
<p>Premium games (games that are bought with an up-front purchase) can typically have price tags such as $10, $20 or $60, and at those prices, Unity's Runtime Fee of $0.20 (or lower) per install is just a tiny fraction, right? No, unfortunately that's not how it works at all.</p>
<p>Sure, if you assume that a premium game has one install per unit sold, and think of the revenue per install as the original price the game is sold at, then the new fees don't look too bad for premium games. But it's a trap to think that way.</p>
<h4>The average lifetime price for a premium game is lower than you think</h4>
<p>The average price a game sells at over its lifetime can be a fraction of the price it sells for initially. Deep discounts (e.g. 90% off on Steam) and bundles (Humble Bundles and similar) can rapidly drag down the lifetime average price of a game, since it often happens that way more people buy it at these lower price points than at the original price.</p>
<p>So when using the charts above, don't consider a game's initial price. Instead, think of the lowest price the game could be sold at when it's at the maximum discount it will ever be, or when it's sold in a bundle together with other games, each game earning only very little per sale.</p>
<p>And that low price, <i>that's just the starting point</i>.</p>
<h4>The number of installs is not the same as the number of copies sold</h4>
<p>Don't think of the X axis in the charts above as the number of copies sold. The number of installs can be much higher, due to a variety of factors:</p>
<ul>
<li>A customer can install their purchase copy on multiple devices. Unity has said this will count as multiple installs.</li>
<li>A customer can uninstall the game and later install it again. Unity initially said this will count as separate installs and later said it won't. They have not disclosed how they would be able to know.</li>
<li>On some devices and stores, updating a game to a newer version might count as a new install. Unity has not disclosed their methodology.</li>
<li>Pirated versions of a game are unrelated to copies sold. Unity has said those won't be counted, but in practice they have no way of knowing if a given install is a pirated copy or not. They have said that developers are welcome to contact them if they suspect they have been victims of piracy. If this does not fill you with confidence, you're not alone.</li>
<li>Sometimes, full premium games are made <a href="https://www.rockpapershotgun.com/assassins-creed-odyssey-is-free-to-play-this-weekend" target="_blank">free to play for a weekend</a> or similar. It's a kind of demo, but using the same build as the full game. It's just limited in time. Meta also has a <a href="https://developer.oculus.com/blog/buyer-confidence-try-before-you-buy/" target="_blank">try before you buy</a> functionality where players can try certain games for e.g. 15 or 30 minutes before deciding if they want to buy it. These types of demos, that are not separate builds, count towards the install counts of the full game, and obviously the number of people who try the game can be much higher than the number who end up buying it. It essentially behaves similar to the free-to-play model.</li>
</ul>
<h3>How to actually use the charts</h3>
<p>The problem is that you probably have little idea what the sold-copies-to-installs ratio will be for your game, given all the unpredictable factors mentioned above (multiple devices, reinstalls, updates, piracy, time-limited full-game demos if applicable). But you can <i>start</i> by pretending one sale equals one install and plot a point in the chart based on that.</p>
<ul>
<li>Plot an <i>initial starting point</i> in the chart based on sold copies and revenue per sold copy:
<ul>
<li>For the X axis, predict how many copies your game will sell.</li>
<li>For the y axis, predict the average price the game will sell at, keeping in mind that it'll probably be closer to the lowest price the game will ever sell at than to the initial price.</li>
</ul>
</li>
</ul>
<p>Now spot the diagonal black line that goes through the chart, which represents the 0% threshold.</p>
<ul>
<li> Draw a line from your chosen initial starting point in the graph and down and to the right, parallel to that black 0% line.</li>
</ul>
<p>The higher the sold-copies-to-installs ratio is, the further you will move down and to the right along that line. This is because a higher sold-copies-to-installs ratio will both increase the number of installs and decrease the revenue per install. And in these particular charts, it forms a straight line because both the X axis and Y axis are exponential.</p>
<h4>Example</h4>
<p>Let's say you expect your game will sell on average for $10, taking discounts etc. into account, and that you expect to sell 300k copies. You want to know what you might owe Unity if you stay on the Unity Personal license (which is actually allowed regardless of revenue according to their announced changes).</p>
<p>So in the chart for Unity Personal you plot in an initial point, which is at 300k on the X axis and at $10 on the Y axis. This would represent what you owe if there is exactly one install per sold copy.</p>
<p>But to be aware of potential effects of the sold-copies-to-installs ratio being higher, you draw in a diagonal line starting from your initial point and going parallel to the bottom black 0% line.</p>
<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrJ47fu-Gls171J4zXvH3Y2w4JucFsZHZDtjLafPuEGF2bV9bEYOSfhiRiSlzfXdvZCjfXPicvhF3-ATu4dR-vjcFwHP2in0awvXYZn_3UNWEzfbJAKztJQWomJzCCzktZxUeOLNllLpWZ2jqgaWWwgVft1HGtWOtCEzPo50X98DrA97A6QG02ycAS44k/s1600/UnityInstallFeeGraphPersonal3Example.png"/>
<p>Following this line shows you the effect of higher sold-copies-to-installs ratios, such as 2x and 10x, and you can see how this drastically affects how big a percentage of your gross revenue you owe to Unity.</p>
<h3>Consequences</h3>
<p>Unfortunately I can't help you figure out what is a realistic sold-copies-to-installs ratio to expect, because I have no idea even for my own games, let alone others'. And that's kind of the problem here. Charging based on installs is utterly bonkers due to how unpredictable it is.</p>
<p>It's impossible to budget for. And it makes all kinds of things which are a normal part of game development (like discounting your game, accepting that piracy is inevitable, etc.) into suddenly nerve-wrecking issues since they could have drastic effects on what you owe Unity.</p>
<p>On top of the number of installs being unpredictable even if they were counted correctly, you also can't trust Unity to do that, since the way they track it is proprietary and unaccountable. It relies on Unity saying "trust us, you owe us this much money" and you not being able to inspect their methodology, data, or calculations at all. And many of the things they claim they will correctly count or correctly refrain from counting, are simply not practically possible.</p>
<p>In fact, an alleged Unity employee (and it looks legit to me) <a href="https://forum.unity.com/threads/unity-plan-pricing-and-packaging-updates.1482750/page-55#post-9299384" target="_blank">posted anonymously</a> that Unity is aware developers may in some cases lose more per install than they earn, even to the point of bankruptcy, but that they would "fix this with the customer to not bankrupt them".</p>
<p>The issue with that is that no serious business would leave a matter of potentially going <i>bankrupt</i> to be addressed with some future ad-hoc fix at another company's whim. That stuff needs to be up-front and contractual, <i>even</i> with companies you trust, let alone with Unity.</p>
<p>In short, this is an absolute train wreck.</p>
<p>On a related note, I also <a href="https://twitter.com/runevision/status/1702259250985124115" target="_blank">wrote here</a> about how contrary to what Unity says themselves, Unity 2022.x or earlier and Unity 2021.x LTS or earlier are not affected by the Unity Runtime Fee as far as I can tell, based on Unity's own Terms of Service. It covers how a previous version of the Terms of Service allowed to stick with that version of the Terms of Service if you don't upgrade Unity, and how it doesn't matter that Unity removed that clause in a later version of the Terms of Service, since the older terms did not give them the right to change the terms like that.<p>Rune Skovbo Johansenhttp://www.blogger.com/profile/10793811736803423054noreply@blogger.com2tag:blogger.com,1999:blog-1667313809239009473.post-71254359517581226072023-05-06T16:29:00.002+02:002023-05-06T16:29:49.304+02:00Behind the design of Eye of the Temple, out on Quest 2<p>My VR adventure <a href="https://eyeofthetemple.com" target="_blank">Eye of the Temple</a>, that I've been working on since 2016, has landed on the Meta Quest 2! It was released last week on April 27th.</p>
<p><b><a href="https://www.oculus.com/experiences/quest/5361030930653377/" target="_blank">Get Eye of the Temple for Quest 2 on the Oculus Store</a></b></p>
<p>Originally released for SteamVR in October 2021, so many people have asked for it to be brought to the Quest 2 as a native app, so I'm happy it's finally a reality. The Quest 2 version was co-developed with Salmi Games and it took all our combined and complimentary skills to bring the game to life at target framerate on the Quest 2 mobile hardware.</p>
<p>We also made this new trailer:</p>
<iframe allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/kTNMdfxPSLY?rel=0" width="560"></iframe>
<p>The game got a fantastic reception! UploadVR called it "<a href="https://www.uploadvr.com/eye-of-the-temple-review/" target="_blank">A Triumphant Room-Scale Adventure</a>" and has labeled it an essential VR experience, and it got great video coverage by <a href="https://www.youtube.com/watch?v=lvHU-199hUY" target="_blank">Beardo Benjo</a>, <a href="https://www.youtube.com/watch?v=XIqI_pmUktg" target="_blank">BMFVR</a> and many others. It also got great user reviews and a high review score on the Oculus Store.</p>
<h3>Behind the design</h3>
<p>To mark the Quest 2 launch of Eye of the Temple, I've written no less than three articles - published elsewhere - about different aspects of its design.</p>
<h4>The Origins and Inspirations of ‘Eye of the Temple’</h4>
<p>To celebrate the launch, I spoke with Meta about the origins of Eye of the Temple and the wide variety of inspirations (from classic platformers to Ico and Indiana Jones) behind the game.</p>
<p>Read the article on the <a href="https://www.meta.com/en-gb/blog/quest/eye-of-the-temple-vr-meta-quest-2-platformer/" target="_blank">Meta Quest blog</a></p>
<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqtXUjRdQN_EUTWJaxmnI7miLIK8AxP1ZdrN9gYWzTVUmBlo5qPFaVVquG2BIrOyeBeQ46hj7MpgvMQ9pKZvUwE4FQM40p19MiHSFHc5OVDFLl3G8Joob6MgbrtSBxt2lsn4E92L9ebRmeNYE3qAWEe7LU9N7_CYQk_rGLLfkbJrFAbJTivFCLyC6n/s1600/InspirationsCollage.jpg"/>
<h4>Approachable and Immersive Design in ‘Eye of the Temple’</h4>
<p>Immersion can mean many things, and VR has lifted the ceiling for immersion in games higher than ever before. In this article, I’ll detail how a design dogma of “embodied immersion” in Eye of the Temple goes hand-in-hand with making the game highly approachable—even for people who don’t normally play video games.</p>
<p>Read the article on the <a href="https://developer.oculus.com/blog/eye-of-the-temple-vr-immersion-game-design/" target="_blank">Oculus Developer blog</a></p>
<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMh1OtBa4QUhsy-PeLGUa9UToO0hwfuvrXbMh2AC9J4lZ9AJuyzr_n6bLH_q1zq6n9RUokoxMeUSrwISziX31WQO2N2s5TESB_o-H4zgLnJeFJqGPOam2pxOrzLn2KkQKsUEv3zqwjO3zFkQPNhYLr1d5CzqwkASyxE1JGPkIQ8pq4_N0pA9e3WGH_/s1600/DesignDogmaThumb.jpg"/>
<h4>The Hidden Design Behind the Ingenious Room-Scale Gameplay in ‘Eye of the Temple’</h4>
<p>Eye of the Temple is one of the rare VR games that focuses on not just on pure room-scale movement, but <i>dynamic</i> room-scale movement. The result is a uniquely immersive experience that required some clever design behind the scenes to make it all work. This guest article explains the approach.</p>
<p>Read the guest article on <a href="https://www.roadtovr.com/eye-of-the-temple-design-room-scale-vr-gameplay/" target="_blank">Road to VR</a></p>
<img width="100%" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4JKvReN5wjMXVw4fptRptmn467MiC9rvu0ezXM1oPnF-ioHeAmzcVSFleQySacGHqPye86gY-ftN_ERl1MsVIVIs5fPL-ebTgfedkW9G9IuqLbUh_a2vBkCcsVgiZGZQY63wPewi9cM3St-5etVONz5S4s2FJZ7V9zCredQihflLHahYrgzywy5WH/s1600/05_platform_pattern_overlays.gif"/>
<h3>Other bits and pieces</h3>
<ul>
<li>Here's a reddit post talking about how we had to <a href="https://www.reddit.com/r/virtualreality/comments/12dnjg8/it_wasnt_easy_but_heres_how_i_managed_to_make_a/" target="_blank">completely change the water effect implementation</a> on Quest 2 in order to keep the same aesthetic on the mobile hardware.</li>
<li>Here's a short <a href="https://www.youtube.com/watch?v=XfGxukVhSJs" target="_blank">YouTube video</a> where I explain how the room-scale platforming gameplay works behind the scenes. It essentially covers some of the same subject as the Road to VR guest article I mentioned above, but in less details.</li>
<li>Here's an <a href="https://eyeofthetemple.com/faq.html" target="_blank">FAQ</a> with answers to common questions we've received since the Quest 2 release.</li>
</ul>Rune Skovbo Johansenhttp://www.blogger.com/profile/10793811736803423054noreply@blogger.com1tag:blogger.com,1999:blog-1667313809239009473.post-68572027446158804442022-10-14T17:08:00.002+02:002023-10-31T17:45:16.652+01:00One year later...<p>Today is the one year anniversary of the <a href="https://blog.runevision.com/2021/11/launching-eye-of-temple-this-was-my.html" target="_blank">release</a> of my VR adventure <a href="https://store.steampowered.com/app/589940/Eye_of_the_Temple/" target="_blank">Eye of the Temple</a> on Steam! It's currently 40% off to celebrate.</p>
<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKDNd4o_XJYkzzH_x02QgN6GJBcnLcnv6MbJacclAcmwcaKcI-MOtxWiwkFZ7uc9ReYBwOlBTV2eLuZ2kdso-tgBjTNQN2_2hBtw6FJWjlJfnZnhu1OL60hzORpk9zeZnBkzpbcSdgB-5Ul8NlDSM4edhyAN-gqt9Kdm1tUL6KPob6bss7wrwVLQTn/s1600/anniversary.png" />
<iframe frameborder="0" height="190" src="https://store.steampowered.com/widget/589940/?t=Step%20from%20one%20moving%20block%20to%20another%2C%20dodging%20traps%20and%20solving%20puzzles%20with%20your%20torch%20and%20whip%20in%20hand%2C%20as%20you%20explore%20a%20vast%20and%20treacherous%20temple%20in%20VR%20using%20your%20own%20feet." width="100%"></iframe>
<p>I thought I'd take a moment to talk about what I've been up to since the release, both related to Eye of the Temple and other projects.</p>
<h3>Eye of the Temple updates</h3>
<p>In the months after the release I worked on various fixes and updates to the game.</p>
<ul>
<li>In December I added <a href="https://store.steampowered.com/news/app/589940/view/3145199382107773902" target="_blank">save slots selection</a> and <a href="https://store.steampowered.com/news/app/589940/view/3145200016677501366" target="_blank">Steam Cloud support</a>.</li>
<li>In February I implemented some <a href="https://store.steampowered.com/news/app/589940/view/3129441223341503055" target="_blank">minor improvements to the VR comfort options</a>.</li>
<li>In April I released a new feature called <a href="https://store.steampowered.com/news/app/589940/view/3220646723626863522" target="_blank">Speedrun Challenges</a> with bite-sized fast-paced physical challenges and Steam leaderboards integration.</li>
</ul>
<p>Of those, the Speedrun Challenges was the biggest feature. Leading up to its release, a handful of people from the game's Discord community had been testing the feature and competing for top spots on the leaderboards of the challenges. This was really great to see! I also set up <a href="https://www.speedrun.com/eye_of_the_temple/levels" target="_blank">a page on speedrun.com</a> and even implemented <a href="https://www.speedrun.com/eye_of_the_temple/guide/iwtym" target="_blank">autosplitter integration</a> for the popular speedrun timer LiveSplit, meaning that the game can control starting and stopping the timer exactly.</p>
<p>Here's a video of Mettanine's current world record for the first speedrun challenge:</p>
<iframe allowfullscreen="" frameborder="0" width="560" height="315" src="https://www.youtube.com/embed/BGWsSWZeGso"></iframe>
<p>I had contemplated whether to run some sort of contest when the Speedrun Challenges feature released. However, after some contemplations back and forth, I decided not to wait and see if there was any interest in the Speedrun Challenges feature at all. I figured a contest should be used to boost existing interest, not conjure up interest out of thin air based solely on extrinsic rewards.</p>
<p>As it turned out, there wasn't any interest to speak of. Once the feature released (which I posted about in various speedrun and VR subreddits and Discord servers, on Steam and Twitter, and wrote to journalists about), there were only a couple of people trying it out - much fewer than the handful who had been fairly active testing it during beta. Oh well. While certainly some people <a href="https://twitter.com/benz145/status/1495457949229064193" target="_blank">found the idea fascinating</a>, I guess speedrunning and physically intense VR are two niches with too tiny an overlap, at least for PC VR.</p>
<h4>How has the game performed in its first year?</h4>
<p>I wrote last year that sales of Eye of the Temple around its release had been mediocre, and that assuming year one sales would be about 3x of week one sales, the game would be on track to cover maybe half of its production costs after one year of sales if I based it on giving myself only an entry level game programmer salary.</p>
<p>Year one sales outperformed that projection, instead being 4.45x of week one sales in units sold, and 4.1x in revenue. So that's nice! The costs are about two thirds covered instead of only half. If I instead base the costs on my old salary I got at Unity, they would be covered only 40% so far. However, I think expecting a lower salary when going indie is reasonable, especially in the beginning.</p>
<h4>What about a Quest 2 port of Eye of the Temple?</h4>
<p><b>Edit:</b> <a href="https://www.oculus.com/experiences/quest/5361030930653377/" target="_blank">Eye of the Temple for Quest 2</a> released on April 27 2023! See <a href="https://blog.runevision.com/2023/05/behind-the-design-of-eye-of-the-temple-out-on-quest-2.html" target="_blank">this post</a> for more details.</p>
<p><s>There's still no announcement regarding a Quest 2 port of Eye of the Temple at this time, but I do hope and believe it can happen, and there are still continuous efforts trying to make it a reality. Let's just say, I've been in a whole lot of meetings.</s></p>
<h3>My next game</h3>
<p>I have ideas for a new game, but it's in very early stages. It won't be a VR game. It'll be procedurally generated world focused on exploration. It doesn't have a name yet, but let's call it <i>The Big Forest</i> for now.</p>
<p>As the code name suggests, the game will take place in a big forest. I developed a procedural environment experiment in 2016 that serves as a proof of concept.</p>
<iframe allowfullscreen="" frameborder="0" width="560" height="315" src="https://www.youtube.com/embed/4ujnThRTxrQ"></iframe>
<p>The game will have a generated structure of progression. In April I worked on experiments generating such structures and visualizing them as dependency graphs and spatial graphs.</p>
<video autobuffer="autobuffer" loop="loop" controls="controls" width="100%">
<source src="https://runevision.com/blog/videos/20221010_DualGraphs.mp4" type="video/mp4">
</video>
<p>The game will have procedurally generated and animated creatures, and I've experimented a bit in August with procedural animation. Luckily I can draw on my experience developing my Locomotion System back in 2009.</p>
<video autobuffer="autobuffer" loop="loop" controls="controls" width="100%">
<source src="https://runevision.com/blog/videos/20221010_ProceduralAnimation3Legs.mp4" type="video/mp4">
</video>
<p>Furthermore I have ideas about how to populate the world in a way that's informed by my article from 2021 about <a href="https://blog.runevision.com/2021/02/designing-for-sense-of-mystery-and.html" target="_blank">designing for a sense of mystery and wonder</a>. Combining all these elements into an actual game is going to be a tall order though.</p>
<h3>My old game The Cluster</h3>
<p>Before I started working on Eye of the Temple in 2016, I had worked for over ten years on a fully procedurally generated 2.5D platformer game called The Cluster. (Fun fact: The term "procedural generation" was not in common use back when I started in 2003, so I called it random level generation.)</p>
<p>Eventually in 2016 I <a href="https://blog.runevision.com/2016/09/development-of-cluster-put-on-hold.html" target="_blank">gave up</a> releasing that game in a traditional sense, for a variety of reasons. But in the past year I've gone back and implemented a few improvements and bug fixes, and I'm considering whether I should spend a bit of time wrapping it up enough to be released for free as an experimental game, or an extended tech demo if you will.</p>
<p>For one, the game is fully playable and certain people can easily have a few hours of fun playing it. I recently recorded half an hour of gameplay here:</p>
<iframe allowfullscreen="" frameborder="0" width="560" height="315" src="https://www.youtube.com/embed/KsGy-Hc_AWk"></iframe>
<p>For another, the game demonstrates several techniques that I think are still to this day somewhat novel within the field of procedural generation.</p>
<ul>
<li>Overall, the game's procedural generation applies a planning approach to an infite world generated on the fly. In <a href="https://blog.runevision.com/2015/08/procedural-world-potentials-simulation.html" target="_blank">this article</a> from 2015 I contrast the simulation and the functional approaches with the planning approach, which is more akin to traditional level design. In procedurally generated games, there are many examples of a planning approach used on finite levels generated all at once, for example in rogue-likes, and there are examples of the functional approach used for infinite worlds that are generated on the fly, for example in Minecraft. But I'm not sure how many games have used a planning approach for infinite worlds. The Cluster's multi-tiered map shows the game's planned space on a vast scale.<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTyRIexEd7q8ogeVycJjR0uz4k6-R_E5BW032v0B1PGYI1ZOjP3bhogR7Sevznu1Bv0ThL6fWeAeEr5jFzJ7U5pmbiu0q0VeGzjI_a8YVaqyMNg8KhDplMerH2z6E6ZkKp6Z3XMby8lIMvMnTB7AEtcOeJzTNfK9FcXgqXIwlGbmd2Zeg8a_eJDQf5/s1600/20220917_TheClusterMap.gif"/></li>
<li>It demonstrates that the "Layer-Based Procedural Generation for Infinite Worlds" approach that I discuss in this moderately popular <a href="https://www.youtube.com/watch?v=GJWuVwZO98s" target="_blank">YouTube video</a> from 2013 actually works and scales up to a playable game.</li>
<li>The game has directional signs at various spots where the road forks, pointing the way to landmarks like shrines, gates and the hub village. While this is common in manually designed games, I'm not sure if I've seen it in procedurally generated worlds. The things pointed to exist far outside the currently generated chunks, and reinforces the feeling of the world as a carefully planned place.<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQnxcaFw0l3bEDH_KxptdRZtk4Rq4oXGyKcZVI0WYw0UM2fCs0nVfkswDJkhcn64vcECzWi7O3xJRgOrV-8nr3yE2MQeSvAPtccL2DYQp9v5AHWZG83wx8930qWq3t9cJHbpfpurFRSyfG7KlyETOKxh79uNzL6VAgERvZjk6cgv6nST8SArKBybq5/s1600/20220913_DirectionalSigns.gif"/></li>
<li>Because the game's planned world has knowledge of goals far outside the currently generated chunks of the world, the gameplay can revolve around exploration with a hints system that provides a balance in between aimlessness and knowing where to go.<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKYZf99vUAK6N0sBDYL_-Y4Oz7J0PE779yA4gWI4m0UFVtw32bxVLeOonOwRlSXKF0IIWKFSP0vDBnEfPSN_FlNcS-ydM4WBw3jMt2RNU_WY_O-wIauhk6viaNOxLIwUyw0sXNN4VXaWuupXDuvQU-EBCZxcBpB-IPpLKwDq264d5qixYA6vRqCm3q/s1600/20221010_RevealedArtefactArea.gif"/></li>
<li>It incorporates full enemy path finding in a 2D platform game, and moreover a procedurally generated one at that, so enemies can follow the player almost everywhere. It may have been done before, but it's certainly not common in platformers.<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjd_0-9qzJmqzyedyy9INGuOqXEFwVkUck1QgrYXLM5-a22JdceGZzC2ZtEcSq0jC190EzOD0kY1tA4SxOsDfQ0FJWEYUhjiUt8MHLtP2x6Z6QcKDpsfECflgoc37_dT_VFJQjDb5qEitY-B2xO_RMtpC9QrGBNCOcL5A_61JCO9dFhbx0s3MEwxLlc/s1600/20221010_Enemies2.gif"/></li>
<li>The game has sophisticated camera framing. Based on the locations of walls, ground and ceiling segments, the camera positions the player differently in the frame and smoothly interpolates between these different framings.</li>
<li>The game has a lot of built in debug options that makes it possible to inspect various aspects of the generation at the various layers of abstraction.</li>
</ul>
<p>It feels like a shame to let all this go unreleased. On the other hand, any work on this free release can be seen as a distraction from working on my next proper game which has commercial potential. If you're interested in the release of this game, please let me know, since that all helps motivating me to wrap it up.<p>
<h3>Overall</h3>
<p>It's been a bit of a weird year. My attention has been split between all of the things above: Updates to Eye of the Temple, meetings related to porting it, working on various experiments for my new game, and tinkering on wrapping up my old procedural platformer. There've been periods of productive focus and motivation, but also periods in between of procrastination and lack of motivation. I hope I can find my way into a more persistent groove soon.</p>
<p>I can't talk much about Eye of the Temple, but if there's anything related to The Big Forest or The Cluster that you find interesting and would like to hear more about, let me know! This can help inform future blog posts and videos, and maybe even what I'll focus my attention on.</p>Rune Skovbo Johansenhttp://www.blogger.com/profile/10793811736803423054noreply@blogger.com1tag:blogger.com,1999:blog-1667313809239009473.post-74370057724654030392021-11-22T13:53:00.013+01:002022-01-10T13:43:43.388+01:00Launching Eye of the Temple - this was my experience<p>My VR adventure <a href="http://eyeofthetemple.com/" target="_blank">Eye of the Temple</a>, that I've been working on for the past five years, has finally shipped! It was released last month on October 14th.</p>
<p>Naturally this was a huge milestone for me after having worked on it for so long. And while I've released some smaller games for free in the past, Eye of the Temple is my commercial debut game. I actually did it! Wow, I say, patting myself on the back.</p>
<p><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdyATWgnJtJDHAeeDvRraqiikjdaNfTUTJe_LuFkL_jer_iN6D5K06oHUKeJ5uIgVfjLKIOY-yL1J7xtKSs0mU3orQBmYc6blP27VI2DT6bjGG8dihC-fvJh78JJQbKXf5oiQVv1HsSfQ/s1920/hd_resolution.png" /></p>
<iframe frameborder="0" height="190" src="https://store.steampowered.com/widget/589940/?t=Step%20from%20one%20moving%20block%20to%20another%2C%20dodging%20traps%20and%20solving%20puzzles%20with%20your%20torch%20and%20whip%20in%20hand%2C%20as%20you%20explore%20a%20vast%20and%20treacherous%20temple%20in%20VR%20using%20your%20own%20feet." width="100%"></iframe>
<p>Shipping the game has been great, but also a bit confusing emotionally. There has been some big ups and also some downs. I might as well write about it here - mostly for my own sake, but who knows if it could be useful or just entertaining to someone else.</p>
<a name='more'></a>
<h3>The time leading up to launch</h3>
<p>I’m a developer first and foremost, and I frankly don’t enjoy doing work related to promotion very much. I know many others are in the same boat.</p>
<p>The last major development work I did before launching was implementing localization around the end of August. Then came some weeks of working intensely on creating two trailers - the launch trailer for launch day, and a shorter launch day announcement trailer to be released a month before launch. Both trailers used mixed reality footage recorded by <a href="https://www.youtube.com/c/ANABURN" target="_blank">Anaburn</a>.</p>
<iframe allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/eTjoEFVg3Pw?rel=0" width="560"></iframe>
<iframe allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/B5Bn9qdy3FY?rel=0" width="560"></iframe>
<p>When the trailers were more or less done, I had an entire month of doing just promotional work like creating gifs, sending out a press release and mails to journalists and creators (influencers) about the upcoming launch, tweeting, preparing the game for launch in Steamworks, tweeting specifically to influencers, plan pre-launch exclusive streaming with Ragesaq and spazkoga, writing to the (small) mailing list, etc. etc.</p>
<p>Once launch day came, I had been deeply entrenched in “PR mode” for a long while, which is probably not ideal for my psyche.</p>
<h3>Launch day</h3>
<p>Release day finally came and I spent much of it sending out emails to journalists and YouTubers, writing posts on Reddit, Twitter and Facebook, and keeping the awesomely supportive people on the game's <a href="https://discord.gg/yGN7bDQ" target="_blank">Discord server</a> informed, and asking for their support once again. At 4 pm (local time in Finland) I finally pressed the release button and then I was busy replying to the flurry of comments and replies everywhere for a few hours.</p>
<p>A few days earlier I had asked for advice on Twitter about what to do on release day in order for it to be a good emotional experience. The <a href="https://twitter.com/runevision/status/1447098196891742209" target="_blank">general advise</a> was to avoid sitting in front of a screen all day obsessively hitting refresh on pages, and instead make sure to take time to celebrate the achievement of shipping in good company with good food and drinks. And so I did!</p>
<p>At 6 pm my partner and I went over to a launch party that my friends at <a href="https://www.forbidden.dev/" target="_blank">Forbidden Studios</a> had graciously offered to host at their studio. Champagne was had, pizza was eaten, and some people tried out the game for the first time while onlookers were entertained by it. Lots of chatting and high spirits. This was really nice and I hardly checked the Internet at all.</p>
<p>In the following days my notifications were on fire like I've never experienced before, and I spent all my time replying, retweeting and posting a few things of my own. It was kind of stressful but also very cool.</p>
<p>I checked the sale stats too.</p>
<h3>Mediocre sales</h3>
<p>Sales of Eye of the Temple were not absent. The game was selling. It just wasn't selling a lot.</p>
<p>Let me clarify one thing. Most indie games aren't selling a lot. In fact, most indie games sell less than Eye of the Temple. It's well known that only a fraction of games on Steam make enough money to make game development sustainable for their developers. Even a base level of success (only barely covering the costs of making the game) requires being way above the median. So let me start by saying that I’m lucky the game has been selling at all.</p>
<p>Will sales of Eye of the Temple on Steam cover the costs of making it? Not really. I’ve developed Eye of the Temple over five years, but some of it was part time. It corresponds to about three years of full time work. Since it’s predominantly developed solo with only little use of contractors, the biggest expense is salary for myself. If I calculate with a salary for myself that’s less than half of what I’ve earned in the past, and lower than the average entry level game programmer salary (ignoring I’m a senior programmer with 13 years of experience), the game is on track to cover maybe half of that after one year of sales, assuming year one sales will be about <a href="https://newsletter.gamediscover.co/p/steam-the-state-of-long-tail-revenue" target="_blank">3x of week one sales</a>.</p>
<p>But I’m fortunate to have other sources of income besides the game sales, so I won’t be struggling paying my bills. Don’t worry about me.</p>
<p>Really, the main reason the sales feel mediocre to me is that I think there’s a lot more people who would enjoy the game (and have the means to play it). But before I can meditate on the question of whether it feels like Eye of the Temple should have been able to sell better, we first need to catch up with some other things that happened.</p>
<h3>An awesome review score</h3>
<p>Four days after release I wrote this on Twitter:</p>
<blockquote>Eye of the Temple currently has 32 reviews from paying customers. I'm curious if it'll reach the magical threshold of 50 reviews in the first week. No matter how highly a game is rated, it can only go from "Positive" to "Very Positive" with 50 reviews.</blockquote>
<p>And lo and behold! Already the day after I could write this:</p>
<blockquote>Eye of the Temple reached 50 reviews, and Steam changed the label to 'Very Positive'! This honestly happened quicker than I thought it would, and I really appreciate the help from you all! Thanks a lot!</blockquote>
<p>A “very positive” rating on steam requires at least 50 reviews and that at least 80% of them are positive. But Eye of the Temple has a much higher rate of positive reviews. At one point it was 98%, a fact I used as part of drawing focus on the end of the launch discount.</p>
<figure><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEii5jzCrw7_8MHtBzqrqYzrk0dVx2UgvEVLYcJD9pLLsbR3nl6iQLyKlOWEs1YpSWQQNM_ZSwB4GbRrYJ1QfAa3LlGyiBJ1lp8EMkmGDWDJXkERE6Ph5_3W4cQfDDTVV8-n9LA79qUgAhI/s16000/launch_discount.png" /><figcaption>Promotional image used when the launch discount was about to end.</figcaption></figure>
<p>It’s since dropped to 96%. (With only a bit over 100 reviews, all it takes is one more negative review to make it drop one percentage point, while it takes over 20 positive reviews for it to climb back up again.) Still, that’s a super high percentage I hadn’t expected at all, and I’m positively thrilled the game has been received that well!</p>
<p>During development I had the impression, based on play-testing with lots of people (also VR first-timers), that only quite few people had issues with motion sickness when playing the game. However, I always had a worry that my perception was skewed for some reason, and that lots of people would report getting motion sickness once the game shipped, and that this would have a big negative impact on the review score. But that never happened at all, and that has been a huge relief!</p>
<h3>The awesome Steam reviews</h3>
<p>The reviews on Steam are just awesome. They proclaim Eye of the Temple to be not only mechanically groundbreaking with an unprecedented level of immersion, but also simply one of the best VR games created.</p>
<p>Capturing the essence of over 100 reviews is no easy task but I’ve put together the following summary, with links back to 27 of the original reviews.</p>
<p>A slew of reviews highlight the uniqueness of the game, saying it’s “<a href="https://steamcommunity.com/profiles/76561198304924585/recommended/589940" target="_blank">a refreshing change to see a new game form in VR</a>”, that there’s “<a href="https://steamcommunity.com/profiles/76561198297094844/recommended/589940" target="_blank">nothing like this in VR</a>”, and that it’s an “<a href="https://steamcommunity.com/profiles/76561198081849210/recommended/589940" target="_blank">instant classic</a>”. Others write that it’s “<a href="https://steamcommunity.com/id/remo4000/recommended/589940" target="_blank">some of the most creative VR gameplay of any VR game</a>”, that it’s “<a href="https://steamcommunity.com/profiles/76561198020804147/recommended/589940" target="_blank">nothing short of genius</a>”, and that “<a href="https://steamcommunity.com/profiles/76561198049683798/recommended/589940" target="_blank">this dev is some sort of mad genius</a>”. Some write that it’s “<a href="https://steamcommunity.com/id/wak7/recommended/589940" target="_blank">a revolution in Virtual Reality</a>” because “<a href="https://steamcommunity.com/profiles/76561199084427397/recommended/589940" target="_blank">the motion system is completely revolutionary</a>” and that it has the “<a href="https://steamcommunity.com/id/muschelhups/recommended/589940" target="_blank">potential to create a whole new genre in VR-Games</a>”.</p>
<p>According to the reviewers, what makes it so innovative is that “<a href="https://steamcommunity.com/profiles/76561198042113113/recommended/589940" target="_blank">being able to actually walk through the entire game in your play space is just mind boggling and super immersive</a>”, making it “<a href="https://steamcommunity.com/profiles/76561197970329732/recommended/589940" target="_blank">one of those rare mind-blowing VR experiences</a>”. Some say that the game “<a href="https://steamcommunity.com/profiles/76561198111577313/recommended/589940" target="_blank">does otherworldly things with your mental perception</a>” that “<a href="https://steamcommunity.com/profiles/76561198019725395/recommended/589940" target="_blank">makes you forget you are in VR</a>” and that as a result, “<a href="https://steamcommunity.com/profiles/76561198122174959/recommended/589940" target="_blank">the immersion level is off the chart</a>” and it “<a href="https://steamcommunity.com/id/12problems/recommended/589940" target="_blank">takes vr immersion to a new level</a>”.</p>
<p>For some reviewers, that level of immersion made this VR adventure the “<a href="https://steamcommunity.com/id/myfirkinprofile/recommended/589940" target="_blank">most ingenious and thrilling VR game</a>”, speculating that “<a href="https://steamcommunity.com/id/gratidude/recommended/589940" target="_blank">if Steven Spielberg or George Lucas made VR games instead of movies ... this is the VR game they would come up with</a>” because it “<a href="https://steamcommunity.com/id/fdruid/recommended/589940" target="_blank">captures perfectly the whole Indiana Jones vibe</a>”, so that “<a href="https://steamcommunity.com/id/mamefan/recommended/589940" target="_blank">if you want to feel like Indiana Jones, this is the closest you could ever get</a>”.</p>
<p>Overall, lots of reviewers say it’s “<a href="https://steamcommunity.com/profiles/76561198043763009/recommended/589940" target="_blank">one of the best VR experiences”</a> and “<a href="https://steamcommunity.com/profiles/76561197999131167/recommended/589940" target="_blank">one of the greatest VR experiences of all time</a>”. Several focus on room-scale, calling it “<a href="https://steamcommunity.com/profiles/76561197997724206/recommended/589940" target="_blank">the best Roomscale VR Game</a>” they’ve played and “<a href="https://steamcommunity.com/profiles/76561199029229339/recommended/589940" target="_blank">the best room scale experience out there</a>”. Some say it’s the “<a href="https://steamcommunity.com/id/Dextrovix/recommended/589940" target="_blank">2nd best roomscale game</a>” next to Half-Life: Alyx and that they “<a href="https://steamcommunity.com/profiles/76561197971153087/recommended/589940" target="_blank">haven't had this much fun since playing Half Life Alyx</a>”. Others think Eye of the Temple surpasses it and is simply the “<a href="https://steamcommunity.com/id/trollnest3/recommended/589940" target="_blank">best VR game</a>”. One reviewer didn’t limit it to VR and said: “<a href="https://steamcommunity.com/profiles/76561197994207480/recommended/589940" target="_blank">I’ve been playing video games for 30+ years, and finding ALL the secrets in Eye of the Temple was easily the most satisfying moment I’ve ever had in a game!</a>”.</p>
<p>It’s almost hard for me to believe how positively these reviews describe the game. I’m blown away and humbled by the response here.</p>
<p>Of course, if you would rather sample some of the reviews yourself, you can see <a href="https://store.steampowered.com/app/589940/Eye_of_the_Temple/#app_reviews_hash" target="_blank">all the reviews on Steam here</a>.</p>
<h3>The buzz</h3>
<p>A whole lot of people made videos of Eye of the Temple on YouTube, most of which can be found <a href="https://www.youtube.com/channel/UCYFkIA4j5FJvMLeAs04MzrQ" target="_blank">here</a>. It’s too many to list, but I appreciate all of them! I gave out a lot of keys to even YouTubers with very low subscriber counts who had shown an interest in the game while it was in development. There has also been many people streaming the game.</p>
<p>A few larger channels made videos as well. Here’s all the videos I know of with 2,000 views or more:</p>
<ul>
<li><a href="https://www.youtube.com/watch?v=9HQYHrjcWQo" target="_blank">Beardo Benjo</a> (14K views)</li>
<li><a href="https://www.youtube.com/watch?v=YPc-ypCN2mU" target="_blank">Naysy</a> (11K views)</li>
<li><a href="https://www.youtube.com/watch?v=CA-3Pz26vIA" target="_blank">Daily VR</a> (5K views)</li>
<li><a href="https://www.youtube.com/watch?v=iHOIfY5cQao" target="_blank">OtterWorldly</a> (4K views)</li>
<li><a href="https://www.youtube.com/watch?v=Q2so4EJKdMo" target="_blank">Ben Plays VR</a> (3K views)</li>
<li><a href="https://www.youtube.com/watch?v=B5Bn9qdy3FY" target="_blank">My own official launch trailer</a> (3K views)</li>
<li><a href="https://www.youtube.com/watch?v=32ilizL_NXk" target="_blank">RitualNeo</a> (2K views)</li>
<li><a href="https://www.youtube.com/watch?v=KaSox98yJb0" target="_blank">Disco-VR</a> (2K views)</li>
</ul>
<p>A lot of the videos are really brilliant. The most concise is the excellent <a href="https://www.youtube.com/watch?v=Q2so4EJKdMo" target="_blank">2 minute review</a> by Ben Plays VR while two of the most entertaining to me are the mixed reality videos by <a href="https://www.youtube.com/watch?v=YPc-ypCN2mU" target="_blank">Naysy</a> and <a href="https://www.youtube.com/watch?v=iHOIfY5cQao" target="_blank">OtterWorldly</a>. Naysy even had a <a href="https://www.tiktok.com/@naysy_vr/video/7020519220840549633" target="_blank">TikTok video</a> too that went viral with over 4 million views. That’s really cool!</p>
<iframe allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/Q2so4EJKdMo?rel=0" width="560"></iframe>
<p>I couldn’t see any spikes in sales from any of these things, but I’m convinced they all helped a lot combined. All in all, it feels like there’s a bit of a “word of mouth” effect for Eye of the Temple.</p>
<h3>The silence</h3>
<p>Disappointment is just a miscalibration between expectation and reality. In this section I’ll talk about the biggest emotional let-down, but it’s important for me to emphasize that I’m not complaining, blaming anyone, or saying that the world is unfair. I’m just saying that I had certain expectations that were not met, which means they were incorrect to begin with.</p>
<p>You see, I had kind of assumed that the press outlets and popular YouTube channels that had covered the game before its release, and spoken highly of it, would most likely also cover the release of the game. That turned out to be an incorrect assumption.</p>
<p>Let’s start with the press. The highest-traffic outlets that have reviewed Eye of the Temple are <a href="https://www.androidcentral.com/eye-temple-review" target="_blank">Android Central</a>, <a href="https://www.vrfocus.com/2021/10/review-eye-of-the-temple/" target="_blank">VRFocus</a> and the German <a href="https://mixed.de/eye-of-the-temple-test/" target="_blank">MIXED</a>, which all reviewed it on launch day. Eye of the Temple hasn’t gotten reviews in more mainstream outlets like IGN, The Verge or Screen Rant, and I never much expected it would, since they never covered the game prior to release either.</p>
<p>In contrast, the two most popular outlets for VR news, UploadVR and Road to VR, have covered the game multiple times prior to the release. UploadVR covered it <a href="https://uploadvr.com/eye-of-the-temple-vr-game-requires-room-scale-locomotion/" target="_blank">here</a>, <a href="https://uploadvr.com/eye-of-the-temple-temple-puzzles/" target="_blank">here</a>, <a href="https://uploadvr.com/eye-of-the-temple-demo/" target="_blank">here</a>, and <a href="https://uploadvr.com/eye-of-the-temple-release-date/" target="_blank">here</a> and mentioned it in an article <a href="https://uploadvr.com/vr-games-2021/" target="_blank">38 Titles We Can’t Wait To Play</a> and Road to VR covered it <a href="https://www.roadtovr.com/hands-on-eye-temple-indiana-jones/" target="_blank">here</a>, <a href="https://www.roadtovr.com/eye-temple-puzzler-reelease-date-steamvr/" target="_blank">here</a> and <a href="https://www.roadtovr.com/eye-temple-release-date-trailer/" target="_blank">here</a>. With that much coverage prior to release, it took me by surprise that they didn’t review the game when it finally launched, and here over a month later still haven’t. UploadVR did post <a href="https://uploadvr.com/eye-of-the-temple-launch-discount/" target="_blank">a quick note</a> about the end of the launch discount and I appreciate that of course.</p>
<p>Taking a bit more zoomed out perspective, we can look at Metacritic. Metacritic doesn’t include all reviews, but it can still give a general overview. When looking at the <a href="https://www.metacritic.com/game/pc/eye-of-the-temple" target="_blank">Metacritic page for Eye of the Temple</a> you can almost hear the tumbleweeds rolling, with its single review from VR Focus. Compare with the pages for other recently released VR games that sold much better: <a href="https://www.metacritic.com/game/pc/i-expect-you-to-die-2-the-spy-and-the-liar" target="_blank">I Expect You to Die 2 (PC version)</a> with 11 reviews and <a href="https://www.metacritic.com/game/pc/sniper-elite-vr" target="_blank">Sniper Elite VR (PC version)</a> with 20 reviews. Of course, those weren’t made by solo indie developers, but it’s just to put things in perspective.</p>
<p>On YouTube a similar effect was going on, to a degree. Since we already talked about coverage of the released game on YouTube, with the most seen video having 14K views, we can do a little comparison with some videos from last year that covered the free demo of the game:</p>
<ul>
<li><a href="https://www.youtube.com/watch?v=KoAFIHdZXs4" target="_blank">Ctop</a> (105K views)</li>
<li><a href="https://www.youtube.com/watch?v=7KxsAH14Clo" target="_blank">Virtual Reality Oasis</a> (50K views)</li>
<li><a href="https://www.youtube.com/watch?v=hAS5LBAgkjE" target="_blank">A Wolf in VR</a> (27K views)</li>
</ul>
<p>This makes the view counts of the videos of the released game seem almost quaint in comparison. The demo got covered by channels that have more subscribers and can command higher view counts. (That’s ignoring Naysy’s TikTok video that got 4M views of course. I don’t currently know how to meaningfully compare YouTube views with TikTok views.)</p>
<p>Here, I had particularly thought it likely that Virtual Reality Oasis would cover the full game since he’d talked positively about it not only in his video but also in the podcast he hosts. On Twitter, after release, someone <a href="https://twitter.com/VirtualPandaVR/status/1450008777260863488" target="_blank">suggested he was likely to cover the game</a>, to which he replied “<a href="https://twitter.com/vr_oasis/status/1450017504676532225" target="_blank">I already covered it and had a great time with it</a>” - referring to his coverage of the demo a year prior. And I really appreciated that earlier coverage of course, and said as much. And yet: That there’s no reason to cover the released game when already having covered the demo is a logic that probably makes a lot of sense from the perspective of a YouTuber’s situation, but to the game developer it feels like getting cold water thrown in your face. My expectations were miscalibrated, and having them corrected was no fun.</p>
<p>Another YouTuber I had hoped might cover the game, even if it was a slim chance, was Nathie. He hadn’t covered the game or its demo, but he had covered the game jam game Chrysalis Pyramid from five years earlier that was the precursor to the game. And back then he had said he hoped the developers would make a full game out of it, and he had made a bunch of suggestions for things to include in such a game. And now five years later, there is a full game, and it does include a lot of the things he suggested. If he then tried out that game on his channel, it would be like going full circle. It just seemed like such a good story, and people love good stories.</p>
<iframe allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/QT7260ZD7wc?rel=0" width="560"></iframe>
<p>Two weeks after release I told that story through <a href="https://twitter.com/runevision/status/1453096386799546377" target="_blank">this video</a>, honestly hoping it might nudge him to cover the game on his channel. The video was very well received by people, and I was happy to see that Nathie also <a href="https://twitter.com/NathieVR/status/1453110674465476609" target="_blank">quote tweeted it</a> on his Twitter account, but alas still no video coverage. Ah well, it was worth a try.</p>
<p>Anyway, lesson learned. With both press and influencers it seems logical to think “if the game got this amount of coverage before it was released, surely it will get at least as much if not more when it actually launches”. But that’s not a given at all. Reality can end up being the opposite.</p>
<h3>Speculation time</h3>
<p>Okay, there you have it, all caught up. The reviews on Steam were way better than I expected and there was a healthy buzz on YouTube. The coverage in the press (and to a degree among more mainstream YouTubers) was way worse than expected, and worse than coverage of the game prior to release had been. And the mediocre sales were somewhere in between, being lower than expected but not completely bad.</p>
<p>Now I can meditate on whether it feels like Eye of the Temple should have been able to sell better, or rather on what the reasons might be that it didn’t.</p>
<h4>Maybe PC VR is just dead</h4>
<p>That’s what some people tell me. All the attention is on Oculus Quest these days. There might be something to this, though this doesn’t explain why some other recent PC VR games like <a href="https://store.steampowered.com/app/752480/Sniper_Elite_VR/" target="_blank">Sniper Elite VR</a>, <a href="https://store.steampowered.com/app/1358140/Cooking_Simulator_VR/" target="_blank">Cooking Simulator VR</a>, or <a href="https://store.steampowered.com/app/1499120/I_Expect_You_To_Die_2/" target="_blank">I Expect You To Die 2</a> sold way better on Steam than Eye of the Temple (extrapolated from number of reviews). And Eye of the Temple has as good Steam review or better as any of those.</p>
<h4>Maybe it’s because the play area requirement limits who can play the game</h4>
<p>That’s true. According to an old survey, only about 50% of people with VR headsets have a play area of 2m x 2m or more. Headsets have decreased in price since then, becoming available to people with lower income, and this might mean an even lower percentage have enough room now. But that’s only because the number of people with headsets grew so much.</p>
<p>It’s estimated that <a href="https://uploadvr.com/half-life-alyx-2-million/" target="_blank">2 million people own Half-Life Alyx</a> and that per July this year there are nearly <a href="https://www.roadtovr.com/steam-survey-vr-headsets-on-steam-data-july-2021/" target="_blank">3 million monthly connected headsets</a> on Steam. Even if only 10% of those have a 2m x 2m play area, that’s still a huge market. So the play area requirement is by no means the bottleneck here.</p>
<h4>Maybe people just don’t care as much about indie developers with no track record</h4>
<p>Harsh but true to a degree. I mean, like I described above, there has been decent coverage of Eye of the Temple in the press prior to launch, and a respectable YouTube buzz when it launched, so it’s not like nobody cares. But when looking for reasons why there was so little coverage upon the actual launch, and also why the sales weren’t better, being an unknown indie is probably a notable factor in that.</p>
<h4>Maybe it’s my lack of PR experience</h4>
<p>Another factor that goes hand in hand with being an unknown indie developer <i>that self-publishes</i> is having a lack of PR experience and know-how. While I’ve read a lot on the subject and followed a lot of best-practices (sending review keys to journalists and influencers well in advance of launch etc.), there’s undoubtedly also things I didn’t think about, things I didn’t execute well on, and things I did know about but didn’t have time to even try. I’m pretty sure this factors into the lack of press coverage.</p><h4 style="text-align: left;">Maybe the demo stole some of the thunder</h4><p>Journalists and influencers prioritize "fresh news" and there's a risk that a demo (or free prologue) released in advance of a full game can detract from the "news value" of the release of the full game. The original intention was that the demo was released a few months in advance of the full game, which is supposedly the ideal gap, but then the full game took much longer to wrap up than I had thought. It ended up being released a full year after the demo, and this can further have magnified the "old news" effect.</p>
<h4>Maybe the game just doesn’t have mainstream appeal</h4>
<p>Oof, this is not a nice thought. This is also very speculative because it’s very hard for me to directly assess. While developing a game, it’s easy to get trapped in an echo chamber where you hear most feedback from fans of the game. I feel like I’ve always been aware of this, and while I’ve never dismissed positive feedback, I’ve kept in mind that it might not be representative of a larger player-base.</p>
<p>However, the reviews on Steam has been just as positive. Is it possible for Steam reviews to be an echo chamber too? I suppose if a game’s presentation (trailer, store page etc.) very effectively selects for the people who will end up enjoying it, then maybe… If this is what has happened, it’s probably a good thing. It’s valuable for a game to only attract the people who will enjoy it, exactly so that it can get better reviews, word of mouth etc. from those who have played it.</p>
<p>However, it would also have the effect that the positive reviews are not at all indicative of potential for more mainstream interest in the game, which could be counter-intuitive and confusing. This would explain the large discrepancy between the really positive Steam reviews and the mediocre sales and silence from the press. But I don't know if a "Steam review echo-chamber" is a plausible hypothesis or not.</p>
<h4>Maybe it's the game's presentation that doesn't have sufficient appeal</h4>
<p>One thing that goes against the "limited mainstream appeal" hypothesis is that many people have talked about how showing the game off to family and friends is a blast, and have recommended the game as a great choice to show to VR first-timers. I would think that this indicates very healthy mainstream appeal. Another possibility could be that while the game itself has good mainstream appeal, the game's presentation, such a trailers and store page, doesn't manage to convey that, and doesn't manage to attract all the people who would have enjoyed the game if they tried it. But the plausibility of this hypothesis is also hard for me to assess.</p>
<h4>Maybe it’s a combination</h4>
<p>It’s probably a bit of all of the above?</p>
<p>Still, I have a feeling there’s a lot more people out there who would enjoy the game, and I hope more of those people might discover the game over time and get to see for themselves what those glowing reviews are raving about.</p>
<h3>The future</h3>
<p>Here’s what I have planned for Eye of the Temple:</p>
<p>I want to add support for multiple save slots so multiple family members can play with separate saves, and people can let their friends try the game without losing their own progress.</p>
<p>I might look into adding some features to the speedrun mode that might make it more motivating to try out, like having speedrun challenges for completing just a section of the game.</p>
<p>And of course, I’d love to bring Eye of the Temple to Oculus Quest 2, but I don’t have the skill-set to do it myself. I’d need help from a skilled Unity developer (studio or individual contractor) with lots of experience profiling and optimizing for Quest or other mobile platforms. I'm now in contact with a number of companies - we'll see how it goes!</p>
<p>Thanks for reading! If you have any thoughts on all of this, be sure to let me know. :)</p>Rune Skovbo Johansenhttp://www.blogger.com/profile/10793811736803423054noreply@blogger.com22tag:blogger.com,1999:blog-1667313809239009473.post-71364649733420616752021-02-08T11:05:00.005+01:002022-01-07T18:22:09.999+01:00Designing for a Sense of Mystery and Wonder<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5IEG7kMLnUiddFuWKXGbyiOeru3y5twG1VrYjYBnL7UZ_X8b0Jd2mxdXyWwdprPxqFRfa-_AygDO5OGbmac0R6Imyxs6LJbicFe-d8e9U9x-tI6X7WNrdutr4TtwIRQNClleaSQW-W4E/s16000/Cover.jpg"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5IEG7kMLnUiddFuWKXGbyiOeru3y5twG1VrYjYBnL7UZ_X8b0Jd2mxdXyWwdprPxqFRfa-_AygDO5OGbmac0R6Imyxs6LJbicFe-d8e9U9x-tI6X7WNrdutr4TtwIRQNClleaSQW-W4E/s16000/Cover.jpg" /></a>
I play games to get to explore intriguing places, while challenge and story is secondary to me. But there still has to be a <i>point</i> to the exploration. I don’t want to just wander around some place - I want to <i>uncover</i> something <i>intriguing</i> and ideally <i>mysterious</i>. But the mystery lies not in the uncovering; it lies in the anticipation, or rather the lack of knowing exactly what I might find. In this article I examine <i>that</i> sense of mystery and wonder that’s tied not to story or themes, but to exploration. I’ll be using the word <i>mystery</i> as a shorthand for the kind of mystery and wonder I’m talking about here.<br /><br />
Zelda: Breath of the Wild from 2017 is an amazing game to go explore in, and one of my all time favorites. That said, while there are many things in the game that exude a sense of mystery - and certainly more so than in the average open world game - there are also a lot of missed opportunities.
<figure>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxGlSXanYbF4Uh2B0tx6cDSB2mqyPvfgx0I2XjQFflUFeI3je9bpsL0zaznfxGeZIKdAFnIBmPwIxwIipim_4-Ou_boWl79JmRUnJ1qJB_stEYS-DTy4ehcpeNsKKHAid05b8lFJgrSsA/s16000/BreathOfTheWild.jpg"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxGlSXanYbF4Uh2B0tx6cDSB2mqyPvfgx0I2XjQFflUFeI3je9bpsL0zaznfxGeZIKdAFnIBmPwIxwIipim_4-Ou_boWl79JmRUnJ1qJB_stEYS-DTy4ehcpeNsKKHAid05b8lFJgrSsA/s16000/BreathOfTheWild.jpg" /></a>
<figcaption>Breath of the Wild reinvented the Zelda formula as an open world game.</figcaption>
</figure>
I’ll compare Zelda: Breath of the Wild (BOTW) with Zelda: A Link to the Past (ALTTP) to try to figure out why ALTTP has a stronger sense of mystery than BOTW. A Link to the Past is a much older Zelda game from 1991 but I first played it in 2019.<br /><br />
Along the way I’ll be extracting four key design strategies for evoking a greater sense of mystery, and apply those strategies in the form of proposed design changes to BOTW. Finally, I’ll touch on some more general considerations to keep in mind when designing for a sense of mystery and wonder in general.
<a name='more'></a>
<h3>Mystery-mileage</h3>
While I’m critical of certain aspects of Breath of the Wild in this article, I want to highlight a few things that did give me a sense of mystery and wonder: The eerie Lost Woods, the disorienting Thyphlo Ruins, and the three deceptive enormous labyrinths found in the world. These all evoked a great sense of intrigue and not knowing what I was dealing with or what I would find. But the sense of mystery in those locations largely came from them being unique one-of-a-kind things (or three-of-a-kind in the case of the labyrinths, although they were quite different from each other).
<figure>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnnpBYnvRhlPPtCCX6qJeq2_CXNOrffztK5wF8jjcB3O2Z2eMSw_T6M_L0DHcSrviPPFoIOLkNO2tWRsApHN-f9pXccRv6TIYuV-2tDyDcSTL_Qj4EgMUwyWjIJgUyoqXxMoqqXJyxwoY/s16000/Labyrinth.jpg"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnnpBYnvRhlPPtCCX6qJeq2_CXNOrffztK5wF8jjcB3O2Z2eMSw_T6M_L0DHcSrviPPFoIOLkNO2tWRsApHN-f9pXccRv6TIYuV-2tDyDcSTL_Qj4EgMUwyWjIJgUyoqXxMoqqXJyxwoY/s16000/Labyrinth.jpg" /></a>
<figcaption>One of the three towering labyrinths in Breath of the Wild.</figcaption>
</figure>
While having one-of-a-kind mysteries like this is absolutely great, not <i>everything</i> in a large scale game can be uniquely different from everything else. It would require too many resources and not be manageable. That’s why this article focuses on strategies that make the existing variety of content in a game less predictable and more mysterious without requiring large amounts of additional variety of content. That’s the kind of strategies Breath of the Wild could have used to get better “mystery-mileage” out of its already amazing content.
<h3>Curiosities with unknown outcomes</h3>
Let’s start with the most obvious element that caused many people to feel that the world in BOTW is not as mysterious as it could have been. When you explore the vast world of Breath of the Wild, you’ll frequently come across something curious, like a circle of plants in a pond or an abstract stone sculpture with a piece missing. And initially you’ll go “huh, that’s curious” and be intrigued. Let’s investigate! You try to dive into that circle of plants in the pond or locate and add the missing piece to the stone sculpture - and a little fellow pops out of nowhere and rewards you with a Korok Seed! Oh cool!
<figure>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsvzEatC0dQ-59ZeRbG4Wo4QxUgjBWO6Bk9vJF650QdS059gT-rwlvkPoc21nxiadQttzIQHqFDEKlWZuZoJFkxwmcab3L15Bnmn_zUxYwGHAjRdoWRwLRgj6uTCQK0no-TeyYEYKwu88/s16000/KorokPuzzle.jpg"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsvzEatC0dQ-59ZeRbG4Wo4QxUgjBWO6Bk9vJF650QdS059gT-rwlvkPoc21nxiadQttzIQHqFDEKlWZuZoJFkxwmcab3L15Bnmn_zUxYwGHAjRdoWRwLRgj6uTCQK0no-TeyYEYKwu88/s16000/KorokPuzzle.jpg" /></a>
<figcaption>A little puzzle in Breath of the Wild that rewards the player with a Korok Seed.</figcaption>
</figure>
However, by the 20th time you notice something curious, you’ll probably be thinking, “ah, it’s probably just another Korok Seed”. It’s still a fun little thing to do, and the Korok Seed is useful, sure, but there’s no longer any sense of mystery about it.<br /><br />
To be clear, there are various small mysteries in BOTW that lead to other things than getting a Korok Seed, but those are usually related to quests that lead to an Ancient Shrine of the Blessing type. In contrast, Korok Seeds never involve a quest and always follow a set of predictable templates. It’s a many-to-one relationship: One set of curiosity types leads to Korok Seeds and a separate set of curiosity types leads to shrines.
<h4>Not knowing what you get</h4>
How does this compare to A Link to the Past? The closest analog in ALTTP might be the optional heart pieces, since they are also often hidden behind a little curiosity or mystery.<br /><br />
Compared to the Korok seeds, though, the heart pieces in ALTTP are more strongly related to exploring nooks and crannies in the world. Sometimes you can see one in advance out of reach and the puzzle is figuring out how to reach it. Other times they just reward exploration but couldn’t have been known in advance.
<figure>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiE1-tBZP5a6FePAvfQoyletlMaN9McpeIptijAieR_AtciZ1LFp3355Yy8Oecik48HAiCf0IgopskWgsSwkHBwWvFum-6NGYNMguR7PaTgpUtbyeWAXL93Ck2ZiZRAIWrVu7x3Duv74EI/s16000/HeartPiece.jpg"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiE1-tBZP5a6FePAvfQoyletlMaN9McpeIptijAieR_AtciZ1LFp3355Yy8Oecik48HAiCf0IgopskWgsSwkHBwWvFum-6NGYNMguR7PaTgpUtbyeWAXL93Ck2ZiZRAIWrVu7x3Duv74EI/s16000/HeartPiece.jpg" /></a>
<figcaption>Pieces of Heart are hidden away in many novel ways in A Link to the Past.</figcaption>
</figure>
Sometimes they’re inside a chest, but chests can contain other things than heart pieces too. Similarly, reaching the heart pieces sometimes involves blowing a hole in a cracked wall with a bomb. But cracked walls can also lead to other things than heart pieces, so you won’t know what you’ll find. It’s a many-to-many relationship: Each of the curiosities that might lead to a heart piece (a chest, a cracked wall, etc) might also lead to another outcome.<br /><br />
The fact that the curiosities or puzzles that lead to heart pieces don’t follow specific templates that are <i>only</i> used for heart pieces means that finding heart pieces in ALTTP doesn’t feel formulaic and predictable in the same way that finding Korok Seeds does in BOTW. And this uncertainty and unpredictability about what to expect contributes to a sense of mystery.
<h4>The many-to-many relationship</h4>
What have we learned in this comparison between the curiosities in BOTW and in ALTTP?<br /><br />
A question we can ask to determine if we are not getting the best mystery-mileage out of curiosities in the world is:
<blockquote>When the player sees something curious in the world, can they predict in advance what they’ll get out of it?</blockquote>
And a strategy we can make use of to decrease predictability of the outcome is:
<blockquote>Have a many-to-many relationship between the types of curiosities in the world and the types of outcomes.</blockquote>
Perhaps it can sound like unknown outcomes is about randomness, and that it’s the same principle that makes slot machines and loot boxes addicting but not intrinsically engaging. But unknown is not the same as random. When you explore a world and learn of an outcome of a given curiosity located at a specific location, this knowledge might be relevant later in the game, or if replaying the game. It’s a fact you’ve learned that’s tied to the experience of exploring the world. Loot boxes, in contrast, are not tied to a location in the world and the outcome can’t be learned. As such they’re not tied to exploration but are detached random events.<br /><br />
Now let’s try to apply the strategy above to curiosities in Breath of the Wild. Perhaps some of the “Korok” style puzzles shouldn’t always lead to Korok Seeds. Sometimes they could lead to, say, an entrance to some area opening, a treasure chest being revealed, or it could mark the beginning of a new side-quest. Then you wouldn’t know in advance what you’d get or even it’s degree of significance. The relationship between curiosity and outcome would have been changed from a many-to-one relationship to a many-to-many relationship.
<h3>Ambiguous classification of spaces</h3>
In the last section we looked at how to make it harder to predict what you’re going to <i>get</i>. In this section we’ll be looking into how to make it harder to form an idea of what something even <i>is</i>. We’ll explore ambiguous classification starting with a comparison of the Ancient Shrines in BOTW with the dungeons in ALTTP.
<h4>Ancient Shrines and Dungeons</h4>
The entrance to a shrine in BOTW always uses (nearly) the same model. So you know exactly what a shrine looks like.
<figure>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEtt650MqECoVQk0lgUmVS0_aX6sVYDLP7s2jdjunI5IWRno6dAZv4vDR15Dv02wv-mDa7Dpgp3utUqeefRlcruRAjb0hmhbMSc-giQgWbluju5xaMHk5i7_dlf8Mxa8z6uo25WEvypPA/s16000/Shrine.jpg"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEtt650MqECoVQk0lgUmVS0_aX6sVYDLP7s2jdjunI5IWRno6dAZv4vDR15Dv02wv-mDa7Dpgp3utUqeefRlcruRAjb0hmhbMSc-giQgWbluju5xaMHk5i7_dlf8Mxa8z6uo25WEvypPA/s16000/Shrine.jpg" /></a>
<figcaption>An Ancient Shrine in Breath of the Wild. They all look like this.</figcaption>
</figure>
When you enter, you descend a long tube elevator down into an often enormous space. The kind of challenge found there varies greatly (sometimes there’s no challenge at all, if the challenge was reaching the shrine entrance in the first place), but invariably you will reach a platform at the end with a treasure chest and a monk who grants you a Spirit Orb that can be used to increase health or stamina. Then there’s a cut, and you’re back at the Shrine entrance in the world above.<br /><br />
Dungeons in ALTTP are not an exact analog to Shrines in BOTW. The dungeons play a more central role since they give you new abilities, they end with boss fights, and beating them is required. Still, they’re close enough for our comparison.<br /><br />
Entrances to dungeons in ALTTP don’t have a specific look; they are each unique.
<figure>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqwObQN9lQJ4NQv7MEn64oAyHQR1ZpUzeclkgKSCHbIMBjhnNrhdNZP3P0J0f65F-eqBj0Slvaos5BTn-wJD9mBVMdsb0hzgWmvyjt-96-LosVBvBz5aVw5_XCI5MtDL-JOc35eQJexE8/s16000/Dungeons.jpg"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqwObQN9lQJ4NQv7MEn64oAyHQR1ZpUzeclkgKSCHbIMBjhnNrhdNZP3P0J0f65F-eqBj0Slvaos5BTn-wJD9mBVMdsb0hzgWmvyjt-96-LosVBvBz5aVw5_XCI5MtDL-JOc35eQJexE8/s16000/Dungeons.jpg" /></a>
<figcaption>Various entrances in A Link to the Past. Can you tell which of them lead to dungeons?</figcaption>
</figure>
Some of the images above depict entrances to dungeons while some of them depict other entrances that are not to dungeons. Can you tell which is which? I actually can’t remember this myself despite having played the game just a few years ago.<br /><br />
I can’t overstate what this does for the sense of mystery when exploring this world. Instead of seeing “there’s a dungeon”, “there’s an X”, “there’s a Y” etc. I just see mysterious entrances. Who knows what’s inside? Compare this to BOTW where you always know when an entrance is an Ancient Shrine because all shrines look the same.<br /><br />
Now, I know that some dungeons in ALTTP get explicitly marked on the world map, but that doesn’t counteract the sense of mystery entirely.
<h4>What even is a dungeon?</h4>
Now, if this was only about the entrances, we could say this is another example of a many-to-many relationship where you don’t know what the outcome is in advance when you see an entrance.<br /><br />
But in ALTTP the mystery doesn't stop when you've entered an entrance because even once inside, it's still not entirely clear what kind of space you've entered. Is it a dungeon or not? And if it is, what does that mean exactly?<br /><br />
For what is a dungeon? There's forum discussions online where people discuss how many dungeons ALTTP has, and people reach different numbers depending on which criteria they use. Is it the spaces where you get a new ability? The ones that end with a boss? The ones that are mapped out with a dungeon map? And does the castle that you clear one part of, and then later in the game return to clear another part of, count as one or two dungeons?<br /><br />
This illustrates that it's not entirely clear cut what what constitutes a dungeon in this game, and I find that to be a <i>good</i> thing. It’s harder to know what to expect, and consequently, it feels more like anything might be possible, when structures in the game don’t consistently follow clear templates and the player can’t conclusively classify the spaces they encounter.<br /><br />
But just having occasional exceptions to the template isn’t enough. Imagine what it would do to the sense of mystery in ALTTP if dungeons clearly communicated “this dungeon follows the classic template” or “this dungeon is an exception” as soon as you see the entrance? This would greatly reduce the intrigue for the dungeons that follow the template, since it’s clear what to expect from them. This is exactly the situation we have in Breath of the Wild.<br /><br />
BOTW does have a few dungeon-like places that don’t fit the shrine template. And they were highlights in the game. But the sense of mystery those “exceptions” from the template produce doesn’t rub off on the shrines, simply because it’s so easy to tell if something is a shrine or <i>something else</i>. It’s important for the sense of mystery then, that the instances that are exceptions to the template can’t always clearly be told apart from the instances that follow the template.
<h4>Undermine simple classification</h4>
What have we learned in this comparison between the Ancient Shrines in BOTW and the dungeons in ALTTP?<br /><br />A question we can ask to determine if we are not getting the best mystery-mileage out of different types of spaces in the game is:
<blockquote>Can the player easily tell different types of spaces from each other and unambiguously classify them?</blockquote>
And a strategy we can make use of to increase ambiguity is:
<blockquote>Reduce or eliminate signifiers that would otherwise clearly distinguish different classes of spaces from each other, or introduce exceptions that challenge or confuse simple classification.</blockquote>
Now let’s try to apply this strategy to the Ancient Shrines in Breath of the Wild. Instead of using the same recognizable model for all shrines, it would have been viable to create a dozen different “entrance” 3d models, each of them still highly visible from afar so they can still serve as a goal to move towards, and have each shrine use one of those. Crucially, these entrance models should also be used for entrances to other things than shrines - like notable caves, hideouts, passages and similar. (Footnote: And yes, shrine entrances also have a Sheikah Plate activation mechanism and a teleport location marker. Where would they be if using an entrance model that’s not specific to Ancient Shrines? I don’t have an answer to that but it’s a solvable design problem.)<br /><br />
This would make use of the many-to-many relationship discussed previously to ensure that when you’d see some entrance, you wouldn’t know what it would lead to - an Ancient Shrine, or something else. You’d have to investigate to find out.<br /><br />
However, this only makes the nature of the space unclear <i>prior</i> to entering it. To truly make the classification ambiguous, it would have to stay unclear also while inside the space, and maybe even still after having completed the encounter. This means we have to break down some of the other clear signifiers of Ancient Shrines too.<br /><br />
Does every shrine have to begin with a tube elevator? Does it need to be a separate space from the outside world at all? Consider the shrines of the Blessing type, where the challenge lies in finding and reaching the shrine entrance in the first place, typically in some hard to reach spot, while there’s no challenge inside the shrine space. The treasure chest and monk simply sit there.
<figure>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwff74F_fNYsFDpAil9Fs-cmbvsci05mbp_9fuzL4ruoPpkfv6ushsDD_em1r1y3OPmj6H9zjqBem7Y1Un7Zxy38_BPz1ll_ZMamLMajPN0owgfVpdxdY2PvyrYffrd7-Ombs99IUj1c8/s16000/BlessingShrine.jpg"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwff74F_fNYsFDpAil9Fs-cmbvsci05mbp_9fuzL4ruoPpkfv6ushsDD_em1r1y3OPmj6H9zjqBem7Y1Un7Zxy38_BPz1ll_ZMamLMajPN0owgfVpdxdY2PvyrYffrd7-Ombs99IUj1c8/s16000/BlessingShrine.jpg" /></a>
<figcaption>In Ancient Shrines of the Blessing type, the treasure chest and monk are reached without any challenge.</figcaption>
</figure>
Why do shrines with no challenge inside need a separate shrine space at all? Couldn’t the monk sometimes hang out right in the hard to reach spot? In that case, it would be more ambiguous whether the defining trait of a shrine is just the presence of the monk, or if there has to be a separate shrine space as well.<br /><br />
Another possibility could be that after completing one shrine in the game, the monk at the end would be missing. Maybe there’s a message that you have to find him elsewhere in the world (yes, “our monk is in another castle”). Would this still count as a shrine? And if so, would the shrine count as completed before or after finding the monk?<br /><br />
If the answers to such questions could go either way, we’re on the right track towards the classification ambiguity that enhances the intrigue. If on the other hand you still think it would be obvious whether something is a shrine or not, think about what distinction makes it obvious and how that distinction could be broken down as well.<br /><br />
One last point regarding this type of ambiguity is that UI and other meta-elements can easily counteract it, if not carefully avoided. For example, the ambiguity of what is or isn’t a shrine is decreased if a title displayed on the screen tells you that this is a shrine, like in the image above. Maybe those titles are deemed important to keep for other reasons, but it’s worth being aware of the tradeoff involved.
<h3>Overlapping gameplay modes</h3>
Fairies are a staple in the Zelda franchise and they usually come in two varieties: Regular fairies that can be used to restore heath, and Great Fairies that can upgrade some armor or weapons.<br /><br />In Breath of the Wild, regular fairies are found primarily at Great Fairy Fountains where the Great Fairies also reside, but also at other locations like atop the Deku Tree, at a pond on Ebon Mountain, and in Hyrule Field. They are always out in the open.
<figure>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3aoqEeDmqfJlZPFBV9CwL06lGYnZ76Qc4zTAS3oBV311A8H4-1L0s6LGyAi3_tqNcE7zvBBy2XsPp450OLMuPy3wqmMu8Iy_e_RsFBWtcSq6dfrfwhVl59P_XGGpfoGplinB2wqFMTbU/s16000/Fairy.jpg"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3aoqEeDmqfJlZPFBV9CwL06lGYnZ76Qc4zTAS3oBV311A8H4-1L0s6LGyAi3_tqNcE7zvBBy2XsPp450OLMuPy3wqmMu8Iy_e_RsFBWtcSq6dfrfwhVl59P_XGGpfoGplinB2wqFMTbU/s16000/Fairy.jpg" /></a>
<figcaption>Fairies in Breath of the Wild can be collected at various spots out in the open world.</figcaption>
</figure>
In A Link to the Past, regular fairies are found at Fairy Fountains located in a great variety of places. It’s normally in a cave or other inside area, but the entrances to these areas may be regular cave entrances, a staircase hidden below a rock, a hole in a hollow tree trunk, a hole under a bush, or behind a wall you have to blow up.
<figure>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj966nKS80mKPFole0GPNnvChooUdLMXjLQ9ytWZEeRfGbs2hPTEH-QICk5Awt-EL_IXQahcupUanIc3zVYZyk1r8pppyQ0-IwMMc0HI9meOldHej4wSUVLZotwTGX7bGrwtm8WZF7d_KU/s16000/FairyLocations.jpg"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj966nKS80mKPFole0GPNnvChooUdLMXjLQ9ytWZEeRfGbs2hPTEH-QICk5Awt-EL_IXQahcupUanIc3zVYZyk1r8pppyQ0-IwMMc0HI9meOldHej4wSUVLZotwTGX7bGrwtm8WZF7d_KU/s16000/FairyLocations.jpg" /></a>
<figcaption>Fairy Fountains in A Link to the Past are hidden in a variety of ways.</figcaption>
</figure>
Interestingly, these entrances are not only out in the open world. Notably, some fairy fountains are hidden away inside dungeons. In BOTW, finding fairies and clearing shrines are two entirely separate activities or <i>gameplay modes</i> with no overlap - from a design perspective it’s very <i>clean</i> - while in ALTTP there’s an overlap. Clearing a dungeon leading up to a boss is not a separate gameplay mode from searching for hidden secrets.<br /><br />
It might seem like a moot point to highlight such an overlap of gameplay modes - <i>of course</i> you can explore and find all kinds of secrets in dungeons just like in the outside world - why wouldn’t you? But the shrines in BOTW shows us that it’s not a given.
<h4>Spaces that serve multiple gameplay modes</h4>
In our comparison of BOTW and ALTTP we’ve found that a breakdown of clear separations between different gameplay modes enhances the sense of mystery because the player can’t form clear expectations of what to find where. Interesting things can be found <i>anywhere</i>.<br /><br />
A method we can use to determine if we are lacking overlap between different gameplay modes is:
<blockquote>Making a list of the different game activities or modes that exist in a game. Does certain locations or spaces in the game offer only few or a single gameplay mode to engage with?</blockquote>
And a strategy we can make use of to increase overlap of gameplay modes is:
<blockquote>Ensure spaces and locations in the game serve multiple different gameplay modes, though not all of them have to be equally obvious.</blockquote>
Let’s consider how we might apply this in Breath of the Wild. All over the outside world you can find various ingredients for recipes, some more rare than others. Why not be able to find those inside Ancient Shrines too? Not necessarily as a regular thing, but it could add a lot of sense of mystery to <i>all</i> shrines if some rare ingredients could be found inside even just a few of them. This would create an overlap of the gameplay modes of finding ingredients and clearing shrines.<br /><br />
And why stop at ingredients? Certain shrines could have fairies in them - just like certain dungeons do in ALTTP. Why, maybe you might even find a Korok Seed inside a shrine! Or certain side quests in the outside world might be initiated somewhere inside specific shrines. These design changes would break down the otherwise clean separation between Ancient Shrines and other gameplay systems and activities, and in the process contribute a bit to also making shrines feel like a more integrated part of the world.
<h3>Integrating the inside with the outside</h3>
We need to talk about caves. A Link to the Past is full of caves. Some cave entrances simply lead to a small cave room where you may find a reward like a treasure chest - possibly with a puzzle you need to solve first.<br /><br />Some caves have multiple entrances. Sometimes when you enter a cave you’re teased with a reward you can’t get, but you can get it if you enter via a different entrance. Other caves serve as a shortcut - or maybe as the <i>only</i> route between two places. This makes the caves feel less like a space entirely separate from the world and more like a place that’s an integrated part of the world itself.
<figure>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2QsIvdOWBVdW6GFZpc9FjFNo8Kn9orwwdrVOHG9I3pR4Onf-B3Qyvie_X5hT2oZNI3KhY-N1uKbXq_NqKOYBnK8DsyvKGil0RfidTRyXBiavN8R18ZiH6nmHO35sqIVf2P0FfHmcBb_E/s16000/CaveEntrances.jpg"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2QsIvdOWBVdW6GFZpc9FjFNo8Kn9orwwdrVOHG9I3pR4Onf-B3Qyvie_X5hT2oZNI3KhY-N1uKbXq_NqKOYBnK8DsyvKGil0RfidTRyXBiavN8R18ZiH6nmHO35sqIVf2P0FfHmcBb_E/s16000/CaveEntrances.jpg" /></a>
<figcaption>Cave entrances in A Link to the Past.</figcaption>
</figure>
This all adds intrigue, because you have no idea what the nature of a given cave is before you explore it. It might be something trivial but could also be something critical to progress in the game.<br /><br />
Now comes the extension to this I particularly like. It’s not only random <i>caves</i> that can have multiple entrances. For a few of the dungeons, this is the case as well. For example, there’s a dungeon that you can exit through a different entrance and reach an area in the outside world that’s only accessible this way.
<figure>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijRGrA3IItTS6B2T6O0rkvFK5zIS4sjgnykN0K6hsk94ruAuRnVEY2eEaXGdMN5Fyd8CWwxKznsdZczqFVJr2oisS-bRchg6vI2LOrwU0WeQEqCV5ksktPTT6OrI18LelW0W7kFbZhQ98/s16000/DungeonMultipleEntrances.jpg"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijRGrA3IItTS6B2T6O0rkvFK5zIS4sjgnykN0K6hsk94ruAuRnVEY2eEaXGdMN5Fyd8CWwxKznsdZczqFVJr2oisS-bRchg6vI2LOrwU0WeQEqCV5ksktPTT6OrI18LelW0W7kFbZhQ98/s16000/DungeonMultipleEntrances.jpg" /></a>
<figcaption>The Desert Palace in A Link to the Past is a dungeon with multiple entrances.</figcaption>
</figure>
This greatly enhances the sense of mystery for several reasons. One is, as noted for caves, that it makes it harder to predict what to expect when the boundaries between different systems and spaces are less strict. But another reason is that mystery thrives when it’s grounded. The more logical, tangible and real the places in the world feel, the better they support suspension of disbelief, and the more effective the sense of mystery becomes.<br /><br />
Compare the dungeons and caves in A Link to the Past to the Ancient Shrines in Breath of the Wild. To get into an Ancient Shrine, you enter a small entrance above ground and soon find yourself in an enormous ornately decorated underground space. The first few times this feels super mysterious. How could this otherworldly space have been created deep underground? Astounding and unreal! But after seeing this repeatedly it begins to no longer feel unreal in a mystical way but rather in a gamey way. Is this space even located under the entrance at all? It might as well exist in a different dimension. And what difference does it even make? In the end, the game just transports you to a space entirely separate from the outside world - it’s a game thing; it’s what games <i>do</i>. And so the suspension of disbelief is eroded, and the sense of mystery along with it.
<h4>The inside space as a continuation of the outside</h4>
Comparing caves and dungeons in ALTTP with the Ancient Shrines in BOTW shows us the importance of integrating inside spaces into the larger world.<br /><br />
A question we can ask to determine if confined spaces in the game are disintegrated from the overall larger world is:
<blockquote>Does a given type of confined space in the game always have only a single connection to the larger world? Does navigation inside this type of space never affect navigation outside the space, and vice versa?</blockquote>
And a strategy we can make use of to increase integration is:
<blockquote>For a given type of confined space, design at least certain instances of it as a continuation of the outside space such that navigation inside and outside of the space affect each other.</blockquote>
This could be applied in Breath of the Wild to infuse a greater sense of mystery to Ancient Shrines by occasionally giving them a separate exit from the entrance. In these cases you’d emerge in the outside world somewhere else than where you entered the shrine. Maybe some spot off the beaten track, sometimes half hidden, but where it’s interesting for the player to end up?<br /><br />
While we’re at it, we could also, rarely, have a secret entrance/exit in a shrine as well (a bit like the secret exits in Super Mario World). It could for example lead to a location in the outside world that’s <i>only</i> accessible this way.<br /><br />
A suggestion I’m <i>not</i> making is to make the layout of the shrines physically match and integrate into the outside world. While it would undoubtedly be cool, it would be so much extra work to design them under that constraint that it wouldn’t be viable, when taking into account that there are hundreds of shrines in the game.<br /><br />
Breath of the Wild already demonstrates that this kind of tight integration can be done, because the dungeon-like Hyrule Castle is designed exactly in such a tightly integrated way - and it’s awesome!
<figure>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4eex2I43yPhe030dAKqg6NTK6ffJtx_GmOw2_Qcs20t226b5p2K9vqhL9c3cw6UZgjoccDZG675fmOyGI6-J0ubz32EYA-V3cZvDLWcjy5GhHdFXmOYqVs4YamHGiTz_2tj1uhhyphenhyphenvp0Q/s16000/HyruleCastle.jpg"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4eex2I43yPhe030dAKqg6NTK6ffJtx_GmOw2_Qcs20t226b5p2K9vqhL9c3cw6UZgjoccDZG675fmOyGI6-J0ubz32EYA-V3cZvDLWcjy5GhHdFXmOYqVs4YamHGiTz_2tj1uhhyphenhyphenvp0Q/s16000/HyruleCastle.jpg" /></a>
<figcaption>Hyrule Castle is one of the few dungeons in Breath of the Wild that has a tight integration between the inside and outside areas.</figcaption>
</figure>
But there’s a difference between pulling it off once and pulling it off hundreds of times. That’s why the proposed design changes are ones I believe could have been pulled off without incurring too much extra work. In the end, a successful integration of the inside and outside of a space hinges more on the purpose and navigation of the space than on its aesthetics.
<h3>Clean design versus mystery</h3>
I’ve suggested four different strategies for increasing the sense of mystery and wonder. You’ve probably noticed they all relate in some way to reducing how formulaic and predictable a game is to the player.<br /><br />
Classic system design wisdom that can help a large project stay manageable and maintainable is to make different systems have clear responsibilities with minimal overlap and interdependencies.<br /><br />
In that light it’s easy to imagine that gameplay elements like Ancient Shines and Korok Seed puzzles have a sort of template that takes care of all the common elements so only unique content has to be filled in. And that makes a lot of sense from a production perspective. However, it may also inadvertently lead to a diminished sense of mystery.<br /><br />
Ironically, I think it might be easier for designers not as experienced in making clean maintainable designs to stumble upon creating a sense of mystery, because a lack of clear consistencies in a world lends itself well to that. I even suspect that part of the reason A Link to the Past has a greater sense of mystery might be that the developers had not been forced to establish quite as efficient production processes and pipelines. After all, A Link to the Past, while large for its time, is a game of much smaller scope than Breath of the Wild.
<figure>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFNMQUA7jWABTiJ1Rnj4OlLAtnRoiFMwpPihHQ3TgTuaTuCy-o-_bDp4UtSTKALb7HPmxX8vgyBwC9xcMv7h_Gizk1hR2NPHM1y6zIy71Nz1RFLYxneeP_0g2tFW77uLyQiQICJzNcfMo/s16000/WorldMap.jpg"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFNMQUA7jWABTiJ1Rnj4OlLAtnRoiFMwpPihHQ3TgTuaTuCy-o-_bDp4UtSTKALb7HPmxX8vgyBwC9xcMv7h_Gizk1hR2NPHM1y6zIy71Nz1RFLYxneeP_0g2tFW77uLyQiQICJzNcfMo/s16000/WorldMap.jpg" /></a>
<figcaption>The world in A Link to the Past was large for its time, but small compared to Breath of the Wild.</figcaption>
</figure>
The point is not to make less clean or less maintainable systems. But I think it’s worth considering whether clean and unambiguous systems (from a design and production perspective) should also be clean and unambiguous to the player. And if they shouldn’t, then applying the strategies for creating a sense of mystery can make the systems less transparent to the player.
<h4>Ambiguity versus usability</h4>
Now, more ambiguity is not always better, and the usability of a game should not be sacrificed to obtain it. For an interaction to be easy and efficient to engage with, the user needs to be able to predict the outcome of their actions. This is generally the opposite of what we need to create a sense of mystery and wonder.<br /><br />
This means it’s important to be conscious about which elements of the game should aim for usability and which should aim for ambiguity. There is no one right way to determine that; rather, it depends on which kind of experience you want to evoke.<br /><br />
One rule of thumb is to avoid unpredictability where it causes significant frustration for the player in a non-engaging way. In this article I’ve focused on a sense of mystery tied mostly to exploration, and I think that it’s rarely frustrating not to be able to predict what you’ll find when exploring a new area. An exception to this is if the exploration has a significant cost. For example, if a game has bottomless pits that kill you, but some secretly contain a bonus item instead, that might enhance a sense of mystery but would also be frustrating to search for. <br /><br />
Another rule of thumb is to focus on unpredictability in gameplay elements that exist squarely within the game’s fiction, whereas focusing on usability makes sense for elements that form the interface between the player and the game. If the player can’t predict how to do something in the game (like how to jump, or how to dig a hole with a shovel) which the game’s protagonist would undoubtedly know how to do, then that leads the player’s attention to meta-elements of the game, which can diminish suspension of disbelief. On the other hand, things that are as unpredictable to the game’s protagonist within the fiction as it is to the player don’t compromise the immersion in the fiction.
<figure>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpDrPLQ-qPagDjqHKJSFB-MicPRPG4zhl4ktqSUUUJXHAz0UYBSl1jGyz73fMuUc_DE16Xef1LOigZiapPr_unbFlM-GlVgNOgAImZ0DL2qly5Xnn4fv_NHFbC6rSjt6TStE_Cnlcvpww/s16000/Menu.jpg"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpDrPLQ-qPagDjqHKJSFB-MicPRPG4zhl4ktqSUUUJXHAz0UYBSl1jGyz73fMuUc_DE16Xef1LOigZiapPr_unbFlM-GlVgNOgAImZ0DL2qly5Xnn4fv_NHFbC6rSjt6TStE_Cnlcvpww/s16000/Menu.jpg" /></a>
<figcaption>How to interact with a menu is rarely where you’ll want to prioritize mysterious ambiguity over usability.</figcaption>
</figure>
Some cases are not as clear cut, for example games where the player has lots of weapons, and certain enemies are only vulnerable to certain weapons. If there are no tells and the player simply has to find out by trial and error (as happens to be the case in ALTTP), then that’s an element of unpredictability. Some people like this and feel it adds to the sense of mystery while other people consider it a case of frustratingly bad usability.<br /><br />
Careful simultaneous attention to usability and unpredictability is also needed when it comes to puzzles. In a good puzzle it should typically be easy to predict how to interact with the elements of the puzzle, while it should be hard to predict how the individual elements in the puzzle combine into the correct solution.<br /><br />
In general though, these rules of thumb can be bent and broken to good effect when done intentionally and for good reasons. The point is not to always optimize for one thing or the other, but to be aware of the tradeoffs and make design decisions with intentionality.
<h3>Pattern breaks</h3>
So far I’ve mostly discussed how to achieve a sense of mystery and wonder by designing systems that never get too formulaic and predictable, which keeps the player on their toes. We can call this pattern obfuscation. However, there’s an argument to be made for an alternative approach where we let things get predictable, only to then subvert the player’s expectations by breaking the established pattern. Some of the design proposals above arguably already fit that bill, but let’s take a closer look at this distinction now.<br /><br />
While discussing a draft of this article, <a href="https://twitter.com/KickBackStudios" target="_blank">Nick Konstantoglou</a> from KickBack said, “When the player stops seeing the world and starts seeing systems and to 100% know what to expect, the mystery dies. But it's really so easy to reintroduce the mystery element: Just break the pattern a few times. Making the player complacent and then pulling the rug under them completely resets expectations and I would argue it’s even more effective than if they never got complacent at all.” This is sometimes referred to as a pattern break.<br /><br />
One pattern break that left a big impression on me was in Super Mario 64 when encountering the Boo ghosts in the castle. Up until this point, the castle had been strictly an “overworld” serving as a gradually expanding map giving access to the individual stages of the game. When dying in a stage, you’d be thrown out of it and back into the castle, whereas there were no enemies or dangers in the castle itself. That pattern was broken with the Boos, which pulled the rug under me and made me question my assumptions about the castle. As a side note, this pattern break also broke down one of the (assumed) distinctions that separated the stages and castle as two different classes of space. The castle made use of several other pattern breaks as well and successfully remained mysterious throughout the game.
<figure>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiT2t0nbU7RPhLYwYQu6ivSKtcJju_SfmTQ6GDDTqeWSsICDYBTvGMHznif5xOVJX_kbrLAQ645Pv4IaVdYgv653Qw6KhhMXm4o5pbY24NsjoHP7Ogie3jRxOHyxHTJBuYFZntWeZf3ZVg/s16000/MarioBoo.jpg"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiT2t0nbU7RPhLYwYQu6ivSKtcJju_SfmTQ6GDDTqeWSsICDYBTvGMHznif5xOVJX_kbrLAQ645Pv4IaVdYgv653Qw6KhhMXm4o5pbY24NsjoHP7Ogie3jRxOHyxHTJBuYFZntWeZf3ZVg/s16000/MarioBoo.jpg" /></a>
<figcaption>Encountering Boo in the castle in Super Mario 64 subverts the otherwise safe nature of the castle.</figcaption>
</figure>
<h4>To obfuscate or to break</h4>
The difference between pattern obfuscation and pattern breaks is mainly a matter of when and how frequently a pattern is mixed up and which feelings you want to evoke. Pattern obfuscation is more subtle, since the player may not become aware of a pattern in the first place but just experience an undefinable sense of mystery. On the other hand, the subversive nature of a pattern break may evoke a stronger emotion, especially if the subverted pattern was an obvious one that had gotten very predictable. This stronger feeling comes at the expense of a greater sense of boring predictability up until the pattern break happens though.<br /><br />
The surprise of a pattern break itself is not the primary reason for its inclusion - it’s the increased sense of mystery from that point onward, due to the player no longer being sure of what to expect. As such, for a pattern break to be effective, it has to come late enough that the player has formed clear expectations based on a set pattern, but not so late that there isn’t much time for the post-break increased sense of mystery to pay off. Realistically you’ll need multiple different pattern breaks at different times to get the most out of it.<br /><br />
From a production perspective, pattern breaks lend themselves well to be hand-crafted one-of-a-kind exceptions to a pattern, since in their nature they are infrequent. They still provide good mystery-mileage because the mystery rubs off on the remaining instances that follow the pattern. Pattern obfuscation on the other hand needs to be more systemic and often involves mixing up multiple systems, such as with the many-to-many relationship strategy.<br /><br />
That said, there’s no hard line to be drawn between pattern obfuscation and pattern breaks. You can see it as two ends of a spectrum, and my design proposals in this article have been a bit all over that spectrum, really.<br /><br />
In our toolset of mystery-creation, it’s good to be aware that the sense of predictability versus lack of predictability is something that can be manipulated over the course of the game and played with in various interesting ways, to different effect.
<h3>In conclusion</h3>
I’ve discussed four concrete strategies for getting more mystery-mileage out of different elements and spaces in a world:
<ul>
<li>Have a many-to-many relationship between the types of curiosities in the world and the types of outcomes.</li>
<li>Reduce or eliminate signifiers that would otherwise clearly distinguish different classes of spaces from each other, or introduce exceptions that challenge or confuse simple classification.</li>
<li>Ensure spaces and locations in the game serve multiple different gameplay modes, though not all of them have to be equally obvious.</li>
<li>For a given type of confined space, design at least certain instances of it as a continuation of the outside space such that navigation inside and outside of the space affect each other.</li>
</ul>
These strategies are in no way exhaustive. They are merely examples, and don’t apply to every game. However, even if they don’t apply directly to a game, they might give you some ideas for similar strategies that do.<br /><br />
At a more general level I’ve discussed the tradeoff between mystery and usability, and the rules of thumb to prioritize unpredictability mainly where it doesn’t cause too much frustration and where the unpredictability is situated within the world’s fiction rather than in the interface between player and game. And I’ve discussed the ways a sense of predictability versus mystery can be manipulated differently with pattern obfuscation and pattern breaks.<br /><br />
By using these strategies and tools in our toolset, we can - without incurring significant extra costs in development - help prevent our worlds from getting predictable and formulaic, and in turn leave all the more room for players to experience a sense of mystery and wonder while exploring.<br /><br />
Thanks for reading! Writing an article on game design is new for me, and obviously many of the points I’ve made here are a lot more subjective than in my more technical articles. Whether you agree or disagree with them, I’d love to hear your thoughts! Let me know in the comments which games gave a particularly great sense of mystery for you when exploring them, and why you think that is.
<h3>Further reading and watching</h3>
<a href="https://www.gamasutra.com/view/news/353871/Game_Design_Deep_Dive_Crafting_mystery_through_gameplay_in_Nauticrawl.php" target="_blank">Crafting mystery through gameplay in Nauticrawl</a> by Andrea Interguglielmi discusses mystery through gameplay in a very different kind of game than Zelda. It’s clear that the strategy of overlapping gameplay modes is central to this game.<br /><br />
<a href="https://www.youtube.com/watch?v=xnaXP98ioxA" target="_blank">Which Ocarina of Time Dungeon is the Absolute Worst One?</a> by Ceave Gaming is a video (disguised as a simple listicle) that discusses how a sense of mystery and wonder is established in Ocarina of Time through pattern breaks. The video also references another video in which <a href="https://youtu.be/gwsi7TEQxKc?t=2108" target="_blank">Jonathan Blow touches upon pattern breaks</a> in a Braid commentary, though not very explicitly in relation to mystery and wonder.<br /><br />
If you know of other writing or videos on the topic of designing for a sense of mystery and wonder, share the links below!Rune Skovbo Johansenhttp://www.blogger.com/profile/10793811736803423054noreply@blogger.com5tag:blogger.com,1999:blog-1667313809239009473.post-16067974867189460582020-12-09T12:40:00.004+01:002022-01-07T18:22:31.838+01:00Getting TortoiseHg on Windows to work with SourceHut's SSH authentication<p>You can skip to the header below for the actual guide. Or stay here for a rambling preamble.<br /><br />
I'm a skilled programmer, but I'm not a technical person. I'm not <i>good with computers</i>. Or at least I highly prefer if things just work, and I don't have to fiddle with settings and configurations.<br /><br />
This is one reason I strongly prefer Mercurial for source control over Git. It has a higher degree of just working. (I don't want to get into an argument over this. You can question my assertion, but my preference is my preference in any case.)<br /><br />
Unfortunately Mercurial has become a niche choice as Git has achieved overwhelming popularity, largely due to GitHub. I wouldn't really have cared about that, except it made BitBucket close down their support for Mercurial some time ago. And BitBucket was a hosting solution for Mercurial that was affordable and also <i>just worked</i>.<br /><br />
I and many other Mercurial lovers have then had to find alternative hosting. And I ended up with choosing <a href="https://sourcehut.org/" target="_blank">SourceHut</a>. SourceHut is the opposite of "it just works". It's made for people who identify with hacking and tinkering and knowing all the technical stuff. Why did I choose it then? The "just works" alternatives had pricing that just did not work for a game development use case.<br /><br />
Now, SourceHut has been a pain to use in <i>many</i> ways for a non-technical person like me, but I've had the most pain at all trying to get SSH authentication to work. Unlike BitBucket, SourceHut does not allow HTTPS authentication, so you have to use SSH, and nobody ever sat down and made SSH easy to use on Windows.<br /><br />
Getting SSH to work involved juggling things like multiple types of SSH keys and formats all placed in a hidden folder, many different helper tools, and reading dozens of half-baked how-to guides that all contradict each other, often assume prior knowledge, and that are all for slightly different use cases which means they didn't quite work for me.<br /><br />
I got it all to work around a year ago, but I recently wiped my hard drive and needed to do it all over. I couldn't remember anything, so had to figure it all out all over again. So now I'm writing my <i>own</i> half-baked guide, mostly for my future self in case I need it again, but others might stumble over it and maybe find it useful too I guess.<br /><br />
When you read this guide, you might think it doesn't sound that complicated after all. But remember the guide omits all the things I read I should do and which I thus attempted, but it didn't work, and eventually turned out not to be needed anyway. Like running the main PuTTy application, or running tortoiseplink, or editing your mercurial.ini file. Anyway, on to the guide.
<a name='more'></a>
<h3 style="text-align: left;">Getting TortoiseHg on Windows to work with SourceHut's SSH authentication</h3>
Use the instructions here to generate an SSH key and add it to sourcehut:<br /><a href="https://man.sr.ht/tutorials/set-up-account-and-hg.md" target="_blank">https://man.sr.ht/tutorials/set-up-account-and-hg.md</a><br /><br />
Ignore the rest, from "Creating a Mercurial repository" and forward. I assume you already have one, and in this guide we don't want to push with command line since we'll be using TortoiseHg.<br /><br />
Now you should have a <b>id_rsa</b> private key and <b>id_rsa.pub</b> public key inside a folder called .ssh (inside your user folder), which is hidden by default. You can change Windows settings to show hidden files and folders if you want to be able to have a bit better overview.<br /><br />
Download <a href="https://www.putty.org/" target="_blank">PuTTY</a>. Inside the PuTTY installation folder you'll also find PuTTyGen. Use PuTTyGen to create a <b>id_rsa.ppk</b> key from the id_rsa key using the instructions here:<br />
<a href="https://devops.ionos.com/tutorials/use-ssh-keys-with-putty-on-windows/#use-existing-public-and-private-keys" target="_blank">https://devops.ionos.com/tutorials/use-ssh-keys-with-putty-on-windows/#use-existing-public-and-private-keys</a><br />
Note: In the open dialog, you need to change the dialog to display "all files" in order to see the <b>id_rsa</b> key. The guide above doesn't mention that. PuTTY can still import it even though it doesn't even display it by default. Save the file as <b>id_rsa.ppk</b> inside the same .ssh folder the other keys are in. Ignore the rest of this guide. You don't need to run the main Putty application itself.<br /><br />
Download TortoiseHg if you haven't already. In the TortoiseHg installation folder, you'll find a helper tool called Pageant. As explained in the tips and tricks section of <a href="https://www.digitalocean.com/community/tutorials/how-to-use-pageant-to-streamline-ssh-key-authentication-with-putty" target="_blank">this guide</a>, we'll want Pageant to automatically load your key when it starts. I'll summarize here:<br /><br />
Make a shortcut to Pageant if you don't have one already. Right click the shortcut and click "Properties". In the Target field in the properties window, you need to keep what's already there but also add a space and then a path (in quotation marks) to your <b>id_rsa.pkk</b> file at the end so it's automatically loaded when Pageant starts.<br /><br />
Now, before you start up TortoiseHg you always need to run Pageant first, using the shortcut you made. Then you should be able to use TortoiseHg to pull and push with SSH authentication.<br /><br />
However, optionally, you can automate this. You can make Windows run your Pageant shortcut on startup by moving the shortcut to the Windows startup folder using this guide:<br />
<a href="https://www.howtogeek.com/208224/how-to-add-programs-files-and-folders-to-system-startup-in-windows-8.1/" target="_blank">https://www.howtogeek.com/208224/how-to-add-programs-files-and-folders-to-system-startup-in-windows-8.1/</a><br /><br />
Then you can always use Tortoise without having manually run Pageant first.<br /><br />
That's it! If you have any issues or questions, don't hesitate to - um, to google your issues and try to figure it out. I really can't help you; I don't know what I'm doing. I only barely got this to work myself, and don't really know why, or how it all works. Sorry!Rune Skovbo Johansenhttp://www.blogger.com/profile/10793811736803423054noreply@blogger.com0tag:blogger.com,1999:blog-1667313809239009473.post-13530918058755512202020-12-04T10:45:00.003+01:002022-01-09T01:17:22.375+01:00Goodbye UnityToday is my last day at Unity.<br /><br />
It's been nearly 12 years since I joined the then-tiny startup with ~20 employees. Now there's over 3000 and it's been quite the ride to be part of this company while it has evolved, especially with the big role it has had in evolving the whole game industry too.<br /><br />
Lately I've been longing to do something smaller again, and so it's time for a new adventure in my work life to begin. Starting next week, I'm a full time indie developer!
<img border="0" data-original-height="2048" data-original-width="2048" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhY3x2lZyp0_0Pus8ycnf0ahz9lwdWuyeQWvg2rwUFVeOrnU3LX2GnVtoZNJg14Z5ZwQjgk6bj7CdB3VrhnUiqMh53RUtbmCNh2zJ8HPqdXe3IH0-QP-AOtstRlJCyUBJn0yjqPq4siIhE/s16000/rune_trees.jpg" />
For a start I'll be wrapping up my VR action-adventure game <a href="https://store.steampowered.com/app/589940/Eye_of_the_Temple/" target="_blank">Eye of the Temple</a> that I've been working on part time for the past 4 years. There's a <a href="https://store.steampowered.com/app/1365940/Eye_of_the_Temple_First_Steps/" target="_blank">demo on Steam</a> already that has very positive reviews and I expect the full game can ship in early spring 2021.<br /><br />
What I'll do after is not fully settled yet, but I have an idea for a (non-VR) game set in <a href="https://www.youtube.com/watch?v=4ujnThRTxrQ" target="_blank">a big forest</a> full of ruins, strange artifacts, pathways and mysteries that I might begin working on next year.<br /><br />
My mental state at the moment is kind of a mixed bag. On the one hand I'm very excited about future possibilities and being able to work on exactly what I want. On the other, my motivation and productivity is a bit flaky these days. I don't know the exact reasons, but possibilities could include:
<ul style="text-align: left;">
<li>Uncertainty about what my everyday life will be like (though economically I'll be fine!).</li>
<li>Having felt unfulfilled work-wise for a good while before I quit.</li>
<li>Having moved to a new country this summer (from Denmark to Finland), in the middle of a pandemic where it's hard to meet new people.</li>
<li>Being in the end stretch of developing a game where it's mostly boring stuff left.</li>
<li>Dark winter setting in - that normally doesn't affect me much but could be a compounding factor still.</li>
</ul>
However, I'll go easy on myself and just accept my productivity and motivation not being at its greatest right now. Perhaps I won't hit the ground running in my new indie life, but that's okay. I didn't have that much vacation this year either, so I'll see this as a chance to take it a bit easy for a little while while I adjust to my new life.<br /><br />
All in all, not a bad place to be, and I'm excited about the future!Rune Skovbo Johansenhttp://www.blogger.com/profile/10793811736803423054noreply@blogger.com5tag:blogger.com,1999:blog-1667313809239009473.post-47806032429800711552019-12-31T13:47:00.006+01:002022-01-07T18:22:57.123+01:00Eye of the Temple in 2019I've completely failed to keep up the posting in 2019, but it's not too late to write at least one post this year! Here's (almost) everything that happened with the development of <a href="http://eyeofthetemple.com/" target="_blank">Eye of the Temple</a> in 2019!
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQ8UMDX9il3QXfLlW_0wCyrYYJlCg7CxCvrDKPMluq82CYWW_wBy_RfeSZHidu7ei2GqQoBBr9vTzL-kLY9iEtkOf88GFVd03Vhf6yU0BZpYFrZIYLPVBkP39e60BiZ8dS0f2x3CT23FM/s1600/MonumentSquare.jpg" ><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQ8UMDX9il3QXfLlW_0wCyrYYJlCg7CxCvrDKPMluq82CYWW_wBy_RfeSZHidu7ei2GqQoBBr9vTzL-kLY9iEtkOf88GFVd03Vhf6yU0BZpYFrZIYLPVBkP39e60BiZ8dS0f2x3CT23FM/s1600/MonumentSquare.jpg" /></a>
But first, let's look at what happened in the last part of 2018 after the previous post.
<a name='more'></a>
<h3>Fall 2018</h3>
In September 2018 the game got a proper looking in-game menu replacing the old debug UI.
<br /><br /><iframe width="560" height="315" src="https://www.youtube.com/embed/DaZllgs-fWU" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe><br /><br />
It also got area names appearing when reaching a new area (or revisiting an old one).
<br /><br /><iframe width="560" height="315" src="https://www.youtube.com/embed/CkweZeFYei4" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe><br /><br />
Lastly the speedrun mode got completely revamped. In the speedrun mode you can step onto platforms before timers run out to build up incredible speed - if your reactions are fast enough! This is not for the faint of heart, but if you're up for a bigger challenge than the base game provides, it's worth checking out. What's new in revamped speedrun mode is that it gives visual feedback that makes it clear how fast you need to step to rake up speed.
<br /><br /><iframe width="560" height="315" src="https://www.youtube.com/embed/Q95jE2RVVBk" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe><br /><br />
A big update hit in October 2018 with two new areas - Fiery Pass and Black Sanctum - as well as a whole new and rather cool-looking ability in the game which I won't reveal here.
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjH-YKa3qb6Jcx0fOmFSfYJk7PKNVUuFtCdByTwDJ_a0N0uxfEcmSTNSKMkuNYAjHmvICxzqsk5apPK0tK0jC5WCSZ6f1EUMameTvW8rv4RuYTXhth7GYA1f6Xtv6OEMfCcLq0Mzi0PYco/s1600/2018-10-24_FieryPass.png" ><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjH-YKa3qb6Jcx0fOmFSfYJk7PKNVUuFtCdByTwDJ_a0N0uxfEcmSTNSKMkuNYAjHmvICxzqsk5apPK0tK0jC5WCSZ6f1EUMameTvW8rv4RuYTXhth7GYA1f6Xtv6OEMfCcLq0Mzi0PYco/s1600/2018-10-24_FieryPass.png" /></a>
Okay, now let's look at 2019!
<h3>New area, new music, and Steam achievements</h3>
2019 started with an update in January that added a new area called The Wall as well as changes to the existing areas The Atrium, Monument Square, and The Cauldron. The temple got more "tied together".
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlVt5gt_XICmadn3IHZ7V5Fm-eu_yWG8-bk0AqL5GSjj_G88_n8pRkvZjScXewT3PWjbqLU8vkZiI4BiKUxn-mH_HS3fetSWJkHip2nxVkbRehpl25UQ26GWu_bNWQFV-2224H-3oO5eA/s1600/2019-01-03_TheWall1.png" ><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlVt5gt_XICmadn3IHZ7V5Fm-eu_yWG8-bk0AqL5GSjj_G88_n8pRkvZjScXewT3PWjbqLU8vkZiI4BiKUxn-mH_HS3fetSWJkHip2nxVkbRehpl25UQ26GWu_bNWQFV-2224H-3oO5eA/s1600/2019-01-03_TheWall1.png" /></a>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkmYSnWKf8iSoa7GaFd6AZZgiurgIFjaI7-F17CkYdpfLoOo9pOdZOLq8c4jn-yRTcpNaT12_kRGVLC2SeVOlvuFu3p6v6APwv-0Gc1AaxXXSv5YjyELmIyQ6cIgxQIELZwkR9LjZcFGY/s1600/2019-01-03_TheWall2.png" ><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkmYSnWKf8iSoa7GaFd6AZZgiurgIFjaI7-F17CkYdpfLoOo9pOdZOLq8c4jn-yRTcpNaT12_kRGVLC2SeVOlvuFu3p6v6APwv-0Gc1AaxXXSv5YjyELmIyQ6cIgxQIELZwkR9LjZcFGY/s1600/2019-01-03_TheWall2.png" /></a>
January is also when the game got Steam Achievements implemented.
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuusLErC1Got8Eq-G29iovX_UoImIYRO1SQ0WB4TkkNJKtgnpYP61YlGb0jgCM8rEHV0AlbknRq-S9LhemQwC7yMOEml_-zhn2zeJwwWbsZLqNZ9QkFQtDL9jsuOBDDq6Q2dG_zAJLj2s/s1600/Achievements.png" ><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuusLErC1Got8Eq-G29iovX_UoImIYRO1SQ0WB4TkkNJKtgnpYP61YlGb0jgCM8rEHV0AlbknRq-S9LhemQwC7yMOEml_-zhn2zeJwwWbsZLqNZ9QkFQtDL9jsuOBDDq6Q2dG_zAJLj2s/s1600/Achievements.png" /></a>
And last but not least, a new dynamic music track was added, composed by <a href="https://claudimartinez.com/" target="_blank">Claudio Martinez</a> who's also behind the other music in the game. I implemented the track into the game such that it changes dynamically to match different moods in different areas of the game.
<h3>Satisfying combat and water splashes</h3>
In February the combat in the game was revamped to feel more satisfying. This was done based on lots of helpful feedback from the playtesters and various people on Twitter.
<br /><br /><iframe width="560" height="315" src="https://www.youtube.com/embed/G5B0hzX-LsY" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe><br /><br />
And water splashes were added to the areas with water for fun and immersion, though they have no effect on the gameplay as such.
<br /><br /><iframe width="560" height="315" src="https://www.youtube.com/embed/cIanYp-PATs" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
<br /><br /><iframe width="560" height="315" src="https://www.youtube.com/embed/-YOVd9swqQs" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
<h3>Big minecart update</h3>
A big update hit in May, where minecart rides were added to the game! To get access to it, you'll have to first get through a new added area called Creepstone Mine. A small new area was also added that's only accessible by minecart.
<br /><br /><iframe width="560" height="315" src="https://www.youtube.com/embed/vDW11gXPbPM" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe><br /><br />
This update also added a secret room in the game. To this day, none of the playtesters have found it yet.
<h3>New areas, and the game now has a story</h3>
An area Watergrave Arena was added in August, featuring more combat, and in October an area called Dark Ruins was added which culminates in a new kind of challenge with some tense moments. Afterwards you'll get to pick up an all new gadget.
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgoD68eaqvY9xAa5H-FFFkWEbuKdO_icknGNuyfuoNL25CaQQIHWLwa9CdaMZVoL9tULe8bQKJbRWDgN8SVkeIBITOSMzrlaib3GZOEgh1CABFhxE426hX08Uaai5v2VjNTJC58P17L_vM/s1600/2019-08-05_Watergrave-Arena.png" ><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgoD68eaqvY9xAa5H-FFFkWEbuKdO_icknGNuyfuoNL25CaQQIHWLwa9CdaMZVoL9tULe8bQKJbRWDgN8SVkeIBITOSMzrlaib3GZOEgh1CABFhxE426hX08Uaai5v2VjNTJC58P17L_vM/s1600/2019-08-05_Watergrave-Arena.png" /></a>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdkaqhyphenhyphenDfdHnjPZCvLCTtiJzPVAwhCKaj1xtchdfchU7FCyiuM4Dl74ZE1JjuzqrrW9KAdabK6blZYm9oqQ6qxqV4nPQUQtppjXXH6SnJXyN6X0w90Yz9vaVo6KUokBGa1GDnydwU2sxM/s1600/2019-09-21_DarkRoom_exp.png" ><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdkaqhyphenhyphenDfdHnjPZCvLCTtiJzPVAwhCKaj1xtchdfchU7FCyiuM4Dl74ZE1JjuzqrrW9KAdabK6blZYm9oqQ6qxqV4nPQUQtppjXXH6SnJXyN6X0w90Yz9vaVo6KUokBGa1GDnydwU2sxM/s1600/2019-09-21_DarkRoom_exp.png" /></a>
This update also added a new element to the game which is story. Bits of story can now be uncovered at a number of shrines throughout the temple. The overall story was developed in collaboration with <a href="http://lexwilson.com" target="_blank">Lex Wilson</a>. In the final game the story bits will be voice acted, but for now it's text only.
<h3>Reveal trailer</h3>
I released a reveal trailer for the game in November, which you can see here:
<br /><br /><iframe width="560" height="315" src="https://www.youtube.com/embed/7gCnAIlqrhs" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe><br /><br />
This was covered by <a href="https://uploadvr.com/eye-of-the-temple-temple-puzzles/" target="_blank">UploadVR</a> as well as by a few other outlets.
<h3>Looking to 2020</h3>
2020 is the year Eye of the Temple is released, unless things go terribly differently than I anticipate. (That said, I once thought it would come out in 2017.) There's one final area in the game left to do, apart from various fixes and improvements. That sounds manageable, but then, it's probably the most challenging area to design and get right, being the culmination of the game and all.<br /><br />
If you're interested in Eye of the Temple, don't forget to add it to your wishlist on <a href="https://store.steampowered.com/app/589940/Eye_of_the_Temple/" target="_blank">Steam</a>!<br /><br />
Happy new year!Rune Skovbo Johansenhttp://www.blogger.com/profile/10793811736803423054noreply@blogger.com0tag:blogger.com,1999:blog-1667313809239009473.post-54518536898800725492018-09-17T21:38:00.006+02:002022-01-07T18:23:11.843+01:00Creaking Gorge and The CauldronSince my <a href="http://blog.runevision.com/2018/07/level-design-workflows.html">last post</a> in July where I finally got a vision down for the level design in Eye of the Temple, I've been feeling super productive adding new areas and features to the game.<br /><br />
In August I added two new areas and in September I've been revamping the in-game UI and the speedrun mode. Only problem is I haven't kept up with these blog posts. To avoid this post getting too long, I'll cover the new areas here and save the UI work for a later post.
<a name='more'></a>
<h3>Creaking Gorge</h3>
Creaking Gorge is an area where you move along and into cliff sides and atop wooden scaffolding. It's by far the most vertical area in the game, spanning more than 50 meters vertically.
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyqAUawsnl1PdBUWJDojkEpqemsOkNGmWhQPncsRK0rQSn_bxer19y7fgts-qztW_bEi1klsI-PrRiFgrvA6hdJX5kxzvLuOZYawNAmzumsEUvQ0b4T5Jq48bpojNqy5M2LQK0nacXmns/s1600/2018-08-04_TheGorge1.png" ><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyqAUawsnl1PdBUWJDojkEpqemsOkNGmWhQPncsRK0rQSn_bxer19y7fgts-qztW_bEi1klsI-PrRiFgrvA6hdJX5kxzvLuOZYawNAmzumsEUvQ0b4T5Jq48bpojNqy5M2LQK0nacXmns/s640/2018-08-04_TheGorge1.png" /></a>
It's a fairly non-linear area too with multiple paths that can be followed in an order you choose. The verticality combined with the fact that not all of the paths can be seen, since they carve into the cliffs, means that it can be a challenge to keep track of your orientation and where to go next.
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghh1PfIF-Y4Sqt9E0HYCdupAmHiF24RoGK8GNrwf3ShFuSMxdBRh8-1jywWYotksXLSxWGooKNbvGqdRIXsiW4oIOClfgDDOioE4ewkh_MY2dcO0O9jI6TiTyezvigrfm49GQpUFkC1RM/s1600/2018-09-10_Editor_CreakingGorge.png" ><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghh1PfIF-Y4Sqt9E0HYCdupAmHiF24RoGK8GNrwf3ShFuSMxdBRh8-1jywWYotksXLSxWGooKNbvGqdRIXsiW4oIOClfgDDOioE4ewkh_MY2dcO0O9jI6TiTyezvigrfm49GQpUFkC1RM/s640/2018-09-10_Editor_CreakingGorge.png" /></a>
It's an area of contracts since the bright and wide open space of the gorge itself is interspersed with ventures into cliff caves with narrow corridors and dark suppressing chambers.
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7U5ItNogFhSFuNqe0ky7RQcb7Z98lt1uLkIKyx3eOVCz00j_wa4x_QVY60DyaX-Ei9jWShnbLbscqo2xjn9En3pyR9kjZxoURKmdyFX9l78V-QSCJfmmftD-nvuthIIWCvcrJcogtFDI/s1600/2018-08-04_TheGorge2.png" ><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7U5ItNogFhSFuNqe0ky7RQcb7Z98lt1uLkIKyx3eOVCz00j_wa4x_QVY60DyaX-Ei9jWShnbLbscqo2xjn9En3pyR9kjZxoURKmdyFX9l78V-QSCJfmmftD-nvuthIIWCvcrJcogtFDI/s640/2018-08-04_TheGorge2.png" /></a>
Creating Creaking Gorge was mostly a level design job, as the elements and mechanics of it were already present in the game, apart from the wooden scaffolding which is purely visual.
<h3>The Cauldron</h3>
Following Creaking Gorge comes The Cauldron, a smaller area taking place over flowing lava and involving fire traps and puzzles.<br /><br />
The first thing I did for The Cauldron was start working on the lava surface.
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjW4QFmYNFstnrotIAcjuQQUBj6GBSzwT688QcgkT9YpWfDcCb1PiZ8RPjTP-hHUglltwyuadHhGKxyvK5mtwtMcn-kRPmFHlo0XGFETfdC9jLp2UVN5teSnuFrTxke_uDZtEvqy1rzUvo/s1600/Lava.gif"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjW4QFmYNFstnrotIAcjuQQUBj6GBSzwT688QcgkT9YpWfDcCb1PiZ8RPjTP-hHUglltwyuadHhGKxyvK5mtwtMcn-kRPmFHlo0XGFETfdC9jLp2UVN5teSnuFrTxke_uDZtEvqy1rzUvo/s1600/Lava.gif" /></a>
I looked at existing solutions like this <a href="https://assetstore.unity.com/packages/vfx/shaders/lava-flowing-shader-33635" target="_blank">Lava Flowing Shader</a>, but its unidirectional flow is more suited to a lava river than the kind of lava pools I have.<br /><br />
I ended up offsetting texture look-ups in two directions according to some sinus and co-sinus functions. Additionally there's a texture that maps distance to walls, so the flow can be slowed there and the lava also be darker. Here's that texture, and its effect on the lava.
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifOZvwtyo3zL79bseluUCcS4uS66sAzePvVIbRiC69el8j64peMIM9wZhyphenhyphenoU1QNZhJCLowI4_qHpCwNAZZN6CjaV0fFlAV0PI1y6pJFHQSr0ZsAeN6EPdrm7tGXdiSNofVGRVn3hQs3os/s1600/RoomMap.png" ><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifOZvwtyo3zL79bseluUCcS4uS66sAzePvVIbRiC69el8j64peMIM9wZhyphenhyphenoU1QNZhJCLowI4_qHpCwNAZZN6CjaV0fFlAV0PI1y6pJFHQSr0ZsAeN6EPdrm7tGXdiSNofVGRVn3hQs3os/s640/RoomMap.png" /></a>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjz5zlNndu29PC_0Vy9CFJeUQeL4fgHMiJxGWKO2Fve4yB3yrBSu_gpVUuFMEccGCpmdOoABU-D1w61SMs7LQrVsMCK2w-qKcLMykaoMkviWVoQD1xDd5CCRkRE3LwuH0IZAJ6uPbOAWPU/s1600/LavaMap.png" ><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjz5zlNndu29PC_0Vy9CFJeUQeL4fgHMiJxGWKO2Fve4yB3yrBSu_gpVUuFMEccGCpmdOoABU-D1w61SMs7LQrVsMCK2w-qKcLMykaoMkviWVoQD1xDd5CCRkRE3LwuH0IZAJ6uPbOAWPU/s640/LavaMap.png" /></a>
The bubbles are made with a particle system emitting sphere meshes, but they looked bad when I just gave them fixed or random colors. I ended up making the regular lava texture based fully on world space look-ups, not UVs, so the bubbles could be mapped identically.
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnmILQ7jVFGRPHRWQvfnhTG5i3quID_1e-deOVm5GhK3oRacS5S3OeJmeq053gRxiAnQKKbeR1mdU4SQWQaxiM6Q83b92ca7I1GwW3Un8FFvtqSAE2qy_TXTmDF0uTetEjA9YVQnKNETs/s1600/Bubbles.png" ><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnmILQ7jVFGRPHRWQvfnhTG5i3quID_1e-deOVm5GhK3oRacS5S3OeJmeq053gRxiAnQKKbeR1mdU4SQWQaxiM6Q83b92ca7I1GwW3Un8FFvtqSAE2qy_TXTmDF0uTetEjA9YVQnKNETs/s640/Bubbles.png" /></a>
After adding steam particles, a better lava pattern, and baked lightmaps, the result looked like this:
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVqqh7wn5hadez5K68eX8dDnuRn2hvjcXxJ-ZuA-vyRRUw6_WdlFWpaLYHkNJKoFwPl4l6kZfzSvaaVSKj-n1s9C_f8BFRiI-gzSLa7Sae4J1pfRnGx33jE9VIio2u8Ttfl0D_65aFhMI/s1600/Lava2.gif" ><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVqqh7wn5hadez5K68eX8dDnuRn2hvjcXxJ-ZuA-vyRRUw6_WdlFWpaLYHkNJKoFwPl4l6kZfzSvaaVSKj-n1s9C_f8BFRiI-gzSLa7Sae4J1pfRnGx33jE9VIio2u8Ttfl0D_65aFhMI/s640/Lava2.gif" /></a>
After getting the lava into shape (which frankly is purely visual too but adds a lot to the feeling of the area), I got cracking working out the puzzles. For the fire-based puzzles here, I had to generalize a bit how fire propagation worked so that anything that can catch fire can be lit up by any fire source. The result is some simple puzzles where the player has to use fire in new ways than previously.<br /><br />
Two distinct new areas done in one month! I'll have a hard time beating that in the future I think, but here's to hoping.Rune Skovbo Johansenhttp://www.blogger.com/profile/10793811736803423054noreply@blogger.com0tag:blogger.com,1999:blog-1667313809239009473.post-14123053037091000352018-07-14T23:20:00.003+02:002022-01-23T15:52:43.613+01:00Level design workflowsLet me talk a bit about my workflows for doing level design in Eye of the Temple since I recently had some progress in that area.<br /><br />
I've been in something akin to a level design writer's block for a long time, being able to rework individual small areas, but unable to start the major world redesign that I've been intending for over a year.<br /><br />
Maybe calling it writer's block is pretentious - the fact is that I've never done this sort of work before, so I may just not have developed the necessary workflows to deal with it. Anyway, I think I might have finally cracked the nut.<br /><br />
I've had plenty of ideas, but fragmented and not crystallized enough to get down on paper. How do you start planning a non-linear world meant to be highly interconnected and interdependent? I can talk about what eventually worked for me.<br /><br />
<a name='more'></a>
I've long pondered what type of document could help me get ideas down on paper in a quick way. In addition to text documents (glorified to-do lists) I've been using tilemaps for sketching level designs.
<blockquote>I've been experimenting with using Unity Tilemaps as a digital replacement for pencil level design sketches. Some success so far, although I'm really missing rotation/flipping of selection and proper multi-selection. <br />— Rune Skovbo Johansen (@runevision) <a href="https://twitter.com/runevision/status/935207711737860096?ref_src=twsrc%5Etfw" target="_blank">November 27, 2017</a></blockquote>
<img src="https://runevision.com/blog/twitter/tilemaps1.jpg" />
<img src="https://runevision.com/blog/twitter/tilemaps2.jpg" />
These tilemaps naturally lead to obsess over details though. What recently helped me move on was allowing myself to draw free-hand inaccurate lines and gloss over the contents of rooms.
<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEioaNAI2RVUpsQPZyBUYUR2xqiIzGzDhJikfxfHk0iHfvxMJ1GS8Ye6ibNLuD34EYJiEmcrsniw4zXoFR9gBttxm5s35U9YAinTB0i5CFIOo4XV8u8HtIjlPpcYOZo72qEi15JDQaLTMek/s1600/leveldesign-map.png" data-original-width="1280" data-original-height="720" />
It's difficult because I have ideas for the rooms that are important and which informs their shapes. The fear of forgetting those details if I don't put them down right away is there, but have to be ignored to get on with the broader strokes.<br /><br />
In order to inform what to draw in those broader strokes, I consult my documents with intended progression of a given section of the game. What puzzles are encountered, what abilities are learned and used. This is an iterative process where both documents are altered.
<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiz6lRm7aJqv8POp2htgVg9-b9fKDky0BkDP0SnFaqCss7raNtpmIzvczpmJ4el5LIVQN1Vpp4ZGiEAwClZtia-U9psWDSESSWpHxbucUCYZdWEwC1R1siOKs0rRhoQsB00cSdW_MUBbMU/s1600/leveldesign-progression.png" data-original-width="1280" data-original-height="720" />
Finally, after watching <a href="https://www.youtube.com/playlist?list=PLc38fcMFcV_ul4D6OChdWhsNsYY3NA5B2" target="_blank">Boss Keys</a> episodes by Mark Brown (<a href="https://twitter.com/britishgaming" target="_blank">@britishgaming</a>), I tried using his dungeon graph notation to document, then refine, how dependencies in the world works. I already had loosely these ideas in my head, but getting things into the right document form can help immensely.
<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjrB05MC9-cSGMOE6j7Ujvh0VpRphYJY4P7P2edXpX_UhjqBA3SSWmKIABwwleMGRttZhx3NC99OuDeiHWMQyjmRjdvMMknuuS7Y3c1DNfXNBVE6tN0bKzOnZHx7uNoKVxLH0Fsj7JzdI/s1600/leveldesign-diagram.png" data-original-width="1280" data-original-height="720" />
These 3 document types, progressions described in text, a world map sketch, and a dependency diagram, each make certain aspects of the creative process easier, and iteratively refining them all in a complimentary manner now helps me plan out the complex world.
<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibC1XBMqO8RWCwzW_4sOQ88eCY1eAzTrPsA3RWvLN3bGR5oymOWm0dgCQRQydio5Z-0EblQAQ3fc83alqYxh1wSiP1FQgu4fkz37yoIeKqu50uhtVn9lv5_HBemjnvR5xXNvXRkoQ0Vpo/s1600/leveldesign-combo.png" data-original-width="1280" data-original-height="720" />
The tilemaps are convenient in that the rough sketches can be refined into more detailed plans over individual rooms where each tile is planned, but my lesson was to only do this later, as necessary.
<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhi-uA_rPeq0svre42d6ViQJ9O1woaDhc7v-s9FNgM0iMAZ5N5vZMAbjpq0LJKT6DVllUWhTwhJUrUzUBkGF20sZUZWa7cHluYSOD5BX9SxHc1MeR3n92-i2N3JHEp4BMKWV1EMfSd6hjQ/s1600/leveldesign-rooms.png" data-original-width="1280" data-original-height="720" />
This is not to say that these will be the only document types I use for planning out the world. None of them capture the three-dimensionality of the world well, and white-boxing may well be the next thing I look into.
<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAVJt7xDzILP3CzR48d0BkZ0KgXIXXektLFuJ43Mo0mfvKL6n5A7ptJXM9yuTZ7u2WY0MToYVoQerzrb7MUZW3TCm3vyseZNIr7Oyil1BBWInjVSG3GjRuUfc24xsQkx2vK5VgfF8zwqc/s1600/leveldesign-whiteboxing.png" data-original-width="1280" data-original-height="720" />
That's it. A lesson learned in using various forms of documents that fit various aspects of the job in order to be able to get on with "getting things down on paper".<br /><br />
P.S. Be sure to check out Mark Brown's awesome <a href="https://www.patreon.com/posts/13801754" target="_blank">dungeon graph template</a> on his Patreon.
Rune Skovbo Johansenhttp://www.blogger.com/profile/10793811736803423054noreply@blogger.com0tag:blogger.com,1999:blog-1667313809239009473.post-78293559254044962742018-04-22T11:37:00.004+02:002022-01-07T18:24:02.504+01:00New pots feature, mixed reality, Discord server, Yonderplay event It's time for a new update on the development of Eye of the Temple.
<img height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgK_Jo9ny0U5AgHhl44mGf0dqcfnZPTc8eKtn9FSp8i1TAv-Aqj1Z8OOR3Nvka79I75pdhB0eDivaHup3HnLumqeaKWmrPAnI1lnqJ6LLVqPtRCrjk5IFn_Hr4MtCJDVW51BnscWKc2Mo/s320/Pots.gif" width="320" />
<h3>Events</h3>
GDC in March is well behind us and I had a great time there. Among other things, I got to show off Eye of the Temple at the <a href="https://soops.net/selected-games-european-game-showcase-2018/" target="_blank">European Game Showcase</a> (and saw a lot of other cool games too). This was a private event for specially invited people from the network of the organizers.<br />
<br />
Now, Eye of the Temple has been selected for <a href="http://www.copenhagengamecollective.org/2018/04/15/yonderplay-nominees/" target="_blank">Yonderplay</a>, an event that's part of the Nordic Game Conference in Malmö in Sweden and open to everyone at the conference. This will go down on May 25, the last day of the conference. This is the most public showing of the game yet, and I'm very excited about it! If you'll be at Nordic Game Conference yourself, come by and say hi and give the game a try.
<img height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgylHv9h4HcHJGkLRS3G-UP76SUWaQ1sI-HW-LRffNxh-uPNDeB3weHebWSapaz2VByRccJaYMYDLE8I6k99zYiUWV83SgSauZjDtnhYAGboIH_Ai05WKPIR6ptB_snH-gI61C_V6MdHBI/s320/Yonderplay.jpg" width="226" />
<a name='more'></a>
<h3>Mixed reality</h3>
At GDC I also met some of the fine people from <a href="https://liv.tv/" target="_blank">LIV</a>, a platform for mixed reality recording (and more) for VR content. I've been integrating support for LIV in Eye of the Temple (it's very easy) and a handful of people from their community has been helping me test the game both with focus on mixed reality and in general.<br />
<br />
Apart from testing and feedback, I've also been allowed to create and use some gifs from their recordings. Being able to show Eye of the Temple in mixed reality is very exciting to me, since it shows the physical nature of stepping around in the game in a way that's been impossible with regular purely virtual footage. Here's a few examples:
<img height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjI2p9CxO4HZATDEg3qjC0BlzbM5h8Y9brr19EgByHMMjVfiqo6aUIbeC2qo1svlVwsEeKA-7_n4NHG5t4qefkfunH03plxe303xssTb7fVrTkWdm18bP9HSHkKLkuET3ksk4T8z9rtm_Q/s320/rolling4.gif" width="320" />
<img height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkv8NGiBigzPK1jj0XmOYLnIDek5cvyXt9LDl02lm_Ob0MhemOjLylOgUn2tLJnraCQGYD4TuyK4OrAxJzUnwHRBEuB8EBcGRMzarthYnrq6Mvux-GmDOThaTnCGox7MjWYQ7J4-8UwEM/s320/rolling5.gif" width="320" />
These gifs are featuring ThreeDee from <a href="https://www.facebook.com/comedypipe" target="_blank">ComedyPipe</a>. I tweeted them <a href="https://twitter.com/eyeofthetemple/status/984448098234757120" target="_blank">here</a> and <a href="https://twitter.com/eyeofthetemple/status/987029474943406081" target="_blank">here</a>.<br />
<br />
I would love to have mixed reality gifs with others playing the game as well. If you have Vive or Oculus Rift with a mixed reality setup and is up for it, please get in touch!
<h3>Discord server</h3>
For a long time I've been using itch's forum feature to talk with early testers of the game, but I'm now beginning to move more towards Discord. I've only just learned about Discord recently, but have been happy with it so far. Feel free to join!
<a href="https://discord.gg/yGN7bDQ" target="_blank"><img border="0" data-original-height="272" data-original-width="800" height="108" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiASFQaGWILDtRnqE_YtyO_BSA3OJCzqaydLtnNp7uz5wbCMC1L8C2OEZh66aNNYDLA23_0-2CkSALfyqSq1CKPbxfEoUJq0a8EVzI6jGa80NP3AMhDhgVizLdLgkA43SyICGx_F-eoo4w/s320/Discord.png" width="320" />
Here's an invite link to the Eye of the Temple Discord server</a>
<h3>Pots</h3>
Last but not least, I just implemented a new feature in the game: Pots!<br />
<br />
Pots contain gems. You can tap the pots gently to get the gems out a few at a time or just smash the pots with your whip or torch to get all the gems all at once. But that would be a shame for such antique and rare pottery, now wouldn't it?<br />
<br />
The pots give players more opportunities to use the whip, which I think was much needed. They also add more physicality to the game, since the pots (and the shards if they're smashed) are physics-driven objects. Hopefully it also adds just a bit of player expressiveness potential and unpredictability to the game.<br />
<br />
A player can intentionally smash a pot, or intend to just brush it softly with the whip to tease out gems in a non-destructive way. This can however still accidentally make it topple over and fall down and get smashed way below. Players could set goals for themselves to smash all pots or avoid smashing any. Whether this will happen in practice is yet to be seen but it at least feels nice to me to allow for different approaches like this.<br />
<br />
I made this silly and crudely acted video showcasing the new pots. Do you enjoy pottery too? Let me know in the comments!<br />
<br />
<iframe width="560" height="315" src="https://www.youtube.com/embed/xzc_JGI75OA?rel=0" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>Rune Skovbo Johansenhttp://www.blogger.com/profile/10793811736803423054noreply@blogger.com0tag:blogger.com,1999:blog-1667313809239009473.post-60561522877599418152018-03-20T02:20:00.000+01:002018-03-20T02:22:42.145+01:00New trailer, public Steam page and Eye of the Temple in the press!Last week I took a dive into the world of PR with Eye of the Temple.<br />
<br />
There is a new trailer you can see on the website <a href="http://eyeofthetemple.com/" target="_blank">eyeofthetemple.com</a> or right here below.<br />
<br />
<iframe allow="autoplay; encrypted-media" allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/EFSlcqJKqIs?rel=0" width="560"></iframe><br />
<br />
And Eye of the Temple now has a Steam page: <a href="http://store.steampowered.com/app/589940/Eye_of_the_Temple/" target="_blank">Eye of the Temple on Steam</a><br />
<br />
If you have a Vive or Oculus Rift, and think Eye of the Temple looks interesting, you can totally add it to your wishlist on Steam now! ;)<br />
<br />
After that I took my first stab at contacting the press with a press release. The story got picked up by <a href="https://uploadvr.com/eye-of-the-temple-vr-game-requires-room-scale-locomotion/" target="_blank">UploadVR</a> and a handful of smaller outlets (see list on the <a href="http://eyeofthetemple.com/sanctumdreams/" target="_blank">Sanctum Dreams</a> website). Considering I'm an unknown small indie developer with no experience with the press, I'm pretty happy with the results.<br />
<br />
This week I'm at Game Developers Conference in San Francisco. I'm mostly here with Unity, but I'll also be showing Eye of the Temple at the <a href="https://soops.net/selected-games-european-game-showcase-2018/" target="_blank">European Game Showcase</a>.<br />
<br />
Exciting times!Rune Skovbo Johansenhttp://www.blogger.com/profile/10793811736803423054noreply@blogger.com0tag:blogger.com,1999:blog-1667313809239009473.post-1340981666919765852018-01-30T21:59:00.000+01:002018-01-30T22:12:33.668+01:00January 2018 updateIt seems like I didn't blog since July. How scandalous! Well, here's an update on what I worked on for <a href="http://EyeOfTheTemple.com" target="_blank">Eye of the Temple</a> since then.<br/><br/>
Presented as a series of tweets, because that's what I have time for.<br/><br/>
<b>Note:</b> Add blockers seem to sometimes randomly block some of the embedded tweets for some reason.
<h3>Prettier background environment</h3>
The cold snowy mountains didn't give the feeling I was aiming for. Failing to find anything ready-made that fit the bill, I created my own lush, mountainous environment.
<blockquote class="twitter-tweet" data-lang="en"><p lang="en" dir="ltr">What do you think of this new environment art for the backdrop of the temple that we've been working on? <a href="https://twitter.com/hashtag/gamedev?src=hash&ref_src=twsrc%5Etfw">#gamedev</a> <a href="https://twitter.com/hashtag/indiedev?src=hash&ref_src=twsrc%5Etfw">#indiedev</a> <a href="https://twitter.com/hashtag/VR?src=hash&ref_src=twsrc%5Etfw">#VR</a> <a href="https://twitter.com/hashtag/HTCvive?src=hash&ref_src=twsrc%5Etfw">#HTCvive</a> <a href="https://t.co/ASGxGCeG3p">pic.twitter.com/ASGxGCeG3p</a></p>— Eye of the Temple (@eyeofthetemple) <a href="https://twitter.com/eyeofthetemple/status/910535662939643906?ref_src=twsrc%5Etfw">September 20, 2017</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
<blockquote class="twitter-tweet" data-conversation="none" data-lang="en"><p lang="en" dir="ltr">Another shot of the mountains surrounding the temple. <a href="https://twitter.com/hashtag/screenshotsaturday?src=hash&ref_src=twsrc%5Etfw">#screenshotsaturday</a> <a href="https://twitter.com/hashtag/gamedev?src=hash&ref_src=twsrc%5Etfw">#gamedev</a> <a href="https://twitter.com/hashtag/indiedev?src=hash&ref_src=twsrc%5Etfw">#indiedev</a> <a href="https://twitter.com/hashtag/VR?src=hash&ref_src=twsrc%5Etfw">#VR</a> <a href="https://twitter.com/hashtag/HTCvive?src=hash&ref_src=twsrc%5Etfw">#HTCvive</a> <a href="https://twitter.com/hashtag/madewithunity?src=hash&ref_src=twsrc%5Etfw">#madewithunity</a> <a href="https://t.co/GmfAwyzPvp">pic.twitter.com/GmfAwyzPvp</a></p>
— Rune Skovbo Johansen (@runevision) <a href="https://twitter.com/runevision/status/911583284097961985?ref_src=twsrc%5Etfw">September 23, 2017</a></blockquote>
<script async="" charset="utf-8" src="https://platform.twitter.com/widgets.js"></script>
<h3>Failed attempts at mixed reality capture with StereoLabs ZED stereo camera</h3>
I think a mixed reality video would be the ideal way to show off Eye of the Temple, so I invested a bit in this. Unfortunately it didn't go well due to a combination of a bad choice of immature tech, and an insufficient green-screen setup. I might revisit this in the future though.
<blockquote class="twitter-tweet" data-conversation="none" data-lang="en"><p lang="en" dir="ltr"><a href="https://twitter.com/Stereolabs3D?ref_src=twsrc%5Etfw">@stereolabs3D</a> Could you show how this 3D printed mount is meant to be used with a Vive controller and tracker respectively? <a href="https://t.co/UqoEm0E77v">pic.twitter.com/UqoEm0E77v</a></p>
— Rune Skovbo Johansen (@runevision) <a href="https://twitter.com/runevision/status/909038642693328896?ref_src=twsrc%5Etfw">September 16, 2017</a></blockquote>
<script async="" charset="utf-8" src="https://platform.twitter.com/widgets.js"></script>
<blockquote class="twitter-tweet" data-conversation="none" data-lang="en"><p dir="ltr" lang="en">It's designed to hold a Vive controller, a tracker and even an oculus touch. <a href="https://t.co/yc4fC2J5ZJ">pic.twitter.com/yc4fC2J5ZJ</a></p>
— Stereolabs (@Stereolabs3D) <a href="https://twitter.com/Stereolabs3D/status/909045843835187200?ref_src=twsrc%5Etfw">September 16, 2017</a></blockquote>
<script async="" charset="utf-8" src="https://platform.twitter.com/widgets.js"></script>
<blockquote class="twitter-tweet" data-conversation="none" data-lang="en"><p lang="en" dir="ltr">I posted a video here with my troubles. See tracking issue at 8:04. I mailed your support with more details. <a href="https://t.co/DCk6KeRO0O">https://t.co/DCk6KeRO0O</a></p>
— Rune Skovbo Johansen (@runevision) <a href="https://twitter.com/runevision/status/911656554012737537?ref_src=twsrc%5Etfw">September 23, 2017</a></blockquote>
<script async="" charset="utf-8" src="https://platform.twitter.com/widgets.js"></script>
<blockquote class="twitter-tweet" data-conversation="none" data-lang="en"><p lang="en" dir="ltr">Argh! Mixed reality recording is hard! <a href="https://twitter.com/hashtag/VR?src=hash&ref_src=twsrc%5Etfw">#VR</a> <a href="https://twitter.com/hashtag/mixedreality?src=hash&ref_src=twsrc%5Etfw">#mixedreality</a> <a href="https://twitter.com/hashtag/HTCVive?src=hash&ref_src=twsrc%5Etfw">#HTCVive</a> <a href="https://twitter.com/hashtag/indiedev?src=hash&ref_src=twsrc%5Etfw">#indiedev</a> <a href="https://t.co/YWVH6oFgc9">pic.twitter.com/YWVH6oFgc9</a></p>
— Rune Skovbo Johansen (@runevision) <a href="https://twitter.com/runevision/status/912787665795330049?ref_src=twsrc%5Etfw">September 26, 2017</a></blockquote>
<script async="" charset="utf-8" src="https://platform.twitter.com/widgets.js"></script>
<h3>Glowy light for certain platforms</h3>
<blockquote class="twitter-tweet" data-conversation="none" data-lang="en"><p lang="en" dir="ltr">Any Unity shader experts who might know why I get heavy banding on alpha of frag function output on Windows (but not Mac)? <a href="https://t.co/Xrq8CliYNo">pic.twitter.com/Xrq8CliYNo</a></p>
— Rune Skovbo Johansen (@runevision) <a href="https://twitter.com/runevision/status/919896403530436608?ref_src=twsrc%5Etfw">October 16, 2017</a></blockquote>
<script async="" charset="utf-8" src="https://platform.twitter.com/widgets.js"></script>
<blockquote class="twitter-tweet" data-conversation="none" data-lang="en"><p lang="en" dir="ltr">I made a spiky glow for this platform. Helps a bit with awareness of edges without having to look down all the time. <a href="https://twitter.com/hashtag/VR?src=hash&ref_src=twsrc%5Etfw">#VR</a> <a href="https://twitter.com/hashtag/gamedev?src=hash&ref_src=twsrc%5Etfw">#gamedev</a> <a href="https://twitter.com/hashtag/indiedev?src=hash&ref_src=twsrc%5Etfw">#indiedev</a> <a href="https://t.co/I9ScvbmzZL">pic.twitter.com/I9ScvbmzZL</a></p>
— Rune Skovbo Johansen (@runevision) <a href="https://twitter.com/runevision/status/920382787361890305?ref_src=twsrc%5Etfw">October 17, 2017</a></blockquote>
<script async="" charset="utf-8" src="https://platform.twitter.com/widgets.js"></script>
<h3>New build for testers with whip and other improvements</h3>
I finally finished developing the whip and got a build out to the testers.</br>
<iframe allow="autoplay; encrypted-media" allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/Z8Nl_KKb-WQ?rel=0" width="560"></iframe>
<h3>Trying to recruit people to test the speedrun mode (never had any luck!)</h3>
The speedrun mode is super fun and challenging to me, but nobody else seem interested in it. Besides asking on twitter I also contacted some of the notable VR speedrunners and people who has posted about VR speedrunning on Reddit, but got nothing out of it. If anyone reading this have a Vive and would like to try it, do let me know!
<blockquote class="twitter-tweet" data-conversation="none" data-lang="en"><p lang="en" dir="ltr"><a href="https://twitter.com/hashtag/speedrunning?src=hash&ref_src=twsrc%5Etfw">#speedrunning</a> in <a href="https://twitter.com/hashtag/VR?src=hash&ref_src=twsrc%5Etfw">#VR</a> with <a href="https://twitter.com/hashtag/HTCVive?src=hash&ref_src=twsrc%5Etfw">#HTCVive</a>? Anyone want to give the speedrun mode of <a href="https://twitter.com/eyeofthetemple?ref_src=twsrc%5Etfw">@eyeofthetemple</a> a go? <a href="https://t.co/6g2WSQ2jnT">https://t.co/6g2WSQ2jnT</a> <a href="https://t.co/MtVtMKdLC0">pic.twitter.com/MtVtMKdLC0</a></p>
— Rune Skovbo Johansen (@runevision) <a href="https://twitter.com/runevision/status/923491604593348608?ref_src=twsrc%5Etfw">October 26, 2017</a></blockquote>
<script async="" charset="utf-8" src="https://platform.twitter.com/widgets.js"></script>
<h3>Implemented a new type of dangerous rooms for the temple</h3>
The reviews for this feature are through the roof.
<blockquote class="twitter-tweet" data-conversation="none" data-lang="en"><p lang="en" dir="ltr">Watch out! Working on a new type of danger in <a href="https://twitter.com/eyeofthetemple?ref_src=twsrc%5Etfw">@eyeofthetemple</a>... <a href="https://twitter.com/hashtag/screenshotsaturday?src=hash&ref_src=twsrc%5Etfw">#screenshotsaturday</a> <a href="https://twitter.com/hashtag/gamedev?src=hash&ref_src=twsrc%5Etfw">#gamedev</a> <a href="https://twitter.com/hashtag/indiedev?src=hash&ref_src=twsrc%5Etfw">#indiedev</a> <a href="https://twitter.com/hashtag/VR?src=hash&ref_src=twsrc%5Etfw">#VR</a> <a href="https://twitter.com/hashtag/HTCVive?src=hash&ref_src=twsrc%5Etfw">#HTCVive</a> <a href="https://t.co/95uYeL3b86">pic.twitter.com/95uYeL3b86</a></p>
— Rune Skovbo Johansen (@runevision) <a href="https://twitter.com/runevision/status/924254910694248448?ref_src=twsrc%5Etfw">October 28, 2017</a></blockquote>
<script async="" charset="utf-8" src="https://platform.twitter.com/widgets.js"></script>
<blockquote class="twitter-tweet" data-conversation="none" data-lang="en"><p lang="en" dir="ltr">It's getting tight in here. <a href="https://twitter.com/eyeofthetemple?ref_src=twsrc%5Etfw">@eyeofthetemple</a> <a href="https://twitter.com/hashtag/screenshotsaturday?src=hash&ref_src=twsrc%5Etfw">#screenshotsaturday</a> <a href="https://twitter.com/hashtag/gamedev?src=hash&ref_src=twsrc%5Etfw">#gamedev</a> <a href="https://twitter.com/hashtag/indiedev?src=hash&ref_src=twsrc%5Etfw">#indiedev</a> <a href="https://twitter.com/hashtag/VR?src=hash&ref_src=twsrc%5Etfw">#VR</a> <a href="https://twitter.com/hashtag/HTCVive?src=hash&ref_src=twsrc%5Etfw">#HTCVive</a> <a href="https://t.co/Tvrd3OcWk2">pic.twitter.com/Tvrd3OcWk2</a></p>
— Rune Skovbo Johansen (@runevision) <a href="https://twitter.com/runevision/status/924256694959558657?ref_src=twsrc%5Etfw">October 28, 2017</a></blockquote>
<script async="" charset="utf-8" src="https://platform.twitter.com/widgets.js"></script>
<blockquote class="twitter-tweet" data-conversation="none" data-lang="en"><p lang="en" dir="ltr">"What do you mean I have to get in there!?" New room in <a href="https://twitter.com/eyeofthetemple?ref_src=twsrc%5Etfw">@eyeofthetemple</a> <a href="https://twitter.com/hashtag/screenshotsaturday?src=hash&ref_src=twsrc%5Etfw">#screenshotsaturday</a> <a href="https://twitter.com/hashtag/gamedev?src=hash&ref_src=twsrc%5Etfw">#gamedev</a> <a href="https://twitter.com/hashtag/indiedev?src=hash&ref_src=twsrc%5Etfw">#indiedev</a> <a href="https://twitter.com/hashtag/VR?src=hash&ref_src=twsrc%5Etfw">#VR</a> <a href="https://twitter.com/hashtag/HTCVive?src=hash&ref_src=twsrc%5Etfw">#HTCVive</a> <a href="https://t.co/7lE2iqorVD">pic.twitter.com/7lE2iqorVD</a></p>
— Rune Skovbo Johansen (@runevision) <a href="https://twitter.com/runevision/status/924260512657002496?ref_src=twsrc%5Etfw">October 28, 2017</a></blockquote>
<script async="" charset="utf-8" src="https://platform.twitter.com/widgets.js"></script>
<h3>Got serious working on the big level design overhaul</h3>
Still far from finished with this one.
<blockquote class="twitter-tweet" data-conversation="none" data-lang="en"><p lang="en" dir="ltr">I've been experimenting with using Unity Tilemaps as a digital replacement for pencil level design sketches. Some success so far, although I'm really missing rotation/flipping of selection and proper multi-selection. <a href="https://t.co/jT2PZloAYE">pic.twitter.com/jT2PZloAYE</a></p>
— Rune Skovbo Johansen (@runevision) <a href="https://twitter.com/runevision/status/935207711737860096?ref_src=twsrc%5Etfw">November 27, 2017</a></blockquote>
<script async="" charset="utf-8" src="https://platform.twitter.com/widgets.js"></script>
<blockquote class="twitter-tweet" data-conversation="none" data-lang="en"><p lang="en" dir="ltr">I'm using <a href="https://twitter.com/hashtag/unity3d?src=hash&ref_src=twsrc%5Etfw">#unity3d</a> tilemaps for level design planning of multi-story structures. Moving things around becomes a pain though; having to do it separately for each layer. Any better alternatives? <a href="https://t.co/STSb8AarvB">pic.twitter.com/STSb8AarvB</a></p>
— Rune Skovbo Johansen (@runevision) <a href="https://twitter.com/runevision/status/946715450020368385?ref_src=twsrc%5Etfw">December 29, 2017</a></blockquote>
<script async="" charset="utf-8" src="https://platform.twitter.com/widgets.js"></script>
<h3>Worked on a texture tool "Bricker" to easily create bricks and carved shapes</h3>
<blockquote class="twitter-tweet" data-conversation="none" data-lang="en"><p lang="en" dir="ltr">I've been continuing refining my tool for generating textures+normals from simple color masks. Output quality is getting there... <a href="https://twitter.com/hashtag/gamedev?src=hash&ref_src=twsrc%5Etfw">#gamedev</a> <a href="https://t.co/jWzCUdc6Oz">pic.twitter.com/jWzCUdc6Oz</a></p>
— Rune Skovbo Johansen (@runevision) <a href="https://twitter.com/runevision/status/940280055669972992?ref_src=twsrc%5Etfw">December 11, 2017</a></blockquote>
<script async="" charset="utf-8" src="https://platform.twitter.com/widgets.js"></script>
More on that in another post.
<h3>Contracted a few pieces of concept art to get inspiration for improving the visual look of the game</h3>
<blockquote class="twitter-tweet" data-lang="en"><p lang="en" dir="ltr">I've had decent progress towards realizing the concept art vision for <a href="https://twitter.com/eyeofthetemple?ref_src=twsrc%5Etfw">@eyeofthetemple</a>. I'll put further work on that on hold for now and focus again on a level design overhaul. <a href="https://twitter.com/hashtag/gamedev?src=hash&ref_src=twsrc%5Etfw">#gamedev</a> <a href="https://twitter.com/hashtag/indiedev?src=hash&ref_src=twsrc%5Etfw">#indiedev</a> <a href="https://twitter.com/hashtag/screenshotsaturday?src=hash&ref_src=twsrc%5Etfw">#screenshotsaturday</a> <a href="https://twitter.com/hashtag/VR?src=hash&ref_src=twsrc%5Etfw">#VR</a> <a href="https://twitter.com/hashtag/HTCvive?src=hash&ref_src=twsrc%5Etfw">#HTCvive</a> <a href="https://t.co/csUc4C5o7p">pic.twitter.com/csUc4C5o7p</a></p>
— Rune Skovbo Johansen (@runevision) <a href="https://twitter.com/runevision/status/944619388036149248?ref_src=twsrc%5Etfw">December 23, 2017</a></blockquote>
<script async="" charset="utf-8" src="https://platform.twitter.com/widgets.js"></script>
<h3>And finally, introduced this little birdy</h3>
<blockquote class="twitter-tweet" data-lang="en"><p lang="en" dir="ltr">Bird spotted by the temple. <a href="https://twitter.com/hashtag/gamedev?src=hash&ref_src=twsrc%5Etfw">#gamedev</a> <a href="https://twitter.com/hashtag/indiedev?src=hash&ref_src=twsrc%5Etfw">#indiedev</a> <a href="https://twitter.com/hashtag/VR?src=hash&ref_src=twsrc%5Etfw">#VR</a> <a href="https://twitter.com/hashtag/HTCVive?src=hash&ref_src=twsrc%5Etfw">#HTCVive</a> <a href="https://twitter.com/hashtag/birds?src=hash&ref_src=twsrc%5Etfw">#birds</a> <a href="https://t.co/x8W7IRm54g">pic.twitter.com/x8W7IRm54g</a></p>
— Rune Skovbo Johansen (@runevision) <a href="https://twitter.com/runevision/status/952936529806192640?ref_src=twsrc%5Etfw">January 15, 2018</a></blockquote>
<script async="" charset="utf-8" src="https://platform.twitter.com/widgets.js"></script>
That's it for now. Hope you enjoyed this glimpse into the development, and see you soon. Back to working on the game for me!
Remember you can also follow the development as it happens following <a href="https://twitter.com/EyeOfTheTemple" target="_blank">@EyeOfTheTemple</a> or <a href="https://twitter.com/runevision" target="_blank">@runevision</a> on twitter.Rune Skovbo Johansenhttp://www.blogger.com/profile/10793811736803423054noreply@blogger.com0tag:blogger.com,1999:blog-1667313809239009473.post-78373714853690544792017-08-03T00:26:00.001+02:002022-01-07T18:24:39.419+01:00July update: Trials and triumphs of whips and leversHere's the latest updates on the development of my Vive VR game <a href="http://blog.runevision.com/search/label/Eye%20of%20the%20Temple">Eye of the Temple</a>.<br />
<br />
For the past several months I've been working on improving the whip I prototyped last year. In the <a href="http://blog.runevision.com/2017/06/june-update-verticality-puzzles-whip.html">last post</a>, I showed how it could grab levers, but there were a lot of issues and the whip and lever didn't exactly look pretty. Now see what it looks like now:<br />
<br />
<iframe width="560" height="315" src="https://www.youtube.com/embed/RUMls6J6drY?rel=0" frameborder="0" allowfullscreen></iframe>
<br />
<br />
This feels really good to use now. It didn't get to this point without a lot of issues on the way though.
<a name='more'></a>
<h3>The whip</h3>
A bit of background on how the whip is implemented in broad strokes. Using physics joints etc. quickly turned out infeasible when I did the prototype last fall. Instead, I’m keeping track of positions and velocities of “links” in arrays in my own scripts and doing very custom simulation with lots of tweaks and workarounds. One of the needed things to make it behave whip-like is that in the spring code that maintains distance between adjacent links, one link should affect the other slightly more than the other affects the first. This is to simulate the fact that the whip gets thinner towards the end, which is critical for whip-like behavior.<br />
<br />
Collisions with level geometry works by doing sphere-casts, one per whip link per frame, which is around 30. The spherecasts are from the previous position of a segment to its new position, and if anything was hit, I move the new position to the intersection point, which should be in between the old and the original new position. That's the basics.<br />
<br />
There's special logic that makes the stick of the levers "sticky" and "unsticky" at specific times, which aids the behavior, but the way the whip curls around the stick (or fails to curl, sometimes) is still driven by the regular simulation apart from that. For all other surfaces, there's no special logic. It uses the sphere-cast based collision avoidance I mentioned above.<br />
<br />
I should say there's a glaring issue in my collision approach which isn't shown in the video, which is that collision fails against moving surfaces, such as the moving platforms. I'm not quite sure if I want to solve that, because it's going to add tons of complexity to the code, while probably also degrade performance significantly. I've chosen to ignore this for now, since there's no lack of other things that need to be done that are more critical.
<br />
<h3>
The lever</h3>
The lever has caused me all kinds of problems. Doing a lever that works properly, particularly for VR, is apparently a complicated problem. I made a video about my woes here:<br />
<br />
<iframe width="560" height="315" src="https://www.youtube.com/embed/lq7oFo2wJ74?rel=0" frameborder="0" allowfullscreen></iframe>
<br />
<br />
I found out that levers could be made to avoid sliding out of their joints given three criteria are met:<br />
<br />
First, the collider of the lever handle must not overlap with any other colliders in the world. The tricky thing here is that it's not easy to see that overlapping colliders might affect the handle, since the handle is firmly locked in place. But they do affect it in very non-obvious ways. So I ensured the handle collider doesn't overlap with any other colliders.<br />
<br />
Secondly, the rigidbody must have its position set to locked.<br />
<br />
Thirdly, the center of mass of the rigidbody must be overwritten in script to be set to the pivot that the handle should rotate around.
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj93JdvOdH-HshkO6ZGX0CPlTfcOwMGcaTDpITTzowKeGkCPqmxhV7ycsw6i5SdDSmyTPzdExenzQe8bc7ELLurM5QfZLBdqOUZEUvwXMqGEUQkkK7cS5MZ-kDjgiIPKYyqKmdA_ci31Co/s1600/HingeJointIssues.gif"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj93JdvOdH-HshkO6ZGX0CPlTfcOwMGcaTDpITTzowKeGkCPqmxhV7ycsw6i5SdDSmyTPzdExenzQe8bc7ELLurM5QfZLBdqOUZEUvwXMqGEUQkkK7cS5MZ-kDjgiIPKYyqKmdA_ci31Co/s1600/HingeJointIssues.gif"/></a>
Unfortunately, this leads to another problem. Sometimes the lever handle would get completely stuck, in which case no amount of forces would make it move one bit. After some experimentation, this seemed to happen if the handle is exerted to forces while the connected rigidbody (which is kinematic) simultaneously move. (Some levers in my game sometimes get moved around.) I worked around this by disabling the rigidbody position locking at strategic times and then reenabling it again. This seemed to fix the issue.<br />
<h3>
Polishing it up</h3>
After I had gotten most of the technical issues resolved, I set out to create proper 3d models for the whip and lever to replace the simple cylinder placeholders I had before.<br />
<br />
And as the last step, I added the ability for the whip to be rolled up (which it now is by default). The whip is still fully simulated while rolled up, which is what gives the rolled up whip its nice juicy appearance. There's no animation or pre-canned movements involved in the whip at all.<br />
<br />
The transition where the whip gets rolled up is done by pulling at specific segments of the whip towards a specific point on the handle. This happens to also be how the whip remains rolled up in general.<br />
<br />
In the video I do a little upwards flick and then the whip rolls up. This is purely "role playing" though. The rolling up is actually triggered just by pressing a button on the controller. ;)<br />
<br />
If you've been following the development of Eye of the Temple, does the whip related gameplay change how you view the game? What do you think it adds to it?Rune Skovbo Johansenhttp://www.blogger.com/profile/10793811736803423054noreply@blogger.com1tag:blogger.com,1999:blog-1667313809239009473.post-70773232381865347362017-06-13T19:36:00.000+02:002017-06-13T19:36:04.832+02:00June update: Verticality, puzzles, whipHere's the latest updates on the development of my Vive VR game <a href="http://blog.runevision.com/search/label/Eye%20of%20the%20Temple" target="_blank">Eye of the Temple</a>.<br />
<br />
For the past month I've been mainly working on improving the whip I prototyped last year. It can now be used to grab levers at a distance, and then you can yank the whip backwards to activate the lever.<br />
<blockquote class="twitter-tweet" data-lang="en"><p lang="en" dir="ltr">Testing whip and lever in Eye of the Temple. Still some way to go, but getting there. <a href="https://twitter.com/hashtag/gamedev?src=hash">#gamedev</a> <a href="https://twitter.com/hashtag/indiedev?src=hash">#indiedev</a> <a href="https://twitter.com/hashtag/vr?src=hash">#vr</a> <a href="https://twitter.com/hashtag/HTCvive?src=hash">#HTCvive</a> <a href="https://t.co/8TZHflQnM2">pic.twitter.com/8TZHflQnM2</a></p>— Rune Skovbo Johansen (@runevision) <a href="https://twitter.com/runevision/status/865945952988934144">May 20, 2017</a></blockquote>
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
There's still some way to go, especially with getting the audio cues right. The physics will never be quite like a real whip, but making it satisfying to use is the top priority.<br />
<br />
Apart from this I've been looking into designing more puzzles for the game. I'm no expert puzzle designer, but bit by bit I come up with some that I think work well. The latest involve tall rotating towers, activated by levers (no whip use necessary for this one) where you need to step around on and in them at two different levels.<br />
<br />
This also marks my increased effort in making better use of verticality in the level design. Experiencing the great heights is a draw of the game, and I'm figuring out how to use that optimally.
<blockquote class="twitter-tweet" data-lang="en"><p lang="en" dir="ltr">"Add more verticality" they said, and I agree! New puzzle elements in <a href="https://twitter.com/eyeofthetemple">@eyeofthetemple</a> <a href="https://twitter.com/hashtag/VR?src=hash">#VR</a> <a href="https://twitter.com/hashtag/HTCVive?src=hash">#HTCVive</a> <a href="https://twitter.com/hashtag/madewithunity?src=hash">#madewithunity</a> <a href="https://t.co/hvxgYxW0uR">https://t.co/hvxgYxW0uR</a> <a href="https://t.co/tjDuCk2ufo">pic.twitter.com/tjDuCk2ufo</a></p>— Rune Skovbo Johansen (@runevision) <a href="https://twitter.com/runevision/status/874672280848261121">June 13, 2017</a></blockquote>
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
I don't have a new build with these new things yet. The work right now is on smaller isolated pieces and puzzles, and once I have a set of those that fit nicely together, I'll begin integrating it all back into the overall world design.Rune Skovbo Johansenhttp://www.blogger.com/profile/10793811736803423054noreply@blogger.com0tag:blogger.com,1999:blog-1667313809239009473.post-54993974492317151812017-04-02T16:24:00.001+02:002022-01-13T20:43:34.259+01:00April update: Fire, blades, speedrun modeHere's the latest updates on the development of my Vive VR game <a href="http://blog.runevision.com/search/label/Eye%20of%20the%20Temple" target="_blank">Eye of the Temple</a>.
<img src="https://i.imgur.com/Zvf8Ge6.jpg" />
New additions:
<br />
<ul>
<li><b>Fire!</b> One challenge tunnel now has fire hazards.</li>
<li><b>Blades!</b> One challenge tunnel now has swinging blades.</li>
<li><b>Speedrun mode!</b> A more challenging way to play the game. More notes below.</li>
<li><b>Hat!</b> You're now wearing a hat. Hope you like hat.</li>
<li><b>Experimental spectator camera.</b> 3rd person view. More notes below.</li>
</ul>
<img src="https://media.giphy.com/media/1sm7VK5OyS6Pu/giphy.gif" />
<ul>
<li>Field of view is now restricted when close to falling and when falling in order to further reduce risk of motion sickness.</li>
<li>Placeholder ambient soundscape taken out of the game for now since it had confusing footstep sounds.</li>
</ul>
<h3>
<b>Speedrun mode</b></h3>
For those of you who wanted more challenge in the game, there is a new
speedrun mode. This mode times your play-through but also speeds up the
platform movements as long as you can keep up.<br />
<br />
This mode is has a higher risk of being uncomfortable, causing motion sickness, and falling over, so engage on your own risk.
<br />
<ul>
<li>Each time you take a perfectly timed step onto a new platform, the game will speed things up a little bit.</li>
<li>Each time you miss an opportunity to step onto a new platform, the game will
slow things down a little bit. (This can occasionally happen through no
fault of your own.)</li>
<li>When you die, the speed is reset, so it's
recommended to keep to a speed you can handle in order to not lose
momentum in your speedrun. You can avoid speeding thing further up by
taking steps in a slightly slower way.</li>
</ul>
I do not recommend this mode to people who haven't already played through the game at least
once, so in the final game I'll probably only unlock the speedrun mode
by completing the game.<br />
<br />
How to use: For now though, you start a speed run by first starting a new game, and then press Shift+R on the keyboard.<br />
<h3>
<b>Experimental spectator camera</b></h3>
The gameplay in Eye of the Temple can be hard to get an impression of for
others by looking out in first person. I've experimented with an
alternative camera angle shown on the monitor that shows the action from
3rd person perspective.<br />
<br />
How to use: Activate/toggle 3rd person spectator camera by pressing X on the keyboard.<br />
This view requires extra resources from your computer, so if you get performance problems, turn it off.<br />
<br />
What do you think of 3rd person spectator camera? Is it something you might
use for streaming, videos, or for people watching you play? It's still a
bit buggy and has room for improvement, but I'm curious what you think
of the overall idea.Rune Skovbo Johansenhttp://www.blogger.com/profile/10793811736803423054noreply@blogger.com0tag:blogger.com,1999:blog-1667313809239009473.post-81948231317761621812017-02-21T16:10:00.001+01:002022-01-13T20:42:46.919+01:00February update: GemsHere's the latest updates on the development of my Vive VR game <a href="http://blog.runevision.com/search/label/Eye%20of%20the%20Temple" target="_blank">Eye of the Temple</a>.
<img alt="" border="0" src="https://i.giphy.com/nuKD5ehCqP4e4.gif" />
New features:
<ul>
<li>There are now gems throughout the temple that you can collect.</li>
<li>Moving platforms have glowing symbols on them.</li>
<li>Visuals: Intro area has some red stones and some of the dungeons have grittier gray stones and spikes.</li>
<li>The way the platforms move has been tweaked, hopefully to further reduce potential for dizziness.</li>
</ul>
<h3>
Notes on gems</h3>
The
gems are found throughout the temple. The exact placement tries to take
player proportions into account so that they are at a comfortable
distance for reaching. I haven't tested this on different people yet
though. If you could let me know how it works for you and how tall you
are, that would be helpful. If you don't want to share that, that's ok
too.<br />
<br />
Right now the gems don't do anything yet. Later I will implement at the minimum a way for you to see how many you collected.<br />
<br />
Beyond that I need to decide if the gems have a critical or non-critical function:<br />
<br />
A
critical function of the gems could be if they are used to unlock new
areas in the game and thus are needed to progress. Or an almost-critical
function would be to unlock alternative paths or secret rooms not
otherwise accessible. This is still fairly critical because it would be
annoying if you're trying to see 100% content of a game to find out you
can't due to some mistake made earlier that's too late to do anything
about. Currently there are one-way platforms that you can take which
will prevent you from going back to collect any gems you might have
missed. If I make the gems critical, I'd have to find a way to make it
possible to always go back to all areas of the temple.<br />
<br />
Non-critical
functions of the gems could be high-score, achievements, and, I dunno,
unlockable hats if I get a selfie stick implemented for the game. :P Old games would typically grant you extra lives, but it doesn't work for modern games with infinite lives.<br />
<br />
For
now I refrained from placing gems at platforms that only go one way. If
there were gems there and you failed to pick one up, you wouldn't have a
second chance and I thought that might feel unfair or frustrating.<br />
<h3>
Early testers online forum</h3>
In order to try to get faster feedback and shorter iteration cycles, I opened up for people to <a href="https://itch.io/t/59040/early-testers-welcome-thread-introduce-yourself" target="_blank">sign up online to be early testers of the game</a>.
If you have access to a Vive (and 2.2 by 2.2 meters space) and would like to try out the game and
provide detailed feedback based on your experience, please don't
hesitate to join!<br />
<br />
<b><a href="https://itch.io/t/59040/early-testers-welcome-thread-introduce-yourself" target="_blank">Sign up to provide feedback on early builds of Eye of the Temple</a></b>Rune Skovbo Johansenhttp://www.blogger.com/profile/10793811736803423054noreply@blogger.com0tag:blogger.com,1999:blog-1667313809239009473.post-74739580797141946662017-01-30T00:15:00.000+01:002017-01-30T17:05:04.991+01:00January update: Visuals, usability and early testingFor a while, my focus for my Vive VR game <a href="http://blog.runevision.com/search/label/Eye%20of%20the%20Temple" target="_blank">Eye of the Temple</a> have been to not expand more on gameplay right now but rather on improving what I've got in order to make it as presentable as possible.<br />
<br />
That has meant:<br />
<ul>
<li>Improving visuals.</li>
<li>Addressing usability issues found in play-testing.</li>
</ul>
(If anybody wonder what happened to the <a href="http://blog.runevision.com/2016/12/spin-off-game-whip-arena.html" target="_blank">Whip Arena spin-off game</a>, I put that on hold after it become clear it only worked well with a quite large physical VR space, which very few people have available.)<br />
<ul>
</ul>
<h3>
3D models</h3>
<i>Gate model. Two keys must be inserted above the gate to unlock and open it:</i>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigTTtJ-QCittQesdyKqW5_vj5em-sdIcv6kKdb3UF8C78CrVgU0rjs7vF9ixLE2nGIygKN1bJCAocPqfRSG081B9DlZ1sL4a9WLBESl56ss3kO-UCrp-tELkCB-H04ZqNUJUfcd_IHrGQ/s1600/2017-01-08_GateModelWIP.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigTTtJ-QCittQesdyKqW5_vj5em-sdIcv6kKdb3UF8C78CrVgU0rjs7vF9ixLE2nGIygKN1bJCAocPqfRSG081B9DlZ1sL4a9WLBESl56ss3kO-UCrp-tELkCB-H04ZqNUJUfcd_IHrGQ/s800/2017-01-08_GateModelWIP.png" /></a>
<i>Stone torch model. You light these with your torch to trigger things happening:</i>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuFlhITDt4T7U_YJ3UmDRyF8WJfvaZBlTcqcbSOKO4UEBpuaIjqJOajZyaTdU_wK4odxpGKPGqgHpgji48fG6TXw4XZQ9y539Z-mDtu7s4wqeHx1Q8TVSOornbmSG8ftLppHsFNMxuwfg/s1600/2017-01-28_StoneTorch.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuFlhITDt4T7U_YJ3UmDRyF8WJfvaZBlTcqcbSOKO4UEBpuaIjqJOajZyaTdU_wK4odxpGKPGqgHpgji48fG6TXw4XZQ9y539Z-mDtu7s4wqeHx1Q8TVSOornbmSG8ftLppHsFNMxuwfg/s800/2017-01-28_StoneTorch.png" /></a>
<i>Cliffs model. The temple used to just float in the air; now it's grounded:</i>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilENkz_44FxuADZuWwQu_LSCakiT03g4G5rX1WRdZYNnEEgG7jDWIizG3jAsnBJnMU1_2zllbVnwEWbfodP6si-f_68ulVO87IJWqeJxC2fnoLYMj_rhOyBtFXquopXU-UEx7RnrBJthE/s1600/2017-01-29_Cliffs.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilENkz_44FxuADZuWwQu_LSCakiT03g4G5rX1WRdZYNnEEgG7jDWIizG3jAsnBJnMU1_2zllbVnwEWbfodP6si-f_68ulVO87IJWqeJxC2fnoLYMj_rhOyBtFXquopXU-UEx7RnrBJthE/s800/2017-01-29_Cliffs.png" /></a><br />
For a long time the game was full of placeholder models made of
simple boxes and cylinders. There's still some of those left, but I've
been working on replacing them all with proper models.<br />
<br />
After briefly planning to work with contractors for 3D models, I decided to learn 3D modeling myself instead (and deal with the <a href="http://blog.runevision.com/2017/01/the-quest-for-automatic-smooth-edges.html" target="_blank">various challenges</a> that come with it).<br />
<br />
The
models I need have highly specific requirements (they need to have very
exact measurements and functionality to fit into the systems of the
game) yet in the end they are quite simple models (man-made objects with
no rigging).<br />
<br />
With this combination it turned out that
back-and-forth communication even with a very skilled artist took as
much time as just doing the work myself. I'll still be working with
artists for the game, just not for the simple 3d models I need.<br />
<br />
Several of the models still have placeholder texturing. I have an idea for a good texture creation workflow for them, but it will take a little while to establish, so I'm postponing that while there's more pressing issues.<br />
<h3>
Intro section</h3>
My goal is that Eye of the Temple should be a rather accessible game. You need a body able to walk and crouch, and not be too afraid of heights, but I want it simple enough to play that people who don't normally play computer games can get into it without problems.<br />
<br />
This has largely been a success. Gamers or not, I normally just let people play without instructions, and they figure things out. My dad completed the whole thing in one hour-long session when he was visiting.<br />
<br />
The game did throw people in at the deep end though, asking them right from the start to step between moving platforms four meters above the ground. Some people would hesitate enough to end up mis-timing their step and stumble, making the experience even more extreme right from the beginning.<br />
<br />
To ease people a bit more in, I've worked on an intro section that starts out with only a 0.75 meter drop, and the first two platforms have no timing requirement. I have yet to get wide testing of this to see if it helps.
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIZg4H6Qf8ldfJaZz6l24xxVCalkfLoMh7ag_qFKB3OBguomXRUSQb_ERjXzxH8P64E9kXzxiYKPrsQ7e1LNusRSIGsPG0T14ddueoKYK-Brn8xB3BE8cU6DpyJRX3J6mpx_ldC20H7rg/s1600/2017-01-29_IntroArea.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIZg4H6Qf8ldfJaZz6l24xxVCalkfLoMh7ag_qFKB3OBguomXRUSQb_ERjXzxH8P64E9kXzxiYKPrsQ7e1LNusRSIGsPG0T14ddueoKYK-Brn8xB3BE8cU6DpyJRX3J6mpx_ldC20H7rg/s800/2017-01-29_IntroArea.png" /></a><br />
There is <i>one</i> particular problem I've toiled with for a while, which is to design a platform that bridges two spots in a compact manner. Why this is tricky relates to how the game lets you explore a large virtual space using just a small physical space.<br />
<br />
Originally I had platforms rotating around a center axis, but that made some people motion sick who otherwise didn't have problems with the rest of the game.
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNN9NUJJLsaxNu3edjZGnEGdksyO8tO6S8S6pY6afGHEUArRo2K4oBQA8Hrx9udA-fXJPRbY4h32pedme5tz0194xvRNxC4DaBWjVAZeTkLwOqstZkSYQ8wm2JEKSjnuMZjJxr7rtsIl8/s1600/Rotator.gif"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNN9NUJJLsaxNu3edjZGnEGdksyO8tO6S8S6pY6afGHEUArRo2K4oBQA8Hrx9udA-fXJPRbY4h32pedme5tz0194xvRNxC4DaBWjVAZeTkLwOqstZkSYQ8wm2JEKSjnuMZjJxr7rtsIl8/s800/Rotator.gif" /></a>
I tried various contraptions to replace it, but they were complicated and awkward to use. My latest idea is using just a barrel-like rolling block, which is nice in its simplicity, and also a fun little gimmick to balance on <i>once you understand how to use it</i>.<br />
<br />
Figuring out what you're meant to do is easy to miss though, as I found out with the first tester trying it. I have some ideas for a subtle way to teach it, but that will take quite some time to implement. For now I settled for slapping a sign up that explains it.
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUryhfkj3CgH3p086c2HUsIRk5dBwD9d40XNXVUlvJ_ryPMVhk9aLKPR7uHadbBnNeWcdLAFi1-RwOTevtXHxj1_mdikHdI3REHVYpYYzvGVh7xsb2zLHTB2uBRrg38OB0VenjXYwPcHM/s1600/2017-01-29_IntroTutorialSigns.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUryhfkj3CgH3p086c2HUsIRk5dBwD9d40XNXVUlvJ_ryPMVhk9aLKPR7uHadbBnNeWcdLAFi1-RwOTevtXHxj1_mdikHdI3REHVYpYYzvGVh7xsb2zLHTB2uBRrg38OB0VenjXYwPcHM/s800/2017-01-29_IntroTutorialSigns.png" /></a>
<br />
<h3>
Early testers online forum</h3>
There is no substitute for directly observing people playing a game, but this is impractical for me to do frequently when I also have a full-time job. I'm lucky if I get to do it two times a month.<br />
<br />
In order to try to get faster feedback and shorter iteration cycles, I've now opened up for people to <a href="https://itch.io/t/59040/early-testers-welcome-thread-introduce-yourself" target="_blank">sign up online to be early testers of the game</a>. If you have access to a Vive and would like to try out the game and provide detailed feedback based on your experience, please don't hesitate to join!<br />
<br />
<b><a href="https://itch.io/t/59040/early-testers-welcome-thread-introduce-yourself" target="_blank">Sign up to provide feedback on early builds of Eye of the Temple</a></b><br />
<br />Rune Skovbo Johansenhttp://www.blogger.com/profile/10793811736803423054noreply@blogger.com0tag:blogger.com,1999:blog-1667313809239009473.post-84583228018699868562017-01-04T18:16:00.003+01:002017-01-04T18:29:39.362+01:00The quest for automatic smooth edges for 3d modelsI'm currently learning simple 3D modeling so I can make some models for my game. I'm using Blender for modeling.<br />
<br />
The models I need to make are fairly simple shapes depicting man-made objects made of stone and metal (though until I get it textured it will look more like plastic). There are a lot of flat surfaces.<br />
<br />
The end result I want is these simple shapes with flat surfaces - <i>and smooth edges</i>. In the real world, almost no objects have completely sharp edges, and so 3d models without smooth edges tend to look like they're made of paper, like this:
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1P6BSUSDex-iUDav3ejBDx-Sv3eqK705PyWwgkAUJ3x7yp8ZiON09TSkH6hVSORRQ93CZk8eghTMqIiOK48TPgWAZsCnEHgcmkMeP4vbVaYuOHGfRwkQw8qKQXB9DUgygsnm0k2gx4ms/s1600/1RawFlat.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1P6BSUSDex-iUDav3ejBDx-Sv3eqK705PyWwgkAUJ3x7yp8ZiON09TSkH6hVSORRQ93CZk8eghTMqIiOK48TPgWAZsCnEHgcmkMeP4vbVaYuOHGfRwkQw8qKQXB9DUgygsnm0k2gx4ms/s800/1RawFlat.png" /></a>
What I want instead is the same shapes but with smooth edges like this:
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGA3b8Rm_mLZFUj8mbiD036JeW2iTU_-3rJMOE_mpijDHWETfcw7WxrrPYNGhuTzf5ceBdbZmycXuuaSCiktIwx765ufBRGAQSgUhpvnbqZXPwDBZyABcWf-1IaFpUPqyO4EhJey8FzZc/s1600/2BevelCustom.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGA3b8Rm_mLZFUj8mbiD036JeW2iTU_-3rJMOE_mpijDHWETfcw7WxrrPYNGhuTzf5ceBdbZmycXuuaSCiktIwx765ufBRGAQSgUhpvnbqZXPwDBZyABcWf-1IaFpUPqyO4EhJey8FzZc/s800/2BevelCustom.png" /></a>
Here, some edges are very rounded, while others have just a little bit of smoothness in order to not look like paper. No edges here are actually completely sharp.
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgt0yX7oYmrfe6eCJlN_AP3NHgpBgTEu6xCVd8VtEg9bbJ5R98zta3w1-G3ommlPlq2ePfBIerQZ6aZnhzPhGI7XVJF_H5lckm4UE9VxT5Ljolo8kvMJ13Od1sxkkFCfVyoE8IiYCWYNs0/s1600/2BevelCustomZoom.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgt0yX7oYmrfe6eCJlN_AP3NHgpBgTEu6xCVd8VtEg9bbJ5R98zta3w1-G3ommlPlq2ePfBIerQZ6aZnhzPhGI7XVJF_H5lckm4UE9VxT5Ljolo8kvMJ13Od1sxkkFCfVyoE8IiYCWYNs0/s800/2BevelCustomZoom.png" /></a>
The two images above shows the end result I wanted. It turns out it was much harder to get there than I had expected! Here's the journey of how I got there.<br />
<br />
How are smooth edges normally obtained? By a variety of methods. The Blender <a href="https://www.blender.org/manual/modeling/meshes/editing/smoothing.html" target="_blank">documentation</a> page on the subject is a bit confusing, talking about many different things without clear separation and with inconsistent use of images.<br />
<h4>
Edge loops plus subdivision surface modifier</h4>
From my research I have gathered that a typical approach is to add <i>edge loops</i> near edges that should be smooth, and then use a <i>Subdivision Surface</i> modifier on the object. This is also mentioned on the documentation page above. This has several problems.<br />
<br />
First of all, subdivision creates a lot of polygons which is not great for game use.<br />
<br />
Second, adding edge loops is a manual process, and I'm looking for a fully automatic solution. It's important for me to have quick iteration times. To be able to
fundamentally change the shape and then shortly after see the updated
end result inside the game. For this reason I strongly prefer a
<a href="https://en.wikipedia.org/wiki/Non-linear_editing_system" target="_blank">non-destructive editing</a> workflow. This means the that the parts that make up the
model are kept as separate pieces and not "baked" into one model such
that they can no longer be separated or manipulated individually.<br />
<br />
Adding edge loops means adding a lot of complexity to the model just for the sake of getting smooth edges, which then makes the shape more cumbersome to make major changes to afterwards. Additionally, edge loops can't be added around edges resulting from procedures such as <i>boolean subtraction</i> (carving one object out of another) and similar, at least not without baking/applying the procedure, which is a destructive editing operation.<br />
<br />
Edge loops and subdivision is not the way to go then.<br />
<h4>
Bevel modifier </h4>
Some posts on the web suggests using a <i>Bevel</i> modifier on the object. This modifier can automatically add bevels of a specified thickness for all edges (or selectively if desired). The Bevel modifier in Blender does what I want in the sense that it's fully automatic and creates sensible geometry without superfluous polygons.
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibDLWt7JvXFTNar7AO9PVqN-LcMx19s8li0DZvGq_GEf7iRNelzwaCI9M3k_E7Sd15-wZlJyJVKWsEwT7ubSOx8mFhPb8arc58irX55t6f9fnhNQ9aqbg_4UvPnIEWLILWhTZiu1DM-gY/s1600/DiagramBevel.png" ><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibDLWt7JvXFTNar7AO9PVqN-LcMx19s8li0DZvGq_GEf7iRNelzwaCI9M3k_E7Sd15-wZlJyJVKWsEwT7ubSOx8mFhPb8arc58irX55t6f9fnhNQ9aqbg_4UvPnIEWLILWhTZiu1DM-gY/s800/DiagramBevel.png" /></a>
However, by itself the bevel either requires <a href="http://blender.stackexchange.com/questions/811/most-efficient-way-to-round-edges" target="_blank">a lot of segments</a>, which is not efficient for use in games (I'd want one to two segments only to keep the poly count low) or when fewer segments are used it creates a <a href="http://blender.stackexchange.com/questions/2534/how-can-i-round-the-edges-of-a-mesh" target="_blank">segmented look</a> rather than smooth edges, as it can also be seen below.
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijQZlYdsYMNTErUWeVVWtlaLE8t8pP6A-DY-NJ7IPBb37umYtaUyv-Q5OBFHhk27XmhqcbEqTWtLCaWZoPSl2x2bupX2d2WjVQL3gwJ4PkvTJHUzwuYZEuHgntBe_8ts6EZwzk7ax2LwI/s1600/3BevelFlat.png" ><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijQZlYdsYMNTErUWeVVWtlaLE8t8pP6A-DY-NJ7IPBb37umYtaUyv-Q5OBFHhk27XmhqcbEqTWtLCaWZoPSl2x2bupX2d2WjVQL3gwJ4PkvTJHUzwuYZEuHgntBe_8ts6EZwzk7ax2LwI/s800/3BevelFlat.png" /></a>
<h4>
Baking high-poly details into normal maps of low-poly object</h4>
Another common approach, especially for games, is to create both a high-poly and a low-poly version of the object. The high-poly one can have all the detail you want, so for example a bevel effect with tons of segments. The low-poly one is kept simple but has the appearance from the high-poly one <a href="http://www.chrisalbeluhn.com/Normal_Map_Tutorial.html" target="_blank">baked into its normal maps</a>.<br />
<br />
This is of course a proven approach for game use, but it seems overly complicated to me for the simple things I want to achieve. Though I haven't tried it out in practice, I suspect it doesn't play well with a non-destructive workflow, and that it adds a lot of overhead and thus reduces iteration time.<br />
<h4>
Bevel and smooth shading</h4>
Going back to the bevel approach, what I really want is the geometry created by the Bevel modifier but with smooth shading. The problem is that smooth shading also makes the original flat surfaces appear curved.<br />
<br />
Here is my model with bevel and smooth shading. The edges are smooth sure enough, but all the surfaces that were supposed to be flat are curvy too.
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitva1cf__64f5Vh-nHcLp1sk94k8CJa6u8zVzW3PdSTL6asQmG7uNSJEYDTUqMbxRZeX3VO3UUSKMurffBRvSp2AsQh7P_YqGtBg9VrJD1n80nWjsia_pPfZ1iUS5dnixeEWBz7Xd6l6g/s1600/4BevelSmooth.png" ><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitva1cf__64f5Vh-nHcLp1sk94k8CJa6u8zVzW3PdSTL6asQmG7uNSJEYDTUqMbxRZeX3VO3UUSKMurffBRvSp2AsQh7P_YqGtBg9VrJD1n80nWjsia_pPfZ1iUS5dnixeEWBz7Xd6l6g/s800/4BevelSmooth.png" /></a>
Smooth shading works by pretending the surface at each point is facing in a different direction than it actually does. For a given polygon, the faked direction is defined at each of its corners in the form of a <i>normal</i>. A normal is a vector that points out perpendicular to the surface. Only, we can modify normals to point in other directions for our faking purposes.<br />
<br />
The way that smooth shading typically calculates normals makes all the surfaces appear curved. (There is typically a way to selectively make some surfaces flat, but then they will have sharp edges too.) The diagram below shows the normals for flat shading, for typical smooth shading, and for a third way that is what I would need for my smooth edges.
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidlk5lMuNZlT6uITEROgumilMjYNbxl9BT971MPWtDgIOMEhyphenhyphenl1Dpt6Looc31ccl0bSlKQt0-tqdLSe6gFzbiipTfn4WTHwe7vOjj8dS3Mw_rZNDDCSz0sbTlC1Iu8LSaurnPyO44ul7Q/s1600/DiagramShading.png" ><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidlk5lMuNZlT6uITEROgumilMjYNbxl9BT971MPWtDgIOMEhyphenhyphenl1Dpt6Looc31ccl0bSlKQt0-tqdLSe6gFzbiipTfn4WTHwe7vOjj8dS3Mw_rZNDDCSz0sbTlC1Iu8LSaurnPyO44ul7Q/s1200/DiagramShading.png" /></a>
So how can the third way be achieved? I found a post that asks <a href="http://blender.stackexchange.com/questions/39674/how-to-keep-flat-faces-flat-when-using-smooth-shading" target="_blank">the same question</a> essentially. The answers there don't really help. One incorrectly concludes that Blender's Auto Smooth feature gives the desired result - it actually doesn't but the lighting in the posted image is too poor to make it obvious. The other is the usual edge loop suggestion.<br />
<br />
When I posted question myself requesting clarification on the issue, I was pointed to a Blender add-on called Blend4Web. It has a <a href="https://www.blend4web.com/en/community/article/131/" target="_blank">Normal Editing feature</a> with a Face button that seems to be able to align the normals in the desired way - however as a manual workflow, not an automated process. I also found <a href="http://polycount.com/discussion/154664/a-short-explanation-about-custom-vertex-normals-tutorial" target="_blank">other forum threads</a> discussing the technique.<br />
<h4>
Using a better smoothing technique</h4>
At this point I got the impression there was no way to get the smooth edges I wanted in an automated way inside of Blender, at least without changing the source code or writing my own add-on. Instead I considered an alternative strategy: Since I ultimately use the models in Unity, maybe I could fix the issue there instead.<br />
<br />
In Unity I have no way of knowing which polygons are part of bevels and which ones are part of the original surfaces. But it's possible to take advantage of the fact that bevel polygons are usually much smaller.<br />
<br />
There is a common technique called <i>face weighted normals</i> / <i>area weighted normals</i> (<a href="http://www.bytehazard.com/articles/vertnorm.html" target="_blank">explained here</a>) for calculating averaged smooth normals which is to weigh the contributing normals according to the surface areas of the faces (polygons) they belong to. This means that the curvature will be distributed mostly on small polygons, while larger polygons will be more flat (but still slightly curved).<br />
<br />
From the discussions I've seen, there is general consensus that this usually produces better results than a simple average (<a href="http://polycount.com/discussion/85809/face-weighted-normals" target="_blank">here's one random thread about it</a>). It sounds like Maya uses this technique by default since at least 2014, but smooth shading in Blender doesn't use it or support it (even though people have discussed it and made custom add-ons for it <a href="https://forum.guildofwriters.org/viewtopic.php?f=59&t=2197" target="_blank">back in 2008</a>), nor does the model importer in Unity (when it's set to recalculate normals).<br />
<h4>
Custom smoothing in Unity AssetPostprocessor</h4>
In Unity it's possible to write <i>AssetPostprocessors</i> that can modify imported objects as part of the import process. This can also be used for modifying an imported mesh. I figured I could use this to calculate the smooth normals in an alternative way that produces the results I want.<br />
<br />
I started by implementing just area weighted normals. This technique still make the large faces slightly curved. Here is the result.
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-Ca8oqyhaAvjtgo5pIXZCR31FmRucvuEh9J1BbcKUPMbn4Ii7EjIzEdBjHptApBVO7PIPGmdzJAwnK__uIGAWnqYAupN0NnbChUbN3Atzsh_rJrIf8VwsQVsjPL1fcnBpSySsXc2jNQ8/s1600/4BevelSmoothAreaWeighted.png" ><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-Ca8oqyhaAvjtgo5pIXZCR31FmRucvuEh9J1BbcKUPMbn4Ii7EjIzEdBjHptApBVO7PIPGmdzJAwnK__uIGAWnqYAupN0NnbChUbN3Atzsh_rJrIf8VwsQVsjPL1fcnBpSySsXc2jNQ8/s800/4BevelSmoothAreaWeighted.png" /></a>
Honestly, the slight curvature on the large faces can be hard to spot here. Still, I figured I could improve upon it.<br />
<br />
I also implemented a feature to let weights smaller than a certain threshold be ignored. For each averaged normal, all the contributing normals are collected in a set, and the largest weight is noted. Any weight smaller than a certain percentage of the largest weight can then be ignored and not included in the average. For my geometry, this worked very well and removed the remaining curvature from the large faces. Here is the final result again.
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinMLpHthEjYqXfhGMronXTJiA3Dnegcu9PAO_3nCEefYo_AT0ZpKcmUpIok6QkUE0qnkRGyWidcx1adSgMLyF6vQnPHlTejJzt3qTo6B-9BtN6d3_Nrqb83mZwDoE1IJQofN5pAtELlSU/s1600/2BevelCustom.png" ><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinMLpHthEjYqXfhGMronXTJiA3Dnegcu9PAO_3nCEefYo_AT0ZpKcmUpIok6QkUE0qnkRGyWidcx1adSgMLyF6vQnPHlTejJzt3qTo6B-9BtN6d3_Nrqb83mZwDoE1IJQofN5pAtELlSU/s800/2BevelCustom.png" /></a>
The code is available <a href="https://gist.github.com/runevision/6fd7cc8d841245a53df5d09ccf6b47ff" target="_blank">here as a GitHub Gist</a>. Part of the code is derived from <a href="http://schemingdeveloper.com/2014/10/17/better-method-recalculate-normals-unity/" target="_blank">code by Charis Marangos, aka Zoodinger</a>.<br />
<h4>
Future perspectives</h4>
The technique of aligning smooth normals on beveled models with the original (pre-bevel) faces seems to be well understood when you dig a bit, but poorly supported in software. I hope Blender and other 3D software one day will have a "smooth" option for their Bevel modifier which retains the outer-most normal undisturbed.<br />
<br />
A simpler prospect is adding support for <i>area weighted normals</i>. This produces almost as good result for smooth edges, and is a much more widely applicable technique, not specific to bevels or smooth edges at all. That Blender, Unity and other 3D software that support calculating smooth normals do not include this as an option is even more mind-boggling, particularly given how trivial is it to implement. Luckily there workarounds for it in the form of AssetPostprocessors for Unity and custom add-ons for Blender.<br />
<br />
If you do 3D modeling, how do you normally handle smooth edges? Are you happy with the workflows? Do some 3D software have great (automatic!) support for it out of the box?<br />
<br />Rune Skovbo Johansenhttp://www.blogger.com/profile/10793811736803423054noreply@blogger.com0tag:blogger.com,1999:blog-1667313809239009473.post-67566962137170738282016-12-04T20:26:00.001+01:002016-12-04T20:29:30.550+01:00Spin-off game: Whip ArenaI've spend the past few days at <a href="http://www.exile.dk/" target="_blank">Exile</a> (like a game jam but not a jam this year). I've envisioned having a whip in <a href="http://blog.runevision.com/search/label/Eye%20of%20the%20Temple" target="_blank">Eye of the Temple</a> for a long time, and at Exile I began developing this whip mechanic.<br />
<br />
In the main game, the whip is meant to be just one element in the gameplay, aiding in puzzles, like being able to grab and switch levers from a distance, and grabbing objects to pull towards you. However, for now I started out making a little self-contained game based just around the whip, so that I could focus on getting the feel right first.<br />
<br />
At the end of Exile I had "whipped up" a little game I might call "Eye of the Temple - Whip Arena". Here's a video of the gameplay:<br />
<br />
<iframe allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/42xR05Ni6Po?rel=0" width="560"></iframe><br />
<br />
Implementing the whip physics was rather tricky. I've ended up with something that doesn't work quite like a real-world whip - you can't really make it do a crack in mid-air - but feels very responsive in its own way. The sound and haptics is based directly on the simulation, and I found it quite satisfying to use.<br />
<br />
Now I'm wondering if I should take a little break from developing the full Eye of the Temple game and try to get this little arena game (which is much smaller in scope) finished and released first. I wonder if it's something people might be interested in? It definitely got positive reactions and feedback at Exile.<br />
<br />
I'm thinking it would work well as an infinite game with high scores. There's not yet any fail condition though - I'm trying to think what might work well for that. I also need to implement some kind of bonuses and multipliers in the scoring probably.<br />
<br />
As a side note - after spending several days prototyping and implementing this whip mechanic at Exile, I ended up with quite sore shoulders from whipping so much. ;)<br />
<br />
If you have a Vive and would like to be an early tester of Whip Arena, let me know.Rune Skovbo Johansenhttp://www.blogger.com/profile/10793811736803423054noreply@blogger.com0tag:blogger.com,1999:blog-1667313809239009473.post-80748632393717436952016-09-27T22:51:00.000+02:002016-09-27T23:06:47.251+02:00Announcing Eye of the TempleI've been working on a VR game for the past months. It's called Eye of the Temple and it's a Vive game quite unlike any other.<br />
<br />
Here's a pre-alpha trailer for it!<br />
<br />
<iframe width="560" height="315" src="https://www.youtube.com/embed/LPOL46sjB7A?rel=0" frameborder="0" allowfullscreen></iframe>
<br />
<br />
That's the first time I've made a trailer by the way. Quite challenging but also fun! It's got some placeholder models in it and it's made from playtest footage rather than clips made specifically for this trailer, but I tried to make the best of what I got.<br />
<br />
Eye of the Temple is currently at an early stage in development.<br />
<br />
Speaking of placeholder models, I'm just beginning now to look into working with contractors to have some nice art created for the game. If you know of any skilled concept artists or 3d modelers who'd like to design ancient contraptions for a game like this, let me know!<br />
<br />
I previously worked on the game jam game <a href="https://runevision.itch.io/chrysalis-pyramid" target="_blank">Chrysalis Pyramid</a>. Eye of the Temple is based on a similar core mechanic, but expands upon it in scope and variety, and is completely rewritten and redesigned from scratch. The goal is a commercial release in 2017.<br />
<br />
Playtesting so far has been very promising and it's a lot of fun developing the game. Follow the development here and <a href="https://twitter.com/runevision" target="_blank">on Twitter</a>, and let me know what you think!Rune Skovbo Johansenhttp://www.blogger.com/profile/10793811736803423054noreply@blogger.com0tag:blogger.com,1999:blog-1667313809239009473.post-25697871885686655912016-09-06T22:16:00.002+02:002022-01-23T15:09:53.892+01:00Development of The Cluster put on holdThe Cluster is an exploration platformer game I've been developing in my spare time for some time. You can see all posts about it <a href="http://blog.runevision.com/search/label/TheCluster">here</a>.<br />
<br />
As of the time being, I've put development of The Cluster on hold indefinitely.
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSHkb9y-Pg4xnGs0ot0CDh44qkQ1GF_sj489c1XjZqg7taCOhiNrgzB7Lym8vJMk0KC1SKL0bOt9s_X_v2rms2nNXFnXRXOXokRNyNuFEPkW-uU7QgwBg5mdATikR2fhn1875f0usAj3o/s1600/2015-12-22_16-24-23_Screenshot.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSHkb9y-Pg4xnGs0ot0CDh44qkQ1GF_sj489c1XjZqg7taCOhiNrgzB7Lym8vJMk0KC1SKL0bOt9s_X_v2rms2nNXFnXRXOXokRNyNuFEPkW-uU7QgwBg5mdATikR2fhn1875f0usAj3o/s800/2015-12-22_16-24-23_Screenshot.png" /></a>
<h3>Burdens </h3>
After having worked on the game for more than ten years (!) I finally came to the conclusion that the overall design and constraints in the game is making it very hard for me to finish it, while also holding me back from trying out a lot of otherwise interesting ideas.<br />
<ul>
<li>The game is procedural and the same every time you play, which makes it super important to guarantee you can't get stuck.</li>
<li>There is gravity and no ability to fly, which means you will get stuck unless the algorithms are carefully designed to make it impossible. It has to be more or less mathematically provable.</li>
<li>The AI enemies can follow you practically everywhere, which means every obstacle needs to be coded to also be usable by AI.</li>
<li>The world is constructed from a rather large-scale grid which makes things like large ramps and hills impossible (just a bit boring).</li>
<li>The third-person perspective require art and animation resources for avatar and enemies.</li>
<li>The side-scrolling format makes it hard to wordlessly attract the player to interesting things in the far distance, because only the immediate environment can be seen. This creates more of a reliance on maps and narratives to explain the reasoning for seeking out those far away things, and that plays against the procedural nature of the game.</li>
</ul>
Now, none of those things are impossible to overcome, and I did have a playable demo at the end of 2015 that worked under all of those constraints. But the game is not yet nearly varied enough, and every new feature is very tough to pull off under the burden of all those constraints.<br />
<h3>
Focusing on my strengths</h3>
I've switched focus to working on projects that I hope both play more to my strengths, and should be possible to pull off in a shorter time frame.<br />
<ul>
<li>First-person perspective without jumping, so no fiddly physics.</li>
<li>No humanoid characters, which decreases the demands for art, animation and "behaviors".</li>
<li>No ambition of a story (some of my favorite games don't have one anyway).</li>
</ul>
This frees me up to focus more exclusively on making interesting environments, which is what I'm most passionate about.<br />
<br />
The good news is that the time has not been entirely wasted. For one, I've learned a LOT. And for another I've developed several pieces of substantive tech that are fully reusable in my future projects.<br />
<br />
Speaking of future projects, I'm working on a few already.<br />
<br />
One is <a href="http://blog.runevision.com/2016/05/the-big-forest.html">The Big Forest</a>, though I'm not actively working on it right now. The focus here is to create nice, interesting and varied environments with very simple gameplay on top. I want it to me my own favorite walking simulator. In its current early stage it's already one of the best virtual forest experiences I've had.<br />
<br />
The project I'm actively working on is a VR game for Vive that I've tweeted a little bit about and will soon announce properly here on the blog.<br />
<br />
Stay tuned!Rune Skovbo Johansenhttp://www.blogger.com/profile/10793811736803423054noreply@blogger.com0tag:blogger.com,1999:blog-1667313809239009473.post-64390447533575197722016-05-03T01:13:00.002+02:002022-01-20T17:24:26.089+01:00The Big ForestI've been continuing my work on the procedural terrain project I wrote about <a href="http://blog.runevision.com/2016/03/note-on-creating-natural-paths-in.html" target="_blank">here</a>. I added grass, trees and footstep sounds (crucial!) and it's beginning to really come together as a nice forest to spend some time in.<br />
<br />
I made a video of it here. Enjoy!
<iframe allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/4ujnThRTxrQ?rel=0" width="560"></iframe>
If you want to learn more about it, have a look at this thread on the <a href="https://www.reddit.com/r/proceduralgeneration/comments/4hb3on/the_big_forest_my_try_at_procedural_infinite/" target="_blank">procedural generation subreddit</a>.
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-BQNJM2e_lXM_eOJK9Vjxfzl2zjktOTgZGxFwOnL0lldJhI26yBDO2Zy4Niz1tiE3PHRincy3sHryfXG3P4thlDLPD3p8xQ1I_-4pZQTJxRo07YvkoGZffXsyrSE2SxvQqFln431SHCI/s1600/2016-05-03_01-23-05_Screenshot.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-BQNJM2e_lXM_eOJK9Vjxfzl2zjktOTgZGxFwOnL0lldJhI26yBDO2Zy4Niz1tiE3PHRincy3sHryfXG3P4thlDLPD3p8xQ1I_-4pZQTJxRo07YvkoGZffXsyrSE2SxvQqFln431SHCI/s800/2016-05-03_01-23-05_Screenshot.png" /></a>Rune Skovbo Johansenhttp://www.blogger.com/profile/10793811736803423054noreply@blogger.com3tag:blogger.com,1999:blog-1667313809239009473.post-91678149859675950862016-04-05T00:17:00.009+02:002022-12-26T13:25:44.721+01:00Working with puzzle design through state space visualizationIn the beginning of 2014 I was interested in procedurally generating computer games puzzles with typical elements like toggles, gates that can be triggered to open, boxes or boulders that can be moved onto pressure plates, etc. Many games contain elements like these and I took inspiration in particular from the game <i>Lara Croft and the Guardian of Light</i>.<br />
<br />
To better understand these puzzles, and understand what makes a puzzle interesting or boring, I started creating a tool for analyzing and visualizing the state space of the puzzle. In the Procedural Content Generation mailing list I discussed the approach <a href="https://groups.google.com/d/msg/proceduralcontent/bFTkuSv2EUE/_UkWMWw5oKUJ" target="_blank">here</a>.
I've worked on it on and off since, and while I still don't have an algorithm for procedurally generating the puzzles, the tool itself is interesting in its own right. It's called PuzzleGraph and I've just released it for free.<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiTGxu2AFRfTnx0QSW-5qT46k59lfF2FJev4CEQaJ99l_dssvLySDJhONg4SlZtddmWPAtxEluEsSP6nCl1CqeiOvmEnDzTQS7OQqVImKIKURX7qjELbphyYVA3SZUTbiFw-1XKs7hy7MQ/s1600/Logo.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiTGxu2AFRfTnx0QSW-5qT46k59lfF2FJev4CEQaJ99l_dssvLySDJhONg4SlZtddmWPAtxEluEsSP6nCl1CqeiOvmEnDzTQS7OQqVImKIKURX7qjELbphyYVA3SZUTbiFw-1XKs7hy7MQ/s320/Logo.png" /></a>
<a href="https://runevision.itch.io/puzzlegraph" target="_blank">Get PuzzleGraph at itch.io</a><br />
<br />
You can setup and connect puzzle elements like gates, toggles, pressure plates and boulders, and see the state space of the puzzle visualized, including solution paths, dead ends and fail states.<br />
<br />
If you make some puzzles with PuzzleGraph, I'd love to see them!<br />
<br />
The best demonstration is this video I made. If you already saw the video, skip down a bit for some new info and announcements.
<iframe allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/NeTjbfAbNyA?rel=0" width="420"></iframe>
<a name='more'></a>
When I announced PuzzleGraph on Twitter, a lot of people seemed to be excited. Besides re-tweets, I also saw many people forwarding and CC'ing each other, particularly people in academia.<br />
<br />
It makes sense. As a practical tool for everyday work, PuzzleGraph may only be useful to few people since it's tied to specific (although fairly common and generic) puzzle mechanics. However, as a fully implemented proof of concept and as a research project, it's showing an interesting way of thinking about and interacting with puzzle design that seems to capture the imagination of a lot of people.<br />
<br />
Analysis and visualization of game state space is also a field already researched in academia from a bit different angles. Research-wise I may not have done anything groundbreaking with PuzzleGraph, but its polished and highly accessible form with no barriers to entry probably makes the idea of working with state space interesting and accessible to a wider audience.
<blockquote>
<div dir="ltr" lang="en">
This visualizer is pretty darn cool.</div>
— StagPoint (@StagPointTools) <a href="https://twitter.com/StagPointTools/status/715211039445352448" target="_blank">March 30, 2016</a></blockquote>
<blockquote>
<div dir="ltr" lang="en">
Wouldn't it be grand to do this for interactive story generation? :) cc: <a href="https://twitter.com/anneandkita" target="_blank">@anneandkita</a> <a href="https://twitter.com/gillianmsmith" target="_blank">@gillianmsmith</a></div>
— R. E. Cardona-Rivera (@recardona) <a href="https://twitter.com/recardona/status/715220632166928387" target="_blank">March 30, 2016</a></blockquote>
<blockquote>
<div dir="ltr" lang="en">
<a href="https://twitter.com/runevision" target="_blank">@runevision</a> <a href="https://twitter.com/jseakle" target="_blank">@jseakle</a> Something like this could be really useful for general UX design (not just games).</div>
— bob (@bobpoekert) <a href="https://twitter.com/bobpoekert/status/715239799527870465" target="_blank">March 30, 2016</a></blockquote>
<blockquote>
<div dir="ltr" lang="en">
MIND BLOWN! Almost exactly what I'm plannning for Streamline, but my ideas aren't as developed yet</div>
— Francois van Niekerk (@francoisvn) <a href="https://twitter.com/francoisvn/status/715332761360445440" target="_blank">March 31, 2016</a></blockquote>
<blockquote>
<div dir="ltr" lang="en">
<a href="https://twitter.com/runevision" target="_blank">@runevision</a> nice! If it was a tad more abstract (e.g. like <a href="https://t.co/pMCZ8pZdFl" target="_blank">https://t.co/pMCZ8pZdFl</a>) it'd be a really useful tool for puzzle/system design</div>
— hessel (@besttoffer) <a href="https://twitter.com/besttoffer/status/715446786018656257" target="_blank">March 31, 2016</a></blockquote>
<blockquote>
<div dir="ltr" lang="en">
An awesome tool/concept for anyone designing logic puzzles</div>
— Anders Nissen (@andershnissen) <a href="https://twitter.com/andershnissen/status/715529092725084160" target="_blank">March 31, 2016</a></blockquote>
<h3>PuzzleGraph is now open source </h3>
In order to maximize the usefulness that PuzzleGraph and it's approach may provide to others, I've decided to open-source it. This way people can adapt it to include specific mechanics of their choice, or pull out specific parts of it and integrate into other tools, or just have a look at the code structures and algorithms for reference.<br />
<br />
If anyone want to make improvements that might be a good fit for the original version of the tool, I'll be happy to discuss including it there as well.<br />
<br />
The code repository is located at <a href="https://hg.sr.ht/~runevision/puzzlegraph" target="_blank">https://hg.sr.ht/~runevision/puzzlegraph</a> and is licensed under the <a href="https://en.wikipedia.org/wiki/Mozilla_Public_License" target="_blank">Mozilla Public License version 2.0</a>.<br />
<h3>Puzzle elements in PuzzleGraph</h3>
Here's a list of all the puzzle elements in PuzzleGraph version 1.1. Some elements are in locations (nodes) while others are in connections (edges).
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjiuN993NM4pQFmfENstfZB5NHw2EN6xNAkgYc6sw8SDzpllBJyn34gCEW9fIl5cwCkLmtih6Y2byQvvf__t0EbEUWxnOPjS8DZ5_fpg6E_wI8gT53bLiDI5e7XhTM6Jz1G2CN5zl6NZzM/s1600/Legend.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjiuN993NM4pQFmfENstfZB5NHw2EN6xNAkgYc6sw8SDzpllBJyn34gCEW9fIl5cwCkLmtih6Y2byQvvf__t0EbEUWxnOPjS8DZ5_fpg6E_wI8gT53bLiDI5e7XhTM6Jz1G2CN5zl6NZzM/s1600/Legend.png" /></a>
Since the initial version was released and I made the video, I've added a few more features in version 1.1. All the node and edge types now have tooltips to make it more clear what exactly they do and there is a help screen with an overview like the above. I also added three new puzzle elements; the <i>one way edge</i>, the <i>blockable hazard edge</i>, and the <i>ball track edge</i>, as described above.<br />
<h3>
Further development</h3>
I'm not yet sure to what extent I'll keep developing PuzzleGraph. I've honestly had very little time to actually use it, and gathering more experience with it through my own usage or other people using it will probably be the focus at first.<br />
<br />
So if you use PuzzleGraph - either purposefully or just messing around - please tell me about your experience. And I'd love to see puzzles you make with it, and potentially include them with the distribution if you want.<br />
<br />
Apart from that, I guess I'll see if anything comes out of open sourcing it as well.<br />
<br />
In the next section I'll go over the techniques used for the state space visualization that you might use if you want to implement it for your own tools.
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQNEYhzh9T2sVvAVjGucLM4hc0UE-5SsgpO2MrV1IetHldy10fuRJVEqA-wuCbH-NiQ5wytoV69qym1CShEfkwREgv42iC4ZyTXtTc2q8__fsdxvMDWANBn5BWf0i-nKp8toMCeIo1mu8/s1600/PuzzleGraph.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQNEYhzh9T2sVvAVjGucLM4hc0UE-5SsgpO2MrV1IetHldy10fuRJVEqA-wuCbH-NiQ5wytoV69qym1CShEfkwREgv42iC4ZyTXtTc2q8__fsdxvMDWANBn5BWf0i-nKp8toMCeIo1mu8/s1600/PuzzleGraph.png" /></a>
<h3>The technology behind state space visualization</h3>
There's probably many ways of implementing state space analysis and visualization but I can tell a bit about the approach I used for PuzzleGraph. You can check out the source code for more details. I'll assume a rudimentary familiarity with terminology from <a href="https://en.wikipedia.org/wiki/Graph_theory" target="_blank">graph theory</a> in this section.
<h4>Suitability for state space analysis</h4>
Before you even begin implementing the state space representation you need to be sure your state space is succinct enough to be useful to visualize. What this means is that every change in state should be significant and correspond to a choice made by the player. Furthermore, the choices available at any given point should ideally be limited in number. If you have an exponential explosion, visualizations of the state space are not going to be of much help.<br />
<br />
In PuzzleGraph I built this into the puzzle format itself. By building up the puzzles around discrete puzzle locations, I avoided a continuous or detailed representation of space. Most of the remaining simplicity in states followed directly from this, and I simply avoided supporting gameplay features highly tied to space or time, such as timer based mechanics or physically simulated interactions between objects.<br />
<br />
In some cases it's possible to begin with a puzzle form with a somewhat richer state space and simplify or collapse it into fewer states by ignoring irrelevant details. For example, the game of Sokoban has a very high number of states if the states directly capture which grid cell the player is in. However, this can be abstracted away by only considering which grid cells the player currently have access to (without moving boxes) and recording that into states instead of the exact player position.
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhq94X3s8uRBKH91epvhsGk0mjaf4n15ajqjR3X0AHENqxuL8cGWi3Md3FTNkbVbJumMfH90NK2K490sH_PxNSuEUZCkZ5v2ETSyeqGvkqiEWBrO9BnxMa9UzzpWoFsxsDzgy931YsXOd8/s1600/SokobanWithBlocks.png" imageanchor="1"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhq94X3s8uRBKH91epvhsGk0mjaf4n15ajqjR3X0AHENqxuL8cGWi3Md3FTNkbVbJumMfH90NK2K490sH_PxNSuEUZCkZ5v2ETSyeqGvkqiEWBrO9BnxMa9UzzpWoFsxsDzgy931YsXOd8/s1600/SokobanWithBlocks.png" /></a>
It's conceivable that decent methods for state collapse can be employed for many cases of full 3D worlds as well. For example, there are methods to automatically generate navigation meshes (nav-meshes) from arbitrary 3D geometry, and the way walkable areas are split into convex polygons there might well in some cases be a useful abstraction of player locations for the purposes of state space analysis.
<h4>Separating state from statics</h4>
Once you have a state representation where every difference in state corresponds to a meaningful player choice, you can begin the implementation. The first step here is to separate the state that changes from anything that doesn't change.<br />
<br />
This means a departure from normal object oriented design where you'd
have a toggle object that contains its own state as a member variable.
Instead you have two different main objects.
<ul>
<li>One is the static <i>puzzle
design</i>, that contains information about the nodes (type and location), edges (type and which nodes they connect), and the initial state of each dynamic object.</li>
<li>The other is the <i>puzzle state</i>, which contains all data that can change while the puzzle is being played.</li>
</ul>
With this separation, to evaluate the current state of the toggle element, the puzzle state object is given to the toggle object, and the toggle knows how to find its own state. If the toggle is stored as the fourth element in the puzzle, it finds it state by looking at the fourth element in the array of bools in the puzzle state given to it.<br />
While the current state is separated from the puzzle design, the <i>initial state</i> is encoded directly in the design. This is necessary since the dynamic state objects are highly reliant on a puzzle design that doesn't change. If the puzzle design is changed, things may no longer match up. So whenever the design is changed, any puzzle state objects must be discarded and new ones constructed from scratch based on the initial state properties of the elements in the puzzle design object.<br />
<br />
You can test and verify your separation of puzzle design and puzzle state before doing any state space analysis or visualization. A first suitable step is implementing functionality to "play" the puzzle based on these separated states.
<h4>Searching the state space</h4>
Once you have your separate state objects, you need a way to evaluate which new states it's possible to go to from a given state, and you need to keep track of that and build up a graph of the ways that the different states are connected. If you already implemented play functionality, you are already part way there.<br />
<br />
Before you can construct your graph, you need objects corresponding to nodes and edges in the graph. The puzzle state objects are not themselves nodes. The states should be entirely self contained, so we need wrapper state nodes that contain both the state of that nodes, and information about which other states it's connected to. The state nodes don't contain references directly to other state nodes, but rather to state edge objects. Besides having references to the state nodes it connects, the state edges also store which kind of action the edge corresponds to. This can't always be derived just by looking at a before-state and an after-state, so we need to store it explicitly.<br />
<br />
To explore the state space you need these data structures:
<ul>
<li>A dictionary with states as key and state nodes as value. This is needed to check if a new state is in fact the same as an existing state, and retrieve the state node of that existing state if so.</li>
<li>A queue for state nodes to be processed.</li>
</ul>
You can then explore the state space according this this algorithm:<br />
<ul>
<li>Extract the initial state from the puzzle and create a state node for it. Add this state node to the dictionary and to the queue.</li>
<li>Process state nodes according to the queue as long as it isn't empty. Let a state node popped from the queue be <i>A</i>.</li>
<ul>
<li>Look at the state of the state node <i>A</i> and figure out all the actions it's possible to perform. For each of those actions:</li>
<ul>
<li>Make a clone of the state of state node <i>A</i>.</li>
<li>Perform the action on the cloned state such that it changes into a different state.</li>
<li>Check in the dictionary if the new state is the same as an existing state in your graph.</li>
<ul>
<li>If so, let the state node of that existing state be <i>B.</i></li>
<li>Otherwise, create a new state node <i>B</i>, store the new state in it, and add <i>B</i> to the dictionary and to the queue.</li>
</ul>
<li>Connect state nodes <i>A</i> and <i>B</i> with a state edge that stores which kind of action was taken.</li>
</ul>
</ul>
</ul>
The state nodes in PuzzleGraph have both a list of outgoing and incoming state edges. Outgoing edges are the actions that can be taken to go from the current state to other states. Incoming are the actions that can be taken to go from other states to this state. Having both makes the state space visualization code simpler, and also helps when implementing e.g. undo for the play functionality of the puzzle.
<h4>Visualizing the graph </h4>
Now you have a graph data structure representing the puzzle state space, but no easy way to inspect it. All that's really needed here is figuring out at which position each state space node in the graph should be drawn. From there on it's easy to draw each node at its given position, and draw connections between connected nodes.<br />
<br />
Figuring out the positions is the tricky part then. There are algorithms and even frameworks available for this, but in the end I ended up not using any of them and just go with my own implementation.<br />
<br />
The overall trick is to do a little almost physical simulation where nodes have spring like connections between them, with each spring connection having an ideal distance it attempts to pull or push towards. The two main challenges here are:
<ul>
<li>Figuring out the ideal distance between every pairs of nodes.</li>
<li>Figuring out which force to apply to node pairs given the ideal distance between them.</li>
</ul>
The first of those is only done once when the state node graph layout is initialized. The ideal distance is calculated as the number of state changes required to go between the two nodes, either one way or the other. In PuzzleGraph every type of state change adds the same amount of distance, but this could be made different if some state changes are regarded as more significant than others.<br />
<br />
The second part is done iteratively, stopping perhaps when the nodes don't seem to move much anymore. It took quite some experimentation to get something that worked reliably for a wide variety of graphs. I calculate an adjustment length as the difference between the current distance and the ideal distance, divided by the squared ideal distance. This is then multiplied with a constant of 0.1 which seemed to be about the highest value I could use that converges fast without causing oscillation, explosions, or other instabilities.<br />
<br />
The division by ideal distance is because it's less important to maintain ideal distance to far off nodes than to close by one. And also because there are more far off nodes than close by ones, so they often have a large aggregate force. The reason to use exactly the squared ideal distance to divide with is largely experimentally arrived at. The graph will look a bit different dependent on which power is used.
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMUK2XUCxcZA9LOAlnJbUNcHYTRazoTKlxyT0oLGvEiYX7PC6vx_5_YFw2pbUbtltb7nq2WLDuBgb0f76S9iumbkolkjuvpvTMfnPDf1tF3o9WkWFFTde3C3ZO-HKDKj0XbenHaW-dkEM/s1600/GraphLayoutAnim.gif"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMUK2XUCxcZA9LOAlnJbUNcHYTRazoTKlxyT0oLGvEiYX7PC6vx_5_YFw2pbUbtltb7nq2WLDuBgb0f76S9iumbkolkjuvpvTMfnPDf1tF3o9WkWFFTde3C3ZO-HKDKj0XbenHaW-dkEM/s1600/GraphLayoutAnim.gif" /></a>
<h4>Extra stuff</h4>
That's the basics! Some other things to do is marking state nodes that are part of shortest solutions paths, or which are fail states from which it isn't possible to reach a goal state. See the source code for more details. :)Rune Skovbo Johansenhttp://www.blogger.com/profile/10793811736803423054noreply@blogger.com1