手机游戏开发框架设计(一):配置管理-包管理中心

本系列所有文章:手机游戏开发框架设计(前言)


包管理中心

包管理中心是整个配置管理中心的基础,所以与客户端有关的配置都是基于包管理的。

包管理中心可配置每个包的 启动公告 ,实现 停服维护管理 ,这与服务器是否真正关闭无关。

包管理中心还能够提供给客户端需要的服务器列表,实现 服务器故障灵活切换

包管理中心按照每个客户端包提供不同的配置信息,使客户端能够实现以包和渠道为单位的细粒度配置。
继续阅读手机游戏开发框架设计(一):配置管理-包管理中心

手机游戏开发框架设计(前言+目录)

手机游戏的开发和上线是个很复杂的过程。无论是独代还是联运,都涉及到大量的不同分发渠道,同一个游戏包的不同名称,不一样的 Icon 和包装,不一样的商品设置,不一样的支付方式设置,分离的登录流程,分服和混服,不同平台包的下载和更新等等内容。这些内容涉及到开发、商务、运营和客服各个岗位,繁杂且容易出错。

在长期的与这个过程斗争中,我们积累了一些可以通用的系统。这套系统包括客户端的通用模块,服务器登录设计,热更新系统设计,SDK 接入设计,启动公告设计,消息推送系统设计,支付系统设计等等。大部分设计都是需要客户端与数据服务端的结合。我们把模块一一拆开,让它们能够支持多个游戏,还设计了一套统一的后台系统,让它能够管理多个游戏。

这些设计减少了开发的工作量,也让游戏发行管理更加简单。这套系统包含的主要是客户端开发设计与 API 开发设计,与游戏服务器开发没有太大的关系。这套系统主要为客户端开发和游戏运营服务,因此对各种类型的手机游戏都可以支持。

因此,把这套系统叫做 手机游戏开发框架 其实并不合适,它不包含游戏服务端的内容,也并不是一套完整的客户端开发框架。但我们一时也找不到更合适的名称了。我们把这些内容写出来,让这些文章作为我们游戏开发工作的一个总结,同时也希望从事手机游戏开发的同行指正。

我们将撰写一系列文章来说明这套系统的设计。下面是这个系列文章的目录,所有的文章链接将更新在这里: 继续阅读手机游戏开发框架设计(前言+目录)

客户端技能树

  • 2015-11-29 更新:完善『工具-文档工具』,增加『工具-国际化』,调整『引擎』。
  • 2016-01-19 更新:增加培训类型和层层递进的培训进程。调整技能树。

这半年的时间我一直在带团队。

从4年前创业开始,我就了解到每个人的兴趣点,学习方式,工作方式和追求终究是不同的。作为 CTO 或者技术 Leader,你可以制定整个公司的技术架构,但无法影响每个人固有的思路。每个人都有自己的短板和长处,每个人都有自己的擅长点和禁区。有些人死守自己的领域不放,有些人则不知该如何成长。如果不能从最根本的层面去改变开发者,那么整个公司的技术方向最终一定会在每个开发者 小小翅膀的扇动 下偏离初始目标。

我从心理学、社会学和工程学中寻找方法,旁观这一切,参加这一切,推动这一切,改变这一切。有小成功,有大失败。我现在知道,对我的团队而言,深入了解每个人的特点和兴趣,根据具体情况制定每一个人(或一组人)的培训计划和成长线路,才是目前最适合我的方法。

但我一直觉得缺少一个工具,这个工具需要让整个团队知道自己应该如何努力,他们能通过这个工具找到自己的位置,并以当前位置作为一个起始点,向一个最近的目标奔去,顺着知识的脉络奔向一个个更远的目标,就如拿下一个个城池。在这个过程中,他们收获希望,得到成长,找到方向。

现在,这个工具已经基本成型了,我会不断改进它。 继续阅读客户端技能树

页游效果能否媲美端游

这篇文章是我在知乎上的一个回答:网页游戏是如何做到媲美客户端的网络游戏效果的?


我不认为现在的页游的3D 效果能 “媲美” 端游,充其量只算是 “接近” 罢了。

网页游戏运行在浏览器框架下。浏览器是操作系统中的一个应用程序。

实际上,网页游戏作为一个应用,必须运行在浏览器的一个插件(或者一个引擎)之中。

可能用于开发 3D 页游的几个技术是: 继续阅读页游效果能否媲美端游

在手机游戏开发中如何选择图像素材格式?

在手机游戏开发中如何选择图像素材格式?

How to choose the picture texture format in the game develop?

2014-08-01更新:增加ETC1格式


这是我在知乎上的一个回答,这里是原文

