Jekyll2020-03-22T16:58:56+00:00https://www.simonmoles.com/feed.xmlSimon MolesNew Blog, Hello World2017-06-05T00:00:00+01:002017-06-05T00:00:00+01:00https://www.simonmoles.com/blog/2017/06/05/new-blog-hello-world<h3 id="hell-its-about-time">Hell, It’s About Time</h3>
<p>It’s been a while since I updated my personal site. My old site was made during 2010 (!) and was really beginning to rot.
The tipping point was when I noticed my clever bracket design looked terrible if the user happened to have the Raleway font installed on their PC, rather than using the version served from my site. So, away with all that.
Renovating this site also gave me an opportunity to brush up on all the latest web technologies. CSS is a joy to use now that all browsers support the features that were held back by Internet Explorer when I last worked on this site. Rounded corners? Box sizing? Filters? Media queries? Calc!? Nice.</p>
<!--more-->
<h3 id="enter-ssg-static-site-generator">Enter SSG (Static Site Generator)</h3>
<p>A blog rarely updates, so it makes no sense to have a CMS running when each request usually returns pretty much the same result.
A static site generator takes the data source and generates a set of html files that can be served from any web host.
This has a number of advantages:</p>
<ul>
<li>Reduced chance of site being compromised by vulnerabilities in e.g. Wordpress.</li>
<li>No need to set up databases, PHP, etc on web host, or when moving.</li>
<li>Easier to scale during times of increased traffic. Just copy the files to a CDN based host.</li>
<li>Site loads <strong>super fast</strong>. It’s just serving html!</li>
</ul>
<p>I decided on using <a href="https://jekyllrb.com/">Jekyll</a> for this new site. I have used it before for my <a href="https://www.stompyrobot.uk/">company website</a>, so I was already familiar with how it all works.
An alternative could have been <a href="https://gohugo.io/">Hugo</a>, but it seems to have less buzz around it, and I’m less familiar with Go than I am with Ruby.</p>
<h3 id="open-source">Open Source</h3>
<p>I used a starter project called <a href="https://github.com/ixkaito/frasco">Fresco</a> to get everything up and running. This saved me having to scour the documentation to find the best practices for each technology and get something working fast.
The source is available to view on <a href="https://www.github.com/Simie/simonmoles.com/">Github</a>. I’ve set up Travis to automatically build and test the site. HTML-Proofer checks for missing links, broken images, that sort of thing. No more broken links.</p>
<p>This was also a good opportunity to try out the new <abbr title="Windows Subsystem for Linux">WSL</abbr> build in the latest Windows 10 update. This fixes the networking issues I had with Jekyll last time I tried using <abbr title="Windows Subsystem for Linux">WSL</abbr>.
The latest build works perfectly, so I’m able to run everything in a bash shell just as if I was working on a Mac or Linux. No more scrappy workarounds when using Ruby on Windows!</p>Hell, It’s About Time It’s been a while since I updated my personal site. My old site was made during 2010 (!) and was really beginning to rot. The tipping point was when I noticed my clever bracket design looked terrible if the user happened to have the Raleway font installed on their PC, rather than using the version served from my site. So, away with all that. Renovating this site also gave me an opportunity to brush up on all the latest web technologies. CSS is a joy to use now that all browsers support the features that were held back by Internet Explorer when I last worked on this site. Rounded corners? Box sizing? Filters? Media queries? Calc!? Nice.Nova2017-06-04T00:00:00+01:002017-06-04T00:00:00+01:00https://www.simonmoles.com/projects/nova<h1 id="squad-based-action-rpg-for-tablet-devices">Squad-based action RPG for tablet devices.</h1>
<p><img src="/assets/images/project_nova/banner.jpg" alt="Banner" /></p>
<ul>
<li>Status: Unfinished</li>
<li>Year: 2013-2014</li>
</ul>
<p>Nova is a squad-based action RPG for tablet devices.
I collaborated with an artist to create the visual style, silhouetting ships against a bright background and overlaying heavy glow effects for weapons, engines, highlights.
A major focus was to take advantage of touch controls and streamlining interactions with the UI and squad control.</p>
<div class="responsive-container">
<iframe width="1920" height="1080" src="https://www.youtube.com/embed/xZELuhMO9es?vq=hd1080&rel=0" frameborder="0" allowfullscreen=""></iframe>
</div>
<h1 id="links">Links</h1>
<ul>
<li><a href="http://stompyrobot.uk/games/nova/">Stompy Robot - Nova</a></li>
</ul>Squad-based action RPG for tablet devices. Status: Unfinished Year: 2013-2014 Nova is a squad-based action RPG for tablet devices. I collaborated with an artist to create the visual style, silhouetting ships against a bright background and overlaying heavy glow effects for weapons, engines, highlights. A major focus was to take advantage of touch controls and streamlining interactions with the UI and squad control. Links Stompy Robot - NovaSPACED2017-06-01T00:00:00+01:002017-06-01T00:00:00+01:00https://www.simonmoles.com/projects/spaced<h1 id="spaceship-simulation-prototype">Spaceship Simulation Prototype</h1>
<ul>
<li>Status: Prototype</li>
<li>Year: 2016-2017</li>
</ul>
<p>SPACED is a prototype I am currently working on. Here is a collection of screenshots and videos from the development so far.</p>
<blockquote class="reddit-card" data-card-created="1496704268"><a href="https://www.reddit.com/r/Unity3D/comments/3uhrvb/wip_atmosphere_simulation_explosive_decompression/?ref=share&ref_source=embed">WIP atmosphere simulation (explosive decompression) for my space sim</a> from <a href="http://www.reddit.com/r/Unity3D">Unity3D</a></blockquote>
<script async="" src="//embed.redditmedia.com/widgets/platform.js" charset="UTF-8"></script>
<p><strong>Reddit Post</strong></p>
<div style="position:relative;padding-bottom:69%"><iframe src="https://gfycat.com/ifr/EntireThoroughKitfox" frameborder="0" scrolling="no" width="100%" height="100%" style="position:absolute;top:0;left:0;" allowfullscreen=""></iframe></div>
<p><strong>Pipe Flow</strong></p>
<div style="position:relative;padding-bottom:68%"><iframe src="https://gfycat.com/ifr/HomelyBackGharial" frameborder="0" scrolling="no" width="100%" height="100%" style="position:absolute;top:0;left:0;" allowfullscreen=""></iframe></div>
<p><strong>Prototype of new atmosphere flow algorithm.</strong></p>
<div style="position:relative;padding-bottom:67%"><iframe src="https://gfycat.com/ifr/EnergeticUnsungBobcat" frameborder="0" scrolling="no" width="100%" height="100%" style="position:absolute;top:0;left:0;" allowfullscreen=""></iframe></div>
<p><strong>Fire spreading</strong></p>
<div style="position:relative;padding-bottom:75%"><iframe src="https://gfycat.com/ifr/FreshGraciousIcelandgull" frameborder="0" scrolling="no" width="100%" height="100%" style="position:absolute;top:0;left:0;" allowfullscreen=""></iframe></div>
<p><strong>Wall pressure explosion</strong></p>
<div style="position:relative;padding-bottom:75%"><iframe src="https://gfycat.com/ifr/WholeSmugIslandcanary" frameborder="0" scrolling="no" width="100%" height="100%" style="position:absolute;top:0;left:0;" allowfullscreen=""></iframe></div>
<p><strong>Atmosphere velocity effects</strong></p>
<div style="position:relative;padding-bottom:56%"><iframe src="https://gfycat.com/ifr/LegitimateCooperativeCygnet" frameborder="0" scrolling="no" width="100%" height="100%" style="position:absolute;top:0;left:0;" allowfullscreen=""></iframe></div>
<div style="position:relative;padding-bottom:61%"><iframe src="https://gfycat.com/ifr/ThoroughUntimelyAtlanticspadefish" frameborder="0" scrolling="no" width="100%" height="100%" style="position:absolute;top:0;left:0;" allowfullscreen=""></iframe></div>
<p><strong>Gas Effects</strong></p>
<div style="position:relative;padding-bottom:59%"><iframe src="https://gfycat.com/ifr/UnlawfulTenseArthropods" frameborder="0" scrolling="no" width="100%" height="100%" style="position:absolute;top:0;left:0;" allowfullscreen=""></iframe></div>
<p><strong>Networking Atmos / Pipe simulation LOD (Flash = Send Update, Follows Cursor/Player)</strong></p>Spaceship Simulation Prototype Status: Prototype Year: 2016-2017 SPACED is a prototype I am currently working on. Here is a collection of screenshots and videos from the development so far. WIP atmosphere simulation (explosive decompression) for my space sim from Unity3D Reddit Post Pipe Flow Prototype of new atmosphere flow algorithm. Fire spreading Wall pressure explosion Atmosphere velocity effects Gas Effects Networking Atmos / Pipe simulation LOD (Flash = Send Update, Follows Cursor/Player)Precision Engineering2017-05-25T00:00:00+01:002017-05-25T00:00:00+01:00https://www.simonmoles.com/projects/precision-engineering<p><img src="/assets/images/pe/header.jpg" alt="Banner" /></p>
<p>Precision Engineering is a mod for <a href="http://store.steampowered.com/app/255710/Cities_Skylines/" target="_blank">Cities: Skylines</a> that adds snapping and measuring tools when placing roads, power lines, pipes, etc.</p>
<h1 id="development">Development</h1>
<p>Cities: Skylines is created with the Unity game engine. This makes it relatively straightforward to decompile the C# assemblies and investigate how things work. The game’s developers, Colossal Order, also provided a powerful mod API that allowed loading any C# DLL.</p>
<p>I was able to dig deep into the road placement code to discover where I can hook in to display information to the user and enable angle snapping. Using a snippet of code provided by <a href="https://github.com/sschoener/cities-skylines-detour">cope</a> I was able to override the built-in methods used for road placement to implement custom snapping behaviour without modifying the game’s DLLs.</p>
<div style="position:relative;padding-bottom:57%; margin-bottom: 10px;"><iframe src="https://gfycat.com/ifr/DifferentIgnorantAplomadofalcon" frameborder="0" scrolling="no" width="100%" height="100%" style="position:absolute;top:0;left:0;" allowfullscreen=""></iframe></div>
<h1 id="reception">Reception</h1>
<p>Precision Engineering released in May 2015 and sat at #1 most popular on the Workshop front page for almost a year. It currently sits at the #3 most subscribed mod of all time for Cities Skylines with over 500,000 subscribers, and continues to gain more each day.</p>
<p>I created a <a href="https://imgur.com/a/YGXHH">series of gifs</a> to show off the mod to potential users. This proved very popular, and inspired a trend that other popular mods followed.</p>
<p>Colossal Order implemented a very similar set of features into the base game in May 2017. This has slowed the flow of new users. However, since it does not implement the entire feature set of Precision Engineering, there are still over 1000 new users each day.</p>
<div style="position:relative;padding-bottom:57%; margin-bottom: 10px;"><iframe src="https://gfycat.com/ifr/FrighteningGlitteringAustralianfreshwatercrocodile" frameborder="0" scrolling="no" width="100%" height="100%" style="position:absolute;top:0;left:0;" allowfullscreen=""></iframe></div>
<h3 id="links">Links</h3>
<ul>
<li><a href="http://steamcommunity.com/sharedfiles/filedetails/?id=445589127">Steam Workshop Page</a></li>
<li><a href="https://www.reddit.com/r/CitiesSkylines/comments/37i4ls/release_precision_engineering_updated_guide_lines/">Reddit Release Thread</a></li>
<li><a href="https://github.com/Simie/PrecisionEngineering">Github Repo</a></li>
</ul>Precision Engineering is a mod for Cities: Skylines that adds snapping and measuring tools when placing roads, power lines, pipes, etc. Development Cities: Skylines is created with the Unity game engine. This makes it relatively straightforward to decompile the C# assemblies and investigate how things work. The game’s developers, Colossal Order, also provided a powerful mod API that allowed loading any C# DLL. I was able to dig deep into the road placement code to discover where I can hook in to display information to the user and enable angle snapping. Using a snippet of code provided by cope I was able to override the built-in methods used for road placement to implement custom snapping behaviour without modifying the game’s DLLs. Reception Precision Engineering released in May 2015 and sat at #1 most popular on the Workshop front page for almost a year. It currently sits at the #3 most subscribed mod of all time for Cities Skylines with over 500,000 subscribers, and continues to gain more each day. I created a series of gifs to show off the mod to potential users. This proved very popular, and inspired a trend that other popular mods followed. Colossal Order implemented a very similar set of features into the base game in May 2017. This has slowed the flow of new users. However, since it does not implement the entire feature set of Precision Engineering, there are still over 1000 new users each day. Links Steam Workshop Page Reddit Release Thread Github RepoSpace Game Prototype2017-05-20T00:00:00+01:002017-05-20T00:00:00+01:00https://www.simonmoles.com/projects/space-prototype<p>A story driven RPG inspired by EV Nova. This project was dropped in favour of <a href="/projects/nova/">Nova</a>.</p>
<div class="responsive-container">
<iframe width="1920" height="1080" src="https://www.youtube.com/embed/kVasxJhXBUY?vq=hd1080&rel=0" frameborder="0" allowfullscreen=""></iframe>
</div>A story driven RPG inspired by EV Nova. This project was dropped in favour of Nova.TypeSafe2017-05-20T00:00:00+01:002017-05-20T00:00:00+01:00https://www.simonmoles.com/projects/typesafe<h1 id="editor-utility-for-the-unity-engine">Editor Utility for the Unity Engine</h1>
<p>When developing in Unity you will inevitably end up having to hard-code various strings into your source files, for example when using resources, layers, or input. TypeSafe is a tool for automatically generating C# code with constants for the strings you would usually have as naked strings throughout your project.</p>
<!--more-->
<p>A simple example, <code class="highlighter-rouge">Resources.Load("SomeResource/WithALongPath/Name")</code> would become <code class="highlighter-rouge">SRResources.SomeResources.WithALongPath.Name.Load()</code>. If the resource is moved or deleted, your code will fail to compile and you will be immediately aware of the error. Without TypeSafe you will not detect the error until the code is executed at runtime, which may happen so rarely that you don’t catch the bug before releasing to users.</p>
<h1 id="development">Development</h1>
<p>After releasing SRDebugger I realised a large portion of support requests involved conflicts with existing user code or problems with importing. I therefore decided to attempt to avoid this with TypeSafe by distributing only a compiled .DLL with all non-public methods and classes inaccessible to the end user. As a result I have rarely had to deal with any of the issues that SRDebugger suffered from. This also allowed me to use C# 6, which was unsupported by Unity at the time, as it can compile to a CIL 2.0 compatible form that Unity accepts.</p>
<p>Another major difference to the development of SRDebugger is the focus on automation during the build and submission phase. A big obstacle to patching and releasing updates for SRDebugger was the lengthy process of packaging the product for shipping. This time I decided I wanted to be able to run a batch file and have a package created and uploaded in an identical way each time. Luckily, I found an <a href="https://github.com/thinksquirrel/asset-store-batch-mode">existing wrapper</a> for the Unity Asset Store Tools that allowed for it to be invoked from the command line. Once set up this has been an incredible time saver. I copied this system back to SRDebugger as soon as I could.</p>
<h1 id="reception">Reception</h1>
<p>People who have used the product have responded positively. It hasn’t been as successful as SRDebugger, possibly due to the more niche appeal. Nethertheless it has sold over 300 copies and has been featured a number of times in Unity promotions, including a “Sane and Sensible” sale that promoted assets to clean up your project and improve stability.</p>
<h1 id="links">Links</h1>
<ul>
<li><a href="https://www.stompyrobot.uk/tools/typesafe/">Product Page</a></li>
<li><a href="https://www.assetstore.unity3d.com/#!/content/35903">Asset Store Page</a></li>
</ul>Editor Utility for the Unity Engine When developing in Unity you will inevitably end up having to hard-code various strings into your source files, for example when using resources, layers, or input. TypeSafe is a tool for automatically generating C# code with constants for the strings you would usually have as naked strings throughout your project.Gravitional2017-05-01T00:00:00+01:002017-05-01T00:00:00+01:00https://www.simonmoles.com/projects/gravitational<h1 id="networked-party-multiplayer-prototype-game-for-mobile-devices">Networked party-multiplayer prototype game for mobile devices.</h1>
<ul>
<li>Status: Unfinished</li>
<li>Year: 2014-2015</li>
</ul>
<p>In Gravitational, the player controls a single planet in a crowded solar system orbiting around a bright sun.
The aim is to build up economy and buildings on your planet to fuel the war machine, massive interplanetary turrets that fling projectiles around the sun to hit your enemies.
Or yourself by mistake.</p>
<h1 id="links">Links</h1>
<ul>
<li><a href="http://stompyrobot.uk/games/gravitational/">Stompy Robot - Gravitational</a></li>
</ul>Networked party-multiplayer prototype game for mobile devices. Status: Unfinished Year: 2014-2015 In Gravitational, the player controls a single planet in a crowded solar system orbiting around a bright sun. The aim is to build up economy and buildings on your planet to fuel the war machine, massive interplanetary turrets that fling projectiles around the sun to hit your enemies. Or yourself by mistake. Links Stompy Robot - GravitationalSRDebugger2015-02-07T00:00:00+00:002015-02-07T00:00:00+00:00https://www.simonmoles.com/projects/srdebugger<h1 id="console--tools-on-device-for-unity-games">Console & Tools On-Device for Unity Games</h1>
<p><img src="/assets/images/project_srdebugger/banner.png" alt="Banner" /></p>
<h1 id="motivation">Motivation</h1>
<p>One of Unity’s primary advantages is fast iteration. Unfortunately, this advantage doesn’t apply when deploying and testing on mobile platforms. The long export and deployment times can make tweaking values on mobile excruciatingly slow. While working on Unity games for iPad at Tigerface Games I encountered issues like this nearly every day:</p>
<ul>
<li>Bugs or errors while demoing the game and no debug log available.</li>
<li>Wanting to demonstrate some feature, but the feature is behind a locked level.</li>
<li>Tweaking parameters would take ages due to slow export + deploy.</li>
</ul>
<p>I created SRDebugger as an attempt to fix all of these issues.</p>
<h1 id="development">Development</h1>
<p>SRDebugger began as the debug panel for my own <a href="/projects/nova/">iPad game</a>. As I added more features, I began to realise this would be a useful product for other developers. My time working with Tigerface Games on their projects solidified this belief. I started to refactor the code to make it suitable for importing into other projects, and created a new game-agnostic UI.</p>
<p>SRDebugger was released on the Unity Asset Store in February 2015. It received favourable reviews from customers and continues to sell well to this day. I continue to improve and add features based on user feedback.</p>
<h1 id="features">Features</h1>
<p>SRDebugger is structured so that the monitoring systems can execute without the UI being loaded. This loose coupling enables SRDebugger to have a minimal performance footprint when not in use, but it can be brought up at a moments notice when required. This was an essential requirement for including SRDebugger in all builds of a product.</p>
<p>The Options panel is my personal favourite feature. It makes it incredibly easy to tweak the <em>look and feel</em> of a game by pinning a property to the screen and adjusting it on the fly. I’ve used it for calibrating touch control sensitivities and animation speeds. It can also trigger methods, in my case I have commands like “Win Battle”, “Reset Battle”, “Give Money”, to quickly reach the part of the game I need to test.</p>
<p><img src="/assets/images/project_srdebugger/options_usage.gif" alt="Options Panel Example" />
<em>The options panel can tweak gameplay parameters and execute methods.</em></p>
<p>Another major aim for SRDebugger was for it to be “plug and play”. I wanted the user to be able to import the plugin and be up and running in minutes. On the first import, a quick guide will appear telling the user how to access SRDebugger in their game. The next time they run their game, SRDebugger is ready to go. The runtime console uses the built in Unity log callback to retrieve the debug logs output by the standard Unity <code class="highlighter-rouge">Debug.Log()</code> method. The user doesn’t have to change any of their logging code to start using SRDebugger.</p>
<p><img src="/assets/images/project_srdebugger/welcome_screen.gif" alt="Welcome Screen Example" />
<em>The welcome screen greets new users and explains how to get started.</em></p>
<p>The built-in bug reporter component communicates with my API server to forward the console log, (anonymised) system info, user email, message, and a screenshot of game to the developers email address. The reporter can be accessed from the panel or brought up with the SRDebugger API. This way the developer does not have to grant access to the entire debug panel to allow their users to report bugs. As browsing long logs on a touch device can be tedious, I use this service internally to send the console log to my PC where I can search and filter it as required.</p>
<h1 id="reception">Reception</h1>
<p>I was very fortunate to have a few very enthusiastic customers on my first day of release. Their great feedback and bug reports really helped the product get some momentum. A few months after release I was asked by Unity to include SRDebugger in their second “Level11” sale for Unity Pro subscribers. This steep discount propelled SRDebugger onto the front page for a number of weeks and led to a great number of positive reviews and purchases by non-Level 11 users.</p>
<p>Since then there has been a steady stream of sales, usually keeping SRDebugger on the first page of the <em>Scripting/Other</em> category on the Asset Store. Further sales and promotions by Unity have led to a few very good months for SRDebugger.</p>
<p>As of May 2017, SRDebugger has sold over one thousand copies and has over one hundred reviews on the Asset Store.</p>
<h1 id="challenges">Challenges</h1>
<p>The design aspect of the project was challenging for me. Creating a design for the panel, marketing materials, documentation, and website was significantly more time consuming that I had expected. The actual development of the debug panel turned out to be the easiest part of the project. However, I am pleased with the end result and subsequent updates to the product have been much faster now I have an established design style and company website. I am especially happy with the SRDebugger <a href="https://www.stompyrobot.uk/tools/srdebugger">product pages</a> with the auto-play video in the header demonstrating each main feature of the panel.</p>
<p>SRDebugger uses the new Unity UI system that was introduced in Unity 4.6 and Unity 5.0. Supporting older versions of Unity has made it hard to adopt the latest features, and workarounds have been required for changes in the API in later versions.</p>
<h1 id="links">Links</h1>
<ul>
<li><a href="https://www.stompyrobot.uk/tools/srdebugger">Product Page</a></li>
<li><a href="https://www.assetstore.unity3d.com/en/#!/content/27688">Asset Store Page</a></li>
</ul>Console & Tools On-Device for Unity Games Motivation One of Unity’s primary advantages is fast iteration. Unfortunately, this advantage doesn’t apply when deploying and testing on mobile platforms. The long export and deployment times can make tweaking values on mobile excruciatingly slow. While working on Unity games for iPad at Tigerface Games I encountered issues like this nearly every day: Bugs or errors while demoing the game and no debug log available. Wanting to demonstrate some feature, but the feature is behind a locked level. Tweaking parameters would take ages due to slow export + deploy. I created SRDebugger as an attempt to fix all of these issues. Development SRDebugger began as the debug panel for my own iPad game. As I added more features, I began to realise this would be a useful product for other developers. My time working with Tigerface Games on their projects solidified this belief. I started to refactor the code to make it suitable for importing into other projects, and created a new game-agnostic UI. SRDebugger was released on the Unity Asset Store in February 2015. It received favourable reviews from customers and continues to sell well to this day. I continue to improve and add features based on user feedback. Features SRDebugger is structured so that the monitoring systems can execute without the UI being loaded. This loose coupling enables SRDebugger to have a minimal performance footprint when not in use, but it can be brought up at a moments notice when required. This was an essential requirement for including SRDebugger in all builds of a product. The Options panel is my personal favourite feature. It makes it incredibly easy to tweak the look and feel of a game by pinning a property to the screen and adjusting it on the fly. I’ve used it for calibrating touch control sensitivities and animation speeds. It can also trigger methods, in my case I have commands like “Win Battle”, “Reset Battle”, “Give Money”, to quickly reach the part of the game I need to test. The options panel can tweak gameplay parameters and execute methods. Another major aim for SRDebugger was for it to be “plug and play”. I wanted the user to be able to import the plugin and be up and running in minutes. On the first import, a quick guide will appear telling the user how to access SRDebugger in their game. The next time they run their game, SRDebugger is ready to go. The runtime console uses the built in Unity log callback to retrieve the debug logs output by the standard Unity Debug.Log() method. The user doesn’t have to change any of their logging code to start using SRDebugger. The welcome screen greets new users and explains how to get started. The built-in bug reporter component communicates with my API server to forward the console log, (anonymised) system info, user email, message, and a screenshot of game to the developers email address. The reporter can be accessed from the panel or brought up with the SRDebugger API. This way the developer does not have to grant access to the entire debug panel to allow their users to report bugs. As browsing long logs on a touch device can be tedious, I use this service internally to send the console log to my PC where I can search and filter it as required. Reception I was very fortunate to have a few very enthusiastic customers on my first day of release. Their great feedback and bug reports really helped the product get some momentum. A few months after release I was asked by Unity to include SRDebugger in their second “Level11” sale for Unity Pro subscribers. This steep discount propelled SRDebugger onto the front page for a number of weeks and led to a great number of positive reviews and purchases by non-Level 11 users. Since then there has been a steady stream of sales, usually keeping SRDebugger on the first page of the Scripting/Other category on the Asset Store. Further sales and promotions by Unity have led to a few very good months for SRDebugger. As of May 2017, SRDebugger has sold over one thousand copies and has over one hundred reviews on the Asset Store. Challenges The design aspect of the project was challenging for me. Creating a design for the panel, marketing materials, documentation, and website was significantly more time consuming that I had expected. The actual development of the debug panel turned out to be the easiest part of the project. However, I am pleased with the end result and subsequent updates to the product have been much faster now I have an established design style and company website. I am especially happy with the SRDebugger product pages with the auto-play video in the header demonstrating each main feature of the panel. SRDebugger uses the new Unity UI system that was introduced in Unity 4.6 and Unity 5.0. Supporting older versions of Unity has made it hard to adopt the latest features, and workarounds have been required for changes in the API in later versions. Links Product Page Asset Store Page