Why You Probably Don’t Need a Source Code License

More and more people and companies are realizing how Unity can help them unleash their creativity and concentrate on making their games rather than on making their games work. However, some people are still hesitant to try out Unity (despite our free 30 day trial for Mac and Windows) because they think the lack of access to the Unity source code will inherently limit their creativity and only let them create certain types of games. This is a gross misconception.

Myth: The lack of source code access to an engine is limiting in what kind of game it is possible to create.

First of all, it is possible to buy a source code license for Unity (contact us for details), but the vast majority of games don’t need it and can be made using vanilla Unity Indie or Unity Pro.

Creativity with using a certain tool is not linked to availability of the source code of that tool. Users of Photoshop don’t complain that they are limited in what images they can create because they don’t have the Photoshop source code, and the same goes for users of 3ds Max or Maya, or most other creative tools.

Unity is not limited to create any particular type of game, and has indeed been used for a huge variety of different game genres. Take a look at our list of notable games made with Unity if you need to be convinced.

How is this variety possible without the source code? While pixels are the core of a bitmap image and polygons and textures are the core of 3D models, the core of games are their rules and game mechanics, and those are implemented in a game by means of programming. Unity uses the Mono framework as the scripting back-end, and games can be programmed in C#, Boo, or Unity’s flavor of JavaScript. Anything you can do in those languages, you can do in Unity through scripting. Combined with Unity’s well designed flexible engine API that lets you manipulate just about anything, this makes it possible to create game rules and mechanics with as much limitless creativity in Unity as images can be created in Photoshop or 3D models in 3ds Max or Maya.

But enough philosophy. Let’s look at a few examples.

Want to implement path-finding in Unity?
At this point, path-finding doesn’t come out-of-the-box with Unity, but it can be implemented through scripting without problems. In fact, a user from the Unity community, AngryAnt, did just that with his Path Project. Not only did he implement path-finding, but he used Unity’s flexible editor GUI API to make editor controls for the path-finding logic that integrates completely and seamlessly into the normal Unity user-interface.

Want to implement inverse kinematics in Unity? Unity doesn’t have inverse kinematics build-in but it can be implemented quite easily through scripting. Inverse kinematics are used prominently in the Locomotion System for Unity, that lets any animated character with legs walk and run over any uneven terrain, adjusting the movements of the bones in the legs to ensure that the feet step correctly on the ground. This can dramatically improve the realism of animated humans and animals. The Locomotion System is free to use in any Unity project.

Want to integrate Unity with proven MMO server technologies? The Mono framework lets you write any networking code you like. As an example, Thomas Hentschel Lund has done great work with integrating vanilla Unity with the SmartFoxServer package. Yes, thats the backend powering Club Penguin, one of the biggest MMO for tweens out there. Thomas wrote a few plug-ins to interface with SmartFoxServer, and by exposing the relevant script handles, provided Unity script handles for communicating with SmartFoxServer. The best part? You can just go download it, and use it. You can also read Thomas’ great article in Unity Developer Magazine issue two.

Of course, some people will deliberately keep trying to think of things that might not be easily done in Unity through scripting. Some of those things (such as using external native libraries) can be done in Unity Pro using custom plug-ins — other things cannot, but those things are rarely real-world problems. Also, those things would usually require a major engine rewrite or overhaul to be possible in other engines that do provide the source code per default. Of course, if it turns out that a needed mission critical feature for your game really do require the Unity source code, you can always consider just buying a source code license.

However, before assuming that Unity Indie or Pro is «too limiting» for your game, please take a moment to talk with our sales support or our user community to find out if your desired feature really needs the source code, or, as it is the case for the vast majority of our clients, it can easily be done through scripting.

26 Комментарии

@Jeff
Let me see if I got this straight. You need to inherit from a class so that you can change the functionality, or extend the functionality. Could you not create a wrapper for said class and derive from that?

There is more than 1 way to skin a cat after all, and you seem to be saying that if it cannot be done your way then it must be worthless. And given your attitude I wouldn’t want to work for you because I know that if I wrote something you would eventually be in there mucking with my code. All because it doesn’t suit you.

