The author of Blender Market staples like Render+ or Enhance Nodepack, Diego is a Blender developer who not only makes incredibly cool stuff, but also sells a lot of products. His recent landscape suite Mirage sold more copies in the first day of its launch than any other third-party vendor has done in the history of Blender Market and it continues to receive rave reviews from excited customers. How does he do it and what can you learn from him? We asked Diego to share his process, from the design of a new addon to taking customer feedback. In his own words, here is how he creates his magic - and how you can do it, too.
Stage One: The Design Phase
The first step is to figure out what to make. This is mostly up to everyone's muses, but there are a couple of ways to figure out a feasible addon idea:
- Think of a feature you personally want
- Find something (addon or feature) from another software that Blender lacks
- Create a better workflow for a specific task
- Roam the forums looking for user complaints and requests
In any case, I'd recommend always create something that you will be using. Using your own addon will help you spot issues and come up with improvements faster, and be more in tune with what users want. This is often called "eating your own dog food" (or dogfooding).
Coming up With Mirage
For Mirage, the idea came from a C4D plugin I found, which allows you to download real-world data and build terrains and cities. “How cool would it be to have something like that in Blender?” I thought. Eventually, I decided that what I really wanted was a complete solution: an addon that would make landscaping quick and easy, like the 3D softwares I used to play with when I was a kid (do you remember Terragen, Vue, Bryce, and others?).
Scope it Out
Once you have an idea of what you want to create, you need a tentative list of features. Even if it's mostly abstract, you need to start deciding what goes in and what doesn't. In other words, the scope of your addon.I suggest you keep a notebook for ideas and lists. I also use it to make diagrams when figuring out a complex implementation in the future. In my case, I ended up pushing Mirage's initial feature to the future for several technical reasons but kept the landscaping suite idea. As you see, the process involves refining ideas and cutting things out.
Time to start pumping out code, right? Not so fast.
Let’s step back first and take some time to do your research. If you're going to use algorithms, this part is crucial. Try to find if other people have done what you're trying to build, and how they did it. Look for libraries that might make your work easier, and don't forget to save code snippets you find related to your work (even if they are in another language). Look around places like Blender API Reference, Blender Exchange and the scripting forums in BlenderArtists. I keep a bookmarks folder in Firefox and save text files with bits of code scraped from around the web. You can also use a wiki if you're using GitHub or Bitbucket.
Let’s Prototype It!
Finally, after doing your research, it’s time to work on a prototype. This is just a script written inside Blender to test out the basics of your addon. Prototyping early on lets you test the limits of the Blender API, find potential issues and try different solutions.
Create a Roadmap
Next, before you dive into full-on development, it’s handy to define a roadmap. This is a simple list of feature targets for the first and second versions. I also like to separate features into two groups: must-haves and nice-to-haves. The latter are less important features or tweaks that can be delayed, while the former are absolutely required to release.Your roadmap should include a deadline for your first version. This will help you to stay focused and it gives you a completion date to look forward to during your long sleepless sessions. Don't be afraid to push back features if it helps you hit or stay closer to the deadline (remember, your nice-to-haves can wait!).The more research you do beforehand, the more accurate your deadline will be. However, when you are doing something completely new (like algorithms) it will definitely take longer than you think. I originally estimated Mirage to be done in about 3-4 weeks; it ended taking a little over a month, even with pushing features for future versions. Never underestimate Hofstadter’s Law.
Stage Two: On to Development!
First things first: before you start writing code, set up a few folders and the Git repository. Using a VCS like Git or SVN is an absolute necessity if you want to keep the hair on your head. Why? It will let you roll changes back, keep separate branches for stable and development versions and keep you more organized. There are two kinds of addons in Blender: Single file and multifile. I recommend always using multi-file, unless you're working on a really small script. Files with more than 3,000 lines can be a nightmare to navigate, so it's better to split them up in several files. Remember: users will ask for new features and there will be bugs to catch, so your code will grow. I like to keep the Git repo in the addon directory, then add a shortcut to it in a separate folder. I keep .zip files (releases) and sales materials in that folder. I also keep the documentation inside the Git repo, mostly because I'm lazy and don't want to maintain two repositories.
Tracking Your Progress
At this point, I also start using a proper tracker to stay on top of bugs, tasks and general progress towards 1.0. I like to use GitHub, but you can use any other system or application that lets you classify and document tasks. When coding, I like to work like a painter. Go from the general (or big blocks) and gradually progress towards details. For instance, in Mirage I developed basic terrain generation first. Only when the code was solid and I was happy with how it was organized, I started adding features like sea level clipping, Z Scale or Autoseed. Later on, I went back to them to add tooltips, input ranges and improve error checking.
The Golden Rule of Addon Development
Rinse and repeat, the process for both individual features and the overall addon is this: Make it work first. Then make it work safely (prevent errors/bad input). Then make it work fast. When working on a complex piece of code I like to break it down into steps. Then write the steps as comments in the function body, and then go one by one writing the relevant code below them.
Mimic Human Language
When writing code, I like to be as expressive as possible. Expressiveness refers to how close to how much code reads like a human language. The more your code reads like common text, the easier it will be to understand. Remember, one of the strong points of the GPL is your freedom to study and learn: write your code thinking that someone else will read it and you won't be there to explain. It’s quite likely that it’s going to be you in 6 months.
The Final Step
You're not done with development until you’ve written a user manual. I recommend Sphinx, which is what the Blender manual uses. You can avoid writing HTML/CSS manually and export it to PDF and other formats if you want.
Stage Three: Getting It Out There
Now you have to convince people that your addon is worth their money. There are three keys to achieving this:
- Look professional
- Build Trust
- Highlight what makes your addon useful
The first step to looking professional is picking a brand name. I can't offer much advice on this, but thesaurus and synonym dictionaries can be really useful. The most important part of the name is that it is uniquely recognizable and appealing. It has to be related to your addon, but don't try to cram tons of meaning in. You do that in the tagline. Having a logo and a coherent visual identity will also make you work look more polished. I use Inkscape to create the logo, then I make a template in Krita for the sales images. You can also use Blender if you're going for a more 3D look. If you're not an artist or a designer, you can get templates for cheap or even free on the web or even hire someone to do them for you, but keep in mind that it will take more sales to recoup the cost of making the addon.
The main venue for building trust is making a name for yourself doing amazing work and providing quality support. But before that, you have your sales text. I like to write my sales text in a consistent way. I'm not a good writer, so having a structure really saves time. I start with a short intro paragraph explaining what the product does and why it's useful. This is a good place to hammer on what makes your product different or better than others.
Highlight What Makes Your Addon Useful
Next, I list the features in detail. I usually group this section under 3 to 5 headers. Long lists don't work really well for attention and retention spans, especially in the age of TL;DR. If I can’t show all the features in those headers, I group the remaining ones under a different section. Remember to talk to the buyer, explain what that feature will do for them, why it's useful. Try not to sound like a robot or someone just listing things, while avoiding being overly pushy like a cartoonish second-hand car dealer. I also like to include targets for next release in my sales page, which helps buyers know where the addon is heading, and that it will get updated. Another great sales strategy is called risk-reversal. This implies reducing the perceived risk of the purchase. The market has a great refund policy, put it in front of buyers to make it feel less risky and increase the chances of a sale.
How Much Should It Cost?
First, you need to recoup the costs of creating your addon, whether it's your time, buying courses/books, or work from a third party. You also want to have a decent income to continue working on the add on. Before you write a six-figure number, remember that you can only charge as much as the market (potential customers) will bear. Keep in mind who you are selling to: the professional user base in Blender, it is not as large as in other softwares, so prices will usually have to be lower. Remember to accommodate for hobbyists when you are setting a price. If you're unsure about the price, don't worry; the Blender Market team can help you out while reviewing your product.
Share it With the World!
The final step is to set a launch date. According to studies, Tuesdays and Wednesdays are the best, followed by Thursday. By Friday, everyone is too busy thinking about the weekend, and Mondays are just horrible. Also be aware of other important releases and events in the community. Don't launch during BConf! Remember to set some time aside during your launch day to promote your work on social media, blogs, and other channels. Don't forget Blender specific sites like BlenderNation, Blender.Today, Blenderartists and CGCookie Community.
This is one of the toughest parts. In addition to the support forums, offer an email address upfront to build trust with buyers. It doesn't have to be your main address, but it has to be an inbox you check several times a day. Have your email app or site highlight these kinds of emails so you can respond quicker, too. Aim to fix bugs as quickly as you can. You never know when someone is working on a deadline and how much they might depend on your addon. Always keep a professional tone and stay cool, don't vent on your customers.
And there you have it! From conception to promotion, Diego’s process of addon development is structured, clutter-free and customer-focused. And what is your next bestseller going to be?