SlideShare a Scribd company logo
1 of 32
Download to read offline
基于cocos2d-x
 的游戏框架设计
单击此处编辑母版标题
单击此处编辑标题
 人人游戏-李成(关中刀客)
guanzhongdaoke@gmail.com
       2012-03-10
WHY THIS PPT
•  cocos2d-x开发经验分享
  –  虽有大量的技术点分享,但无大型项目整体的设计经验分享
  –  如何充分结合IOS平台的诸多特性
  –  避免项目开发中后期,面临难以拓展,难以复用的问题

•  传统游戏开发经验分享
  –  传统游戏开发技术已经很成熟,完全值得学习和借鉴

•  交流探讨
  –  抛砖引玉,希望大家将自己的开发经验分享出来
  –  众人拾柴火焰高
LET US GO
大楼倒塌VS游戏崩溃
灾难之后……
游戏开发 VS 盖大楼
•  前期设计规划很重要

•  基础设施,基础模块的构建很重要

•  拓展性&重用性很重要

•  健壮性&安全性很重要

•  从基础做起,从细节做起,拒绝豆腐渣工程
COCOS2D-X&IOS简介篇
COCOS2D-X引擎简介
•  cocos2d的c++版本,c/c++开发者的福音

•  支持IOS,Android,Windows等平台,跨平台开发的福音

•  开源免费,易学易用,庞大的工具链支持

•  强大的技术支持,活跃的技术社区交流平台

•  多款线上游戏应用经验

•  不断的完善和改进,逐渐增加更多的新技术
COCOS2D-X引擎简介
•  cocos2d-x引擎框架图
IOS应用程序框架
•  UIApplication

•  UIApplication Delegate

•  UIScreen

•  UIWindow

•  UIView

•  UIView Controller
IOS应用程序框架
IOS应用程序运行周期
IOS应用程序运行周期
COCOS2D-X&IOS的结合
•  EAGLView
   – 自定义View,继承自UIView,客户端最主要的View界面
   – 捕捉,封装和分发系统TOUCH事件
   – 外层的RootViewController为其控制器,可通过该控制器对
     EAGLView进行相关控制
   – OpenGL-ES进行渲染更新

•  Accelerometer
   – AccelerometerDispatcher实现了UIAccelerometerDelegate协
     议,并接收系统Accelerometer事件,然后内部派发处理
   – 依附在CCLayer上
COCOS2D-X&IOS的结合
•  引擎总体更新流程
 –  UIApplication初始化完成之后,通过UIApplication Delegate初始化EAGLView,调
   用引擎CCApplication的run()接口

 –  调用初始化initInstance()及applicationDidFinishLaunching()接口,调用
   CCDirectorCaller的startMainLoop()接口

 –  调用系统接口CADisplayLink,注册引擎桢更新处理函数:导演类CCDirector内部
   的mainLoop()

 –  系统定时回调mainLoop(),进入其内部的drawScene()方法

 –  逻辑更新处理:CCScheduler::Tick()

 –  渲染更新处理
游戏客户端总体架构篇
客户端主模块
•  单一CCScene
  –  拒绝不必要的花哨表现,简化代码实现

•  基于帧率的游戏更新处理
  –  游戏主逻辑MINIFinger继承自CCNode,且在初始化Init函数中通
     过schedule设置游戏逻辑主更新函数Tick(),以此确保每次渲染之
     前,都会首先进行逻辑更新处理

•  完全基于帧率的定时器调度
  –  所有的定时器处理,完全依赖于游戏帧率,简单直接
客户端网络模块
•  网络模块总体设计图
客户端网络模块
•  原生的SOCKET封装
   –  原生的socket编程,简单直接
   –  代码可控,方便定位问题

•  Non-Blocking IO
   –  使用非阻塞式IO模式,无需开辟网络线程
   –  对于TCP来说,单独的连接线程

•  Selector轮训模式
   –  监听所有socket可读,可写和异常的消息
   –  基于事件的回调处理方式
客户端网络模块
•  TCP & UDP
  –  对于TCP来说,为解决粘包问题,内部使用MemNode来接收数据
  –  对于UDP来说,使用Sequence Number方式处理杂乱,无序包

•  定制内存池管理器
  –  绝大部分的数据包大小限制于4096bytes
  –  free-list内存池技术,NO-MEMCPY;避免频繁new/delete

