引擎: cocos2.x

代码: c++ 混合 lua

游戏类型: mmo

工程结构:

game : 游戏启动地方

gamelogic:接sdk相关,登陆支付统计等

libFramework:主要本游戏相关c++库

uicontrol:

zpack:一个开源的打包文件工具

-----------------------------------------------------------------------------------------

分析libFramework:

base目录

sfapp.h : 框架app,继承了一个scene,这是本游戏的主scene基类。

cpp:

[cpp] view plain copy

  1. #include "sofia/utils/SFLog.h"
  2. #include "include/utils/SFTimeAxis.h"
  3. #include "map/StructCommon.h"
  4. #include "base/SFApp.h"
  5. #include "SFSimulator.h"
  6. //#include "download/mfDownloader.h"
  7. using namespace cocos2d; 
  8. SFApp::SFApp() 
  9. //this->init();
  10. SFApp::~SFApp() 
  11. void SFApp::startRun() 
  12.     cocos2d::CCSize size = cocos2d::CCEGLView::sharedOpenGLView()->getFrameSize(); 
  13.     m_width = size.width; 
  14.     m_height = size.height; 
  15. //执行update循环!
  16.     getScheduler()->scheduleUpdateForTarget(this, kCCPrioritySystem, false); 
  17. //虚函数,调用子类的实现
  18. this->onInit(); 
  19. // void SFApp::stopRun()
  20. // {
  21. //  getScheduler()->unscheduleUpdateForTarget(this);
  22. // }
  23. //屏幕宽,
  24. int SFApp::getScreenResolutionX() 
  25. return m_width; 
  26. int SFApp::getScreenResolutionY() 
  27. return m_height; 
  28. //这个simulator,难道是cocos3.x 增加的simulator,待会看看
  29. void SFApp::onTick( int microSecs ) 
  30. //SFLog("SFApp::onTick %d", microSecs);
  31.     SFGameSimulator::sharedGameSimulator()->tick();//网络tick//难道这里只是网络监听而已?
  32. //MFDownloader::instance()->tick();          // 下载的回调依赖tick
  33. void SFApp::onDraw() 
  34. void SFApp::update( float dt ) 
  35. //一个定时器实现。用来干嘛呢?
  36. //字面意思,就是在Timer里面,设了一个delaytime,这个应该全局一致
  37.     SFTimeAxis* pTimeAxis = SFTimeAxis::getInstancePtr(); 
  38.     pTimeAxis->advance(dt* 1000); 
  39.     onTick(pTimeAxis->getDelayTime()); 
  40. void SFApp::draw( void ) 
  41.     cocos2d::CCScene::draw(); 
  42.     onDraw(); 
  43. void SFApp::onDestory() 
  44. void SFApp::onExit() 
  45. this->removeAllChildrenWithCleanup(true); 
  46.     onDestory(); 
  47.     cocos2d::CCScene::onExit(); 
  48. bool SFApp::init() 
  49.     cocos2d::CCScene::init(); 
  50.     startRun(); 
  51. return true; 

先把基础的一些代码看完,

------------------------------------------------------------------------

utils目录:
ccstrconv.h 对字符串的一些基本转换处理;不错,这些平时都可以收集起来,自己写的项目可以用到

ccstrutil.h  更多的字符串处理

csvfile.h  csv文件的读写

httptools.h  对cocos提供的http进行了一些封装,这个3.x cocos有xmlhttp,本身都封装过

sfeasymail  调用curl库,直接发email,这个蛮吊的嘛!!!给客服发邮件吗?

sfthread  封装了一个线程类,分别为win和Android-iOS写了不同的实现,信号量,互斥锁,读写锁

singleton 单例模板

streamdataadapter c++和lua直接传递复杂数据的适配器,搞这么复杂。。。

sfminihtml html解析,不知哪里用到

sfexecutionthreadservice  线程的进一步封装

sfprioritynotificationcenter

sfstringutil 更详细的string处理

sftouchdispatcher

----------------------------------------------------------------

stream目录  二进制文件读写操作封装

package  热更新相关

scene scene管理

net 网络

eventset  事件

core 单独写了一个sprite类;用来显示地图上的sprite,有什么好处?

map 主要的mmo地图等元素逻辑

