不积跬步,无以至千里;不积小流,无以成江海-http://codingnow.cn
14 followers 0 articles/week
cocos2d-x手游性能优化总结

近段时间在使用cocos2d-x开发2D手游,技术方案使用的是cocos2d-x+lua,因为游戏使用的是cocos2d-x 2.1.5版本,有些优化方案在最新版的cocos2d-x版本已经实现了。这篇文章主要是总结在使用cocos2d-x2.x版本+lua技术方案时遇到的问题和一些性能优化总结。 1. 渲染优化 (1). 合并渲染-自动批处理 因为我使用的cocos2d-x2.1.5版本,引擎并没有实现自动批渲染,底层也改动了不少代码,不太方便直接升级到3.0版本,这里参考了cocos2d-x3.0版本,修改了引擎代码加入自动批渲染。很大程度的降低了draw call批次,比使用CCSpriteBatchNode操控起来更加便捷,CCSpriteBatchNode需要把子节点在逻辑层面手动添加到父节点,逻辑控制比较复杂,特别当精灵节点分布不连续的时候,自动批渲染可以解决这个问题。通过改写精灵类的draw函数,把精灵信息添加到渲染队列,不进行绘制。等到一帧结束或者遇到非精灵节点绘制时才批量绘制渲染队列中的精灵。在绘制之前会对渲染队列中的精灵按逻辑层设置的z值进行排序,一般把相同材质ID(根据textureID+blendFunc+...

Tue Sep 1, 2015 01:36
android使用tcpdump抓包

最近游戏在接qq opensdk的时候调用一个cgi一直不成功,文档描述太简单,我们调用的又是互娱这边msdk的api,由msdk调用opensdk相关api,中间跨了两部门,为了节省时间,只能直接抓包给qq开放平台那边的同事看。 android上抓包是比较简单的,因为在公司用的是台式机,所以这里使用TcpDump进行抓包,TcpDump(dump the traffic on a network)是Linux中强大的网络数据采集分析工具,不过需要拥有root权限才行,抓包之后需要一个图形化的网络封包分析软件看抓包数据,这里使用WireShark(前称Ethereal,是一个很强大的网络封包分析软件),所以需要的工具包括: TcpDump,一台root过的Android手机,WireShark。   1....

Sat Nov 15, 2014 05:54
Android.mk文件解读

我们在Android平台写c/c++程序的时候需要用到Android.mk(Makefile),一般用来编译c/c++源码、引用第三方头文件和库,生成程序所需的so文件。下面是一个cocos2d-x游戏的Android.mk(删除了一些重复的东西),一般默认在jni目录下: #1 LOCAL_PATH := $(call my-dir) #2 自定义了一个all_cpp_files_recursively函数,递归遍历返回给定目录下所有C++源文件。 all_cpp_files_recursively = \ $(eval src_files = $(wildcard $1/*.cpp)) \ $(eval src_files = $(src_files:$(LOCAL_PATH)/%=%))$(src_files)...

Fri Nov 7, 2014 01:43
lua面向对象模拟简介

lua不是面向对象语言,但可以通过表(table)和元表(metatable)来模拟。table 是 lua 中唯一的一种数据结构,它可以用来描述原始的数组、符号表、集合、 记录、图、树等。每一个tabel都可以附加元表, 元表是带有索引集合的表,它可以改变被附加表的行为。因此,lua可以利用元表来模拟面向对象的行为。首先需要了解下面四个东东: __index,__newindex,rawget和rawset。 __index:是metatable的一个索引,它的值可以是表或者函数,它的作用是什么呢?举一个栗子: local A = {}; local B = {x=10}; B.__index = B; setmetatable(A, B); print(A.x); 打印结果是10,它的查找过程是:首先在表A中查找x,没有找到,继续查找A的元表B,找到元表B的索引__index,此时__index的值是表B,表B是有元素x的,所以打印x的值10。简单总结一下查找表元素的过程:...

Fri Aug 8, 2014 20:30
(转)年薪千万的工作感悟

作者背景:徐家骏是华为数据中心的头,技术超级牛人,一级部门总监,华为副总裁,年收入过千万。从一个应届毕业生,到年薪千万的华为副总裁,再到离开华为转战百度,徐家骏的十年从业经历和经验对于今年的应届毕业生来说绝对可资借鉴,我们从中也可以一窥华为公司的运作过程和徐的职业规划。世界上本没有好工作,下的功夫够了,好工作自会找上门的。 上周,我正式提交了离职报告,准备给自己的职业生涯一个很大的转折,这是我长时间的思考最后所做的决定。但真的提出离职后,回想在公司的十年,还是百感交集。 1997年7月16日,我只身提着一个包从深圳宝安机场下飞机,走出机场,天是那么蓝、白云那么低、空气那么潮,仰头望天,对这个城市,对公司、对即将开展的工作和生活、对自己的前途一片茫然。到了科技园,发现是个荒凉而偏僻的地方,不过倒很安静,上学的几年中,一连串的打击,使得我似乎有点喜欢这种安静、荒凉、在他乡的感觉。现在想想,经过十年的工作,自己的心灵真是麻木得可以了。那时候的心里,好像时时有些什么没有着落的东西在激荡,但又说不出来,只有在听德沃夏克的《自新大陆交响曲》时,才发现多有深处的共鸣以至落泪。 由于没赶上大批应届生的接待,我是自己一个人来到科技园1号楼的,干净整洁的...

Sat Jul 5, 2014 00:07
在lua中调用c/c++函数

lua是一种轻量级的脚本语言,用来扩展c和c++非常好,在游戏开发中使用很普遍。 首先下载lua,因为我是在win7下,所以我这里下载了luaforwindows,安装到F:\Lua目录。当然你也可以去官网下载lua源码和二进制文件。 1. 打开vs(我这里是vs2012),创建一个空的win32控制台应用程序。 2. 右键项目属性,设置一些值。 VC++目录-库目录的值,添加:F:\Lua\lib C/C++-附加包含目录,添加:F:\Lua\include 链接器-输入-附加依赖项,添加:lua51.lib 3. 创建luasum.cpp文件: #include <iostream> using namespace std; extern "C" { #include...

Thu May 22, 2014 21:07

Build your own newsfeed

Ready to give it a go?
Start a 14-day trial, no credit card required.

Create account