ngCore

77
ngCore @mootoh

description

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

Transcript of ngCore

Page 1: ngCore

ngCore@mootoh

Page 2: ngCore

Showcase

Page 3: ngCore
Page 4: ngCore
Page 5: ngCore
Page 6: ngCore
Page 7: ngCore
Page 8: ngCore

ngCore

Page 9: ngCore

Me

JTPA SVC 2009

http://いろいろ/mootoh

Page 10: ngCore
Page 11: ngCore

Mobile

Social Game

Page 14: ngCore

Social

Page 15: ngCore

Social Mobile

Page 17: ngCore

Game Mobile

http://www.flickr.com/photos/nchill4x4/5560435682/

Page 18: ngCore

GameMobile Social

Page 19: ngCore

Mobile

Social Game

Page 20: ngCore

ngCore

Page 21: ngCore

CrossPlatform

Performance Productivity

Page 26: ngCore

Performance

C/C++

JS + HTML

◎ \(^o^)/

☓ ◯

Productivity

Page 27: ngCore

Performance

C/C++

JS + HTML

◎ \(^o^)/

☓ ◯

Productivity

JS + Native ◯ ◯

Page 28: ngCore

ngCore•Write game logic in JS

•Run across multiple platforms

•Optimized Native modules

•Rapid development iteration

Page 29: ngCore
Page 30: ngCore

Developer’sView

Page 31: ngCore

DevelopmentProcess

JS

httpd

Page 32: ngCore

DevelopmentProcess

JS

httpd

Edit

Page 33: ngCore

DevelopmentProcess

JS

httpd

Edit reload

Page 34: ngCore

DevelopmentProcess

JS

httpd

Edit Testreload

Page 35: ngCore

DevelopmentProcess

JS

httpd

Edit Testreload

Page 36: ngCore

Demo• Write game logic in JS

• Run across multiple platforms

• Optimized Native modules

• Rapid development iteration

Page 37: ngCore

API• Audio

• Bank

• Device sensors

• 2D Graphics

• Networking

• Physics

• Social

• Storage

• UI

Page 38: ngCore

http://developer.mobage.com

Page 39: ngCore

Internal

Page 40: ngCore

Architecture

JS Engine

JS game code

Native Runtime

Android iOS Flash

v8JSC

C++Objective-CJavaActionScript

Native module

JS ngCore module

Page 41: ngCore

Game Engine

for(;;) { input(); update();}

Page 42: ngCore

RunLoop

Native RuntimeJS Enginecommand string

Page 43: ngCore

RunLoop

Native RuntimeJS Engine

Module

parse

command string

Page 44: ngCore

RunLoop

Native RuntimeJS Engine

Module

parse

exec

command string

Page 45: ngCore

RunLoop

Native RuntimeJS Engine

Module

parse

exec

command string

Page 46: ngCore

RunLoop

Native RuntimeJS Engine

Module

parse

execeval

command string

Page 47: ngCore

RunLoop

Native RuntimeJS Engine

Module

parse

exec

Module

parse eval

command string

Page 48: ngCore

RunLoop

Native RuntimeJS Engine

Module

parse

exec

Module

parse

exec

eval

command string

Page 49: ngCore

RunLoop

Native RuntimeJS Engine

Module

parse

exec

Module

parse

exec

eval

command string

return

Page 50: ngCore

RunLoop

Native RuntimeJS Engine

Module

parse

exec

Module

parse

exec

eval

command string

return

Page 51: ngCore

Command var label = new GL2.Text(); label.setSize(150, height);

NGCore/Client/GL2/Text.js

Page 52: ngCore

Command

Module → id

var label = new GL2.Text(); label.setSize(150, height);

NGCore/Client/GL2/Text.js

Page 53: ngCore

Command

Module → idInstance → id

var label = new GL2.Text(); label.setSize(150, height);

NGCore/Client/GL2/Text.js

Page 54: ngCore

Command

Module → idInstance → idMethod → id

var label = new GL2.Text(); label.setSize(150, height);

NGCore/Client/GL2/Text.js

Page 55: ngCore

Command

Module → idInstance → idMethod → id

var label = new GL2.Text(); label.setSize(150, height);

NGCore/Client/GL2/Text.js

Args:Primitive → StringInstance → id

必要に応じて eval

Page 56: ngCore

Command

Module → idInstance → idMethod → id

var label = new GL2.Text(); label.setSize(150, height);

NGCore/Client/GL2/Text.js

Args:Primitive → StringInstance → id

必要に応じて eval

String“311,1,3,150,100”

Page 57: ngCore

Command

Module → idInstance → idMethod → id

Marshal.dump みたいな

var label = new GL2.Text(); label.setSize(150, height);

NGCore/Client/GL2/Text.js

Args:Primitive → StringInstance → id

必要に応じて eval

String“311,1,3,150,100”

Page 58: ngCore

Implement a Module

IDL in JS{ class: “Text”, namespace: “GL2”, methods: { { sig: “void setText(string text)”, js -> native }}

.js

.cpp / .h

.as

gen stub

Page 59: ngCore

Upcoming...

•More Interactive Development

•Profiler, Debugger

•Graphical Editor

•Social

Page 60: ngCore

Discussion

Page 61: ngCore

SocialGame

Page 62: ngCore
Page 63: ngCore
Page 64: ngCore
Page 65: ngCore
Page 67: ngCore

Social Game

•だれかとやる•すきま時間戦争•$

•これから?

Page 68: ngCore

Game Engines

Page 69: ngCore

JS/HTML5

•で十分なんじゃ?

•これからどんどん速くなるだろうし• JS engine, device の spec

•制限なくなっていくだろうし

Page 70: ngCore

とはいえ

JS + Native

JS + HTML

Native

Performance

Page 71: ngCore

過渡期

•現実的路線• Performance x Productivity

Page 72: ngCore

Hot topics

Page 73: ngCore

WhyngCore?

Page 74: ngCore

Existing Global Social Graph

ngCore

$

Page 75: ngCore

黎明期

•選んでもらえるようにがんばります

Page 76: ngCore

Conclude

Page 77: ngCore

ngCore

Mobile

Social Game

CrossPlatform

Performance Productivity