The Unity Asset Store

As always, RivelloMultimediaConsulting.com/unity/ will be the central location for deep articles and tutorials, Facebook.com/RivelloMultimediaConsulting (like us!) will engage the growing RMC+Unity community, and for the latest opinions and cool links follow me at Twitter.com/srivello.

Unity3D is a powerful suite of tools (Project IDE, Code IDE, run-time) for game development.

A fantastic way to accelerate Unity & C# learning, empower development, and even make some money using the Unity Asset Store.

Asset Store

The Unity IDE offers an Asset Store. If you haven’t yet familiarized yourself with the Asset Store, this is the best time to dive in.  You’ll find nearly everything a game developer could wish for– complete template projects, models of every shape and size, countless textures and materials, an extensive set of code libraries, hours of professional music and sound effects, and a broad selection of editor extensions to bring new functionality to Unity.  Best of all, we’ve gone out of our way to make sure that these offerings are both affordable and covered by a common, easy-to-use license without legal complexities such as royalties.

I think of the store like a (sometimes free) bag of temporary art while I work. More rarely, when tackling a technical challenge I check the store to see if another developer has solved my needs and created a code library. The naming for an asset store ‘item’ doesn’t seem standardized, but when I say 3rd party code-library, package, or plugin I mean the same thing. I mean a collection of code or visual/audio art which augment the IDE itself and/or enable richer development.

Something remarkable, and quite different than the Flash community, is that these packages can actually add functionality to the Unity3D IDE itself. New first-class menus, panels, UI Gizmos, etc… It is truly amazing.

To see our work, You can checkout all of the AssetStore packages we at RMC have created for some examples and then continue reading below to learn an overview about the store.

Unity Technologies, the creators of Unity3D share the revenue from every paid purchase made. My opinion is that this revenue stream for the company helps them support the free version of Unity. More developers using Unity creates a larger pool of asset store contributors and purchasers.

Finding Asset Store Content

asset_store_best_rmc_in_post_banner_v1

From within the Unity IDE (Menu -> Window -> Asset Store) or through your web browser online you can shop in the store. Search by product name or developer name, see featured items, or simply browse based on popular categories.

Categories Include;

  • 3D Models
  • Animation
  • Audio
  • Complete Projects
  • Editor Extensions (My Favorite!)
  • Scripting
  • Textures
  • & Much more…

To research this article, I scoured the community thoroughly, interviewed top developers on their favorites, and tested out many plugins to build the definitive list of the best asset store content for developers. Here is are the Essential Unity3D Plugins / Packages. All are compatible with both free and pro versions of Unity.

But who is it that is making this great content? Well, there are many prolific contributors.

Asset Store Contributors

As successful developer Daniel Sklar of ProfiDevelopers explains, the Asset Store is successfully being used all over the world. After many years in game development, his team has gained a lot of experience which they pass on in the form of well designed assets. Greener teams can save time and money by using existing content.

 asset_store_banner_case_studies_rmc_in_post_banner_v1

In my Unity Asset Store Case Studies article, several veterans discuss their success with the store.

Unity Partnerships

More recently, Unity Technologies has partnered with asset store contributors to market some key packages. These projects may be developed outside of the core company but get favorable promotion, marketing, and exposure.

Popular Unity Partnership Packages

  • Everyplay! is a newer addition to the store. This innovative service is a complete solution for monetizing, acquiring and engaging users. Everyplay enables users to share their best gaming moments directly from within the game as video!
  • With Kii, game developers get a fast and scalable back-end, powerful analytics and game distribution services, so they can focus on the stuff that matters — the game experience.
  • GameAnalytics automatically takes care of all the basic tracking/analytics needs for your game. All you have to do is interpret the results.
  • PaeDae is how you monetize your game with in-game advertising without breaking its cohesive gameplay experience.

Unity 1st Party Packages

As developers we typically see new features added to the Unity tool itself. You download the latest version of the IDE and checkout the release notes to see what new features are available. However, a second way for Unity Technologies to distribute non-essential functionality is through the asset store. These 1st Party Packages include complete game projects, assets for learning how to use Unity, as well as for testing your existing projects.

Popular 1st Party Packages

Selling Asset Store Packages ($$$)

For years, insiders have know that Unity Devs can make a living from Asset Store. The Unity development community is now larger than ever. Larger audience = larger earnings.

An inspiring article on the Unity Blog explains how we can all Pay for our Indie games via Asset Store work. Although it isn’t easy, making a living through the Asset Store has been possible for at least two years. It all depends on your expenses, the appeal and pricing of your product, the competition, your skills and what you are willing to sacrifice (more on that later).

Using Asset Store To Fund Your Indie Game

  1. Stay alive by some means during the early days. Game design consulting was ideal for me. I could do it one day per week.
  2. Design your game early on to know its technical needs and requirements (later you will want to identify all kinds of synergies in order to minimize cost).
  3. Build some game generic features or content that will be part of your game. Make these modular and possible to “productify”.
  4. Sell your content in the Asset Store and use the earnings to fund your game.

