Jump to content

  • Log In with Google      Sign In   
  • Create Account

#Actualfrob

Posted 30 December 2012 - 11:04 PM

Part of this confusion seems to be that a few people are assuming a monolithic and single-language system.

A game engine need not be in a single language.

Good engines rely on many different languages.

Thinking back over the decades of good engines I've used, the simplest engine remember was for the Nintendo DS, and it 'only' used six languages that I'm aware of. The major EA engine I work with today has no less than 15 languages, probably more if I dig deeper. They range through hardware-specific assembly and C and C++ and C# and Lua and perl and python and shader scripts and even a handful of custom languages for particle systems and audio control.

Looking at engines like Unity you see that it also isn't one language. Java, Objective C, C++, JavaScript, shaders, C# through mono, assembly language for many platforms, direct support for content from Maya and 3D Sudio, as well as Flash, Photoshop, and Fireworks. They don't limit themselves to just what is easy to do in C++.


Engines are non-trivial. Portions will be written in C++. Portions will be written in assembler. Portions will be written in shader languages. Portions will be written in scripting languages. Portions will be written in <<insert language or tool here>>.

When something is best suited for any language, no matter if the language is assembly or c++ or c# or lua or python, if that is the best language for the component then you should build that component in that language.

For the portion of the engine that needs c++, I strongly recommend it. If you go back through the thread you'll see I always have. For the portion of the engine that needs gameplay programming I recommend languages other than c++; it is not the language's strong suit.

When you need a hammer or saw or lathe or drill, use the correct tool. If you need systems code or bare-metal code or shader code or scripting code, use the correct tool. A game engine needs many parts. It would be foolish indeed to limit yourself to only a hammer when building a sports car. Learn to be comfortable with ALL the tools, or at least know when your favorite tool is the wrong one.

#3frob

Posted 30 December 2012 - 11:04 PM

Part of this confusion seems to be that a few people are assuming a monolithic and single-language system.

A game engine need not be in a single language.

Good engines rely on many different languages.

Thinking back over the decades of good engines I've used, the simplest engine remember was for the Nintendo DS, and it 'only' used six languages that I'm aware of. The major EA engine I work with today has no less than 15 languages, probably more if I dig deeper. They range through hardware-specific assembly and C and C++ and C# and Lua and perl and python and shader scripts and even a handful of custom languages for particle systems and audio control.

Looking at engines like Unity you see that it also isn't one language. Java, Objective C, C++, JavaScript, shaders, C# through mono, assembly language for many platforms, direct support for content from Maya and 3D Sudio, as well as Flash, Photoshop, and Fireworks. They don't limit themselves to just what is easy to do in C++.


Engines are non-trivial. Portions will be written in C++. Portions will be written in assembler. Portions will be written in shader languages. Portions will be written in scripting languages. Portions will be written in <<insert language or tool here>>.

When something is best suited for any language, no matter if the language is assembly or c++ or c# or lua or python, if that is the best language for the component then you should build that component in that language.

For the portion of the engine that needs c++, I strongly recommend it. If you go back through the thread you'll see I always have. For the portion of the engine that needs gameplay programming I recommend languages other than c++; it is not the language's strong suit.

When you need a hammer or saw or lathe or drill, use the correct tool. If you need systems code or bare-metal code or shader code or scripting code, use the correct tool. A game engine needs many parts. It would be foolish indeed to limit yourself to only a hammer when building a sports car. Learn to be comfortable with ALL the tools, or at least know when your favorite tool is the wrong one.

#2frob

Posted 30 December 2012 - 10:50 PM

Part of this confusion seems to be that a few people are assuming a monolithic and single-language system.

A game engine need not be in a single language.

Good engines rely on many different languages.

Portions will be written in C++. Portions will be written in assembler. Portions will be written in shader languages. Portions will be written in scripting languages. Portions will be written in <<insert language or tool here>>.

When something is best suited for any language, no matter if the language is assembly or c++ or c# or lua or python, if that is the best language for the component then you should build that component in that language.

For the portion of the engine that needs c++, I strongly recommend it. If you go back through the thread you'll see I always have. For the portion of the engine that needs gameplay programming I recommend languages other than c++; it is not the language's strong suit.

When you need a hammer or saw or lathe or drill, use the correct tool. If you need systems code or bare-metal code or shader code or scripting code, use the correct tool. A game engine needs many parts. It would be foolish indeed to limit yourself to only a hammer when building a sports car. Learn to be comfortable with ALL the tools, or at least know when your favorite tool is the wrong one.

#1frob

Posted 30 December 2012 - 10:34 PM

Part of this confusion seems to be that a few people are assuming a monolithic and single-language system.

A game engine need not be in a single language.

Good engines rely on many different languages.

Portions will be written in C++. Portions will be written in assembler. Portions will be written in shader languages. Portions will be written in scripting languages. Portions will be written in <<insert language or tool here>>.

When something is best suited for any language, no matter if the language is assembly or c++ or c# or lua or python, if that is the best language for the component then you should build that component in that language.

For the portion of the engine that needs c++, I strongly recommend it. If you go back through the thread you'll see I always have. For the portion of the engine that needs gameplay programming I recommend languages other than c++; it is not their strong suit.

When you need a hammer or saw or lathe or drill, use the correct tool. If you need systems code or bare-metal code or shader code or scripting code, use the correct tool. A game engine needs many parts. It would be foolish indeed to limit yourself to only a hammer when building a sports car. Learn to be comfortable with ALL the tools, or at least know when your favorite tool is the wrong one.

PARTNERS