•  异或加密方式
  –  A^B->C C^B->A
  –  一次异或,明文变密文;二次异或,密文变明文
  –  简单高效,安全性低
游戏数据层模块
•  仅指游戏数据层
  –  非IOS常规开发中的数据层,特制游戏内的静态数据层

•  客户端通常需要大量的静态资源
  –  图片资源&音效资源,窗口布局文件
  –  其他游戏策划数据

•  拒绝扁平化文件存储
  –  使用SQLite
  –  统一进行读写,提高IO读取效率

•  统一管理
  –  建立统一的加载,更新和卸载等机制
  –  方便游戏逻辑管理和监控
游戏数据层模块
•  数据模块示意图
游戏UI系统模块
•  UI布局示意图
游戏UI系统模块
•  窗口布局组
  –    相同“功能”UI组件合并为一个布局Layout
  –    统一化管理:初始化/加载/更新/事件响应/卸载操作
  –    基于消息事件的处理方式,方便脚本拓展
  –    采用外部配置处理/支持动态化配置

•  独立的根窗口(UILayer)
  –  系统最底层的窗口层,所有Layout的父窗口
  –  游戏内唯一监听Touch,Accelerometer事件的CCLayer
  –  采集用户输入,统一化处理

•  脚本拓展
  –  Lua语言拓展,将具体逻辑和游戏框架分离,加强健壮性
游戏UI系统模块
•  UI局部配置化文件示意图
游戏UI系统模块
•  关于模态窗口
  –  修改源代码,在CCNode中增加m_bPriorityFromParent;
     m_nPriority属性,所有添加的UI组件,需要明确设定是否继承父
     节点的优先级,以此形成一个优先级响应队列,从而实现模态窗
     口的功能
  –  借助系统UIView,实现单独的View界面,附加在EAGLView之上

•  相关优化
  –  所有Layout延迟加载
  –  不使用时马上卸载,释放内存
  –  合并需要的图片资源
游戏音效模块
•  FmodEx
  –  成熟高效,接口简单统一,无需考虑平台化差异
  –  功能强大,支持3D音效,静音,暂定,音量大小等设置
  –  需要购买

•  引用计数
  –  相同的音效,仅需公用一份资源数据
  –  及时清除不需要的音效资源,减少内存占用
游戏音效模块
•  人性化设置
 –    增加人性化的设置面板,提升用户感受
 –    提供动态开启/关闭,设置音量等功能
 –    按照用途,划分音效类型,单独管理
 –    通过Application Delegate,程序获得焦点时播放音效,失去时静
      音

•  关于音效资源
 –  音效文件尽可能的小,降低内存占用
其他模块简介
•  消息事件管理模块
  –  整个客户端基于消息事件驱动
  –  实现和调度分隔,最大程序降低耦合

•  调试器管理器模块
  –  XCODE自带的调试器工具不够用
  –  需要针对渲染,网络,逻辑数据进行更细化的监控
  –  两者结合,宏观微观,两手一起抓

•  日志模块
  –  日志分等级,分输入方式,完全可配置
  –  不同类型日志,按照等级分开记录
还需要什么?
•  消息推送
  –  借用本地和远程的消息推送机制,提高产品粘合度
  –  借助“社会工程”,调动玩家积极性

•  移动产品的UI界面设计
  –  移动产品的UI界面尽量简单直接
  –  人性化操作

•  移动产品的特性
  –  考虑移动产品的特性和人们的使用习惯等,有针对性的设计
THANKS
•  感谢cocos2d-x引擎团队的大力支持

•  感谢本次大会的支持

•  Thanks All
08   gaming framework design based on cocos2d-x

More Related Content

Viewers also liked

Web并发模型粗浅探讨v3
Web并发模型粗浅探讨v3Web并发模型粗浅探讨v3
Web并发模型粗浅探讨v3乐费 胡
 
神仙道移动Ui演变
神仙道移动Ui演变神仙道移动Ui演变
神仙道移动Ui演变乐费 胡
 
07 funny sango td and cocos2d-x
07   funny sango td and cocos2d-x07   funny sango td and cocos2d-x
07 funny sango td and cocos2d-x乐费 胡
 
09 creating windows phone game with cocos2d-xna
09   creating windows phone game with cocos2d-xna09   creating windows phone game with cocos2d-xna
09 creating windows phone game with cocos2d-xna乐费 胡
 
