Friday, October 23, 2009

Picking a scripting language

We are planning to make the BitSquid engine largely scripting language agnostic. We will expose a generic scripting interface from the engine and it should be relatively easy to bind that to whatever scripting language you desire.

Still, we have to pick some language to use for our own internal projects and recommend to others. I'm currently considering three candidates:

C/C++

  • Use regular C/C++ for scripting.
  • Run it dynamically either by recompiling and relinking DLLs or by running an x86 interpreter in the game engine and loading compiled libs directly.
  • + Static typing
  • + Syntax checking & compiling can be done with an ordinary compiler
  • + When releasing the game we can compile to machine code and get full native speed
  • - C is not that nice for scripting
  • - Huge performance differences between "fully compiled" and "interactive" code makes it difficult for the gameplay programmers to do performance estimates.
Lua
  • Lua has the same feature set as Python and Ruby, but is smaller, more elegant and faster.
  • Other scripting langues such as Squirrel, AngelScript offer reference counting and static typing, but are not as well known / used
  • + Dynamic, elegant, small
  • + Something of a standard as a game scripting language
  • + LuaJIT is very fast
  • - Non-native objects are forced to live on the heap
  • - Garbage collection can be costly for a realtime app
  • - Speed can be an issue compared to native code
  • - Cannot use LuaJIT on consoles
Mono
  • Use the Mono runtime and write scripts in C#, Boo, etc.
  • + Static typing
  • + Popular, fast
  • - Huge, scary runtime
  • - Garbage collection
  • - Requires license to run on console
  • - Can probably not JIT on console

