What is the best scripting language for game development? Every different game engine has its own scripting language making for a difficult choice. Game programmers have a unified language in C++ however game designers are left with whatever language their engine supports. I propose a unified scripting language that all engines/platforms can share.
When you chose an engine or platform to develop for, you’re locking yourself into its scripting language. This has the following core problems:
- Difficult cross platform development. Cross platform development is hard enough without the worry of porting gameplay code. Gameplay code should not be platform specific, and therefore there is no reason to have a different language per platform/engine.
- Immature languages. With each company re-inventing the wheel when they implement a new language designers are left with immature languages.
- Too many languages. Designers must learn a new language whenever they develop for a new engine/platform. This increases development time and reduces fluency in a language. A designer cannot be free to fully express themselves until they are fluent in the language they describe their gameplay in.
The solution to these problems is to have a unified scripting language shared by all engines/platforms. Written specifically for game development it would take the best of current scripting languages. The games industry as a whole would “own” the language allowing it to evolve with the needs of the industry as each new generation of hardware is released.
There are a number of key advantages for moving towards a unified scripting language.
- Single gameplay codebase. Gameplay doesn’t change dramatically between similar platforms (e.g. 360 and PS3 or flash and iPhone). A unified language would allow a single codebase to kept across multiple platforms helping with porting and maintenance.
- Specific to game development needs. A language created specifically for game development could cater to the needs of the industry.
- Single language for designers to use. Small nuances in existing languages can create major issues for non-programmer designers. A single unified language reduces these problems and makes the learning path for students clearer.
- Less Wheel Re-Invention. An open-source unified scripting language would allow anyone to submit changes to the language to improve it, rather than re-inventing a whole new language.
- Unified Toolset. A unified set of tools could sit on top of a unified scripting language.
The core language will hold the basic building blocks for all games. In the future, small libraries can be built by studios or the community for each specific genre. For example a library of functions common to most FPS or RTS games could be created and shared between developers. A unified scripting language makes this sharing possible and encourages people to develop well thought out, robust libraries they can reuse from engine to engine. It also serves to soften the blow for designers when changing engines as their common set of functions will move across with them.
There are two main options for the creation of a new unified scripting language:
- Large studio forks their current language. For example Epic could open up Unreal Script and give out the source code for its implementation (let’s call it OpenUnrealScript).
- Community Driven. A simple codeplex/google code project with a couple of leaders and a team of developers would allow for rapid development, while meeting the needs of multiple teams. Early adopters would drive the initial feature-set and help to drive its development.
My dream is to see the next generation of consoles and other platforms (PC, iPhone, Flash) all supporting a unified language. I’m interested in people’s thoughts on this idea and candidates for which language to use. It’s less about language features and just agreeing on a core language everyone can use to develop games and bring all developers onto the same page.