{"id":194,"date":"2009-10-05T09:55:13","date_gmt":"2009-10-04T23:55:13","guid":{"rendered":"http:\/\/www.doolwind.com\/blog\/?p=194"},"modified":"2009-10-05T09:55:13","modified_gmt":"2009-10-04T23:55:13","slug":"unified-game-development-scripting-language","status":"publish","type":"post","link":"https:\/\/www.doolwind.com\/blog\/unified-game-development-scripting-language\/","title":{"rendered":"Unified Game Development Scripting Language"},"content":{"rendered":"<p><a href=\"http:\/\/www.doolwind.com\/images\/blog\/scriptinglanguages.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignright\" title=\"Scripting Languages\" src=\"http:\/\/www.doolwind.com\/images\/blog\/scriptinglanguages.jpg\" alt=\"\" width=\"86\" height=\"75\" \/><\/a>What is the best scripting language for game development?\u00a0 Every different game engine has its own scripting language making for a difficult choice.\u00a0 Game programmers have a unified language in C++ however game designers are left with whatever language their engine supports.\u00a0 I propose a unified scripting language that all engines\/platforms can share.<\/p>\n<p><strong>Problem<\/strong><\/p>\n<p>When you chose an engine or platform to develop for, you\u2019re locking yourself into its scripting language.\u00a0 This has the following core problems:<\/p>\n<ul>\n<li><strong>Difficult cross platform development<\/strong>.\u00a0 Cross platform development is hard      enough without the worry of porting gameplay code.\u00a0 Gameplay code should not be platform      specific, and therefore there is no reason to have a different language      per platform\/engine.<\/li>\n<li><strong>Immature languages<\/strong>.\u00a0      With each company re-inventing the wheel when they implement a new      language designers are left with immature languages.<\/li>\n<li><strong>Too many languages<\/strong>.\u00a0      Designers must learn a new language whenever they develop for a new      engine\/platform.\u00a0 This increases      development time and reduces fluency in a language.\u00a0 A designer cannot be free to fully      express themselves until they are fluent in the language they describe      their gameplay in.<\/li>\n<\/ul>\n<p><strong>Solution<\/strong><\/p>\n<p>The solution to these problems is to have a unified scripting language shared by all engines\/platforms.\u00a0 Written specifically for game development it would take the best of current scripting languages.\u00a0 The games industry as a whole would \u201cown\u201d the language allowing it to evolve with the needs of the industry as each new generation of hardware is released.<\/p>\n<p><strong>Advantages<\/strong><\/p>\n<p>There are a number of key advantages for moving towards a unified scripting language.<\/p>\n<ul>\n<li><strong>Single gameplay codebase<\/strong>.\u00a0      Gameplay doesn\u2019t change dramatically between similar platforms      (e.g. 360 and PS3 or flash and iPhone).\u00a0      A unified language would allow a single codebase to kept across      multiple platforms helping with porting and maintenance.<\/li>\n<li><strong>Specific to game development needs<\/strong>.\u00a0 A language created specifically for game      development could cater to the needs of the industry.<\/li>\n<li><strong>Single language for designers to use.<\/strong> Small nuances in existing languages can      create major issues for non-programmer designers.\u00a0 A single unified language reduces these      problems and makes the learning path for students clearer.<\/li>\n<li><strong>Less Wheel Re-Invention<\/strong>.\u00a0      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.<\/li>\n<li><strong>Unified Toolset<\/strong>.\u00a0 A      unified set of tools could sit on top of a unified scripting language.<strong><\/strong><\/li>\n<\/ul>\n<p><strong>Genre Specific<\/strong><\/p>\n<p>The core language will hold the basic building blocks for all games.\u00a0 In the future, small libraries can be built by studios or the community for each specific genre.\u00a0 For example a library of functions common to most FPS or RTS games could be created and shared between developers.\u00a0\u00a0 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.\u00a0 It also serves to soften the blow for designers when changing engines as their common set of functions will move across with them.<\/p>\n<p><strong>How<\/strong><\/p>\n<p>There are two main options for the creation of a new unified scripting language:<\/p>\n<ul>\n<li><strong>Large studio forks their current language<\/strong>.\u00a0 For example Epic could open up Unreal      Script and give out the source code for its implementation (let&#8217;s call it      OpenUnrealScript).<\/li>\n<li><strong>Community Driven<\/strong>.\u00a0 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.\u00a0 Early adopters      would drive the initial feature-set and help to drive its development.<strong><\/strong><\/li>\n<\/ul>\n<p><strong>Conclusion<\/strong><\/p>\n<p>My dream is to see the next generation of consoles and other platforms (PC, iPhone, Flash) all supporting a unified language.\u00a0 I&#8217;m interested in people&#8217;s thoughts on this idea and candidates for which language to use.\u00a0 It&#8217;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.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>What is the best scripting language for game development?\u00a0 Every different game engine has its own scripting language making for a difficult choice.\u00a0 Game programmers have a unified language in C++ however game designers are left with whatever language their engine supports.\u00a0 I propose a unified scripting language that all engines\/platforms can share. Problem When <a class=\"more-link\" href=\"https:\/\/www.doolwind.com\/blog\/unified-game-development-scripting-language\/\">Read More<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"enabled":false},"version":2}},"categories":[1],"tags":[19,112,35,37,64,78],"class_list":["post-194","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-c","tag-game-development","tag-game-engine","tag-game-programming","tag-scripting-language","tag-unreal"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/pgEc5-38","_links":{"self":[{"href":"https:\/\/www.doolwind.com\/blog\/wp-json\/wp\/v2\/posts\/194","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.doolwind.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.doolwind.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.doolwind.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.doolwind.com\/blog\/wp-json\/wp\/v2\/comments?post=194"}],"version-history":[{"count":0,"href":"https:\/\/www.doolwind.com\/blog\/wp-json\/wp\/v2\/posts\/194\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.doolwind.com\/blog\/wp-json\/wp\/v2\/media?parent=194"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.doolwind.com\/blog\/wp-json\/wp\/v2\/categories?post=194"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.doolwind.com\/blog\/wp-json\/wp\/v2\/tags?post=194"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}