Crossposted on App Goodies
The beginning of Tutorial Master goes back when my latest game was going through the polishing process. The idea has come to my mind when I have realized that Sticks and Circles lacked a tutorial. With never-seen-before gameplay, I had to explain my playtesters how to play the game, forgetting about how my final audience is going to understand the gameplay.
Nevertheless, it hit me during the polishing process of the game. With no further though I have created a quick tutorial of the game, which basically consisted of a slideshow with animated images, allowing the player to go back and forth between them. The whole system has taken few days to be designed and implemented and it worked like a charm! I was really proud of it at that time.
You thought that it was a good idea, right?
Nobody even bothered to read through the tutorial and, as a result, people would just jump right into the game only to quit because they were overwhelmed by new and unknown mechanics, leading to an almost instant rage quit! Ouch…
I don’t blame then, I would’ve probably done the same thing if I ever had to read through the boring PowerPoint-like slideshow instead of learning on the fly. Developing Sticks and Circles was an experience, it didn’t meet up to my expectations, and, as a result, was a major flop.
Sticks and Circles aside, I realized that for the game of my type (new and complex) an interactive tutorial was needed. I have considered doing an interactive tutorial or Sticks and Circles, but it would’ve taken me too many days and I really wanted to finish it by the end of summer. Looking through the Asset Store, I couldn’t find anything which could’ve fit my needs of creating interactive tutorials for my game. That was when I saw an opportunity – a potential market!
That was when I saw an opportunity – a potential market!
I had experience creating editor extensions but never used it for something big and serious. In fact, the closest thing to that was when I wrote a detailed article on editor extensions a while ago. But this time, I was making my very own Editor Extension for real, with a goal of making it usable not only for me, but for other developers as well!
I have decided to improvise, tweaking my workflow along the way. My game-making experience has been really helpful during the development of the Tutorial Master.
With an idea in mind, I began brainstorming the overall workflow of the Tutorial Master: e.g how the developer is going to create a tutorial and how could it be done, what features am I going to include in the future and what features am I going to develop now etc.
Word of advice: don’t touch your keyboard without a plan sketched out.
You can use whatever you want for planning – drawing is better because you can iterate potential GUI faster than coding and compiling the program all the time. I would imagine how would my UI work through drawings I make.
With planning stage behind, I have started preparing my development environment. I have created a separate Unity project along with a repository using the SourceTree. Repository changes were then regularly uploaded to BitBucket, which I highly recommend. Feel free to read this article if you wish to set it up for your own projects in the future.
Version control saved my projects dozen times from corruption, viruses, and accidental deletions. It has also freely encouraged me to try out new ideas and features that could be easily discarded if they weren’t usable. While version control can be added to your projects in the future, it’s highly recommended to be added before you even start programming.
My previous projects have relied on physical notepads where I features and items and I’m planning to implement and add. For this project, I have decided to try something new.
Trello’s board system made my project tracking and management much easier and less of a chore. I have used it mainly to track what features I am yet to add, bugs to fix and things to do. It also gave me an approximate picture of the project, which was highly motivating.
I highly recommend Trello for tracking the project progress even if you’re working alone on a project.
While I didn’t go with a different code editor, it still doesn’t hurt to mention it. I have used Visual Studio Community 2015, which is a complete monster and was an absolute overkill for my project! Nevertheless, its auto-completion and refactoring features were really handy during the production as (for example) I could simply edit variable names or even jump to the line of code where it was defined! There are probably other text editors that are more lightweight and are with similar features but try to find something that’s so closely integrated with Unity (for real, if you know of any, let me know in the comments).
The only downside is that it creates .sln and .csproj files which add up additional clutter to your project files.
I have finished my planning, chosen my tools and now I can get down to the coding bit!
While this was the biggest and most crucial step in the creation of the Tutorial Master, I would like to skip the details and concentrate on problems that I’ve come across.
Programming bit was going smoothly: I have created a plan on how my plugin was going to work. Tutorial Master is the most complex piece of software I have worked on yet and a single process can take a dozen steps. To simplify the process I have broken down existing steps into smaller/easier tasks.
For example, one of my tasks was to create a system that would edit text based on user’s input. Here are approximate steps:
- Look at user’s data
- Apply it on text UI
This is what I had before, and to be frank, it was hella confusing – I had no idea how to initiate a first step (how do I load user’s data). The solution was to break it down. This is what I got:
- Look at user’s data
- Looks at current id
- Look up the text data
- Retrieve it
- Apply it on the text UI
- Get the text data
- Find user specified text UI
- Access its text setting
- Set text to text data
Overall lesson: break down complex steps into smaller ones to get an overall picture of what part of your code is going to do.
Rewriting the Code
Regardless of hours spent planning Tutorial Master workflow, everything started becoming more and more cluttered. While it would’ve been OK when making games (not the case if you’re working with other programmers), this is a piece of software that other developers are going to use and modify for their own projects.
The solution – start from the beginning. I would take on scripts one by one, moving and removing code where applicable. For example, a single script was handling all effects (e.g arrow floating, fade-in etc.) It was insane! To solve the problem, I have created separate scripts for easier management. This has made my life a lot easier in the future and I would strongly recommend using such technique for large projects.
During the course of the development of Tutorial Master, I would do small re-writing of particular scripts. E.g, at one point, for my Custom Inspector, I have organized code by functions, this allowed me to easily manage and reorder GUI blocks just by simply changing the order of functions called.
Many developers would find bug fixing as a difficult and a tedious task. For me, bug fixing was an interesting part of the development of Tutorial Master. I saw myself as a detective, investigating the case (code), trying to find the murderer (bug). I would follow the trail of the bug, by Debug.Log()-ing specific parts of the code. I like solving problems and fixing bugs were one of my favorites.
I will write in more detail on how I handle bug fixing somewhere in the future but until then, let’s go to the next stage of my postmortem.
Sharing the Progress
I’ve been working on Tutorial Master for several months at that point and finally decided that it was ready to be presented to the public. I have created a video demonstration of how I was able to create an interactive tutorial. I have created a thread on Unity Forums, announcing a beta of Tutorial Master, describing its features and my demonstration video. I have also shared an article on Reddit, which is one of the websites I recommend sharing your work if you want to receive an honest feedback and gain a lot of exposure.
Video demonstration was good, but it would’ve been even better if my potential customers would see how the final product of Tutorial Master works. With that in mind, I have decided to write a separate game mechanic for the sake of demonstration. A functioning Inventory System!
It has taken me about a week to write an entire inventory system. It wasn’t perfect, but it was working. Mind you, the Tutorial Master itself has taken me less than an hour to integrate into the inventory system.
You can see the interactive tutorial in works below. www.googledrive.com/host/0B0w1bVu4dzWYMWJXeldTbEd2REk/">Or you can play the WebGL Demo.
It’s always best to have some sort of live demo your potential customers can check before they buy. The more they see it in action, the more likely they’ll buy it.
In the next part of my story, I’m going to talk about how I handled BETA testing, created images, screenshots and tutorial videos for Asset Store page and why Tutorial Master was declined the first time. I will also talk about my long-term commitment to the project such as pishing out the updates, handling customers support and lots more.
Feel free to discuss in the comment section down below!