05 optimization of cocos2d-x games on x86 architecture
05   optimization of cocos2d-x games on x86 architecture05   optimization of cocos2d-x games on x86 architecture
05 optimization of cocos2d-x games on x86 architecture乐费 胡
 
06 html5 and cocos2d-x
06   html5 and cocos2d-x06   html5 and cocos2d-x
06 html5 and cocos2d-x乐费 胡
 
Dean Keynote Ladis2009
Dean Keynote Ladis2009Dean Keynote Ladis2009
Dean Keynote Ladis2009longhao
 

Viewers also liked (7)

Web并发模型粗浅探讨v3
Web并发模型粗浅探讨v3Web并发模型粗浅探讨v3
Web并发模型粗浅探讨v3
 
神仙道移动Ui演变
神仙道移动Ui演变神仙道移动Ui演变
神仙道移动Ui演变
 
07 funny sango td and cocos2d-x
07   funny sango td and cocos2d-x07   funny sango td and cocos2d-x
07 funny sango td and cocos2d-x
 
09 creating windows phone game with cocos2d-xna
09   creating windows phone game with cocos2d-xna09   creating windows phone game with cocos2d-xna
09 creating windows phone game with cocos2d-xna
 
05 optimization of cocos2d-x games on x86 architecture
05   optimization of cocos2d-x games on x86 architecture05   optimization of cocos2d-x games on x86 architecture
05 optimization of cocos2d-x games on x86 architecture
 
06 html5 and cocos2d-x
06   html5 and cocos2d-x06   html5 and cocos2d-x
06 html5 and cocos2d-x
 
Dean Keynote Ladis2009
Dean Keynote Ladis2009Dean Keynote Ladis2009
Dean Keynote Ladis2009
 

Similar to 08 gaming framework design based on cocos2d-x

杜增强 Flash移动开发优化技巧
杜增强 Flash移动开发优化技巧杜增强 Flash移动开发优化技巧
杜增强 Flash移动开发优化技巧增强 杜
 
Taobao casestudy-yufeng-qcon
Taobao casestudy-yufeng-qconTaobao casestudy-yufeng-qcon
Taobao casestudy-yufeng-qconYiwei Ma
 
N-layer design & development
N-layer design & developmentN-layer design & development
N-layer design & developmentXuefeng Zhang
 
Component in fe
Component in feComponent in fe
Component in fesking l
 
美团前端架构简介
美团前端架构简介美团前端架构简介
美团前端架构简介pan weizeng
 
Deskpool vdi solution introduction
Deskpool vdi solution introductionDeskpool vdi solution introduction
Deskpool vdi solution introductionDongLiwu
 
豆瓣网技术架构变迁
豆瓣网技术架构变迁豆瓣网技术架构变迁
豆瓣网技术架构变迁reinhardx
 
使用Javascript及HTML5打造協同運作系統
使用Javascript及HTML5打造協同運作系統使用Javascript及HTML5打造協同運作系統
使用Javascript及HTML5打造協同運作系統Hsu Ping Feng
 
高效益、設計專利保護 如何達成雙贏?
高效益、設計專利保護 如何達成雙贏?高效益、設計專利保護 如何達成雙贏?
高效益、設計專利保護 如何達成雙贏?NVIDIA Taiwan
 
了解应用服务器
了解应用服务器了解应用服务器
了解应用服务器Feng Yu
 
Kvmopt osforce
Kvmopt osforceKvmopt osforce
Kvmopt osforcemeecheng
 
[SITCON2015] 自己的異質多核心平台自己幹
[SITCON2015] 自己的異質多核心平台自己幹[SITCON2015] 自己的異質多核心平台自己幹
[SITCON2015] 自己的異質多核心平台自己幹Aj MaChInE
 
张松国 腾讯微博架构介绍08
张松国 腾讯微博架构介绍08张松国 腾讯微博架构介绍08
张松国 腾讯微博架构介绍08drewz lin
 
NoSQL误用和常见陷阱分析
NoSQL误用和常见陷阱分析NoSQL误用和常见陷阱分析
NoSQL误用和常见陷阱分析iammutex
 
构建可维护的Javascript 小米网
构建可维护的Javascript 小米网构建可维护的Javascript 小米网
构建可维护的Javascript 小米网yang alex
 
张勇 搜搜前端架构
张勇 搜搜前端架构张勇 搜搜前端架构
张勇 搜搜前端架构isnull
 
