![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
游戏开发
文章平均质量分 87
丿寒风
网易游戏3年,游戏创业4年,3D设计软件架构师4年...
展开
-
游戏开发常用算法概述
游戏开发属于软件开发中的一种,但又是非常特殊的一种。游戏开发几乎可以用到软件设计中的任何一种算法,任何一种设计模式,任何一种编程思想,较普通的软件开发,难度相对要大一些。游戏几乎模拟出一个完整的世界。下面是我收集的一些常用的算法、设计模式及变成思想,欢迎拍砖和补充。一 算法1 随机数常用于抽装备,暴击,闪避等2 最短路径用于地图中寻找到达指定位置的最短路径,dota原创 2014-10-21 23:37:38 · 4562 阅读 · 0 评论 -
cocos2dx转Andriod常见问题
1 NDK_ROOT not defined. Please define NDK_ROOT in your environment or in local.properties在路径cocos2d-x-2.2.2/samples/Cpp/HelloCpp(功成名)/proj.android下的build_native.sh文件中的APPNAME="HelloCpp"下添加:NDK_R原创 2014-02-27 15:31:27 · 3048 阅读 · 0 评论 -
freetype下载和配置
一 下载编译freetype库1 下载地址:http://www.freetype.org/得到压缩文件:freetype-2.5.3.tar.gz2 解压:直接解压,得到目录freetype-2.5.33 编译:用vs2010打开:(路径)\freetype-2.5.3\builds\windows\vc2010\freetype.sln原创 2014-11-03 09:05:26 · 9075 阅读 · 0 评论 -
Win7下Cocos2d-x跨平台游戏开发-开发环境搭建
前面两篇文章分别把C语言和C++的基础知识做了一个简单的梳理,从本文开始,正式的开始Cocos2dx引擎的使用。要使用Cocos2dx,首先需要一个Cocos2dx的开发环境,博主平时开发用的是Mac环境,但是鉴于使用Windows的人更多,今天也用Win7来讲。 一 下载下面是需要下载的一些东西,先给出来:1 Visual Studio 2012:http://www.xia原创 2014-01-16 11:36:09 · 1559 阅读 · 0 评论 -
Mac下创建cocos2dx工程的批处理
自从cocos2dx2.2之后创建工程都是用python,如下:python create_project.py -project HelloWorld -package com.bjmzs.org -language cpp是不是感觉挺麻烦呢,那就自己写一个makefile文件吧,内容如下:#此文件包含对Cocos2d-x中的工程的基本操作#新建工程#运行工程#删除工程原创 2014-02-28 10:47:21 · 1626 阅读 · 0 评论 -
cocos2dx中CCLabelTTF的描边和阴影
游戏中经常会用到文字描边和阴影,当cocos2dx中并没有给我们提供,下面是我参考:点击打开链接(http://blog.csdn.net/song_hui_xiang/article/details/17375279)自己弄了一个,基本上是一模一样,不喜勿喷!代码如下:思路:多个CCLabelTTF重叠在一起。头文件//// CLabel.h// XXX//// Cre原创 2014-03-04 20:40:31 · 2651 阅读 · 0 评论 -
cocos2dx开发心得体会
1 界面创建,刷新,数据管理,屏幕适配必须分开(init,refreshUI,setPriority,dataMananger,adaptScreen等)2 场景要有公共的基类来监听网络消息,所有的监听都只应该出现在场景中原创 2014-02-20 17:18:27 · 1664 阅读 · 1 评论 -
cocos2d-x (Android)之-那些常见的error记录
(2013/9/2)build.xml:939: java.lang.ArrayIndexOutofBoundsExcption:1at com.android.ant.DependencyGraph.parseDependencyFileat com.android.ant.DependencyGraph.at com.android.ant.SingleDependencyTask.转载 2014-02-28 15:21:33 · 2622 阅读 · 1 评论 -
Ubuntu14.04搭建cocos2dx2.2.5开发环境(超级详细)
一 下载解压官方下载地址:http://www.cocos2d-x.org/download下载下来之后解压完成之后会得到一个目录cocos2d-x-2.2.5二 编译1 安装依赖cd到cocos2d-x-2.2.5目录下,运行脚本install-deps-linux.sh安装编译相关依赖./install-deps-linux.sh2 编译运行脚本ma原创 2014-10-14 01:56:19 · 3008 阅读 · 2 评论 -
将iconv编译成lua接口
前一篇博文说了,在cocos2dx中怎么样使用iconv转码,这节我们将上一节中写的转码函数,做成一个lua接口,在lua脚本中使用。// luaiconv.h#ifndef __LUA_ICONV_H__#define __LUA_ICONV_H__#include "tolua++.h"#include "tolua_event.h"#include "lauxli原创 2014-11-12 12:34:28 · 2887 阅读 · 0 评论 -
cocos2dx中使用iconv转码(win32,iOS,Android)
首先贴下环境:Win7 64, NDK r8e, libiconv-1.14, cygwin一 Win32环境配置Cocos2D-X自带有win32上的iconv库,只需要配置一下即可使用。1 引入头文件属性->配置属性->C/C++->附加包含目录:$(ProjectDir)..\..\..\..\cocos2dx\platform\third_party\win32原创 2014-11-11 19:29:28 · 4057 阅读 · 0 评论 -
解决游戏服务器负载上限问题
最近开发一款网络游戏,快到发布阶段,但是服务器的负载上限问题,这个该怎么处理呢?现在有以下几种方案:1、排队机制,像wow那样;2、给当已满服打上一个“满”标记,不让玩家登录当前服,推荐一个新服或空闲服给他;3、控制玩家注册数,满足当前服所有玩家都能进入游戏,等玩家少了之后再合服;第1种方案对手游来说,好像不太适用,没有人愿意盯着手机等着;第2种方案肯定会挨骂,如果玩家原创 2014-10-22 18:19:17 · 3061 阅读 · 2 评论 -
随即生成字符串(包括大小写字母和数字)
项目中经常会用到随即生成秘密,用户名,验证码之类的,下面是一个例子,随即生成6位字符串原创 2014-02-19 11:30:35 · 3263 阅读 · 0 评论 -
Mac下转andriood步骤
#以TestCpp为例一 下载1 COCOS2DX:cocos2d-x-2.2.2.zip2 NDK:android-ndk-r9c-darwin-x86_64.tar3 ADT:adt-bundle-mac-x86_64-20131030.zip二 配置环境变量1 cd到用户根目录下:cd ~2 修改或添加文件.bash_profile3 在文件.原创 2014-02-28 10:14:36 · 1371 阅读 · 0 评论 -
[IPHONE]游戏引擎剖析
原文链接: http://www.himigame.com/iphone-object/406.html为了解决“如何在IPHONE上创建一个游戏”这个大问题,我们需要首先解决诸如“如何显示图像”与“如何播放声音”等一系列小问题。这些问题关系到创建部分游戏引擎。就像人类的身体一样,游戏引擎的每个部分虽然不同,但是却都不可或缺。因此,首先从游戏引擎剖析开始本章。我们将会讨论一个游戏引转载 2013-12-18 16:52:27 · 1410 阅读 · 0 评论 -
基于状态机的游戏框架
一 定义有限状态机就是一个具有有限数量状态,并且能够根据相应的操作从一个状态变换到另一个状态,而在同一时刻只能处在一种状态下的智能体。英文:Finite State Machine简称:FSM二 最简单的状态机最简单的状态机:if-else实际上if-else就是一个最有两种状态的状态机,分别是true和false三 伪状态机当两种情况不能满原创 2014-11-03 20:06:39 · 2718 阅读 · 0 评论 -
网络游戏前后端时间同步
网络游戏中会涉及到多个终端,各个终端以及服务器的系统时间都会存在一定的差异。如何在在游戏中处理好这种差异呢?一 使用前端时间直接获取终端的时间,用来计时,这种方式是很多单机游戏使用的方式。这种方式时存在漏洞的,例如我们记录进入关卡的时间(客户端时间),然后开始计时,每10分钟恢复1点体力。当我修改了我的客户端时间之后,体力的值也随之变化了。即使在后端做了校验,前端显原创 2015-01-29 20:05:19 · 5014 阅读 · 0 评论 -
使用zlib压缩解压并导出lua接口
网络游戏在前后端交换的过程中,有可能会有大量的数据,比如说游戏回放功能,这时最好是将数据压缩一下。比较简单的数据压库就是zlib了。zlib官方文档,常用的函数都在这里了,解释很详细。一 C++功能实现部分下面将代码贴上来。在ZipUtils中添加下面三个函数:// ZipUtils.h typedef struct{ unsigned str_si原创 2015-01-30 23:10:21 · 4628 阅读 · 0 评论 -
MMORPG手游AOI解决方案
2014年7月10号入职网易,今天恰好是在网易待了两年。 入职网易网易手游事业部,接手的第一个项目是烂尾,做完收获一个鼠标垫一个抱枕。 2015年4月,开始第二个项目是H5,11月做完,公司砍掉H5业务,项目组解散。 2015年12年然后进入大话事业部,进入了一个刚立项的MMO手游,街霸IP,由于这个IP谈不下来,上周五宣布砍掉项目。 接下来打算做一个国战类的MMO手游,国战类手游首相要解决原创 2016-07-11 19:48:13 · 5746 阅读 · 0 评论 -
C语言变长消息定义:柔性数组
在游戏前后端交换的过程中,经常会用到变成的消息体,因为有的内容的大小是位置的,例如一条微博,微博的内容大小是未知的。一般的做法是定义一个char*类型的指针,然后指定其长度,代码如下:typedef struct{ unsigned len; char* pData;}Msg;使用的时候是这样的: char str[] = "hello world!"; unsigne原创 2015-01-30 15:53:42 · 1479 阅读 · 0 评论 -
自己动手写cocos2dx游戏引擎(六)——引用计数机制
这一节开始看看cocos2dx的内存管理。cocos2dx的内存管理使用的是引用计数机制,当对象创建的时候引用计数为1,retian一次引用计数+1,release一次-1,为了是delete。// Ref.h#ifndef __REF_H__#define __REF_H__class Ref { public: void retain();原创 2015-12-15 20:27:53 · 1294 阅读 · 0 评论 -
游戏中帧同步的实现
简介帧同步是一种前后端数据同步的方式,一般应用于对实时性要求很高的网络游戏,常见于dota类和RTS类游戏,如端游中的dota,dota2,梦三国等;手游中的王者荣耀,自由之战等。过程帧同步的过程可以简述为:各客户端实时上传操作指令集;服务端保存这些操作指令集,并在下一帧将其广播给所有客户端;客户端收到指令集后分别按帧序执行指令集中的操作。示例目前我们正在做的是一款格斗手游,下面是我们项目中原创 2016-05-10 15:45:28 · 19865 阅读 · 13 评论 -
游戏实现多语言版本(国际化)
自从换了项目组之后一直都很忙,没什么时间写blog了,目前这个项目是自己挑的,希望多花点时间,把它做好。因为项目还没有对外公开,关于项目就不透露信息,只能说一些实现方式。到新项目之后第一个着手做的就是多语言版本,也就是国际化。多语言的实现最基本的实现方式就是根据id去读语言配置,不同的语言新建一个语言配置表。细分下来,分了如下三个部分:一 UIUI是指在UI编辑器中的一些文字,比如最常...原创 2016-02-05 17:33:23 · 6425 阅读 · 4 评论 -
关于h5游戏随笔
之前的博客里面有说到过,年前由于公司砍掉html5游戏业务,项目组解散,大家被分散到各个项目组。年后陆陆续续,之前的团队不少同事都离职了,自己扛大旗去创业了,最近月流水已经过了200W。IT行业,特别是游戏这个行业,承载了很多屌丝逆序的梦想,同时很多大公司投资人也都盯着这块肥肉。看着别人大把大把的收钱,挣得盘满钵满,也都想来捞上一笔。我想说的是,游戏这个一样,一旦成熟就是一片红海。之前在端原创 2016-03-28 19:51:15 · 1535 阅读 · 0 评论 -
自己动手写cocos2dx游戏引擎(八)——Node节点
UI都是树状形式组织。每一个小的控件就是一个小的节点。同时,为了表示父子节点的关系需要保存一个父节点。最简单的形式是这样的: #include <vector>class Node { Node *_parent;// 父节点指针 std::vector<Node*> _children;// 子节点指针};因为子节点的个数是不确定的,因...原创 2015-12-22 13:24:23 · 1333 阅读 · 0 评论 -
自己动手写cocos2dx游戏引擎(三)——Director对象
上一节中,最后调用到了APPDelegate中的applicationDidFinishLaunching方法,在applicationDidFinishLaunching方法中,获取到了Director的一个实例。Director返回的是其子类DisplayLinkDirector的对象,其实现如下: class Director { public: v...原创 2015-12-14 21:50:34 · 1378 阅读 · 0 评论 -
自己动手写cocos2dx游戏引擎(一)——引擎入口
在网易的第二个项目已经上线快两个月了,已经在着手做第三个项目了。第一个项目是原生的app,使用的是cocos2dx2.2.4做的;第二个项目是一个html5游戏,在预研的时间同时用了cocos2dx和egret在做,最终选择了egret。第三个项目计划原生app和html5并重,鉴于egret的原生app才能跑十多帧,又换回了cocos2dx。之前一直在用cocos,现在打算重新研...原创 2015-12-14 20:31:10 · 3283 阅读 · 0 评论 -
自己动手写cocos2dx游戏引擎(四)——窗体GLView
上一节中我们获取到了Director对象。通过这个对象我们可以获取到一个OpenGL的一个视图。在定义GLview之前,我们需要定义一个常用几何头文件。// Geometry.h #ifndef __GEMMETRY_H__#define __GEMMETRY_H__class Size { public: Size() {} S...原创 2015-12-14 23:06:05 · 2369 阅读 · 0 评论 -
自己动手写cocos2dx游戏引擎(二)——applicationDidFinishLaunching
上一节中,我们最终调用了Application的run方法。在run方法中,调用了applicationDidFinishLaunching方法,这个方法在哪里呢?可以看到在Application中并没有实现这个方法,这个方法来自Application的基类ApplicationProtocol。ApplicationProtocol中,将applicationDidFinishLau...原创 2015-12-14 21:07:39 · 3034 阅读 · 0 评论 -
自己动手写cocos2dx游戏引擎(五)——渲染对象
上一节中,获取到了OpenGL的视图窗口,但是还没有办法渲染,现在我们把渲染对象加进来。// Renderer.h #ifndef __RENDERER_H__#define __RENDERER_H__#include <iostream>class Renderer { public: void render();};void ...原创 2015-12-15 19:04:15 · 831 阅读 · 0 评论 -
cocos2d-js常用方法一览表
精灵var sprite = new cc.Sprite(res.);sprite.setPosition(, );this.addChild(sprite);文本标签var label = new cc.LabelTTF("", "", 30);label.x = ;label.y = ;this.addChild(label);数字标签var atlas原创 2015-03-31 17:00:10 · 2761 阅读 · 0 评论 -
cocos2dx加libevent库
路径: $path = cocos2dx/platform/third_party1.win32 将生成的libevent_core.lib,libevent_extras.lib放到$path/win32/libraries中 头文件event2和event-config.h 放到$path/win32/libevent中 VS中设置include p原创 2015-03-09 00:03:48 · 1493 阅读 · 0 评论 -
游戏引擎的发展历程
本文来自:http://edu.gamfe.com/tutor/d/41955.html[1]游戏引擎(GameEngine)是什么?大多数人给出的解释都是基于engine的英文翻译,将游戏引擎等同于汽车中的引擎(发动机),再好一些的解释成动力,这些解释都对,但是动力只说并不全面,不能完整反映出游戏引擎在游戏中的作用与地位。布加迪威龙之所以强大就是源自其W16发动机转载 2013-12-18 09:56:46 · 11219 阅读 · 0 评论