Buddhism and Game Engines

This is another post related to The Cathedral and the Bazaar raymond1999cathedral but I see this pattern in the two major game engines that the ‘community’ and the ‘industry’ uses. I could easily reuse the Cathedral and Bazaar analogy1, but instead I would like to test another relation for this example. Buddhism. Why? Because we see two prominent game engines, Unity and Unreal which have different business strategies, and from my prospective, this nicely sync with the two versions of Buddhism 2 : Mahāyāna Buddhism(大乗仏教) and Theravada Buddhism (上座部仏教).

Two types of Buddhism

Obviously there are different versions3 of Buddhism around the world just like any other religion. One way to categorize this is the focus on openness. Mahāyāna Buddhism sometimes called the big boat Buddhism, prioritizes openness and salvation of the public, over authenticity of doctrine. In other words quantity over quality. This version of Buddhism is widely adopted in countries like China, Korea, and Japan.

Theravada Buddhism is the other way around that insisted on keeping the Sutra pure as possible. It’s actually not a single group, but an aggragation of different interpretations falling into this category. Wikipedia teaches us that it’s popular in places like Thailand, Cambodia and Laos. Theravada Buddhism is sometimes criticized (from the big boat guys) as the “small boat” Buddhism, since it doesn’t let more people in. As a result, the number of devotees for Thravada Buddhism is smaller then Mahāyāna Buddhism. Another interpretation is that this Buddhism focuses on discipline inside individuals, or simply put introversive.

MahāyānaTheravada
big boatsmall boat
opennesspureness
extroversiveintroversive
communityself

I find it really useful to use this contrast in different areas, because it’s literacy a historical and ancient question that’s common to the ones we ask when we develop programs or games.

Unreal and Unity

So naturally that contrast will fit as such:

MahāyānaTheravada
UnityUnreal

To me at least, Unity has lower barrier of entry and currently better on building community. Unreal on the other hand, focuses on more industry level things tied to movies and big name game firms. I found this contrast really apparent when I attended Siggraph a year ago, how they design their booths and the focus interest. Unreal was providing beer, that’s a clear advertisement that this is only for adults, not for kids.

Unity uses C# as their main programming language, where Unreal uses C++ which is thought to have bare metal performance with a steep learning curve than C#.

The complication is that Unity does not open their core and remains proprietary, where Unreal opens their engines core code base through github4. On top of that Unreal poses an unusual restriction on their code, it is open (you can download it and read it) but you can’t reuse it. Logistically it’s not under an open source license, and if you use a substantial part of their code without their permission, that’s copy right infringement and you get sued. The community referrs this “source code available”.

I see this interesting because it still speaks about the tradeoff of being open and keeping the threshold low. Unity decided to close their core, because the internal workings is not important, it just needs to work so easy API access is key. Your knowledge is not measured by how much you deeply know the engine, but what you do with it. I frame this as an engineering point of view. Unreal revels it’s internals giving people the chance to fully understand the details, yet you need to invest more time on it to be an Unreal monk. It’s definitely a hurdle, but once you understand it you can now have full grip on the code, and maybe even modify the core itself. Which at the end, putting effort on increasing number of people who can not only use game engines but to create one. I see this is more like a scientist or an artist point of view.

UnityUnreal
EngineeringArt, Science
making, solving problemspursue knowledge, asking questions

Of course, this is a crude and arrogant way to reduce these game engines into two buckets, and I’m sure people using Unity is also asking important questions, while Unreal people solving problems. Plus you have alternative game engines that tries to transcend the two, by opening up the code and still be open and easy going for the community. Different to other situations, I don’t think open sourcesing the game engine is crutial, but it well depends on the application. Lastly, I think its a healthly competition having philosophical difference among these two engines, testing their hypothesis how to contribute to the game industry as a whole.

Personally as an introvert, I feel empathy on the Unreal side of things, but history tells that big boat gains more popularity and at the end sustainable to keep momentum. I’m hoping when people needs to decide which game engine to use, this casts a bit of light.

Version Control

Bibliography

[raymond1999cathedral] Raymond, The cathedral and the bazaar, Knowledge, Technology & Policy, 12(3), 23-49 (1999).


  1. More precisely, Cathedral and the Bazaar was to describe the process of software engineering back in the 1980s. Again this is very much related to this topic, but I’m not essentially talking about the process of game development. ↩︎

  2. Religion wise, the author is not strongly connected to any type of religion. Typical Japanese (there’s a lot of exceptions here) are flexible in religion, but I think it’s safe to say the culture is very loosely align with the Mahāyāna version. The closest expression I can give is that we have a hint of Buddhism. Then we have Shinto, often referred as our indigenous religion. By all means I’m not a expert on all of this. Internet suggests that we see this trace in Christianity as well: Catholic and Protestants. Yet, I see this too far from my area of knowledge. I just thought it’s always good to introduce some exotic spice to the discussion. ↩︎

  3. I see religion as a software/framework that drives society. Hence, it’s natural to use the term ‘version’ from a software engineering perspective. This implies that this is version controlled. With this perspective, I see the bible as one code base that has been manually version-controlled through history. ↩︎

  4. One thing I find fascinated by game engines is that the adoption of git is still secondary. I think this is a industry tradition but both Unity and Unreal supports Preforce. I can only borrow knowledge from Wikipedia, it seems to well suit version controlling both the source and the binary. I looks like it started as a propriety version control service, but what confuses is that it can use git commands.. Maybe there is ways to abuse this platforms for Javascript projects, since it’s normal that you need to transpile your code. ↩︎