GPL & Blender Adoption in Games Industry

really ? are you sure about that ? –> http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

how about this ? –> http://langpop.com/

That depends on how you use it :wink: If you use it like John Carmack, then it’s a decent language. Excerpt from Doom 3 BFG code review:

"Doom 3 BFG is written in C++, a language so vast that it can be used to generate great code but also abominations that will make your eyes bleed. Fortunately id Software settled for a C++ subset close to “C with Classes” which flows down the brain with little resistance:

  • No exceptions.
  • No References (use pointers).
  • Minimal usage of templates.
  • Const everywhere.
  • Classes.
  • Polymorphism.
  • Inheritance.

And despite being heavily multi-threaded, the source does not employ smart pointers or Boost: What a relief (those usually make the code unreadable). "

I do agree 100%, but lets face it C++ has built on the success of C the way Java built on the success of C++ , thats how language marketing works. For better or worse it comes with a bunch of useful libraries very well support and very well documented.

I am not saying that the industry should not use C++, they should nor I am saying that you cant make beautiful code with C++. I have seen my fair share of horrible python code. Afterall I made loads of it.

But like Javascript , C++ has been in the never ending saga of fixing failure in the language design and foremost has been an attractive force for horrible libraries. Carmack’s Nemesis is Boost my Nemesis is the MFC.

But yeah I take beautiful written C++ code over ugly python code any day. However lets be realistic its far less likely that a python coder would produce ugly code than a C++ coder. And of course not just python, I certainly dont want to make this python. For example I dont code in ruby but I find the language far better designed. Lua seems quite nice as well. I am in love with smalltalk. Common lisp was awesome. Clojure looks very promising etc etc.

I recently ventured in common lisp, beautiful elegant designs, awesome. The irony : common lisp is of course a mainly functional programming language (not pure like Haskell of course, thank GOD) and yet it has the best implementation of OO, CLOS.

It goes back to what I was saying that its not the language that matter but the implementation you use. This why when someone asks me “what language to use” I dont reply “use the right tool for the job” I reply “whatever makes coding enjoyable and productive for you”.

Use Qt 5.x :wink: Cross-platform and the code/design is quite clean and understandable (I bet there is a lot of ugly code written for it, but that’s true for any language).

Oh yeah QT is really, really nice. Its the polar opposite of MFC. I actually tried to use it from my currently language of choice Pharo via Python via a socket bridge I have created but did not like the fact I was using threads in python , of course the fault was all mine and I still play with it to see how I can leverage its technology . I was impressed when I realised that GUIs is only fractions of its abilities. Definetly something I will be playing with for quite some time.

Python has always been hobbled in multithreaded scenarios by the called Global Interpreter Lock. The BDFL (benevolent dictator for life, Guido van Rossum) has never given a shit about this, even though the solution exists in the form of Stackless Python. Add to the picture that Python 3.x has not being universally adopted, splitting the Python community in two and making the language future quite cloudy and I would really not advise a project to adopt it.

My vote is for Lua, very fast, tiny, simple yet powerful, capabable of being used in multithreaded situations and for Javascript (V8, sweet BSD license).

Game play code / script should not bother with threading. That’s something that needs to be done under the hood. Game play programmers and scripters do not need such headache.

and here is what Guido answers to the GIL haters –> http://youtu.be/EBRMq2Ioxsc?t=32m29s

quite a lengthy , specific and detailed answer for someone who "never given a shit about " GIL.

GIL, another python stereotype.

About Python 3, I would say that python survived just fine and and if you dont believe me here is the wall of success of python 3 showing which python 2 libraries have made it to python 3 and which not –> https://python3wos.appspot.com/ . As to the future of python, python has never being as popular as it is now , its easy one of the top 5 popular languages , and there is very little reason not to assume it wont get more popular in the future. As a matter of fact Python in my experience is one of the most highly praised languages out there , Lua is light years behind python in terms of adoption. Lua is used mainly for scripting games, and thats about it.

By the way languages braking backward compatibility between version are nothing new, Pharo the language I am using done it forking from Sqeak, Ruby has done it ,PHP has done it and many more. Now come the important point, they all survived . Coincidence ? I think not.

A few other 3D software vendors have, in the past several years, started offering Python as an option to make tools and plugins for their applications, I would hardly say that Python is currently on the way out unless software companies started dropping the language en-masse.

I would say it’s more likely that the Python.org team will put together a good quality JIT solution to make Python faster than a full-on abandonment of the language and the selling of the web domain. In the meantime the Blender devs. could try to figure out a way to build a solution into Blender that would compile Python on the fly which would bring major benefits to both addon developers and BGE users.

really ? are you sure about that ?

Yes i am. BOO was at 0.44% useage in the latest statistics provided by Unity. I can fully understand why Unity is dropping it now.

Of course, statistics are a funny thing. And BOO was just some kind of a Python dialect in syntax. No real Python. I find it nevertheless interesting that BOO went down the drain in direct competition with C# and Unity JS, from a popularity point of view.

I thought BOO was more a language inspired by the syntax and paradigms of Python rather than being a direct derivative, as otherwise it would’ve been possible in some fashion to tweak some API code to allow access to the entire Python library (with its many modules and function types).

If the purpose of BOO was to create an easier version of C# or Javascript specifically for games, then the total breadth of functions wouldn’t likely not have been near as vast as Python itself (especially since it was mostly the work of one developer).

Yes, you are right. It’s no real Python. But the syntax was like in Python

The purpose was to attract the Python programmers with BOO. Same thing that Unity did with its Javascript.

You would be posing a weak argument if you’re trying to say that people will base their final judgement on the syntax rather than the far more important metrics of power and performance.

Python doesn’t require the use of semicolons and brackets for a basic program, hopefully there’s no one out there who would dismiss it as unusable for most cases because of that.