Nodejs & NAE
Nodejs & NAENodejs & NAE
Nodejs & NAEq3boy
 
ProtoStar:“次世代”的移动端渲染
ProtoStar:“次世代”的移动端渲染ProtoStar:“次世代”的移动端渲染
ProtoStar:“次世代”的移动端渲染Ning Hu
 

Similar to 08 gaming framework design based on cocos2d-x (20)

杜增强 Flash移动开发优化技巧
杜增强 Flash移动开发优化技巧杜增强 Flash移动开发优化技巧
杜增强 Flash移动开发优化技巧
 
Taobao casestudy-yufeng-qcon
Taobao casestudy-yufeng-qconTaobao casestudy-yufeng-qcon
Taobao casestudy-yufeng-qcon
 
N-layer design & development
N-layer design & developmentN-layer design & development
N-layer design & development
 
LinkIt 7697 IoT tutorial
LinkIt 7697 IoT tutorialLinkIt 7697 IoT tutorial
LinkIt 7697 IoT tutorial
 
Component in fe
Component in feComponent in fe
Component in fe
 
美团前端架构简介
美团前端架构简介美团前端架构简介
美团前端架构简介
 
Deskpool vdi solution introduction
Deskpool vdi solution introductionDeskpool vdi solution introduction
Deskpool vdi solution introduction
 
豆瓣网技术架构变迁
豆瓣网技术架构变迁豆瓣网技术架构变迁
豆瓣网技术架构变迁
 
美团技术团队 - KVM性能优化
美团技术团队 - KVM性能优化美团技术团队 - KVM性能优化
美团技术团队 - KVM性能优化
 
使用Javascript及HTML5打造協同運作系統
使用Javascript及HTML5打造協同運作系統使用Javascript及HTML5打造協同運作系統
使用Javascript及HTML5打造協同運作系統
 
高效益、設計專利保護 如何達成雙贏?
高效益、設計專利保護 如何達成雙贏?高效益、設計專利保護 如何達成雙贏?
高效益、設計專利保護 如何達成雙贏?
 
了解应用服务器
了解应用服务器了解应用服务器
了解应用服务器
 
Kvmopt osforce
Kvmopt osforceKvmopt osforce
Kvmopt osforce
 
[SITCON2015] 自己的異質多核心平台自己幹
[SITCON2015] 自己的異質多核心平台自己幹[SITCON2015] 自己的異質多核心平台自己幹
[SITCON2015] 自己的異質多核心平台自己幹
 
张松国 腾讯微博架构介绍08
张松国 腾讯微博架构介绍08张松国 腾讯微博架构介绍08
张松国 腾讯微博架构介绍08
 
NoSQL误用和常见陷阱分析
NoSQL误用和常见陷阱分析NoSQL误用和常见陷阱分析
NoSQL误用和常见陷阱分析
 
构建可维护的Javascript 小米网
构建可维护的Javascript 小米网构建可维护的Javascript 小米网
构建可维护的Javascript 小米网
 
张勇 搜搜前端架构
张勇 搜搜前端架构张勇 搜搜前端架构
张勇 搜搜前端架构
 
Nodejs & NAE
Nodejs & NAENodejs & NAE
Nodejs & NAE
 
ProtoStar:“次世代”的移动端渲染
ProtoStar:“次世代”的移动端渲染ProtoStar:“次世代”的移动端渲染
ProtoStar:“次世代”的移动端渲染
 

More from 乐费 胡

10 multi-platform game development using cocos2d-x
10   multi-platform game development using cocos2d-x10   multi-platform game development using cocos2d-x
10 multi-platform game development using cocos2d-x乐费 胡
 
04 growing up with the open source community
04   growing up with the open source community04   growing up with the open source community
04 growing up with the open source community乐费 胡
 
03 crazy castle meets cocos2d-x
03   crazy castle meets cocos2d-x03   crazy castle meets cocos2d-x
03 crazy castle meets cocos2d-x乐费 胡
 
02 evolution innovation and participation
02   evolution innovation and participation02   evolution innovation and participation
02 evolution innovation and participation乐费 胡
 
01 cocos2d past, present and future
01   cocos2d past, present and future01   cocos2d past, present and future
01 cocos2d past, present and future乐费 胡
 