phpOQ9GajAM1

This approach has many benefits:

  • Starting making revenue DURING the production of your game.
  • Learning opportunities: Support, business and economics, marketing strategies, teamwork, collaboration, etc…
  • Network with other Asset Store developers
  • Encourage modularity in your codebase
  • You may FIND existing Asset Store packages that save you time.

Promoting Asset Store Packages

Maybe you’ve created a great 3D model or an editor extension for Unity, but now it’s sitting at the Asset Store shelves and gathering dust. What can you do to sell more and fund your game and your life with your awesome asset? A few really successful publishers have shared their promotion tips and we cooked them up into this advice.

Here are the 10 commandments of asset promotion

  1. Plan  : Keep your audience notified of milestones and updates to maximise interest and retention
  2. Make demo videos : We love videos to learn quickly what your package does and why its great.
  3. Find out where your customers are : You can’t promote everywhere, so make your effort count.
  4. Use Forums : There is already a special place to interact with your audience.
  5. Tweet : Promote virally. Include a URL too.
  6. Sign up for 24 Hour Deals : Apply for additional promotional power via Unity Technologies.
  7. Tweak your Pictures : Your promotional pictures (text-copy, etc…) should be clear, concise, and attractive.
  8. Consider paid campaigns on Google and Facebook : These networks are cheap provide fast metrics.
  9. Consider time zones : You capture a wider ad market when users are awake and at their computers.
  10. Stay involved : Harness the power of feedback loops with your existing/potential audience.

Great! After you launch you can promote your work and easily embed your asset store package into websites like this;

unity_asset_store_sample_embed_v1

My Asset Store

In my 13+ years as a pro game developer, community involvement has always been important. Involvement in groups, conferences, and open source projects helps me stay connected, teach, and learn new things. Its for these reasons, more than just profit that I’m interested in the Unity Asset Store.

Here are the in-progress diaries of a few packages.

  • uMOM – Unity Manager of Managers, game framework (link)
  • uEventDispatcher – Unity messaging/observer framework (link)

Others of our work are complete and live.You can checkout all of the AssetStore packages we at RMC have created and then explore the case studies below from 3rd-party developers.

I encourage everyone to get involved as a consumer and potential contributor to the asset store. It is an incredibly powerful way to take advantage of the powerful community around Unity.

GDC 2014 – San Francisco

GDC_banner_v1Game Developers Conference 2014

After years of consulting success, I am shifting goals for the next phase of my career.

I am now actively seeking a full-time position as a Unity3D Game Developer. 

I have deep experience in game development; more than 13 years of professional work. I absolutely live and breath gaming. I love it. I have much to offer my next team — everything from game concept creation and development, through to launch — and I am very excited! Here you can learn about my skills and experience ( RivelloMultimediaConsulting.com/forecast/ ) and contact me ( RivelloMultimediaConsulting.com/contact/ ) to setup a time to talk — before, during, or after GDC.

1. GDC Goals

  • Geek Out! – As a lifetime video game fantastic, I am incredibly psyched to see some great sessions about my favorite games of 2013/2014.
  • Promote New Opportunities — I am seeking a Unit3D Game Developer position. There are so many bright teams creating with passion and innovation.
  • Connect to the community — While American, I have worked internationally for many years.
  • Plug-in to the presenter-scene — I’d like to get a feel for who is talking, how, and about what subjects. My focus is mobile. And the mobile space, while growing, it is still marginalized at GDC. As an experience public speaker (360|Flex, Adobe Max, Adobe Camp Brazil, FlashForward, FITC, LA Games Summit, Montreal Game Summit, RIA Adventure Cruise, Rich Media Institute, … ) I would like to speak at GDC 2015 and Unite 2015 next year. There are some session I will attend — more to experience the speaker himself/herself than to see the content.

2. GDC Social Schedule

I’m excited to meet new contacts and reconnect with old friends during GDC. Outside of the conference sessions, I’m excite to block out time for more fun.

Are you hiring? Want to to talk about great video games? Or just explore amazing San Francisco?

Update: The event has ended. Thanks to all the great people I met.

Suggested Meeting Places GDC is huge and it can be hectic to meet on site. Here are a few nearby locations within walking distance of the event’s Mosocone Center. Note that 20,000 people attend GDC and everyone needs to eat. Long delays! Also, some of these businesses have multiple locations, so the address is included.

3. GDC Maps

GDC_Moscone_MAP_v1
Figure 1. Moscone Street Map
Figure 2. Moscone South Hall Map
Figure 2. Moscone South Hall Map
Figure 3. Moscone North Hall Map
Figure 3. Moscone North Hall Map

4. GDC Session Schedule

This year’s conference is full of great sessions about AAA and mobile gaming goodness. Here are some topics of special interest.

Unity3D MVCS Architectures: StrangeIoC 2

