`
eric_weitm
  • 浏览: 242699 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
文章列表
cocos2dx中内存管理要注意的地方 1、工厂函数create中要注意使用autorelease,体现 谁取得谁释放 的原则   2、如果是直接new出来的,add进入到别的node之后,注意release一次(因为new时引用计数是1),这样在父类进行release时刚好可以释放掉 3、CCArray CCDictionary 实现了对CCObject的管理,使用之前记得数组本身要retain,否则数组会被干掉;如果obj只在数组中被管理,obj被放入后记得release一下(因为在放入数组时已经retain了一次)   初始化     CCArray *tmpArray = ...
cocos2dx游戏的客户端整体框架设计:   一、传统的方式     直接在每个场景中放置具体的sprite、node、effect等,之后在update中根据game State来进行update的操作,缺点是update中的逻辑异常复杂,代码很难维护   二、分布式的方式   初始化时:     GameScene添加具体的layer,递归的添加每个entity;可以有个GameWorld或GameDataManager来管理所有的数据,使用监听者模式来注册具体的layer(实现网络的回调的数据监听)。 网络回调函数解析出数据之后,更新 相应的数据,进而更新每个具体界面li ...
成员函数指针实现的回调   1、回调的类型设置成基类的成员函数,每次set时进行转换 2、回调的参数是menuItem自身 3、回调的实现是 m_pListener->*m_pfnSelector)(this);  即初始化的时候,设置的是监听者(负责处理回调的指针),    回调内的参数是被点击的对象指针,一般情况下 这2个是一致的。     例子:cocos2d-x中的实现 1、CCObject.h typedef void (CCObject::*SEL_MenuHandler)(CCObject*);             // 定义回调类型 #define ...
android中的多线程 一、基于消息队列的handler机制,别的线程与自己进行交互,需要使用消息队列,这样可以实现功能的分离和处理的异步, Android中对消息队列进行了封装,具体的: 1、Looper 负责维护并发安全的消息队列 2、handler 负责进行消息的入队、出队,以及消息的处理函数 void handleMessage(Message msg) 3、Message 是OS系统内抽象的数据结构 4、相互关系:handler操作的是具体Looper代表的消息队列(不指定时默认是当前线程的looper),并且每个线程有自己的消息队列,因此别的线程可以通过handle ...
unity3d中的坑和解决方案      unity3d是一个很牛x的引擎,当然其也有一些东西是不太好或者说不习惯的,下面列举一些: 1、制作特效时,使用animation记录的位置是相对位置,如果直接放到别的节点下会出问题;     解决方法:在特效根节点的上一层加上一个transform是(0,0,0) (0,0,0)(1,1,1)的父节点,之后再使用和处理父节点 2、使用NGUI制作界面时,ui特效会有位置对不上的问题(美术不会用ngui,使用原始的模型+材质贴图的形式来做特效)     解决方法:让美术将特效直接做到ui上面 3、美术制作的特效导出时丢失材质和贴图 解决方 ...
一些著名的开源项目: 0ad  3D游戏 ACE  网络框架 CEGUI 界面库 boost C++库 cocos2d 游戏库 delta3d 游戏引擎 OGRE    渲染引擎 facebook-hiphop php引擎 d2x-xl  游戏 hadoop   分布式文件系统 mangos   wow 模拟server opencv   图形库 tbb      并发库 three。js js3d渲染引擎 v8       js引擎 monkeySpider js引擎 node     js server端 wxwidget  c++界面库 qt        c++界面库 sgs       ...
mangos 的执行模型 一、线程分布: 1、主线程 main---- Master::Run() ,主要功能:初始化world、创建子线程、回收资源 2、WorldRunnable -------GS主线程 3、CliRunnable -----后台调试线程 4、RARunnable -------事件处理和分发线程 5、MaNGOSsoapRunnable---协议 6、FreezeDetectorRunnable 7、线程池  Master::Run----WorldSocketMgr::StartNetwork---WorldSocketMgr::StartReactiveIO ---R ...
集成spiderMonkey 文档 :https://developer.mozilla.org/En/SpiderMonkey/JSAPI_User_Guide https://developer.mozilla.org/en/How_to_embed_the_JavaScript_engine 一、hello world基本流程:     JS_NewRuntime     JS_NewContext     JS_SetOptions     JS_SetErrorReporter     JS_NewCompartmentAndGlobalObject ------创建global对象 ...
linux 网络模型 一、基本概念: 1、多路复用: 一根网线可同时传递多个信号(时分或频分复用) 2、linux内核的作用:管理、调度进程,管理内存,管理外设(文件描述符)、驱动程序、网络(先管理再分发) 3、linux中所有外设都是fd(文件描述符),socket也是一种文件 4、非阻塞IO:机器中只有一个网卡,在多路复用环境下,应用程序需要进行网络IO,这时如果网卡还没准备好,应用程序有2个选择:    1》等着网卡可用, 如read时网卡上有数据,write时输出缓冲有空间;这时进程会停下来,所以叫阻塞IO    2》先问一下网卡是否可用,不能用就先处理后面的事情,(非阻塞IO) 5、数 ...
3D MMORPG客户端的一般架构 一、前言     通常说的游戏指的是real-time interactive video game, 这里面交互性指的是玩家的操作会影响画面的显示(这是与电影、动画片等的区别),由于系统会对玩家的操作进行反馈,所以这类的游戏更真实,更吸引人,real-time 是指玩家的操作、环境的变化必须要实时的在画面上表现出来。普通PC上运行的客户端游戏是video game的一种,其利用通用的计算机实现了实时交互性的效果。    本质上PC是数字计算机,即信号是离散的(与连续相对)、数字的,所有连续的效果通过足够快的更新画面来实现,实际上电影、电视都是用离散来模拟连续 ...
关于各种编码总结 一 、背景知识   1、计算机中所有的数据都用01串来表示,至于一串01到底代表什么是由软件来设定的。     比如:01111101111101010111110111110101    可以理解为一条指令,也可以理解为4个字节的char字符,具体是 ...
lua的并发哲学 实现并发:1、多线程(本质是共享内存数据、所以要同步多线程) 2、协程(本质是单线程、需要保证不阻塞) 协程的好处: 1、不用线程调度所以可以更充分利用cpu、 2、不处理线程同步减少bug、 3、不会为了效率而故意打断逻辑上一致的代码块(所有有IO的地方后续的代码都要放在回调里),    虚拟机内部在IO函数上yield和resume,回调对用户是屏蔽的 缺点:一个协程阻塞会堵住所有的协程,所以要特殊处理IO 协程体系下的调度器:简单的顺序调度就可以有很高的吞吐率。 一个示例性框架 threads = {} --可以被调度的协程 function receive(c ...
lua 源代码解析 源代码版本:lua-5.2.0 一、概览 1、lua脚本中暴露的库相关 lbaselib.c - 基础函数库(方便使用lua内部的功能) lbitlib.c - 位运算库 lcorolib.c - 协程库 lstrlib.c - 字符串库,提供通用字符串处理功能   lstring.c - 字符串表(保存所有由Lua操作的字符串集合) lmathlib.c - 数学库 loslib.c - 操作系统相关库,时间、环境、语言、执行程序等 liolib.c - 输入输出库 loadlib.c - 模块库(实现require函数,package函数) ldblib.c - 调试库 ...
网游服务端核心技术概述 一 一、反外挂 方案:心跳、个性化脚本验证、图片验证、Apex Protect等 二、脚本系统   满足策划变态的需求变更,   方案:类似lua的脚本系统 三、数据安全   添加dba之类的中间层 四、高并发   协程加消息队列,实际上就是尽量不让cpu等待,--------------大系统的瓶颈都是数据库 五、多连接 多层架构,至少分登陆服、CCS、GS等层次结构
几种常用编程语言的编程思想和方法    搞软件的人,编程语言的掌握是基本功,如果单单是学习语法,最慢的一周之内也应该可以搞定(个人认为 语法层面c++是最复杂的)。不幸的是,软件的本质是逻辑,解决方案的设计是 ...
Global site tag (gtag.js) - Google Analytics