Unified Game Development Scripting Language

October 5, 2009

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.

Problem

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.

Solution

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.

Advantages

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.

Genre Specific

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.

How

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.

Conclusion

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.

Share:
  • Digg
  • StumbleUpon
  • Slashdot
  • RSS
  • del.icio.us
  • Facebook
  • Sphinn
  • Mixx
  • E-mail this story to a friend!
  • Print this article!

Find Us On Facebook

4 Responses to “Unified Game Development Scripting Language”

  1. I’m afraid attempting to unify game scripting might be as futile as unifying high level computer languages.

    They all have different goals, requirements, features and users.

    I find for client programming I need a native, managed and scripting language. For me, this is C++, C++/CLI (or C#), GameMonkey Script (or Lua). With those three, which work together quite well, I have the tools I need.

    Game scripts serve a variety of purposes such as:
    Configuration Data (eg. game entities, system config)
    Testing and Debugging (eg. automation, debug console)
    Limited game logic (eg. behavior, events, scriptlets)
    Complete game logic (eg. entire gameplay, computation library)
    Utility scripts (eg. make files, asset pipeline config)

    The end user of the scripts may be an experienced programmer, and advanced level designer, or a artist / designer with no programming background.

    From that list of uses and users, it is difficult, though I would not say impossible to unify. I do think we will see some maturity and consolidation of game scripting languages in the future.

    The worst experience as a game programmer is being forced to use an obviously inferior system. I have seen game scripts that had syntax like assembly language, and configuration syntax mathematicians would find confusing. Why force others to use such rubbish? Well that would probably lead to a discussion of failed teams, projects and management.

  2. I think your being slightly idealistic here :)

    no need to develop a new language, there are a multitude of “mature” languages which already exist, for example, lua, or python.

    as for a unified language. there already is one, and you guessed it, its called c/c++.

    it has a massive amount of available code, fantastic debuggers, multitudes of supported environments, excellent documentation, and a multitude of experts.

    trying to keep a similar codebase between such different platforms as a phone, and a console will lead to far more trouble than its worth :) .

    if anything, learning how to use an engine (code wise) will take far longer than learning any internal scripting language ;) Most scripting languages tend to be very similar, and similar concepts tend to apply to most, reducing the learning curve substantially.

  3. C++/CLI Native C++ Lua

  4. You should take a look at:
    http://haxe.org multiplattform-language
    http://gamehaxe.com – nme/neash developer blog

    http://code.google.com/p/nekonme – sdl binding for haxe

    http://code.google.com/p/neash
    The “neash” library provides a compatibility layer to allow haXe programs to target neko, c++ and flash9, giving both web browser and stand-alone support. The API follows the flash9 API very closely to allow easy porting from existing code. The neko and c++ implementations currently make use of the NME library, which in turn uses SDL.

Leave a Reply