烈焰遮天 cocos 手游mmo 源码 解析的更多相关文章

  1. Cocos手游录制插件:cocos-plugin

    Cocos手游录制插件:cocos-plugin Testinlab2014-10-29 13:42:27153 次阅读 Cocos手游录制插件,用于添加Testin手游自动化测试支持,支持cocos ...

  2. 网狐6603 cocos2dx 棋牌、捕鱼、休闲类游戏《李逵捕鱼》手机端完整源码分析及分享

    该资源说明: cocos2d 棋牌.捕鱼.休闲类游戏<李逵捕鱼>手机端完整源码,网狐6603配套手机版源码,可以选桌子,适合新手学习参考,小编已亲测试,绝对完整可编译手机端,下载后将文件考 ...

  3. Spring学习之——手写Spring源码V2.0(实现IOC、D、MVC、AOP)

    前言 在上一篇<Spring学习之——手写Spring源码(V1.0)>中,我实现了一个Mini版本的Spring框架,在这几天,博主又看了不少关于Spring源码解析的视频,受益匪浅,也 ...

  4. 手写koa-static源码,深入理解静态服务器原理

    这篇文章继续前面的Koa源码系列,这个系列已经有两篇文章了: 第一篇讲解了Koa的核心架构和源码:手写Koa.js源码 第二篇讲解了@koa/router的架构和源码:手写@koa/router源码 ...

  5. HashMap 源码解析

    HashMap简介: HashMap在日常的开发中应用的非常之广泛,它是基于Hash表,实现了Map接口,以键值对(key-value)形式进行数据存储,HashMap在数据结构上使用的是数组+链表. ...

  6. 给jdk写注释系列之jdk1.6容器(2)-LinkedList源码解析

    LinkedList是基于链表结构的一种List,在分析LinkedList源码前有必要对链表结构进行说明.   1.链表的概念      链表是由一系列非连续的节点组成的存储结构,简单分下类的话,链 ...

  7. LinkedList源码解析

    LinkedList是基于链表结构的一种List,在分析LinkedList源码前有必要对链表结构进行说明.1.链表的概念链表是由一系列非连续的节点组成的存储结构,简单分下类的话,链表又分为单向链表和 ...

  8. Masonry1.0.2 源码解析

    在了解Masonry框架之前,有必要先了解一下自动布局的概念.在iOS6之前,UI布局的方式是通过frame属性和Autoresizing来完成的,而在iOS6之后,苹果公司推出了AutoLayout ...

  9. Mybatis 系列8-结合源码解析select、resultMap的用法

    [Mybatis 系列10-结合源码解析mybatis 执行流程] [Mybatis 系列9-强大的动态sql 语句] [Mybatis 系列8-结合源码解析select.resultMap的用法] ...

随机推荐

  1. WdatePicker日历控件动态设置属性参数值

    首先吐槽一下需求人员给了我一个很坑的需求:WdatePicker日历控件里面选择的最小时间(minDate)的值是级联动态改变的,而且这个值要从数据库获取,这样子只能使用 ajax 来发起请求获取mi ...

  2. 51nod 1629 B君的圆锥

    1629 B君的圆锥 基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题  收藏  关注 B君要用一个表面积为S的圆锥将白山云包起来.   B君希望包住的白山云体积尽量 ...

  3. 洛谷 2186 小Z的栈函数

    https://www.luogu.org/problem/show?pid=2186 题目描述 小Z最近发现了一个神奇的机器,这个机器的所有操作都是通过维护一个栈来完成的,它支持如下11个操作: N ...

  4. HDU 1402 FFT 大数乘法

    $A * B$ FFT模板题,找到了一个看起来很清爽的模板 /** @Date : 2017-09-19 22:12:08 * @FileName: HDU 1402 FFT 大整数乘法.cpp * ...

  5. How to Evaluate Machine Learning Models, Part 4: Hyperparameter Tuning

    How to Evaluate Machine Learning Models, Part 4: Hyperparameter Tuning In the realm of machine learn ...

  6. MongoDB - MongoDB CRUD Operations, Update Documents

    Update Methods MongoDB provides the following methods for updating documents in a collection: Method ...

  7. ① 设计模式的艺术-07.适配器(Adapter)模式

    什么是适配器模式? 将一个类的接口转换成客户希望的另外一个接口.Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作. 模式中的角色 目标接口(Target):客户所期待的接口 ...

  8. 说说ASP.NET的IsPostBack

    学习asp.net,就不能不谈IsPostBack属性,顾名思义,这是是否回发的意思,多用于判断是不是第一次打开 一.IsPostBack介绍 Page.IsPostBack是一个标志:当前请求是否第 ...

  9. 2017中国大学生程序设计竞赛 - 网络选拔赛 1003 HDU 6152 Friend-Graph (模拟)

    题目链接 Problem Description It is well known that small groups are not conducive of the development of ...

  10. perl6正则 2: 字母,数字,空格,下划线, 字符集

    数字, 字母, 下划线 在perl6中, 如果是 数字, 字母, 下划线, 在正则里可以正接写上. > so / True > so 'perl6_' ~~ /_/ True > 非 ...