
游戏引擎
文章平均质量分 72
langresser
这个作者很懒,什么都没留下…
展开
-
打算开始写一个2.5D游戏引擎
1、为什么有那么多游戏引擎还要自己写一个游戏引擎? 我本身并不是学图形学的,只是一个有三年游戏开发经验的客户端程序员。我的工作经历告诉我,如果不自己写一个游戏引擎(即便最终不能有实际应用)那么就不会真正使用一个游戏引擎。在处理普通逻辑的时候还没有关系,但是碰到需要对性能进行优化,或者要实现特殊效果的时候就无从下手了。对于底层知识的了解可以在方向上起指导作用。 并且,虽然原创 2013-01-01 00:40:06 · 6436 阅读 · 3 评论 -
cocos2d-x CCTableView动态插入删除元素bug修正及动画表现
cocos2d-x CCTableView动态的插入删除元素有bug,表现异常。 并且我在使用的时候还想添加动画表现(就像UITableView一样,reloadWithAnimation)。 一开始我以为会很复杂,但是测试后发现需要修改的地方并不是很多。 代码只是满足个人的需求,觉得接口不够漂亮的可以再自行修改。void insertCellAtIndex(unsigned int idx原创 2013-06-25 10:30:02 · 9382 阅读 · 1 评论 -
2d游戏引擎png8(调色板)图片渲染构想
所谓调色板就是保存256个颜色数据的数组,然后图片数据使用这256个数组中的索引表示,这样一个颜色就只占8位,同时大多数情况下还能够达到真彩色的效果。但是调色板毕竟不是真彩色,在现在的游戏做的越来越绚丽,并且显卡越来越牛x的时代,调色板就没有太大存在价值了。 原本现代游戏引擎已经基本抛弃调色板的使用了,但是手机游戏的兴起和最近png8的使用让我有了一个新的想法。原创 2013-07-14 17:04:54 · 5058 阅读 · 6 评论 -
cocos2d-x CCEditBox使用陷阱
严格说来,这个不能算cocos2d-x CCEditBox的bug。但是使用时不注意,确实会被一些恶心的问题纠结掉。 CCEditBox的原理是结合系统原生控件和cocos2d-x自带的CCLabelTTF,实现输入和显示效率的完美结合。需要输入的时候显示的是系统控件,可以兼容各种输入法,平常显示时使用的是CCLabelTTF。 我在测试的时候,发现iOS版本C原创 2013-07-15 17:27:12 · 7318 阅读 · 2 评论 -
手机游戏开发纹理图片优化心得
之前写过一些纹理与内存优化的文章,本质说的就是图片格式的选用问题。这里记录一些最近开发中关于图片优化的经验和心得。 1、纹理压缩。 就像windows下的dds图片一样,使用纹理压缩可以极大的减少图片加载时间(意味着不会有图片加载时的卡顿),内存消耗(以pvrtc4为例,内存直接减少到原来的八分之一),和游戏渲染性能。 ios下毫无疑问是pvr了(pvrtc4) ,andr原创 2013-07-12 17:42:32 · 13369 阅读 · 4 评论 -
关于cocos2d-x对etc1图片支持的分析
1、ETC1图片是android下通用的压缩纹理,几乎所有的android机器都支持,是opengles2.0的标准。不像pvrtc4只是部分powervr的显卡支持。 ETC1图片不支持半透明(有替代方案可以使etc1图片兼容半透明显示),内存占用只有正常RGBA8888的八分之一(一个像素0.5个字节),并且具备极高的加载速度。ETC1的图片大小只跟图片尺寸相关,在大小上无法媲美原创 2013-07-16 10:02:53 · 23947 阅读 · 25 评论 -
开源游戏引擎体验
应该说每个做游戏的人都会有一个自己写游戏引擎的梦。趁着还没有到新公司报道,花点时间研究一下开源引擎,梳理一下自己的思路。 新的游戏引擎是基于cocos2d-x,我希望能够从这些开源引擎中学到: 1、粒子系统、粒子编辑器。cocos2d-x的粒子系统相当薄弱,不是说没有,但是想用他做出酷炫的技能特效是非常困难的一件事。很多人都有做cocos2d-x的粒子编辑器,但是在原创 2014-09-19 02:39:24 · 2909 阅读 · 4 评论 -
cocos2d-x改进的粒子系统和编辑器(需求分析)
先声明,以我对游戏引擎的理解和对图形学的熟悉程度,这篇文章更多的只是臆想和明确方向。我对能否完成它并不抱太大的期望。不过很多时候知道了方向,那么后面就可以一步一步的去完成它,有时候现在感觉很困难的东西在不久的将来就可能感觉是理所应当的。 首先说一下为什么希望cocos2d-x能够成为一个完善的2.5D游戏引擎。 在很早的时候我对cocos2d-x进行了各种吐槽,原创 2014-09-20 22:10:47 · 2074 阅读 · 0 评论 -
cocos2d-x实现3D模型的换装系统的研究
这篇文章不会给出具体实现和代码(因为我也还没有搞定),但是会对我所理解的换装系统进行一些分析,并给出方向。一、什么是换装系统 RPG游戏中,更换不同的武器、装备,人物模型也会有相应的改变,这就是换装系统。实现换装系统,可以增加表现力,比如暗黑中换不同盔甲,人物看起来也会不一样,有的极品装备还会有光效环绕,这样刷装备才会更加有趣。二、实现换装系统的方式原创 2014-09-20 23:26:54 · 3856 阅读 · 0 评论 -
游戏引擎不仅是代码,更多的是完善的工具
从洗脑开始记得若干年前,在做公司引擎研发的时候,时常会念到的一句话:引擎不仅是代码,更多的是完善的工具。当时只是用这句话还激励自己,找准引擎开发的原则和位置。 而实际上,对这句话的理解甚少。时隔多年,这句话油然在耳,伴随我左右。亲身体会后来,引擎项目砍掉了,进入了页游产品的开发。 在这个产品开发的第一周,我们就面临着动画和场景编辑问题,在脑海中第一时间浮现出的,依然是这句话。于转载 2014-09-25 12:23:41 · 1371 阅读 · 0 评论 -
初试虚幻4引擎感想
最近两天下载了虚幻4的源代码和编译好的环境,稍微尝试了下。没有深入研究,只是运行了几个Sample,看了看编辑器环境,甚至连c++代码都没有多看。所以并没有资格对这个世界上最先进的游戏引擎品头论足。不过由于不打算继续深入研究了,所以表达一下感想。 虽然对Unity已经比较熟悉了,但是真正接触虚幻4还是感觉力不从心。单单使用Unity的时候,感觉有很多坑,各种不爽,但是换了UE4,原创 2014-11-06 00:28:12 · 10166 阅读 · 18 评论 -
全面理解 Unity UI 系统
原地址:http://www.cnblogs.com/whitecat/p/4159815.html随着 Unity 4.6 发布,新 UI 系统终于与大家见面了。这篇文章将不会介绍如何使用按钮、滚动条之类的UI控件,这些内容可以参考 Unity Manual;这篇文章的重点是,如何理解 UI 系统的设计,以便更好的在实际中使用它。 RectTransformU转载 2015-01-08 20:17:23 · 8873 阅读 · 0 评论 -
Unity模型资源使用流程
昨天研究了下Unity中AnimatorController自动生成。今天稍微完善了操作流程,并且补充说明了在MMO中如何使用模型资源(AssetBundle),这个使用方法是MMO这样模型资源非常大的情况下才需要的。如果是比较小的情况下,直接塞到Resources目录下,加载Prefab就OK了,根本不用操心这些问题。 先附上最终修改后的脚本。它创建了一个菜单选项,选择一个文件夹原创 2015-02-20 13:55:36 · 3692 阅读 · 0 评论 -
Unity自动创建AnimatorController
这个是我现在所知最正确的MecAnim的用法了。先上代码:using UnityEngine;using UnityEditor;using UnityEditorInternal;using System;using System.Collections;using System.Collections.Generic;public class GetAnimationClip原创 2015-02-18 20:19:53 · 7435 阅读 · 1 评论 -
Unity换装的实现
关于Unity的换装,网上有几篇文章,我之前也简单的描述过实现。不过那个时候只是粗略的试验了下。今天好好梳理了下代码。 先上代码(自己的游戏项目,不是公司的,所以放心的贴上项目代码了,部分引用到其他的功能文件,但是核心代码无影响,这里主要看一下细节和思路)using UnityEngine;using System.Collections;using System.Col原创 2015-03-10 20:24:30 · 7857 阅读 · 2 评论 -
手游帧同步的研究
网络游戏的同步可以做的很简单,也可以做的很复杂。简单来说就是通过Http或者Socket来跟服务器同步数据。而如果往复杂了说,可以有p2p、帧同步、航位预测等等高级课题可以研究。 因为我们的项目需求----几百个独立单位的实时同步(带pvp的rts),所以研究了下帧同步。不过后来发现它其实有很多问题,所以具体如何还要看其他同事的研究成果。以我个人来说,修改游戏方案反而是最合理的解原创 2015-07-04 17:18:26 · 16053 阅读 · 7 评论 -
在Unity中使用uGUI绘制自定义图形(饼状图 雷达图)
饼状图或者是雷达图是根据属性自动生成的自定义图形。这里展示了如何使用uGUI完成这一功能。 先附上我制作雷达图的控件的代码 UIPropWidget.csusing UnityEngine;using System.Collections.Generic;using UnityEngine.UI;/* * * 2 6 * *原创 2015-07-17 15:53:46 · 19390 阅读 · 5 评论 -
讨论cocos2d-x字体绘制原理和应用方案
个人一直认为,文字绘制是cocos2d-x最薄弱的环节。对于愤怒的小鸟之类的游戏,cocos2d提供的文字绘制功能已足够使用。但是对于一个mmo来说,则完全不够。一个优秀的mmo客户端必然会对其有进行优化和再封装的操作。 cocos2d-x支持两种文字绘制方式(均支持中英文),一种是CCLabelTTF,一种是CCLabelBmpFont。 CCLabelTTF原创 2013-06-03 14:01:39 · 7027 阅读 · 5 评论 -
cocos2d-x+Lua下getChildByTag返回不正确的解决方法
参考这里 (http://www.himigame.com/iphone-cocos2dx/1289.html)cocos2d-x + Lua在lua代码中调用 node:getChildByTag(2),这样的代码,随机出现获取为空,或者获取到的不是想要的控件(比如获取的是一个CCLabelTTF c++中调用正常,但是lua中返回的对象无法调用setString函数)。一开始我原创 2013-06-03 17:38:14 · 8765 阅读 · 0 评论 -
cocos2d-x android平台切入后台纹理失效的解决方法
android系统下,切入后台,则纹理全部失效,从后台切到前台,cocos2d-x会重新加载纹理。这样有两个问题:1、如果纹理较多的话,加载纹理会卡很长时间,就像死机一样。 变通解决方法是修改引擎代码,增加一个进度条提示。2、文字描边等用到RenderTexture的地方会出现异常纹理,文字会花掉。 暂时不知道原因,无解。这里提供一个解决方案,解决掉纹理失效的问题,初步测试原创 2013-03-11 15:42:04 · 12404 阅读 · 4 评论 -
经典开源项目介绍(游戏、游戏引擎、通用组件)
(未完成) 我是做游戏客户端的,所以介绍的内容会偏重游戏,偏重c++,这里不会出现分布式集群服务器,也不会出现node.js。会出现在这里的是那些非常经典的开源游戏、游戏引擎项目。 如果你想成为一个游戏开发者的话,先找本入门教材了解下什么是游戏开发,可以不会directx、opengl,但是一定要了解。 然后就可以进入开源的世界,不需要加入游戏公司就会有大量的游原创 2013-02-03 19:21:52 · 4877 阅读 · 0 评论 -
游戏引擎启示录
游戏引擎基础(一)(渲染和构造3D世界) 来源:IIEEG03-22-2011第1部分: 游戏引擎介绍, 渲染和构造3D世界介绍 自Doom游戏时代以来我们已经走了很远。 DOOM不只是一款伟大的游戏,它同时也开创了一种新的游戏编程模式: 游戏 "引擎"。 这种模块化,可伸缩和扩展的设计观念可以让游戏玩家和程序设计者深入到游戏核心,用新的模型,场景和声音创造新的游戏, 或转载 2013-02-13 21:48:25 · 4182 阅读 · 0 评论 -
游戏引擎架构:3
关于内存使用的思考 让我们想一想,在今天实际上是如何使用3D显卡内存的以及在将来又会如何使用。如今绝大多数3D显卡处理32位像素颜色,8位红色,8位蓝色,8位绿色,和8位透明度。这些组合的红,蓝和绿256个色度,可以组成百万种颜色——那是你我可以在一个监视器上看见的所有颜色。 那么,游戏设计大师John Carmack为什么要求64位颜色分辨率呢? 如果我们看不出区别,又有什么转载 2013-02-13 21:58:08 · 1711 阅读 · 0 评论 -
游戏引擎架构:4
角色建模与动画 你的角色模型在屏幕上看起来怎么样,怎样容易创建它们,纹理,以及动画对于现代游戏试图完成的`消除不可信`因素来说至关重要。角色模型系统逐渐变得复杂起来, 包括较高的多边形数量模型, 和让模型在屏幕上移动的更好方式。 如今你需要一个骨骼模型系统,有骨架和网格细节层次,单个顶点骨架的评估,骨架动画忽略,以及比赛中停留的角度忽略。而这些甚至还没有开始涉及一些你能做的很好转载 2013-02-13 22:12:33 · 1079 阅读 · 0 评论 -
游戏引擎架构:6
声音系统 由于人们玩的游戏在种类和技术上的进步,声音和音乐近几年来在游戏中正逐渐变得重要起来(声音是一个实际游戏的可玩特点,比如在Thief和其它同类游戏中的听觉提示)。现在四声道环绕系统在游戏玩家的宝库中是负担得起的和平常的事。给定空间的声音,噪音的障碍和闭塞,和动态的音乐,如今许多游戏使用这些提高玩家情绪上的反应,更多的关注投入到这个领域就不足为奇了。 现在在PC竞技场中,转载 2013-02-13 22:20:07 · 1543 阅读 · 0 评论 -
游戏引擎架构:7
网络游戏我记得一些年前坐在GDC(游戏开发者大会)听负责开发X-Wing Vs TIE Fighter的家伙们题为“淹没在Internet”的演讲,全是关于让网络游戏实时地在Internet上工作的东西。他们选择那个题目是多么的正确啊。当它开始处理数据包的丢失,乱序,潜伏(一个数据包发送到它的目的地所花的时间)等等时,它确实淹没了。然而它是可能的。对于Internet需要一些聪明和经验转载 2013-02-13 22:21:26 · 1099 阅读 · 0 评论 -
游戏引擎架构:8
脚本系统 我们从第七部分的游戏网络问题来到了脚本系统,因为其呈现的故事叙述机会,最近已经形成一种很大的游戏元素。在一个需要以受控制的方式解释的情景,预先编制的电影脚本是解决问题的方法。在电影中,这通常用来处理或者由主角向一个伙伴解释情形,或者敌人对英雄解释。当然,有其它的方法来做这件事情 -- 叙事者,倒叙,等等 – 但通常是使用实时情景的人们和事件来完成。当然,游戏是不同的,游戏开发者转载 2013-02-13 22:25:54 · 1167 阅读 · 0 评论 -
游戏引擎架构:2
世界的灯光 在变换过程中,通常是在称为观察空间的坐标空间中,我们遇到了最重要的运算之一: 光照计算。它是一种这样的事情,当它工作时,你不关注它,但当它不工作时,你就非常关注它了。有很多不同的光照方法,从简单的计算多边形对于灯光的朝向,并根据灯光到多边形的方向和距离加上灯光颜色的百分比值,一直到产生边缘平滑的灯光贴图叠加基本纹理。而且一些API实际上提供预先建造的光照方法。举例来说,Ope转载 2013-02-13 21:57:18 · 2103 阅读 · 0 评论 -
游戏引擎架构:5
世界建造 常常在建立一个含有任何3D成分的游戏时,你最终要试图建立一个将会在里面产生游戏动作的3D环境。不知怎么的游戏开发者提供了一个建立这种环境的方,它容易修改,有效率,有较低的多边形数量,对于游戏既容易渲染又容易运用物理学。很简单,对吗?当做这个的时候我用左手在做什么?当做这的时候, 我对我的左手做什么? 是的。不错。 虽然那里有许多3D结构程序,从CAD/CAM程序到3D转载 2013-02-13 22:16:34 · 1413 阅读 · 0 评论 -
游戏引擎架构:9
现成产品与定做的设计工具 我们从第8部份的脚本引擎来到这一章节中的许多主题,我们认为那些铁杆游戏玩家和有志成为游戏开发者的那些人将会发现它们相当有趣。我们将开始讨论现成产品与定制的设计工具。 你的工具的选择是你引擎设计的一个非常重要的部份,因为这是你将用来给你的游戏产生内容的东西,是最耗时的部份。在这个过程中有助于节省时间和资源的任何东西都是好的。那些不能的东西就是糟糕的。在那转载 2013-02-13 22:43:48 · 1685 阅读 · 0 评论 -
基于cocos2d-x的游戏客户端优化
(未完成) cocos2d-x并不是一个适合网游客户端(mmo)的游戏引擎,越是大型游戏,这个小引擎就越无法驾驭(虽然它非常受欢迎)。 之前我在原来的公司使用的是自主研发的C3引擎,已经对外开放(尚未开源),后面如果我有提到c3引擎,那么指的就是这个2.5d游戏引擎。 我想起我上个月刚离职的时候,c3的首席研究员(应该也是引擎圈内的一个大牛)对我说cocos2原创 2013-01-12 21:24:43 · 14861 阅读 · 21 评论 -
游戏引擎架构:1
渲染器什么是渲染器,为什么它又这么重要呢?好吧,如果没有它,你将什么也看不到。它让游戏场景可视化,让玩家/观众可以看见场景,从而让玩家能够根据屏幕上所看到的东西作出适当的决断。 尽管我们下面的探讨可能让新手感到有些恐惧,先别去理会它。 渲染器做些什么?为什么它是必须的?我们将会解释这些重要问题。 当构造一个游戏引擎的时候,你通常想做的第一件事情就是建造渲染器。因为如果看不见任转载 2013-02-13 21:56:25 · 2284 阅读 · 0 评论 -
游戏引擎架构:10
人工智能(AI) 我们上面已经用了其他九个章节介绍了游戏引擎,现在让我们深入到非常有趣和重要的人工智能主题。人工智能如今正在变成被谈论得最多的仅次于游戏引擎渲染能力的游戏开发领域之一,确实如此。直到大约两年半以前,游戏似乎主要是在考虑你能够渲染多少个多边形,眼睛是多么的漂亮,和… 好…劳拉的胸部是多么的有弹性...既然我们现在已经能够渲染出非常真实的乳房,中心就开始转移到我们实际上用那些转载 2013-02-13 22:44:37 · 1291 阅读 · 0 评论 -
游戏引擎架构:11
前端 你已经看到了菜单系统,你可能理解游戏内的头顶显示(HUDs)时常是游戏经历中被忽视和诽谤的部分。最近,这个领域开始被给人印象非常深刻的Black and White所关注,这款游戏实际上没有HUD。在Peter Molyneux经历了Dungeon Keeper以后,它在屏幕上大量的图标,他决定游戏的大部分被这些图标占用了,主要的屏幕没有被足够利用。因此他决定废除所有这些东西。Pe转载 2013-02-13 22:45:30 · 1801 阅读 · 0 评论 -
CCNode扩展,适应MMO的复杂UI逻辑
1、现有的cocos2d-x的ui和点击事件分派机制是无法适应mmo的ui逻辑的。 mmo的ui元素很多,一两百个界面是很正常的。 规则既单一又复杂,这些界面肯定是由简单的对话框组成的,不会有什么amazing的东西,但是这些对话框之间的遮挡、层级关系又是复杂的。如果把这些东西丢给写ui或者写逻辑的程序员去操心,那就等着无穷无尽的bug吧。而且即便维护好现有的代码,这些代码结构也是脆弱的,每添加一原创 2013-03-11 14:40:44 · 4131 阅读 · 1 评论 -
cocos2d-x添加纹理自动回收机制
1、不是一个完整的模块,所以不提供完整代码,只提供思路和核心代码。 思路很简单,给每个纹理维护一个生命周期和上次渲染时间,每次渲染的时候更新这个渲染时间,CCTextureCache中每隔一定时间(15秒)遍历一下当前纹理集合,如果发现有纹理超过生命周期指定时间没有渲染,则释放此纹理。 CCTexture2D中的getName函数就是很好的更新渲染时间以及释放纹理重新加载的入口。 因为CCT原创 2013-03-11 13:11:32 · 5130 阅读 · 0 评论 -
Unity实现残影特效
实现效果如上图所示。代码如下:using UnityEngine;using System.Collections;using System.Collections.Generic;using System.Linq;// 残影效果public class AfterImageComponent : ActorComponent{ class AfterImage原创 2016-03-24 23:03:51 · 13930 阅读 · 3 评论