自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 资源 (2)
  • 收藏
  • 关注

原创 Lua面试题目

1、Lua的特性轻量级: 它用标准C语言编写并以源代码形式开放,编译后仅仅一百余K,可以很方便的嵌入别的程序里。可扩展: Lua提供了非常易于使用的扩展接口和机制:由宿主语言(通常是C或C++)提供这些功能,Lua可以使用它们,就像是本来就内置的功能一样。其它特性:支持面向过程(procedure-oriented)编程和函数式编程(functional pro

2017-07-13 09:21:10 24208

原创 整理Cocos2d-x 面试题解

1、Cocos2d-x是怎样实现跨平台?    AppDelegate 作为跨平台程序入口,在这之上做了另一层的封装,封装了不同平台的不同实现。比如我们通常认为一个程序是由 main 函数开始运行,那我们就去找寻,我们看到了在 proj.linux 目录下存在 main.cpp 文件。在main.cpp 中 CCApplication::sharedApplication()–>run()

2017-07-13 00:16:48 480

转载 寻路算法A*, JPS(跳点搜索)的一些杂谈

A*是一个比较经典的启发式寻路算法。是基于dijkstra算法,但是加入了启发函数,使路径搜索效率更高。实现起来很简单。不过要做到通用性高,比如支持各种不同类型的地图,甚至不仅仅是地图,而是个图结构如解决拼图游戏N-puzzle会用到的,就需要多花点心思。用C++实现的话,可以使用模板来适应不同的需要。也可以使用类继承。 template static vector searc

2016-09-19 16:48:16 9555 2

转载 3D坐标系、矩阵变换、视景体与裁剪

背景当前3D图形界主要有两个:微软的Direct 3D以及某组织的OpenGL。曾经一度OpenGL几乎占据所有3D图形领域,这在巨人微软面前简直就是屌丝逆袭。曾几何时微软搞IDE borland公式倒闭了,后来微软搞浏览器,网景公司解散,员工卷铺盖走人了,也就是说微软搞谁,谁倒霉。直到OpenGL的出现,打破了这一魔咒,在与微软竞争的前期,OpenGL几乎甩了微软几条街,并成为事实上的工业标

2016-06-16 11:54:06 3998

原创 Lua代码规范跟编写技巧(性能优化)

范围:本规范适用于公司有使用lua编写的所有软件,之后编写修改代码需严格的按照本规范进行。目的:提高编码质量,统一编码标准,提高开发效率; 使代码通俗易懂,易于维护。开发中,大量使用lua,暂时根据当前状况,总结相对而言较好的规范,在多人协作中可以更好的开发、交流。命名惯例 文件(类)命名 所有lua文件名命名时使用大驼峰法,与以前的同类型的文件命名保持一致; 根据文件的特性,一般以文件里的模块名或者类名作为同名文件名; 确定命名前,请检查下,不要跟其他文件同.

2021-03-29 11:59:22 1373

转载 帧同步(LockStep)该如何反外挂 及 优化

01. 帧同步(LockStep)该如何反外挂在中国的游戏环境下,反挂已经成为了游戏开发的重中之重,甚至能决定一款游戏的生死,吃鸡就是一个典型的案例。目前参与了了一款动作射击的MOBA类游戏的开发,同步方案上选择了帧同步技术(LockStep而非snapshots以下同)。那么就有很多人担心起来,客户端会跑全部逻辑帧同步该如何反外挂,和状态同步有什么区别呢?首先我们来分析一下手游的风险和外挂的分类,这里推荐腾讯游戏安全中心的文章,有着非常详细深入的介绍。手游的风险:• 静态修改文件:将游

2021-03-11 10:37:20 1806

原创 Android平台下Cocos2d-x等含有so库应用性能分析-Gprof(android-ndk-profiler)

前几天在工作中,解决了一个cpu占用率高的问题,尝试过各种方法,因为刚接手项目代码不熟,所以准备依赖于工具解决,虽然最终android-ndk-profiler依然没有解决我的问题,但是我觉得这仍旧是一个比较好的工具,所以准备分享给大家,网上的使用方法不是很全面,在使用过程中依旧遇到了些问题,我在这里做些总结。    Android 本来就是基于 Linux 的,所以这里用 gprof

2017-07-27 09:35:45 1692

转载 基于Cocos2d-x学习OpenGL ES 2.0系列——OpenGL ES渲染之LayerColor(8)

在前面文章中讲述了Cocos2d-x引擎OpenGL渲染准备Shader方面,本文主要讲解使用LayerColor来讲述OpenGL的渲染过程。1、LayerColor对象创建添加LayerColor元素到游戏中:auto layerColor = LayerColor::create(Color4B(255, 0, 0, 255), 100, 100); layerC

2017-07-18 11:36:05 522

转载 基于Cocos2d-x学习OpenGL ES 2.0系列——纹理贴图(6)

在上一篇文章中,我们介绍了如何绘制一个立方体,里面涉及的知识点有VBO(Vertex Buffer Object)、IBO(Index Buffer Object)和MVP(Modile-View-Projection)变换。本文将在基于Cocos2d-x学习OpenGL ES 2.0系列——使用VBO索引(4)的基础之上,添加纹理贴图支持。最后,本文会把纹理贴图扩展至3D立方体上面。

2017-07-18 11:21:30 584

转载 基于Cocos2d-x学习OpenGL ES 2.0系列——OpenGL ES渲染之Shader准备(7)

Cocos2d-x底层图形绘制是使用OpenGL ES协议的。OpenGL ES是什么呢?  OpenGL ES(OpenGl for Embedded System)是OpenGL三维图形API的子集,针对手机、Pad和游戏主机等嵌入式设备而设计。该API由Khronos集团定义推广,Khronos是一个图形软硬件行业协会,该协会主要关注图形和多媒体方面的开放标准。OpenGL ES是O

2017-07-17 09:26:08 416

转载 基于Cocos2d-x学习OpenGL ES 2.0系列——你的第一个立方体(5)

在上篇文章中,我们介绍了VBO索引的使用,使用VBO索引可以有效地减少顶点个数,优化内存,提高程序效率。本教程将带领大家一起走进3D--绘制一个立方体。其实画立方体本质上和画三角形没什么区别,所有的模型最终都要转换为三角形。同时,本文还会介绍如何通过修改MVP矩阵来让此立方体不停地旋转。另外,大家还可以动手去修改本教程的示例代码,借此我们可以更加深入地理解OpenGL的normal

2017-07-17 09:24:21 424

转载 基于Cocos2d-x学习OpenGL ES 2.0系列——使用VBO索引(4)

在上一篇文章中,我们介绍了uniform和模型-视图-投影变换,相信大家对于OpenGL ES 2.0应该有一点感觉了。在这篇文章中,我们不再画三角形了,改为画四边形。下篇教程,我们就可以画立方体了,到时候就是真3D了。 为什么三角形在OpenGL教程里面这么受欢迎呢?因为在OpenGL的世界里面,所有的几何体都可以用三角形组合出来。我们的四边形也一样,它可以用两个三角形组合出来。

2017-07-17 09:23:33 491

转载 基于Cocos2d-x学习OpenGL ES 2.0系列——初识MVP(3)

在上一篇文章中,我在介绍vertex shader的时候挖了一个坑:CC_MVPMatrix。它其实是一个uniform,每一个Cocos2d-x预定义的shader都包含有这个uniform,但是如果你在shader里面不使用这个变量的话,OpenGL底层会把它优化掉。 但是,CC_MVPMatrix是在什么时候设置进来的呢?我在shader里面明明没有看到它,它从哪儿来的?别急,请继续

2017-07-17 09:22:42 652

转载 基于Cocos2d-x学习OpenGL ES 2.0系列——编写自己的shader(2)

在上篇文章中,我给大家介绍了如何在Cocos2d-x里面绘制一个三角形,当时我们使用的是Cocos2d-x引擎自带的shader和一些辅助函数。在本文中,我将演示一下如何编写自己的shader,同时,我们还会介绍VBO(顶点缓冲区对象)和VAO(顶点数组对象)的基本用法。在编写自己的shader之前,我觉得有必要提一下OpenGL渲染管线。理解OpenGL渲染管线,对于学习Open

2017-07-17 09:21:46 659

转载 基于Cocos2d-x学习OpenGL ES 2.0系列——你的第一个三角形(1)

前言  在本系列教程中,我会以当下最流行的2D引擎Cocos2d-x为基础,介绍OpenGL ES 2.0的一些基本用法。本系列教程的宗旨是OpenGL扫盲,让大家在使用Cocos2d-x过程中,知其然,更知其所以然。本系列教程不会涉及非常底层的数学原理,同时也不会过多地提及OpenGL本身的一些细节知识。但是我会在每篇文章的最后给出一些参考链接,大家可以顺藤摸瓜,一举Get OpenGL

2017-07-17 09:20:49 724

转载 讨论cocos2d-x字体绘制原理和应用方案

个人一直认为,文字绘制是cocos2d-x最薄弱的环节。对于愤怒的小鸟之类的游戏,cocos2d提供的文字绘制功能已足够使用。但是对于一个mmo来说,则完全不够。一个优秀的mmo客户端必然会对其有进行优化和再封装的操作。        cocos2d-x支持两种文字绘制方式(均支持中英文),一种是CCLabelTTF,一种是CCLabelBmpFont。        CCLabe

2017-07-12 22:56:35 754

转载 Shader编程学习笔记(十)—— Cg语言入门2 - profile和基本数据类型

Cg入门二:profile和基本数据类型  上一小结我们了解了Cg的输入输出,输入使用“in”关键词,输出使用“out”关键词,既是输入也是输出则使用“inout”关键词;也了解了Cg基本的语义,顶点程序传递给片段程序的位置坐标使用“POSITION”语义,它不需要在片段程序中做特殊处理,图形硬件会自动针对“POSITION”数据进行处理。  本小结我们主要了解一下Cg的profi

2017-04-28 18:09:19 773

转载 Shader编程学习笔记(九)—— Cg语言入门1 - 输入输出和语义

Cg入门一:输入输出和语义  本小节对Cg语言进行一个入门了解。  在以前的课程中,我们了解了渲染管线、顶点和片段程序和颜色计算等,在本小结中来了解一个简单的shader的顶点和片段程序的输入输出以及常用语义。  编写一个简单的顶点和片段着色器,代码如下:Shader "Lesson/vertex&fragment"{ SubShader{

2017-04-28 18:08:33 840

转载 Shader编程学习笔记(八)—— Surface Shader 2

Surface Shader  上一小结主要了解了Surface Shader使用了“#pragma surface surf Standard fullforwardshadows”指令的意义,这一小节主要了解“surf”surface函数。void surf (Input IN, inout SurfaceOutputStandard o) { // Alb

2017-04-28 18:07:34 532

转载 Shader编程学习笔记(七)—— Surface Shader 1

Surface Shader  本小结对Unity的Surface Shader做一个大概的了解。主要了解在Surface Shader当中比较重要的几个部分,分别是:SurfaceOutputInputlighingshadow  首先查看一下Unity的官方手册中的Writing Surface Shaders,其中描述道:如果要编写一个shader去和光进行交互是

2017-04-28 18:05:11 370

转载 Shader编程学习笔记(六)—— Fixed Function Shader 2

Fixed Function Shader  在上一小节中我们已经了解到,Fixed Function Shader是固定功能的着色器,它的功能有限,但是编写比较简单,因为它总是通过一系列的命令达到我们对图形着色的目的。其中我们已经了解了Properties(属性)、Material(材质)、Lighting(光照),接下来来了解一下最为重要的一个命令settexture。  很多

2017-04-28 18:03:10 427

转载 Shader编程学习笔记(五)—— Fixed Function Shader 1

Fixed Function Shader  在学习固定管线着色器中要涉及到的知识点是:PropertiesMaterialLightingSetTexturePass  首先来回忆一下ShaderLab的基本结构:shader "name"{ [Properties] SubShaders [FallBack]}  在shader主要的三

2017-04-28 17:59:49 415

转载 Shader编程学习笔记(四)—— Unity Shader的组织形式(ShaderLab)

Unity Shader的组织形式 Unity Shader的形态  Unity官方手册上讲Unity Shader有三种不同的编写方案,这三种编写方案分别是surface shaders、vertex and fragment shaders和fixed function shaders。 从前面几篇笔记中可以了解到,可编程图形管线中能够编写shader的主要是两个部分:

2017-04-28 17:59:04 369

转载 Shader编程学习笔记(三)—— 三大主流编程语言 HLSL/GLSL/Cg

三大主流编程语言 HLSL/GLSL/Cg Shader Language  Shader Language的发展方向是设计出在便携性方面可以和C++、Java等相比的高级语言,“赋予程序员灵活而方便的编程方式”,并“尽可能的控制渲染过程”同时“利用图形硬件的并行性,提高算法效率”。  Shader Language目前主要有3种语言:基于OpenGL的OpenGL S

2017-04-28 17:30:48 449

转载 Shader编程学习笔记(二)—— Shader和渲染管线

Shader和渲染管线 什么是Shader  Shader,中文翻译即着色器,是一种较为短小的程序片段,用于告诉图形硬件如何计算和输出图像,过去由汇编语言来编写,现在也可以使用高级语言来编写。一句话概括:Shader是可编程图形管线的算法片段。  它主要分为两类:Vertex Shader和Fragment Shader。 什么是渲染管线  渲染

2017-04-28 16:48:07 462

转载 Shader编程学习笔记(一)—— 图形硬件简史与可编程管线

图形处理器(GPU)简史 GPU发展简史  GPU英文全称Graphic Processing Unit,中文翻译为“图形处理器”,在现代计算机系统中的作用变得越来越重要。  20世纪六、七十年代,受硬件条件的限制,图形显示器只是计算机输出的一种工具。限于硬件发展水平,人们只是纯粹从软件实现的角度来考虑图形用户界面的规范问题。此时还没有GPU的概念。  GP

2017-04-28 16:24:50 602

转载 猫都能学会的Unity3D Shader入门指南(二)

关于本系列这是Unity3D Shader入门指南系列的第二篇,本系列面向的对象是新接触Shader开发的Unity3D使用者,因为我本身自己也是Shader初学者,因此可能会存在错误或者疏漏,如果您在Shader开发上有所心得,很欢迎并恳请您指出文中纰漏,我会尽快改正。在之前的开篇中介绍了一些Shader的基本知识,包括ShaderLab的基本结构和语法,以及简单逐句地讲解了一个基本的s

2017-04-25 17:55:37 558

转载 猫都能学会的Unity3D Shader入门指南(一)

动机自己使用Unity3D也有一段时间了,但是很多时候是流于表面,更多地是把这个引擎简单地用作脚本控制,而对更深入一些的层次几乎没有了解。虽然说Unity引擎设计的初衷就是创建简单的不需要开发者操心的谁都能用的3D引擎,但是只是肤浅的使用,可能是无法达到随心所欲的境地的,因此,这种状况必须改变!从哪里开始呢,貌似有句话叫做会写Shader的都是高手,于是,想大概看看从Shader开始能不能

2017-04-25 17:53:35 310

转载 即时战略游戏的AI是怎样实现的?

导读:作为实际开发过AI的人,拿一份五年前的代码,以最难的体育竞技类游戏为例,来科普一下,什么叫做游戏团队策略,什么叫做分层状态机?具体该如何落地到代码?如果你能实现体育竞技的AI,那即时战略只是小事一桩。  国内真正做过游戏AI的很少,说概念的人很多,所以看了半天离实际编码还是很远,不知道该怎么入手,因为国内游戏主要以MMO和卡牌为主,RTS比较少,体育竞技类游戏更少

2017-03-07 16:59:48 1403

转载 帧锁定算法解决游戏同步

帧锁定算法解决游戏同步早期 RTS,XBOX360 LIVE游戏常用同步策略是什么?格斗游戏多人联机如何保证流畅性和一致性?如何才能像单机游戏一样编写网游?敬请观看《帧锁定同步算法》《帧锁定同步算法》转载请注明出处:http://www.skywind.me/blog/archives/131 算法概念该算法普遍要求网速RTT要在100ms以内,一般

2016-12-05 14:01:00 904

转载 网游同步算法之导航推测(Dead Reckoning)算法

在了解该算法前,我们先来谈谈该算法的一些背景资料。大家都知道,在网络传输的时候,延迟现象是很普遍的,而在基于Server/Client结构下的网络游戏的同步也就成了很头疼的问题,在保证客户端响应用户本地指令流畅的情况下,没法有效的保证的同步的及时性。同样,在军方也有类似的事情发生,即使是同一LAN里面的机器,也会因为传输的延迟,导致一些运算的失误,介于此,美国国防部投入了大量的资金用于研究一种比较

2016-11-30 20:02:17 6929 2

转载 小谈网络游戏同步

同步在网络游戏中是非常重要的,它保证了每个玩家在屏幕上看到的东西大体是一样的。其实呢,解决同步问题的最简单的方法就是把每个玩家的动作都向其他玩家广播一遍,这里其实就存在两个问题:1,向哪些玩家广播,广播哪些消息。2,如果网络延迟怎么办。事实上呢,第一个问题是个非常简单的问题,不过之所以我提出这个问题来,是提醒大家在设计自己的消息结构的时候,需要把这个因素考虑进去。而对于第二个问题,则是一个挺麻烦的

2016-11-30 19:58:50 357

转载 帧同步在竞技类网络游戏中的应用

帧同步在网上可以搜的资料比较少,关于游戏的更是没有,不过,实现的原理也比较简单,最近几天就写了份关于帧同步的文档,当作给同事扫扫盲,顺便也在这里发发,可以给其他人参考参考                                                                 -- by Fox帧同步     --竞技类网络游戏设计方案

2016-11-30 10:50:35 461

转载 学习shader之前必须知道的东西之计算机图形学(一)渲染管线

引言 shader到底是干什么用的?shader的工作原理是什么? 其实当我们对这个问题还很懵懂的时候,就已经开始急不可耐的要四处搜寻有关shader的资料,恨不得立刻上手写一个出来。但看了一些资料甚至看了不少cg的语法之后,我们还是很迷茫,UNITY_MATRIX_MVP到底是个什么矩阵?它和v.vertex相乘出来的又是什么玩意?当这些问题困扰我们很久之后,我们才发现,原来我们是站在浮

2016-09-29 14:02:10 404

转载 让错的程序看得出错(简体中文)(Making Wrong Code Look Wrong)--让错误代码显得错误

作者:周思博(Joel Spolsky)译:Paul May梅普华2005.5.11时间回到1983年九月,我第一个真正的工作是在以色列的Oranim.这家大型面包工厂每晚都用六个货机般大的巨型炉子烤出为数十万的面包.我第一次走进那家面包厂时觉得里头实在脏得离谱.炉壁发黄机器生锈而且到处都是油.“这里一直都这么脏吗?”我问道.“什么?你讲这什么话?“经理回答说.“我们才刚打

2016-09-29 10:02:43 2172

转载 游戏里实现碰撞检测方法

几乎所有的3D游戏都离不开碰撞检测——无论是各物体之间的碰撞检测,还是物体与场景之间的碰撞检测。在真实世界中,你是很自然地不能穿墙而过的,所以很多人在玩各种3D游戏的时候自然而然的忽视了碰撞检测这一过程的存在。然而,碰撞检测的过程是重要的。如果没有它,你在CS中就会毫无遮拦的飞来飞去——如果考虑重力的话,则会一直不停地往下掉,直到符点数溢出(或你受不了这一漫长的过程而离开游戏)为止。碰撞检测是在编

2016-06-24 14:30:53 2199

转载 LeakDiag使用手记

LeakDiag是微软一款检测memory leak的工具,使用比较简单首先去下载一个ftp://ftp.microsoft.com/PSS/Tools/Developer%20Support%20Tools/LeakDiag/安装好,默认是在c:\leakdiag然后写一个测试程序来测试#include #include int main(

2016-06-16 20:17:24 3724

转载 D Profile 开源性能分析工具

D Profile 是一个win32/64 CPU, memory 性能分析工具,  Windows上一直缺乏合适的,轻量级的强大的性能分析工具,本意以VS 2008的profiler为蓝本,设计一个较为完备的profiler, 特别的添加对内存的性能分析,就有了这个工具。我自己的体验是这个工具应该不比大多数商业版profiler差,甚至更好。具体代码看:https://github.com/

2016-06-16 18:31:47 841

转载 理解A*寻路算法具体过程

这两天研究了下 A* 寻路算法, 主要学习了这篇文章, 但这篇翻译得不是很好, 我花了很久才看明白文章中的各种指代. 特此总结, 并写了寻路算法的代码, 觉得有用的同学可以看看. 另外因为图片制作起来比较麻烦, 所以我用的是原文里的图片.        当然寻路算法不止 A* 这一种, 还有递归, 非递归, 广度优先, 深度优先, 使用堆栈等等, 有兴趣的可以研究研究~~简易地

2016-06-16 13:26:34 346

转载 【KMP算法详解——适合初学KMP算法的朋友】

相信很多人(包括自己)初识KMP算法的时候始终是丈二和尚摸不着头脑,要么完全不知所云,要么看不懂书上的解释,要么自己觉得好像心里了解KMP算法的意思,却说不出个究竟,所谓知其然不知其所以然是也。     经过七八个小时地仔细研究,终于感觉自己能说出其所以然了,又觉得数据结构书上写得过于简洁,不易于初学者接受,于是决定把自己的理解拿出来与大家分享,希望能抛砖引玉,这便是Bill写这篇文章想要

2013-08-06 20:45:41 466

CocosCreator房卡麻将源码

内含客户端,服务端源码,服务端搭建指南文档,部署指南文档,以及代码讲解文档,本代码仅供各位学习参考,版权属幼麟棋牌所有

2018-05-09

A*寻路算法代码示例

A* 寻路算法

2016-06-16

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除