11 share experience on porting 3 kingdoms td legned of shu
11   share experience on porting 3 kingdoms td legned of shu11   share experience on porting 3 kingdoms td legned of shu
11 share experience on porting 3 kingdoms td legned of shu乐费 胡
 
Oauth tutorial
Oauth tutorialOauth tutorial
Oauth tutorial乐费 胡
 
[.产品设计与用户体验(马化腾)
[.产品设计与用户体验(马化腾)[.产品设计与用户体验(马化腾)
[.产品设计与用户体验(马化腾)乐费 胡
 

More from 乐费 胡 (8)

10 multi-platform game development using cocos2d-x
10   multi-platform game development using cocos2d-x10   multi-platform game development using cocos2d-x
10 multi-platform game development using cocos2d-x
 
04 growing up with the open source community
04   growing up with the open source community04   growing up with the open source community
04 growing up with the open source community
 
03 crazy castle meets cocos2d-x
03   crazy castle meets cocos2d-x03   crazy castle meets cocos2d-x
03 crazy castle meets cocos2d-x
 
02 evolution innovation and participation
02   evolution innovation and participation02   evolution innovation and participation
02 evolution innovation and participation
 
01 cocos2d past, present and future
01   cocos2d past, present and future01   cocos2d past, present and future
01 cocos2d past, present and future
 
11 share experience on porting 3 kingdoms td legned of shu
11   share experience on porting 3 kingdoms td legned of shu11   share experience on porting 3 kingdoms td legned of shu
11 share experience on porting 3 kingdoms td legned of shu
 
Oauth tutorial
Oauth tutorialOauth tutorial
Oauth tutorial
 
[.产品设计与用户体验(马化腾)
[.产品设计与用户体验(马化腾)[.产品设计与用户体验(马化腾)
[.产品设计与用户体验(马化腾)
 

08 gaming framework design based on cocos2d-x

  • 2. WHY THIS PPT •  cocos2d-x开发经验分享 –  虽有大量的技术点分享,但无大型项目整体的设计经验分享 –  如何充分结合IOS平台的诸多特性 –  避免项目开发中后期,面临难以拓展,难以复用的问题 •  传统游戏开发经验分享 –  传统游戏开发技术已经很成熟,完全值得学习和借鉴 •  交流探讨 –  抛砖引玉,希望大家将自己的开发经验分享出来 –  众人拾柴火焰高
  • 6. 游戏开发 VS 盖大楼 •  前期设计规划很重要 •  基础设施,基础模块的构建很重要 •  拓展性&重用性很重要 •  健壮性&安全性很重要 •  从基础做起,从细节做起,拒绝豆腐渣工程
  • 8. COCOS2D-X引擎简介 •  cocos2d的c++版本,c/c++开发者的福音 •  支持IOS,Android,Windows等平台,跨平台开发的福音 •  开源免费,易学易用,庞大的工具链支持 •  强大的技术支持,活跃的技术社区交流平台 •  多款线上游戏应用经验 •  不断的完善和改进,逐渐增加更多的新技术
  • 10. IOS应用程序框架 •  UIApplication •  UIApplication Delegate •  UIScreen •  UIWindow •  UIView •  UIView Controller
  • 14. COCOS2D-X&IOS的结合 •  EAGLView – 自定义View,继承自UIView,客户端最主要的View界面 – 捕捉,封装和分发系统TOUCH事件 – 外层的RootViewController为其控制器,可通过该控制器对 EAGLView进行相关控制 – OpenGL-ES进行渲染更新 •  Accelerometer – AccelerometerDispatcher实现了UIAccelerometerDelegate协 议,并接收系统Accelerometer事件,然后内部派发处理 – 依附在CCLayer上
  • 15. COCOS2D-X&IOS的结合 •  引擎总体更新流程 –  UIApplication初始化完成之后,通过UIApplication Delegate初始化EAGLView,调 用引擎CCApplication的run()接口 –  调用初始化initInstance()及applicationDidFinishLaunching()接口,调用 CCDirectorCaller的startMainLoop()接口 –  调用系统接口CADisplayLink,注册引擎桢更新处理函数:导演类CCDirector内部 的mainLoop() –  系统定时回调mainLoop(),进入其内部的drawScene()方法 –  逻辑更新处理:CCScheduler::Tick() –  渲染更新处理
  • 17. 客户端主模块 •  单一CCScene –  拒绝不必要的花哨表现,简化代码实现 •  基于帧率的游戏更新处理 –  游戏主逻辑MINIFinger继承自CCNode,且在初始化Init函数中通 过schedule设置游戏逻辑主更新函数Tick(),以此确保每次渲染之 前,都会首先进行逻辑更新处理 •  完全基于帧率的定时器调度 –  所有的定时器处理,完全依赖于游戏帧率,简单直接
  • 19. 客户端网络模块 •  原生的SOCKET封装 –  原生的socket编程,简单直接 –  代码可控,方便定位问题 •  Non-Blocking IO –  使用非阻塞式IO模式,无需开辟网络线程 –  对于TCP来说,单独的连接线程 •  Selector轮训模式 –  监听所有socket可读,可写和异常的消息 –  基于事件的回调处理方式
  • 20. 客户端网络模块 •  TCP & UDP –  对于TCP来说,为解决粘包问题,内部使用MemNode来接收数据 –  对于UDP来说,使用Sequence Number方式处理杂乱,无序包 •  定制内存池管理器 –  绝大部分的数据包大小限制于4096bytes –  free-list内存池技术,NO-MEMCPY;避免频繁new/delete •  异或加密方式 –  A^B->C C^B->A –  一次异或,明文变密文;二次异或,密文变明文 –  简单高效,安全性低
  • 21. 游戏数据层模块 •  仅指游戏数据层 –  非IOS常规开发中的数据层,特制游戏内的静态数据层 •  客户端通常需要大量的静态资源 –  图片资源&音效资源,窗口布局文件 –  其他游戏策划数据 •  拒绝扁平化文件存储 –  使用SQLite –  统一进行读写,提高IO读取效率 •  统一管理 –  建立统一的加载,更新和卸载等机制 –  方便游戏逻辑管理和监控
  • 24. 游戏UI系统模块 •  窗口布局组 –  相同“功能”UI组件合并为一个布局Layout –  统一化管理:初始化/加载/更新/事件响应/卸载操作 –  基于消息事件的处理方式,方便脚本拓展 –  采用外部配置处理/支持动态化配置 •  独立的根窗口(UILayer) –  系统最底层的窗口层,所有Layout的父窗口 –  游戏内唯一监听Touch,Accelerometer事件的CCLayer –  采集用户输入,统一化处理 •  脚本拓展 –  Lua语言拓展,将具体逻辑和游戏框架分离,加强健壮性
  • 26. 游戏UI系统模块 •  关于模态窗口 –  修改源代码,在CCNode中增加m_bPriorityFromParent; m_nPriority属性,所有添加的UI组件,需要明确设定是否继承父 节点的优先级,以此形成一个优先级响应队列,从而实现模态窗 口的功能 –  借助系统UIView,实现单独的View界面,附加在EAGLView之上 •  相关优化 –  所有Layout延迟加载 –  不使用时马上卸载,释放内存 –  合并需要的图片资源
  • 27. 游戏音效模块 •  FmodEx –  成熟高效,接口简单统一,无需考虑平台化差异 –  功能强大,支持3D音效,静音,暂定,音量大小等设置 –  需要购买 •  引用计数 –  相同的音效,仅需公用一份资源数据 –  及时清除不需要的音效资源,减少内存占用
  • 28. 游戏音效模块 •  人性化设置 –  增加人性化的设置面板,提升用户感受 –  提供动态开启/关闭,设置音量等功能 –  按照用途,划分音效类型,单独管理 –  通过Application Delegate,程序获得焦点时播放音效,失去时静 音 •  关于音效资源 –  音效文件尽可能的小,降低内存占用
  • 29. 其他模块简介 •  消息事件管理模块 –  整个客户端基于消息事件驱动 –  实现和调度分隔,最大程序降低耦合 •  调试器管理器模块 –  XCODE自带的调试器工具不够用 –  需要针对渲染,网络,逻辑数据进行更细化的监控 –  两者结合,宏观微观,两手一起抓 •  日志模块 –  日志分等级,分输入方式,完全可配置 –  不同类型日志,按照等级分开记录
  • 30. 还需要什么? •  消息推送 –  借用本地和远程的消息推送机制,提高产品粘合度 –  借助“社会工程”,调动玩家积极性 •  移动产品的UI界面设计 –  移动产品的UI界面尽量简单直接 –  人性化操作 •  移动产品的特性 –  考虑移动产品的特性和人们的使用习惯等,有针对性的设计