Unity3D is a powerful suite of tools (Project IDE, Code IDE, run-time) for game development. In Unity3D Game Architectures I present six different techniques for setting up your game. Depending on the size and maturity of your team, you are probably doing some form of those. I recommend checking that article out first, then read below. In Unity3D MVCS Architectures: StrangeIoC (recommended reading before continuing) we dove deep into the great, free framework. I also explored an idea I had for an extension called PropertyChangeSignal. Here is more;

PropertyChangeSignal

To aid my work with StrangeIoC, I created a few classes that function together to reduce the workload. I call this the PropertyChangeSignal. Again we saw above that signals are used for many things. Speaking from a model’s perspective for every property (variable) you want to update in your model you may need SEVERAL signals. That is fine in my demo above with exactly one property, but imagine a ScoreModel with 5 variables, a TimerModel with 3, and a GameLogicModel with 25 more variables. You can quickly grow a HUGE list of signals. Now, creating a signal is super quick. It takes 30 seconds to create, and another 30 seconds to optionally bind it to a Command. Its certainly possible to grow your app in this conventional way (or some variety of this conventional way). Most people do exactly that. But I wanted a start a discussion on a different way.

Here is an example.

Let’s say we have a public message string in your data model and the whole app needs to interact with it.

A. Conventional Signals Per Property (4)

  • 1. requestMessageSignal.Dispatch() – If a mediator arrives on the scene late and wants to KNOW the current value of message.
  • 2. clearMessageSignal.Dispatch(targetValue) – If a command wants to CLEAR the current value of message.
  • 3. updateMessageSignal.Dispatch(targetValue) – If a command wants to SET current value of message.
  • 4. updatedMessageSignal.Dispatch(newValue) – After any updates happen, the model sends this out to those listening who can GET the value.

B. PropertyChangeSignals Per Property (1)

  • 1. pcSignal.Dispatch (new PropertySignalVO(PropertyChangeType.REQUEST) )
  • 1. pcSignal.Dispatch (new PropertySignalVO(PropertyChangeType.CLEAR) )
  • 1. pcSignal.Dispatch (new PropertySignalVO(PropertyChangeType.UPDATE, newValue) )
  • 1. pcSignal.Dispatch (new PropertySignalVO(PropertyChangeType.UPDATED, currentValue) )

So in B, we see far less signals used (1 vs 4), but an longer syntax for the call. Soon I’ll request your feedback based on the source-code.

Update:  Download the full source below.

Syntax Example

1. CONTEXT – SETUP BINDING

[actionscript3]

commandBinder.Bind<GameListPropertyChangeSignal>().To<GameListPropertyChangeCommmand>();

[/actionscript3]

2. COMMAND – HANDLE BINDING

[actionscript3]
public override void Execute()
{

switch (propertyChangeSignalVO.propertyChangeType) {

case PropertyChangeType.CLEAR:
//ASK TO CLEAR THE MODEL
iCustomModel.doClearGameList();
break;
case PropertyChangeType.UPDATE:
//ASK TO UPDATE A VALUE IN THE MODEL
iCustomModel.gameList = propertyChangeSignalVO.value as List<string>;
break;
case PropertyChangeType.UPDATED:
//FOR THIS PROJECT, THE VIEW LISTENS DIRECTLY TO ‘UPDATED’
//OPTIONALLY, WE COULD ALSO DO SOMETHING HERE IF NEEDED
break;
case PropertyChangeType.REQUEST:
//FORCE THE MODEL TO RE-SEND ‘UPDATED’ (WITH NO CHANGE)
//THIS IS VERY COMMON IN APPS (E.G. A TEMPORARY A DIALOG PROMPT)
iCustomModel.doRefreshGameList();
break;
default:
#pragma warning disable 0162
throw new SwitchStatementException(propertyChangeSignalVO.propertyChangeType.ToString());
break;
#pragma warning restore 0162

}

}

[/actionscript3]

3. MODEL – DISPATCH CHANGES
[actionscript3]
private List<string> _gameList;
public List<string> gameList
{
get
{
return _gameList;
}
set
{
//TODO: CONSIDER ALTERNATIVE THAT CHECKS "_gameList != value" BEFORE DISPATCHING
_gameList = value;
gameListPropertyChangeSignal.Dispatch (new PropertyChangeSignalVO(PropertyChangeType.UPDATED, _gameList) );
}
}

[/actionscript3]

4. VIEW – HANDLE CHANGES
[actionscript3]
private void _onGameListPropertyChangeSignal (PropertyChangeSignalVO aPropertyChangeSignalVO)
{
if (aPropertyChangeSignalVO.propertyChangeType == PropertyChangeType.UPDATED) {

doRenderLayout(aPropertyChangeSignalVO.value as List<string>);

}
}

[/actionscript3]

Video

[tubepress video=”87903532″]

Member Resources

Members can access the full source-code for this post. Membership is free.

[private_Free member]Enjoy this members-only content!

[/private_Free member]