loading...

Unity Asset Store and its comparison to open source communities

halileohalilei profile image Halil Ibrahim Kayim ・1 min read

I've had my fair share of development experience with both native iOS and React Native development for the last couple of years. What immensely helps with the development process is the existence of centralized package managers (CPM from now on) like npm and CocoaPods, and the open source communities that mainly revolve around them.

Unity3D is the most widely used game engine out there and it also has a package store called Unity Asset Store (UAS from now on), from which you can pick and use third party packages. Even though it is much more inferior to most CPM's in terms of features (e.g. UAS does not have support for lock files or a CLI), it still gets the job done.

The main difference between UAS and other CPM's, in my opinion, is that UAS lets and actually encourages paid packages, whereas the others do not. Of course there are libraries in other CPM's that require a license to be purchased but they are in the few and CPM's usually have no built-in support for paid packages.

From my experience so far, I would like to explain and reflect on what kind of a difference this makes for the creator, the individual developer, and the community as a whole.

For the creator

Getting paid for the efforts you put in a package is a great incentive for creators to put stuff out to UAS. I'm pretty sure there are people making a living (or at least a portion of it) out of the packages they sell. It also gives the creators the feeling of responsibility, so they are more inclined to help out whenever someone has some trouble or a question about the package they've bought. I've personally never had a creator not respond to my inquiries about the packages I've bought, within a day.

For the community as a whole

What's great about open source communities is that when there is a need for a library, there's almost always someone who addresses it. When people use these open source libraries, they can let the maintainer know about any issues the library may have, discuss it with other developers, or send pull requests to resolve the issues themselves. Every repository hosting service (e.g. GitHub and GitLab) has built-in support for this organic feedback mechanism, which is the essence of open source communities.

UAS does not have this organic feedback mechanism. What there is is a comment section where you can comment on the package you've bought, and a forum thread about the package where people can discuss and ask stuff to the creator. But there is no way for you to participate in the development process of the library yourself since the paid libraries are closed source and you get the important part of them as a .dll file. Your best bet is to let the creator know about the features you could use or the bugs the library has, and wait for him/her to handle them. Also, there is a higher chance that the creator does not have the time, the will, and/or the proficiency to solve the problem you are having, as compared to an open source project.

This results in a fewer number of high quality libraries for Unity, which I think is a problem. It's not terrible, but could be much better with a more active community that could work together.

For the individual developer

We always want stuff for free when we can have them. Knowing this, creators on UAS almost always have two versions of their packages: one is a free version that has the subset of the features the package has to offer, and the other is a paid version with all the features. This way, you get to use the basic functionalities and see if the paid package is worth it by trying it out. Then, you can purchase the package and use it in your projects. If you have the money.

I've personally never had any financial trouble purchasing packages since the company I work for pays for them. However, I have no doubt that this is a burden to indie developers who just don't have the finances for them or are just getting started with a new project. The packages are usually not expensive (though they may be, if you are living in a country where the exchange rate is insane), but they add up. I know that this topic is a much deeper one, which can potentially lead to a heated discussion of capitalism vs. communism, so I'm not making any claims, just laying out the facts.

Conclusion

Whether UAS should be more like other CPM's has been a thought in my head ever since I started working with Unity3D. I still don't have an answer and not convinced that one model is superior to the other, though I'm more inclined to the idea of an open source community. I would like to know other developers' opinions on this before making any bold claims.

Discussion

markdown guide
 

You've missed out the most important aspect of open source (at least permissively licenced code) - being able to learn from, take parts from, remix and reuse the assets.

Code is like liquid. It flows and mixes with other code. It's a real burden to prevent that happening and this is a continual problem with commercial and other restrictive licences.

 

You're right, I forgot to include those. For one, being able to add an open source library as dependency to another is at the core of any open source community. UAS has none of it and, come to think of it, it's a major problem.

 

Yeah. I wonder if the fact Unity is a decade behind standard practice with regard to packages and dependencies might be a symptom of their pushing of the Asset Store.

At least the new package manager is improving things...

 

Not all packages you can buy are closed source, the developer decides and most I bought have the source included

 

Yeah, I've heard the same thing from other people too, and that's fair. However, in the current project I am working on, out of 6 packages I've bought, 3 of them mostly consist of scripts (others are mostly shaders and vfx), and 2 of them have .dll files which prevent me from diving into the libraries' inner workings. I'd say that is still a pretty high ratio.

 

This was on my reading list for a while and I finally got to it today!

"UAS does not have this organic feedback mechanism."

I 100% agree and was disappointed when our SDK was available in UAS because people would downvote and comment things like "this is broken" not realizing there might have been a recent update or breaking change that might change how they were (or are) trying to use it. We had no really good way of showing the changelog and indicating what comments were known bugs or user issues.

We moved off UAS and are on GitHub which I think is a more natural fit, given that its an open source project. But I think we've lost some of the ease of use by not being in the UAS.