80 comments:

  1. Lua all the way! We're about to ship a game using it on Xbox 360; by using it I mean 95% of the game code, including UI, is written entirely in Lua.

    We had some garbage collection issues - we had to add a touch of "manual garbage collection" here and there, which took a day or two of the final stretch - but that was all that it took memory-wise, after months and months of a room full of gameplay programmers banging away at code blissfully oblivious of the existence of such a thing as "memory". The speed of development is orders of magnitude higher than C++, and the code is considerably smaller.

    Performance is the main issue - we dedicated a full Xenon core to it, and got away with it - but on the PS3 that won't be possible. You either have to design around it - avoid game designs requiring lots of logic - or go to C++, where you lose the productivity gain.

    Our game is VERY simulation-heavy, IMHO higher than the vast majority of games on the market - so it was kind of a worst case; on the other hand, I understand how you, thinking only about an "engine", wouldn't want to limit potential customers. But the limit is very high - and the alternative is C++.

    What's especially great about Lua is the native support for coroutines, which allow you to implement what's called "latent functions" in UnrealScript - which make game logic code much more straightforward than the alternatives (e.g. state machines).

    ReplyDelete
  2. You can also make your own scripting language that is job-centric and state-machine aware.

    ReplyDelete
  3. Yes, I'm leaning towards Lua myself. It is what we used in the Grin engine and overall it did great things for us.

    The main problem we had with Lua at Grin was performance, especially in Terminator Salvation. We didn't run Lua on a separate core, and since we were shipping for PS3, that wouldn't really have helped. I think the performance problems might be a result of trying to do "too much" in Lua and that it might be mediated by moving more of the heavy-duty stuff to C++ and being a bit smarter about the C/Lua interface. But it is scary to end up in that situation late in a project. On the other hand, I guess you always end up with performance problems in gameplay code, no matter what the situation is.

    What is slightly scary is that when optimizing C++ code it usually boils down to a few bottleneck operations. You rewrite them and get a quick performance boost. With Lua, there weren't any real such choke points. It was just a matter of a slow (compared to C, not to other scripting languages) virtual machine running lots and lots of code, so there was no single place to do quick and easy optimizations.

    Memory might also be an issue, since we want a separate lua state per core (to allow fully multithreaded gameplay), that will multiply the lua runtime size by the number of cores. But I think we can solve that by keeping all the state data in C and just doing operations on it in Lua. (That also saves the trouble of synchronizing the Lua states.)

    ReplyDelete
  4. At Unity we have very good experience with Mono. It gives us excelent programming languages and very good performance over interpreted languages.
    So if you get over the admittedly high startup costs, in terms of integration and understanding the code, there are many benefits.
    Also we get very good support from the Novell guys.

    You are velcome to contact us if yo need more info.

    ReplyDelete
  5. Mix it C++ + javascript ..
    http://code.google.com/p/libjspp/

    ReplyDelete
  6. We all apprehend that Epson printer is a relatively relaxed and compactable printing tool canon printers are help you discover your paintings productiveness thru its wireless networking competencies. If you're searching Customer Care Support Services on your printer then you can visit our web websites. Thanks
    canon printer offline to online

    ReplyDelete
  7. Follow the easy steps for HP LaserJet P1102W Setup. Reach the printer setup experts for HP LaserJet P1102w setup, if you face issues with setup.

    ReplyDelete
  8. Canon MG3520 Wireless Setup is easy to do the process. Follow simple guidelines in an article for Canon MG3520 Setup. Reach our experts, in case of any issue.

    ReplyDelete
  9. Most Brother printer models have mounted network adapters. You can link the Brother printer to your wifi instead of connecting the printer directly to your device and use it as a network tool. If you want to use the printer from multiple computers in your home or if all of your machines are laptops and you don't want to bother attaching and disconnecting the printer when you switch from room to room, this configuration is beneficial. Connect brother printer to wifi

    ReplyDelete

  10. your post is very interesting to read.
    Thank you very much.This website has everything I need.
    www-trendmicro-com/bestbuypc

    ReplyDelete
  11. Thank you for your article that is useful for me, and I will save the name of your blog, I will definitely return to read your new article. mcafee.com/activate

    ReplyDelete
  12. Thank for your writting. You have made it very clear that the problem is happening. I really like your way of thinking. Install Kaspersky already purchased

    ReplyDelete
  13. Nice imformative blog.Thank you and waiting for your new post.
    www.webroot.com/safe

    ReplyDelete
  14. I really like your post, I always like to read a quality content having accurate information regarding the subject. Thanks for sharing. It is such a very amazing post...www.avg.com/activation

    ReplyDelete
  15. Excellent and nice post. It will beneficial for everyone. Thanks for sharing such a wonderful post. To read more visit our post which link has been given below.visit: www.malwarebytes.com/install

    ReplyDelete
  16. Great blog too very impressive! Excellent and nice post. This is such a great resource that you are providing and you give it away for free.I would like to thank you for the effort you have made in writing this article. visit: www.bitdefender.com/central

    ReplyDelete
  17. Thank for your writting. You have made it very clear that the problem is happening. I really like your way of thinking. www.webroot.com/safe

    ReplyDelete
  18. Thank you for your article that is useful for me, and I will save the name of your blog, I will definitely return to read your new article. www.trendmicro.com/bestbuypc

    ReplyDelete
  19. WOW! I Love it...
    and i thing thats good for you >>

    รีวิว BLACKPINK Light Up the Sky
    Thank you!

    ReplyDelete
  20. Very interesting to read. I really love to read such a nice article. Thanks! keep rocking.www.webroot.com/safe

    ReplyDelete
  21. I really appreciate this wonderful post that you have provided for us. I assure this would be beneficial for most of the people. Thanks for sharing the information keep updating, looking forward to more post. www.trendmicro.com/downloadme

    ReplyDelete
  22. Hey, I am James Smith works as a “Printer Expert” in HP Printer.
    visit:123.hp.com/setup

    ReplyDelete
  23. If you want to make every moment special in your life, then you just have to call us at +91-9574671995 for hot Call Girls in Jalandhar.
    Jalandhar Escorts | Jalandhar Call Girls | Escorts in Jalandhar

    ReplyDelete
  24. Welcome to the Best Delhi Escorts Service for Sexual Pleasure, if you want to take our Services to another location visit here- Ashram Escorts 💋💃💛💛

    ReplyDelete
  25. Thanks for this valuable blog. It was very informative and interesting. Keep sharing this kind of Information.
    Web Designing Templates In HTML
    Web Designing Templates

    ReplyDelete
  26. Thank you for the great information that you provided in your article. I hope you will continue to have such articles to share with everyone! Here are some articles about How to Get Better at Using a Mouse. Check out my latest post laptops Mouse Tips related to this.

    ReplyDelete
  27. Really awesome blog. And thank you for sharing amazing information. This is a very useful post for me. This will absolutely be going to help me with my project. Thank you again . Know more about free ads post click the link and visit.post free ads in india

    ReplyDelete
  28. How to change ink in a Canon printer? These types of questions come into your mind and you are also not an expert in it then

    ReplyDelete



  29. You might come across an error message reading “Printer not responding” while trying to print something and connect with wifi. Multiple reasons cause this problem such as improper configuration, bad hardware status, faulty drivers, etc. how to change ink in canon printer will give you the quick and easy way to fix the not responding error of canon printer.

    ReplyDelete

  30. A printer may require regular maintenance so that it can work properly. Updating drivers, cleaning nozzle head, changing ink are crucial parts of the care of your printer. In this post, we have talked about how to change ink in the Canon printer. How to change ink in canon printer would be best to change the link to print appropriately without any missing letters or discoloration.

    ReplyDelete
  31. Thank you for providing this blog really appreciate the efforts you have taken into curating this article if you want you can check out data science course in bangalore they have a lot to offer with regards to data science in terms of training and live projects.

    ReplyDelete
  32. Acknowledges for penmanship such a worthy column, I stumbled beside your blog besides predict a handful advise. I want your tone of manuscript... 토토커뮤니티

    ReplyDelete
  33. For true fans of this thread I will address is a free online! 먹튀검증

    ReplyDelete
  34. Acknowledges for penmanship such a worthy column, I stumbled beside your blog besides predict a handful advise. I want your tone of manuscript... 꽁머니사이트

    ReplyDelete
  35. I really appreciate this wonderful post that you have provided for us. I assure this would be beneficial for most of the people. Isicelo seCanada Visa Online

    ReplyDelete
  36. Nice to be visiting your blog again, it has been months for me. Well this article that i've been waited for so long. I need this article to complete my assignment in the college, and it has same topic with your article. Thanks, great share. 꽁머니사이트

    ReplyDelete
  37. Positive site, where did u come up with the information on this posting?I have read a few of the articles on your website now, and I really like your style. Thanks a million and please keep up the effective work. న్యూజిలాండ్ ETA

    ReplyDelete
  38. I think this is an informative post and it is very useful and knowledgeable. therefore, I would like to thank you for the efforts you have made in writing this article. http://www.oaihdk.com

    ReplyDelete
  39. Positive site, where did u come up with the information on this posting?I have read a few of the articles on your website now, and I really like your style. Thanks a million and please keep up the effective work. http://laksjfl.com

    ReplyDelete
  40. I wanted to thank you for this great read!! I definitely enjoying every little bit of it I have you bookmarked to check out new stuff you post. https://usdhnfu.com

    ReplyDelete
  41. I have read all the comments and suggestions posted by the visitors for this article are very fine,We will wait for your next article so only.Thanks! natures only cbd gummies

    ReplyDelete
  42. I think this is an informative post and it is very useful and knowledgeable. therefore, I would like to thank you for the efforts you have made in writing this article. glucotrust reviews

    ReplyDelete
  43. Great article Lot's of information to Read...Great Man Keep Posting and update to People..Thanks pg slot 666

    ReplyDelete
  44. Thanks for taking the time to discuss this, I feel strongly about it and love learning more on this topic. If possible, as you gain expertise, would you mind updating your blog with more information? It is extremely helpful for me. เกมสล็อต xo

    ReplyDelete
  45. Took me time to read all the comments, but I really enjoyed the article. It proved to be Very helpful to me and I am sure to all the commenters here! It’s always nice when you can not only be informed, but also entertained! EVISA INDIA

    ReplyDelete
  46. Wow, this is really interesting reading. I am glad I found this and got to read it. Great job on this content. I like it. https://www.jokerauto999.com

    ReplyDelete
  47. Thanks for taking the time to discuss this, I feel strongly about it and love learning more on this topic. If possible, as you gain expertise, would you mind updating your blog with more information? It is extremely helpful for me. เกมยิงปลา

    ReplyDelete
  48. This article gives the light in which we can observe the reality. This is very nice one and gives indepth information. Thanks for this nice article. jili slot ทางเข้าเล่น

    ReplyDelete
  49. beach houses are really nice and it would always be a warm and relaxing place’ 꽁머니사이트

    ReplyDelete
  50. Most of the time I don’t make comments on websites, but I'd like to say that this article really forced me to do so. Really nice post! www.luciaslot365.com

    ReplyDelete
  51. Pretty nice post. I just stumbled upon your weblog and wanted to say that I have really enjoyed browsing your blog posts. After all I’ll be subscribing to your feed and I hope you write again soon! บาคาร่า

    ReplyDelete
  52. Now, she sources all the best and newest anime figures, plush and merch from Japan and brings it over to the UK for fellow lovers of the best of the Japanese otaku culture! 먹튀검증

    ReplyDelete
  53. That appears to be excellent however i am still not too sure that I like it. At any rate will look far more into it and decide personally! hotslotxo.com

    ReplyDelete
  54. I exactly got what you mean, thanks for posting. And, I am too much happy to find this website on the world of Google. รูปแบบไฮโล

    ReplyDelete
  55. Wow, this is really interesting reading. I am glad I found this and got to read it. Great job on this content. I like it. fullslot

    ReplyDelete
  56. Positive site, where did u come up with the information on this posting?I have read a few of the articles on your website now, and I really like your style. Thanks a million and please keep up the effective work. 토토사이트

    ReplyDelete
  57. Positive site, where did u come up with the information on this posting? I'm pleased I discovered it though, ill be checking back soon to find out what additional posts you include. Turkey Visa Help Desk

    ReplyDelete
  58. Amazing, this is great as you want to learn more, I invite you to This is my page. interlining fabric

    ReplyDelete
  59. Pretty good post. I just stumbled upon your blog and wanted to say that I have really enjoyed reading your blog posts. Any way I'll be subscribing to your feed and I hope you post again soon. Big thanks for the useful info. 먹튀검증

    ReplyDelete
  60. I think this is an informative post and it is very beneficial and knowledgeable. Therefore, I would like to thank you for the endeavors that you have made in writing this article. All the content is absolutely well-researched. Thanks... hiso88.com

    ReplyDelete
  61. These websites are really needed, you can learn a lot. 토토커뮤니티

    ReplyDelete
  62. I know this is one of the most meaningful information for me. And I'm animated reading your article. But should remark on some general things, the website style is perfect; the articles are great. Thanks for the ton of tangible and attainable help. https://www.ifun168.com

    ReplyDelete
  63. I know this is one of the most meaningful information for me. And I'm animated reading your article. But should remark on some general things, the website style is perfect; the articles are great. Thanks for the ton of tangible and attainable help. https://ufa067.net

    ReplyDelete
  64. A great content material as well as great layout. Your website deserves all of the positive feedback it’s been getting. I will be back soon for further quality contents. https://sexygame-finnbet.com

    ReplyDelete
  65. Excellent post. I was reviewing this blog continuously, and I am impressed! Extremely helpful information especially this page. Thank you and good luck. https://hiso88.com

    ReplyDelete
  66. What a thrilling post, you have pointed out some excellent points, I as well believe this is a superb website. I have planned to visit it again and again. https://www.seofastwork.com

    ReplyDelete
  67. Today, I was just browsing along and came upon your blog. Just wanted to say good blog and this article helped me a lot, due to which I have found exactly I was looking. write for us updatedideas

    ReplyDelete
  68. I am very happy to discover your post as it will become on top in my collection of favorite blogs to visit. Andrei Vasilescu

    ReplyDelete