As a CTO of a decade old game company, I don’t even understand why you’re here berating on the unity staff in the first place. If you NEED the source code, then you can GET the source code. But it is not available by default so they can bring the price down to a more manageable level. They even said as much in reply. As for sealing the API, I’m sure that is to protect their source. They have to be just as mindful about keeping hackers out of their code as you do.

Shipping source code doesn’t mean you don’t support your product. Plenty of development libraries have shipped in this industry with source code AND full support.

But, as I mentioned, this would be less of an issue if you hadn’t gratuitously sealed so many of your API classes. If I could inherit and modify I wouldn’t need to change source. As is my first experimental Unity project hit a solid dead end and had to be abandoned because I need API behavior your engineers hadn’t thought of and I cannot add.

@Jeff: well, you can get the source code (and some people do), but then the cost would be approaching those other middleware products that you mention. In the realm of Unity’s pricing, you don’t find that many products that ship with source code (Flash, UDK etc.).

That said, «no source code by default» has it’s upsides as well. I heard from a lot of folks that this way they feel that we focus more on fixing things (instead of «fix it yourself, you have the source code») attitude. Also, without the source code they can focus more on their games instead of trying to resist the temptation of «I’ll just go into the engine and tweak something, how hard could that be?».

But yeah, no source code definitely has it’s disadvantages. That’s why we do provide the option to get the source code, but frankly a lot of people manage to do without the source just fine. From all the source code licensees, most of them don’t do any modifications either; they just get it as a security measure and a way to investigate issues themselves.

Lack of source code IS a huge limitation. It means the game developer is stuck with all YOUR choices and decisions about how to build their game, as embodied in your API. This is why *all* successful professional game engines in this industry have shipped with source. (Havok, Unreal, Renderware, etc)

As the CTO and chief technical decision maker of a more then decade old game company, I won’t consider your tool as an option without source. In my opinion, without that, its not a professional tool— just a neat toy.

@Rune,
>I’m happy to report that this does in fact not seem to be the case considering all the high profile clients we are getting!

It’s probably because they are Unity users already. They know the limitations and Unity meets their project requirement. I know many professional developers who are unwilling to work with an engine that doesn’t have source code. (I’m aware that Unity has source code license but this topic not about the availability of source code license) And I also know many engines that didn’t have source code license initially but later changed it to include. Why do you think that is?
Rune, it’s that you are not attracting many potential users if you have closed policy, meaning, source code license is optional and information not publically available. I say this because from your post, I feel registance or warning about giving the source code license. Even if they do, it might be too expensive for most of users

In my case, I’m giving a try for a simple project that doesn’t require high-end features. But right now the biggest road-block I have is getting UnityWebPlayer to work as ActiveX (http://forum.unity3d.com/viewtopic.php?t=21715). Without the source code, I’ll have to rely on Unity dev to patch it. But so far I haven’t heard anything back from the dev. If Unity dev can be more responsive to user’s request, yes, I can see your point, however, looking at the past release schedules, I’m not totally convinced.
Although Unity is more like an authoring tool, it’s very flexible and powerful but I’m sorry I cannot agree with you on this topic.

BTW, where is the debugger? At Unity, I’m sure you guys use debugger with the complete source code but do you seriously think that «print log» is sufficient to develop a large-size game? Sure you can but at the sacrifice productivity.. Debugger is also essential when you are first learning the tool by stepping though the code…. You can’t even step though your own code but with the source code license, I suppose you can.

@Chris Kim:
> think any serious game developer is denying to work without the source code.

Well, that doesn’t seem to be true with all the serious game developers that are using Unity. :)

> There is no perfect engine that can embrace all types of users. Period. I wish there is a such a thing.

That’s technically true, but that goes for any game engine, no matter if source is provided or not. Having the source doesn’t make an engine magically suited for all needs; it still may take longer to modify any given engine to your needs than to just start from scratch or use a competing engine.

> Debugging is impossible with the blackbox. It’s hard to tell if you err on your side or else.

In reality it’s not a big problem. In the few cases where people have been in doubt, it has typically been sorted out quickly by the community or our support.

> Adding custom features that requires core modification. I already have few list I would like Unity to have. It’s not that you need to modify massively, but simple task may require accessing source code.