I invite you to go back to my reply and read what I was replying to , seeing what I quote from your post.

Also for anyone that wants the full truth behind Python and performance here is an excellent lengthy presentation –> https://www.youtube.com/watch?v=7eeEf_rAJds.

And no using a JIT or compiling python to C, which by the way both technologies already exist for years if not a decade for Python (not to exclude also the ability to run python on JIT VM like Java and .NET) , wont speed up python. Actually there is cases that will make it much slower. If you want faster Python / C / Java /Javscript/ etc, its simple, write better code.

The one thing to take to this, is that game and 3d graphics developer use C/C++ mostly for reasons unrelated to performance. Its mostly because of availability of libraries and because well, they know C/C++ and not Python.

So its no surprise that Boo did not survive. Actually Unity no longer need to even support Boo since you can run , from what I read in the web, ironpython just fine on Unity. But yeah in Windows at least C++ people have transition to C# which Micro$oft market as the “modern C++” and since when it comes to games , at least desktop games, windows is the undisputed king, no surprises there either.

But if you want to use python in Unity , ironpython is the way to go for any technology that makes use of .NET and Mono frameworks.

Personally I play around with sockets, for people not into coding ,sockets is what you use to connect to the internet and do most computer communications. I have create a socket bridge that allows Pharo to manipulate and control python inside and outside blender.

The truth is that coding offer like a gazillion ways to approach a problem in any language. Stereotypes are made on the premise of people who do not have done their research and have really poor imagination.

You would be posing a weak argument if you’re trying to say that people will base their final judgement on the syntax rather than the far more important metrics of power and performance.

In Unity it has nothing to do with power and performance. It does not matter which of the available three languages you choose. The available functionality is the same. You will have the very same game at the end. It will run in the same speed, it will look the same. You will not be able to say with what language it was developed afterwards. Because all three available languages gets compiled to CIL when you build your exe. So what language you choose is pure preference. And when somebody already knows Python then the best thing for him is to use BOO.

My “argument”, when you can even call it that way, is: when in Unity nearly nobody uses BOO, which was especially made to attract Python users, then Python cannot be this popular as some may think. Else the piece of the cake in the usership of Unity would have been much bigger.

Nothing more, nothing less.

I didn’t judge in any way, i didn’t take any side here, there was no attack towards Python involved. It was just providing a fact, and a from that resulting thought.

nobody said that Python is popular in games, because its not. Sure it has been used in some very popular games like Eve Online and Freedom Force, but in the end its not that big.

Its not popular also on mobile platforms like Android and iOS but for everything else Python is a dominant language. Especially on desktop it reigns supreme.

Boo is also not python , because if it was it would be called “Python” and not “Boo”. So the assumption that a python coder would want to use Boo, its , well wrong. I would not. Why use Boo when I can use ironpython which by the way IS python.

Who on earth uses boo anyway ?

The website for the language looks as dead as the language itself –> http://boo.codehaus.org/

Compare that with this –> https://www.python.org/

What on earth made Unity people to choose Boo over Ironpython ? Temporary insanity mainly ?

So the mess is on Unity’s side, not on Python’s side.

But even if Unity did support ironpython it would not make a difference, ironpython is not a tiny fraction as popular as cpython and C# is dominant on Game market, C# is the Maya of Game Development if C++ is the 3d Studio. By the way C++ got so popular mostly because of Microsoft.

The topic is about game industry. So if Python isn’t popular in that industry, why push it there? It will be the same issue as some engines facing - not popular language means harder to find people to work on games using that tech. Hell, it’s hard to find C++ programmers in the game industry “thanks” to Unity - everyone seems to learn C# nowadays in colleges / courses.

its not just Unity, the heavyweight gorilla here is XNA which also has Microsoft backing it up heavily. So C# is an one way street if you are serious about game development. C++ is on its way out, Microsoft was responsible for its rise and now it pulls the plug out in favour of C#. What will keep C++ around for decades is the insane amount of C++ code out there.

Same story Objective C in macos, the new kid in the block is Swift , ObjC is on the way out.

Of course if you want mobile games forget about C#, its all Java and ObjC/ Swift. So no language will keep you happy for long.

C++ is in no way on decline. UE4 is C++, Unity’s core code (closed source) is C++, CryEngine is C++, Source/Source 2 are C++, idtech 4/5/6 are C++, Blizzard engines are C++, all non-Unity PS3/4 game engines are C++.

Anything for iOS is ObjC and that isn’t going away anytime soon.

C++ is what engine needs for performance and cross-platform compatibility. And that is here to stay :slight_smile:

without Microsoft C++ is as good as dead actually. But it wont be a fast fall because of the amount of code. Even for Windows the transition to .NET is slow , these things do take time. But make no mistake about it, no game engine out there however powerful is going save C++. Especially since the JIT VMs performance only get better , the future is a future where language like C and C++ have little importance.

All languages have a beginning and an end. Sure when we say dead we don’t mean that none will use it but it means very few people will use it. C++ was made for different time filling different needs.

User will always prefer languages that are well supported and actively developed. C++ is a very badly designed language, moving at a glacial space not able to keep with modern languages like . It has been bleeding users since Java first appeared. Java popularity is what forced Microsoft to implement .NET and C#. It was a desperate attempt of “do not abandon ship”. Java was a huge blow for Microsoft.

Then Objective C came to strike an even bigger blow on a platform that Microsoft was reigning supreme, mobile platform and now it barely exists. Then Java stikes again with Android.

C++ is the giant that everyone is cutting a slice from over and over again. In the end all that remains will be nothing but a shadow.

C++ now is nowhere as popular as it used to be 20 years ago.

C++ had its time. That time is gone.