grgetherh游戏引擎赵韬,游戏引擎产品经理、工程师PapayaMobileInc第13期:《移动互联网社交网络、社交游戏之技术架构和市场分析》-木瓜移动专场群:83304912摘要•计算机绘图简介•游戏引擎简介•Papaya游戏引擎•游戏后台•Papaya成功案例计算机绘图简介•绘图本质•真实世界3D-显示屏2D计算机绘图简介•绘图流程applicationgeometryrasterizertransformshadingprojectionPixelcolorbuffers计算机绘图简介•Application•CPU•建模,计算物体位置•动画,碰撞检测,物理效果123…动画计算机绘图简介•完全取决于软件实现。实现方法决定性能Node1Node2Node4Node5Node3Node6图形组织结构计算机绘图简介•Geometry•GPU•计算屏幕上怎样呈现Shading计算机绘图简介•GeometryProjection计算机绘图简介•Rasterizer•GPU•像素处理•每个点的颜色,texture•Depthtest•Stenciltest计算机绘图简介•2D图形xy0,010,00,810,80,01,00,11,1计算机绘图简介•Openglprivatefloatvertices[]={-1.0f,-1.0f,1.0f,//v01.0f,-1.0f,1.0f,//v1-1.0f,1.0f,1.0f,//v21.0f,1.0f,1.0f,//v3privatefloattexture[]={0.0f,0.0f,0.0f,1.0f,1.0f,0.0f,1.0f,1.0f,privatebyteindices[]={//Facesdefinition0,1,3,0,3,2,gl.glVertexPointer(3,GL10.GL_FLOAT,0,vertexBuffer);gl.glTexCoordPointer(2,GL10.GL_FLOAT,0,textureBuffer);gl.glDrawElements(GL10.GL_TRIANGLES,indices.length,GL10.GL_UNSIGNED_BYTE,indexBuffer);计算机绘图简介计算机绘图简介•模型大小和图大小一样•顶点和texture坐标对应关系固定•只需确定模型的一个顶点即可•addsprite(“bg.png”).pos(0,0)计算机绘图简介•3D图形•本质:2D多边形拼接计算机绘图简介•图切割成小矩形•等量的小矩形拼成波浪•顶点x,z坐标用图边长计算•y坐标用sin计算计算机绘图简介•建模工具3Dmax等输出文件•规定多边形坐标•顶点和texture对应关系•游戏引擎解释文件游戏引擎•包装好常用图形模块加载模型编辑参数添加动画添加复杂事件其它游戏引擎•物理•Collisiondetection•Rigidbodydynamics•Softbodydynamics•Fluiddynamics游戏引擎•Collisiondetection•Sweepandprune•细致检测•3D模型检测xy游戏引擎•粒子•雨,雪,爆炸……•大量基本相同的图,微小属性差别•初速度•生命长度•颜色•中心值周围随机浮动Papaya游戏引擎脚本文件编译器指令文件虚拟机运算绘图读写Papaya游戏引擎•计算机结构•CPUPapaya游戏引擎•计算机结构•编译器•高级编程语言-汇编-机器指令•语法树Papaya游戏引擎•虚拟机有堆栈(SunJava)和寄存器(AndroidJava)。Papaya采用堆栈•Papaya编译器实现对python和AS的部分支持,无类型,动态•实现全新的开发环境Papaya游戏引擎•类Python和类Actionscript脚本语言开发•动态性,代码简短•适应不同屏幕尺寸•APIv_scale(800,480)•动态更新游戏脚本•从开发者服务器获取脚本•同样的程序可在不同平台运行•Android和iOS;WP7进行中;Html5也会实现26Papaya游戏引擎API•简单动画•移动,变形……•复杂动画•水波,抖动……•社交•推广渠道•盈利•用户付费分成,认证方式简单动画复杂动画Menu多媒体文件数据库网络社交盈利Sensor物理粒子Papaya游戏程序片段•varp=getscene();•vart=p.addsprite(background.png).size(screensize());•p.addlabel(Hello,thisispapayaengine1,Arial,25);•vart2=p.addsprite(fish.png).pos(600,150);•t2.addaction(repeat(moveby(4000,-600,0),imoveto(600,150)));•//让鱼游动•functionff(x){x.addaction(blink(3000,10));}•t2.setevent(EVENT_TOUCH,ff);•//点击鱼后闪烁粒子效果程序片段•getscene().addsprite(bg.jpg)•f1=getscene().addparticle(PARTICLE_FIRE).pos(screensize()[0]/2,screensize()[1]/2)•f1.start()•f2=getscene().addparticle(fire).pos(200,400)•f2.start()•f3=……•f3.start()快速开发的例子•PM48比赛中的例子Papaya游戏引擎•和Cocos2DAndroid对比,每秒帧数:•C和OpenGL实现性能4760475111134750010203040506070HTCG1HTCG2HTCdesireNexusOnePapayaCocos2dPapaya游戏引擎•和NGCore对比,每秒帧数:55295530.542463423391537.5420102030405060SamsunggalaxyI9000HTCDesireA8181HTCDesireSS510eSamsungSCH-i559MotoA953MotoME811Papaya200fishNgCore200fishPapaya游戏引擎•Html5•CanvasAPI,JS•WebGLPapaya游戏引擎•Html5•PC尚可•移动设备性能不足•Android4.0用openGL渲染•DOM•每一帧都计算•移动电路的尺寸,powerconsumption要求•DirectCanvas等即将上线的功能•可视化界面编辑即将上线的功能•可视化编辑生成界面描述即将上线的功能•可视化编辑生成代码即将上线的功能•粒子编辑器即将上线的功能•debugger即将上线的功能•交叉推广系统•数据统计服务•类似Flurry和GoogleAnalytics•关节动画•PC上模拟器•浮点数•……游戏后台技术•SocialGame•存用户信息,好友关系•Web框架•PHP,turbogears,Django,RubyonRails,JSP,Node.js•数据库•Mysql,Mongodb,Cassandra•缓存•Memcached游戏后台技术•Papaya云计算•给引擎开发者存储数据•使用AmazonEC2空间•不用担心硬件,备份,scalability问题•Database:MongoDB,MongoEngineORM•AppEngine:Python2.6,nginx+uwsgi游戏后台技术Papaya云计算定义数据:classUser(Document):name=StringField()age=IntField()定义接口@apidefget_age(name):returnUser.objects(name=name).first.age游戏里调用varr=PPYCloudRemote();r.get_age(‘Jack’,callback);Papaya成功案例•作为一个商业产品,技术手段的实现还远远不够。•要给开发者带来切实利益•企业的竞争是综合实力的竞争,不是技术手段的竞争Papaya成功案例•木瓜和各渠道的合作•OEM•LG,三星,MOTO,联想•运营商•移动,电信,联通,Verizon•广告商•Tapjoy•各种应用商店推广Papaya成功案例•集成付费渠道•虚拟货币•游戏里卖道具•木瓜农场:化肥,狗的食物•XCity:扩地,建筑盈利Papaya孵化器•免费办公室,电脑•来自木瓜及业内专家指导•游戏引擎开发培训•面向木瓜5千万全球用户•市场营销和公关推广•多维度数据分析支持•高性能云计算服务•游戏测试服务•财务法务及融资等方面指导Xcity、Zombies…OMG、ForestFair、FishingVida、奇迹帝国等成功案例XCity•2011年7月15日发布•仅1名工程师,开发2个月•发布12天,50000用户,现拥有100+万用户•零推广费•日均收入1000+美金•超过20,000用户评价,平均4.7以上得分。Zombies…OMG•夫妻团队,共2人开发3个月•发布2个月来,拥有70+万用户,并在不断增加•2月初Market排名第17•零推广费•日均收入600+美金MafiaFarm•每天7000-1万新用户•日均收入500+美金•2月初Market排名71•付费用户人均约6美元Q&A