«Simple tasks» rarely require accessing the source code. Of course there may be some things you can’t do (ask us before just assuming it, though!) but you have to weight it in against all the advantages that Unity provides.

> If you are targetting casual game developers, it’s probably good enough but if you advocating to professional game developers, you will face the resistences over and over.

I’m happy to report that this does in fact not seem to be the case considering all the high profile clients we are getting! :)

It depends on what users you are targetting. If you are tagetting game developers, I think any serious game developer is denying to work without the source code. The reasons are,
1. There is no perfect engine that can embrace all types of users. Period. I wish there is a such a thing.
2. Debugging is impossible with the blackbox. It’s hard to tell if you err on your side or else.
3. Adding custom features that requires core modification. I already have few list I would like Unity to have. It’s not that you need to modify massively, but simple task may require accessing source code.

If you are targetting casual game developers, it’s probably good enough but if you advocating to professional game developers, you will face the resistences over and over.
I heard that Unity is not a middleware from Unity, doesn’t it mean something?

My $0.02: As someone who spent years (decades) developing custom 3d game engines and tools, as well as serving as lead or TD on titles leveraging 3rd party systems, I have been finding it to be a HUGE relief to work with a system that (so far) just does what we need, without me having to wade through any source code whatsoever.

It also didn’t hurt that integrating our conversational AI system with Unity was mostly just dragging and dropping our .NET version into a Unity project’s assets folder. :D

I have to agree that, if coded properly, developers don’t need access to the low level (C/C++) source code of the engine.

I also have to say that this comment:

«Users of Photoshop don’t complain that they are limited in what images they can create because they don’t have the Photoshop source code, and the same goes for users of 3ds Max or Maya, or most other creative tools.»

probably hurts the statements you are tying to make as it makes no sense. 2D/3D artists never work with low level source code (they do however sometimes deal with scripting) but programmers do.

@Joseph Burchett
I did the face-to-display thing till I figured out I didn’t need to sell my soul to get a source code license in order to implement what I wanted. Everything I do is on unity indie by the way.

i want to mention, unity has mono framework and it means you can do many things without source code. for example if you want to add anything that is not about games like payment modules or … you can use mono (.NET) or C++ plug ins and many of the low level graphical processes are accessible with APIs.
yes it’s good to have the source code of an engine to see how things are implemented and maybe making them better but it’s not always what you want.

i am agree with James and others about comparing artists and programmers and generally it’s not a good idea to compare crazy programmers with any other community.

@Joseph Burchett: With this post I am trying to challenge the very mindset you are talking about. Many programmers think that they need the source code in order to be able to do what they want, but the reality is that for the vast majority of cases, this isn’t so with Unity because the scripting is plenty powerful enough. If you worry that there is something you can’t do with Unity, simply try it out (for example with our free trial) or ask us about it, instead of just assuming that you’ll run into problems. Our customers are happy for a reason. I think the top comments in this thread speak for themselves.

Okay wanted to make one more comment. Even though there are developers out there (like me) who love to see how things are working and really get my hands dirty… A large percentage of people who are using Unity probably are not like that, so I suppose the way you guys have things setup now is fine, and you do say that you can just contact you for the source code, so I suppose it’s all good. I just really hope you are not thinking that programmers and artists have the same mind set, because they don’t. Also I should have proof read my previous post, sorry about that @.@.

Hm, interesting post, but I think you don’t seem to understand how developers work. Yes your tool is great, that I will not deny it does a lot of stuff really well! But you need to understand that no tool can do everything that every game developer may need. There is always going to be some developer out there that is going to bash his head against the screen because your tool couldn’t do one tiny thing that they simply could have solved themselves by tweaking something in the engine code. No matter how feature rich Unity is it can’t do everything. This is why so many engines out there always show off that they have a source code license right up front, because they know up that there tool can not satisfy the needs of every game developer.

Also the comment you made about how 3D artists don’t complain because they don’t have the source code for Photo shop or something is just ridiculous… Programmers and Artists are completely different people. Even if the artists had the source code, they wouldn’t even know what to do with it! Not trying to be jerk or something it’s just you should probably look a bit more into researching the needs of game developers before making posts like this. Trust me if you where to express right out in the open saying «by the indie license with source code» You will defiantly peak the interest of a LOT of developers, they love to tinker and see how things work. Either way Unity is great though, does a lot of good stuff right out of the box! :-D Keep up the great work.

