Scripts are simplified versions of programming languages, so that designers and other non-programmers—or programmers with extremely little skill—can work with them.
This is overstepping the mark a bit, I think.
"Scripting" languages are usually used over C++ for gameplay code because it can more productive to write in these "simpler" languages.
This isn't true for all teams -- if your team are experts in C++ and aren't very familiar with other languages, then it would make perfect sense to write your "scripts" in C++, and this is
often done. Other teams use even older languages, like LISP for this purpose. Quake even used a C-derivative for it's "scripting language". I've seen other games that had made their own scripting language which actually resembled a high-level assembler!
Also, this isn't to accommodate "programmers with extremely little skill
" -- but different languages focus on different skills
e.g. C is good for when you want to think about memory being a big blob of bytes, but comparatively sucks if you're thinking in higher level algorithmic terms, like using list comprehensions
. On the other hand, a "simpler" language like Python allows these more advanced ideas to be expressed succinctly
. You still wouldn't give Python to an extremely unskilled
programmer and trust them not to ruin your project!!
Generally the guys writing the gameplay code in the "scripting" language will just have a different
skill-set to the guys writing the engine in C++. Both types of programming require different
types of creativity, but both require the same master-craftsmanship
in order to create a quality product.
e.g. at my last job, we decided to write the game in Lua (~a dozen staff
) and the engine in C++ (~3 staff
). All of the programmers are experienced, talented people, who could code perfectly fine in C/C++ if we wanted them to. Some of them are veterans who've shipped dozens of console games. Choosing Lua had absolutely nothing to do with making the code accessible to unskilled programmers, it was only about choosing the language that best fit the task at hand.
Non-programmers, such as designers, never wrote Lua code -- the only code files they edited were Lua files containing only tables, where it functions as a DDL
, not a programming language.
In order to use C++ with any engine on this planet, you will have to buy a full-sized professional company license
As mentioned above, the Source engine is free to use (not free to sell though
) and has a C++ API. There's also all of the ID/Quake engines (free to use, in C/C++
). Other cheap engines like C4 and Torque do exist though, which provide full C++ source.
Ogre3D uses C++ and its free
N.B. Ogre3D isn't a game engine -- it's only a graphics engine -- but yes, there's plenty of game engines built upon it.
Firstly, C++ is one of the most difficult languages to learn, yet if you really considered that difficulty does not matter you would not shy away from C#, which is over twice as easy to learn.
This is a good point -- the OP is a beginner, and C++ is a very brutal language. It is probably much easier to learn C++ if you're already a competent game programmer in another language first -- so consider trying a C# engine!
I did personally learn C++ by diving head-first into the GoldSrc
engine -- this was a very slow, frustrating, painful experience, and I did write a lot of horrible, buggy code... However, 5 years later
I was a competent C++ game programmer, who knew the inner C++ workings all of the many, many systems that went into creating Half-Life 1
Edited by Hodgman, 16 September 2012 - 12:39 AM.