回答的前提是:使用OpenGL来渲染。

分几个点来回答。

1. RGBA4444真的比RGBA8888占用的RAM要少

其实这里说的RAM,是指的显存而非内存。OpenGL支持以这几种形式来使用纹理资源(via http://www.khronos.org/opengles/sdk/docs/man/xhtml/glTexImage2D.xml):

  • GL_UNSIGNED_BYTE(RGBA8888或RGBA888)
  • GL_UNSIGNED_SHORT_5_6_5
  • GL_UNSIGNED_SHORT_4_4_4_4
  • GL_UNSIGNED_SHORT_5_5_5_1

在程序将图片载入系统内存后,会根据你选择的形式(RGBA8888/RGB565 etc.)对其做一些处理(怎么处理后面说),然后就将这些纹理上传到显卡的显存,之后会把这些图片占用的内存删除掉。 继续阅读在手机游戏开发中如何选择图像素材格式?

Cocos2d-x script language binding:Lua or Javascript?

Cocos2d-x script language binding:Lua or Javascript?

2014-01-15更新: 加入Gwill的文章连接。


cocos2dx script binding: lua or javascript?

这篇文章是我在之乎的一个回答: http://www.zhihu.com/question/21130385/answer/18827858 ,有修改。

强调:这篇文章有极强的时效性,在1年时间内应该有一定指导意义。本文成文日期是2013年9月11日。

目前 Javascript 风头似乎超越一切,所以我一直在纠结,到底是使用Lua Binding还是 Javascript Binding。

我找了一些资料。如果把下面的资料看完,相信每个人心里都会自有分辨。 继续阅读Cocos2d-x script language binding:Lua or Javascript?

【译】如何创建游戏的续作

【译】如何创建游戏的续作

原文地址:How to create the sequel of a game

这些天,我在研究Box2D,并正在用它开发SamePhysics这个游戏的续作。

这是我的第一个Box2D游戏(你可以从这里下载它的源码),大家认为它很有趣。于是我决定制作一个更有趣的续作,以改进我在旧版本中错过的那些东西。

这是我的第一个续作,因此我必须在开始编码前考虑一些要注意的事项。现在我把它们共享出来: 继续阅读【译】如何创建游戏的续作

有Flex应用基础,做游戏还需要学习什么

今天在论坛上回复了一篇帖子,记下来:

原帖:http://bbs.9ria.com/thread-74150-1-1.html
小弟以前是做java 程序员的 ,接触flex 也有一年了 从之前的flex3 到现在的flex4 ,在公司的项目中,我也经常使用flex的各种组件,但我个人对flex游戏制作方面很有兴趣,所以想请教下有flex游戏开发经验的各位达人,小弟现在欠缺的是什么?
我的回复:

继续阅读有Flex应用基础,做游戏还需要学习什么

[转]数据结构的优缺点

转自:Java情侠的空间

类型 优点 缺点
数组 插入块,如果知道下标,可以非常快的存储 查找慢,删除慢,大小固定
有序数组 比无序数组查找快 删除和插入慢,大小固定
提供后进先出方式的存取 效率低
队列 提供先进先出的方式存取 效率低
链表 插入,删除快 查找慢
二叉树 查找,插入,删除都快 如果非平衡就很慢,删除的算法复杂
红黑树 查找,插入,删除都快 算法复杂
哈希表 如果关键字已知则存取极快,插入块 删除慢,如果不知道关键字则存取很慢,对存储空间使用不充分
插入,删除快,对最大数据项的存取很快 对其他存储项很慢

Array/Vector/AS3DS/ds/dsforas 性能比较


AS3DS是我们常用的数据结构,后来polygonal又开发了ds,国人也开发了一套dsforas。那么,这些常用的数据结构与AS3原生的Array和Vector,性能上有何区别?我在网上只找到了这篇,该文也没有给出一个直观的演示,因此决定自己来测试一下。

测试平台:

  • AS3DS: v1.04
  • ds: v1.23
  • dsforas: r25
  • Flash Player: v10.2.152.26
类型 写入(ms) 读取(ms)
Array 452 132
Vector 256 130
SLinkedList 2708 1718
SSL 1266 222
LinkedList 1498 1392

注意:

  • 这次测试只是针对单链表测试了1000000个随机数的顺序写入和读取速度,不能代表整体性能。(链表的性能特点看这里:数据结构的优缺点
  • 使用AS3DS,文件增大4K;使用ds,文件增大16K。
  • AS3DS和ds不能在一个项目中测试,因为很多类名重复,必须分开测试。

继续阅读Array/Vector/AS3DS/ds/dsforas 性能比较