@Tom Yup, it’s just a different business model, and as I said; it’s not a bad thing. In fact, it seems to be such a good business model, that others like GarageGames seem to be going the same way with T3D.

That at least, should give you a little warm glow inside!

Please understand that I’m not trying to knock what you guys do, or how you go about it. I just find it a bit misleading for somebody to try and say that a 3D artist doesn’t get the source code to his or her preferred modeling package but they do just fine, when comparing it to games development.

@James Steele: on re-read I now understand your point a bit better (I think). Yes, our business is predicated on license sales and part of that is the Indie/Pro structure (and feature delta). But it’s just a different business model, and this post by Rune is a great explanation for why it’s appropriate (non-source, use the tool) for the vast majority of developers out there in the world. :)

@James Steele: what’s to be honest about? The cost of a source code license is well beyond the cost of Unity Indie or Unity Pro, so at that point what features they choose to implement, and whether they mimic our existing Indie/Pro features isn’t really important. And by the way, source code licensees get the full Pro feature set anyway so if they re-implement what’s already there then they’re wasting time.

Of course, you guys haven’t mentioned that if people were to have access to the source code; they would be able to implement any features found in the Pro license but only paying for an Indie license for themselves. At least be honest with your customers. Your business model is based on customers paying you for desired features instead of allowing customers to implement them for themselves.

I’m not saying that this is a bad thing, because it’s not. The vast majority of your targeted customers are not video game professionals, but rather, people who more than likely only want to make games in their spare time. Why add an extra obstacle in the way of those who want to adopt to the engine, by increasing the required knowledge level that allows them to get started?

But you’re giving very misleading arguments in using Photoshop, Maya and 3DS Max as comparisons to Unity. Unity is more than just an editing suite, like the fore mentioned packages and making games is not like editing image files.

I’m currently toiling with the decision if I should go back to Torque, roll my own Ogre based engine, roll my own complete engine or give Unity a go. So with that in mind, I’m going to download the 30 day trial of Unity and see what it’s like and what I’m capable of doing with it.

Great posting as it really de-mystifies the source-code license (which quite a few people seem to believe they «need»). In the end, if a game engine is well-designed and well-documented, you don’t need the sources — and if a game engine is not well-designed … well, I really don’t like to go through code that is not well-designed, so even if you get the source-code it just gives you pains.

Another issue with working with an engine’s source-code: If the engine is enhanced as quickly and significantly as Unity, having your «own branch» is very likely to give you trouble when a new version of Unity is out. Just compare Unity 1.6, 2.0, 2.1 and 2.5. I wouldn’t want to miss an update; and I also wouldn’t want to merge my changes with an updated version of Unity, either.

In the end, what you do as a programmer with Unity also is not really «scripting». You could do that — but the way I see it, what you are really doing is extending Unity with your game specific functionalities, using the existing APIs (basically, you are developing / software-engineering, using powerful game-related APIs and an extremely powerful game-related authoring tool).

wow!!!
i am agree that nearly all users don’t need the source code. i read the title of this blog incorrectly at first, «buy the source code license» or something like this. and i thougt that why should someone buy it?
oh unity is a different engine from torque and others.
yea if someone is so professional as aras and want to edit your scene management and improve it or edit the collision detection code, he needs a source code license

I whole-heartedly agree with every bit of this. I’ve been trying to tell people for years that if an engine forces you to dig into its source in order to implement your designs, then it isn’t a really good engine. Period.
Unity does a great job in giving developers the power to create everything they could possibly imagine. And for a wonderful price to boot!
Three cheers for Unity and UT!
Hip-hip-hurray! Hip-hip-hurray! Hip-hip-hurray! ^_^

I was just talking to a friend about this. I think that if a game engine is well-designed users shouldn’t need the sourcecode to implement game features x,y, and z. A poorly-designed game engine requires users to mess with the source code to fix/add the features that can’t be done through scripting, plugins, or modules in good engines :).