ngCore

7,667 views
7,485 views

Published on

ngCore, a mobile game engine developed by ngmoco:)/DeNA for Mobage service.

Published in: Technology, Design
0 Comments
9 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
7,667
On SlideShare
0
From Embeds
0
Number of Embeds
169
Actions
Shares
0
Downloads
78
Comments
0
Likes
9
Embeds 0
No embeds

No notes for slide

ngCore

  1. 1. ngCore @mootoh
  2. 2. Showcase
  3. 3. ngCore
  4. 4. Mehttp:// /mootohJTPA SVC 2009
  5. 5. MobileSocial Game
  6. 6. Mobile http://www.flickr.com/photos/mkuma443/4731933259/ http://www.flickr.com/photos/marklincoln/5255361533/
  7. 7. Mobile http://blog.nielsen.com/nielsenwire/consumer/smartphones-to-overtake-feature-phones-in-u-s-by-2011/ March 26, 2010
  8. 8. Social
  9. 9. Social Mobile
  10. 10. Game http://www.flickr.com/photos/nchill4x4/5560435682/
  11. 11. Game Mobile http://www.flickr.com/photos/nchill4x4/5560435682/
  12. 12. Mobile Social Game
  13. 13. MobileSocial Game
  14. 14. ngCore
  15. 15. Cross PlatformPerformance Productivity
  16. 16. Platforms Objective-C Java
  17. 17. Platforms Objective-C Java
  18. 18. Platforms Objective-C Java C/C++
  19. 19. Platforms Objective-C Java C/C++ Javascript + HTML
  20. 20. Performance ProductivityC/C++ (^o^)JS + HTML ☓
  21. 21. Performance ProductivityC/C++ (^o^)JS + HTML ☓JS + Native
  22. 22. ngCore• Write game logic in JS• Run across multiple platforms• Optimized Native modules• Rapid development iteration
  23. 23. Developer’s View
  24. 24. Development ProcessJS httpd
  25. 25. Development Process JS httpdEdit
  26. 26. Development Process JS httpdEdit reload
  27. 27. Development Process JS httpdEdit reload Test
  28. 28. Development Process JS httpdEdit reload Test
  29. 29. Demo • Write game logic in JS • Run across multiple platforms • Optimized Native modules • Rapid development iteration
  30. 30. API• Audio • Social• Bank • Storage• Device sensors • UI• 2D Graphics• Networking• Physics
  31. 31. http://developer.mobage.com
  32. 32. Internal
  33. 33. Architecture JS game code JS ngCore module v8 JS Engine JSC C++ Native module Objective-C Java Native Runtime ActionScriptAndroid iOS Flash
  34. 34. Game Engine for(;;) { input(); update(); }
  35. 35. RunLoopJS Engine Native Runtime command string
  36. 36. RunLoopJS Engine Native Runtime command string parse Module
  37. 37. RunLoopJS Engine Native Runtime command string parse Module exec
  38. 38. RunLoopJS Engine Native Runtime command string parse Module exec
  39. 39. RunLoopJS Engine Native Runtime command string parse Module eval exec
  40. 40. RunLoopJS Engine Native Runtime command string parseModule Module parse eval exec
  41. 41. RunLoopJS Engine Native Runtime command string exec parseModule Module parse eval exec
  42. 42. RunLoopJS Engine Native Runtime command string exec parse returnModule Module parse eval exec
  43. 43. RunLoopJS Engine Native Runtime command string exec parse returnModule Module parse eval exec
  44. 44. Command var label = new GL2.Text(); label.setSize(150, height); NGCore/Client/GL2/Text.js
  45. 45. Command var label = new GL2.Text(); label.setSize(150, height);Module → id NGCore/Client/GL2/Text.js
  46. 46. Command var label = new GL2.Text(); label.setSize(150, height);Module → idInstance → id NGCore/Client/GL2/Text.js
  47. 47. Command var label = new GL2.Text(); label.setSize(150, height);Module → idInstance → idMethod → id NGCore/Client/GL2/Text.js
  48. 48. Command var label = new GL2.Text(); label.setSize(150, height);Module → idInstance → idMethod → idArgs: eval Primitive → String Instance → id NGCore/Client/GL2/Text.js
  49. 49. Command var label = new GL2.Text(); label.setSize(150, height);Module → idInstance → id String “311,1,3,150,100”Method → idArgs: eval Primitive → String Instance → id NGCore/Client/GL2/Text.js
  50. 50. Command var label = new GL2.Text(); label.setSize(150, height);Module → idInstance → id String “311,1,3,150,100”Method → idArgs: eval Primitive → String Marshal.dump Instance → id NGCore/Client/GL2/Text.js
  51. 51. Implement a Module IDL in JS gen stub{ class: “Text”, .js namespace: “GL2”, methods: { { sig: “void setText(string text)”, .cpp / .h js -> native }} .as
  52. 52. Upcoming...• More Interactive Development• Profiler, Debugger• Graphical Editor• Social
  53. 53. Discussion
  54. 54. SocialGame
  55. 55. http://www.flickr.com/photos/canadianveggie/4104506343/ http://www.flickr.com/photos/gullevek/3368785185/
  56. 56. Social Game•••$• ?
  57. 57. GameEngines
  58. 58. JS/HTML5• ?•• JS engine, device spec•
  59. 59. Performance Native JS + Native JS + HTML
  60. 60. •• Performance x Productivity
  61. 61. Hot topics
  62. 62. WhyngCore?
  63. 63. Existing Global Social Graph ngCore $
  64. 64.
  65. 65. Conclude
  66. 66. Mobile Social Game CrossngCore Platform Performance Productivity

×