Unity

Unity泛光(Bloom)的实现方式

泛光是由于人眼晶状体散射产生的视觉效果,用于产生如梦似幻,朦朦胧胧的感觉。Unity中自带的图像效果中,有两种实现方式,Bloom 和 BloomOptimized,单就泛光来说,两者差不多。不过前者兼顾了HDR和Flare比较复杂,而后者只是单纯的Bloom,下面就BloomOptimized简单分析一下。

同颜色校正一样,Bloom也通过重写OnRenderImage方法,来进行图像处理。首先,对原图像进行DownSample

这里传入Shader的几个参数分别是:
blurSize:模糊尺寸,用于后面模糊算法的直径。
threshold:泛光阈值,颜色亮度超过这个阈值的像素才进行泛光处理。
intensity:泛光强度。 read more

Continue Reading
Unity

Unity颜色矫正实现方法

最近美术提出项目中的画面饱和度不够,于是在摄像机上添加了ColorCorrectionCurves效果,该效果是Unity标准资源中自带的,这里只是简要说明一下它的实现方式。本次使用只是单纯提升画面饱和度,因此并没有用到其中的高级选项。在高级选项中,我们可以调整不同深度的色彩饱和度,以打到模拟大气散射导致的远处物体饱和度下降的效果。下面只分析简化版部分,其他部分大同小异: read more

Continue Reading
Unity

Unity自动添加XCode依赖库

Unity项目接入一些Ios版本的SDK后,会需要添加一些SDK的依赖库。如果每次导出XCode工程后,都手动添加这些依赖库就会很麻烦,在以前的Unity版本中,需要用其他的辅助手段去通过用脚本修改Xcode工程文件的方式,把这些依赖项添加进去。Unity5之后内置支持了为Plugin添加依赖库。而且可以单个Plugin控制,非常方便。

我老犯的一个错误是下意识的去Player Setting下找关于Ios的依赖库选项。其实不是。 read more

Continue Reading
Unity

摄像机边界控制

由于美术场景有限制,所以需要将摄像机限制在一个如下图所示的凸六面体内:

camera_block

那八个顶点的位置根据场景不同而不同,限制摄像机位置的关键在于判定摄像机位置是否在六面体内。而剩下的就是几何知识了。

首先要求出6个平面的方程,取一个平面的三个顶点 V1, V2, V3,分别代入平面方程:

aX+ bY + cZ +d = 0 中然后求出:

 

取一个六面体内的点V0,代入方程中,得出: read more

Continue Reading
游戏编程设计模式

【翻译】游戏编程设计模式-Singleton

Singleton

http://gameprogrammingpatterns.com/singleton.html

本章是个奇葩。本书的其他章节都是告诉你怎么用一个设计模式。这一章告诉你怎么不用。

除了崇高的理想,GOF在书中对Singleton模式的描述,弊大于利。他们强调这种模式应该保守地使用,但这一条在游戏工业中并不奏效。

像其他模式一样,在不适当的地方使用Singleton,就像用夹板处理子弹伤口一样。由于它被大量地滥用,这章的大部分内容将告诉你避免使用Singleton,但是一开始,我们还是要先从Singleton本身开始。 read more

Continue Reading
Unity

Unity编程规范

概述

良好的编程风格是代码可靠性的基础。首先,编程规范的意义在于将程序语言限定在一个可靠的范围内,能帮助开发者,从习惯上避免很多容易产生的低级错误。其次,对于团队来讲,统一的编程风格可以增强程序的易读性,减小成员之间的沟通成本。增强程序的可维护性。因此,我们需要制定一套编码规范。

Unity开发中,我们统一使用C#语言,本规范仅限于C#语言。

规范指定原则

1、方便代码的交流和维护 read more

Continue Reading
游戏编程设计模式

【翻译】游戏编程设计模式-Prototype

原文链接:http://gameprogrammingpatterns.com/prototype.html

Prototype(原型)

我第一次听说“Prototype”这个词是在设计模式中。今天我发现大家都在说这个词,但是已经不是在谈设计模式了。我们会在这里展开讨论,但是我也会给你介绍一些别的有趣的地方,以及一些其他的衍生概念。但让我们先领略一遍经典的内容。

原型设计模式、

假设我们在做一款类似《圣铠传奇》的游戏。在英雄的周围会产生很多生物和魔鬼,企图分享他的肉。这些恶心的晚餐伙伴是通过“卵”进入场景的,并且不同的敌人用的是不同的卵。 在这个例子中,我们为每一种怪物创建一个类-Ghost,Demon,Sorcerer等等,像这样:

一个卵的构造函数实例化一个特定的怪物类型。为了支持游戏中所有的怪物,我们简单粗暴得为每一种怪物写一个卵类,构成了这个并行的类结构。
prototype-hierarchies
像这样实现他们:

除非你是按代码行数付费的,否则堆砌这么多垃圾可不时间令人预约的事。大量的类,大量的冗余代码,大量的副本,大量的复制,大量的重复…
原型模式提供了一个解决方案。主要思想是一个对象可以产生其他跟他相似的对象。如果你有一个Ghost,你可以用它产生更多的Ghost。如果你有一个Demon,你可以产生其他Demon。任何一个怪物都可以被当作一个原型怪物,用来产生其他的分身。
为了实现这个,我们提供一个基类,Monster,和一个虚函数clone():

每一个怪物的子类都可以实现一个方法,返回一个跟自己类型状态一模一样的新对象。例如:

  read more

Continue Reading
Unity

用Shader绘制攻击范围的圆环

游戏中经常会有如下图所示的表示攻击范围的圆环,圆环是由渐变色绘制而成。无论圆环的直径多大,圆环的宽度都是不变的。这一特点决定了无法用图片实现,只能通过程序绘制。

yuanhuan

在Unity中,我们可以用Shader来绘制这个圆环。代码如下:

 

 

我们用这段Shader来渲染一个1×1的正方形面片,可以通过_Object2World[0][0]来获取矩阵中的Scale,也就是面片的实际边长。然后在Fragment Shader中通过计算每个像素到面片中心的距离,来计算是否绘制以及像素的透明度。就可以实现图上的效果。 read more

Continue Reading
未分类

[转载]游戏开发团队中,策划和程序员的相处之道

原文连接 http://www.gameres.com/340545.html

在国内的游戏开发团队中,程序扮演工程师,策划扮演设计师。但中国的程序员往往被人称为一种似乎很难沟通的工种,在团队磨合的过程中,策划完全不懂程序,不能用程序员的思路和他们交流的话,当然很难获得对方的认同,但有的时候出现的状况是程序对策划不信任,导致会出现很多矛盾,当然这些矛盾不是一天两天就有的,而是在日常中累积的,现在就来聊一下策划和程序的相处。 read more

Continue Reading
游戏设计

Clash Of Kings几个有意思的改动

Game of war已经火了好长时间了,相信在火的那一天开始,业内不少人就会想着尝试“微创新”一下。智明星通的Clash Of Kings是比较成功的一款。这两天稍微玩了一下,感觉他们的一些修改思路值得借鉴。

我第一次玩Game of war,一个最大的感受就是——太复杂了。大量的界面和系统一下涌进来,让那些没有多少SLG经验的玩家感到无处下手。可能在还没有体验到数值成长和玩家交互的快乐就流失了。所以第一要做的就是要简化系统,尤其是前期的系统。Clash Of Kings就在前期把原来的5种资源简化为2种。 read more

Continue Reading
游戏编程设计模式

【翻译】游戏编程设计模式-Observer

Observer模式

原文连接:http://gameprogrammingpatterns.com/observer.html

你再也找不出一台电脑,里面没有用MVC架构构建的软件。MVC的底层就是Observer 模式。Observer模式应用如此之广泛,以至于java将其纳入核心库(java.util.Observer),C#甚至已经把它固化到语言中(event 关键词)。

Observer是经典GOF设计模式中,最被广泛使用和熟知的模式之一。但是游戏开发界却被诡异地隔绝了,所以对你来说,可能比较陌生。如果你还没有染指过,让我来带你看一个激动人心的例子。 read more

Continue Reading
游戏设计

分析休闲游戏设计的艺术

作者:Will Freeman

20141113112728_32329

在并不遥远的游戏产业历史中,“休闲”这一词得到了明确的定义。

在快速发展且充满多样化的游戏用户中,“休闲”游戏就像最初声名鹊起那般快速失宠了。一些关于骑马为主题的盗版件以及Wii TV广告中的陈词滥调将“休闲”这一词变成了产业中粗俗的代名词。直至今天,我们还能在一些角落中发现一些质疑声。

然而,引出“休闲”这一词的趋势却继续延伸着。今天玩游戏的人比以前更多了,越来越多收集游戏出现在了非游戏的流行文化词典中。 read more

Continue Reading
游戏编程设计模式

【翻译】游戏编程设计模式-Flyweight

原文连接: http://gameprogrammingpatterns.com/flyweight.html

Flyweight 模式

雾气散去,壮观的原始森林展现在我们面前。古老的铁杉,不尽其数。像一座塔尖林立的绿色教堂。在巨大的树干之间,你只有拉开一定距离才能辨认出这是一个巨大的森林。

这是作为游戏开发者梦想的世外桃源般的设计,而这种场景往往因为一个设计模式的运用而变为现实。这个模式的名字就是再低调不过的:Flyweight(被很多书根据意思翻译为享元)。 read more

Continue Reading
游戏编程设计模式

【翻译】游戏编程设计模式-Command

Command模式

原文连接:http://gameprogrammingpatterns.com/command.html

Command模式是我最喜欢的模式之一。在我写过的大多数大型的程序,游戏和其他代码中,随处可见。正确地使用它,可以让一些丑陋的代码变得整洁。这样一个漂亮的模式,“Gof”(《设计模式-设计模式:可复用面向对象软件的基础》的四个作者)给出了一个极其抽象晦涩的描述:

将一个请求封装成一个对象,从而可以让用户使用不同的请求,队列或者日志请求去参数化客户端,并且支持撤销操作。 read more

Continue Reading
游戏评论

创造的快乐

3b33e4c86493e59fc48547e57426c65d_b

今天为大家推荐一款游戏,作为游戏行业的人,天天跟游戏打交道。如果不是真心觉得好玩,我是不会用这种方式推荐给你们的。

这是一款物理沙盒游戏,就是用游戏提供的一些零部件,组装成一个有特色的机械装置,去攻打一个目标。

上手简单,画面也很精美。最关键的是在游戏中能体会到另外一种快乐——创造。

小时候看着父亲把一块块粗笨的木料变成家具,长大后看着自己用一行行代码堆砌出软件。这种创造的快乐一直是我想追寻的东西。 read more

Continue Reading
Unity

[Unity]LightMap在PC上曝光问题

场景中使用了lightmap,但是怎么调整光线,都跟打包到手机上的亮度有差别。在Editor里面,明显曝光过度。

后来才发现,是因为我的Editor已经转换到了Android平台,所以所有的光照贴图都被转换成Android使用的格式,所以在PC上渲染结果就出现了差错。

所以在调整场景光照时,要转换到PC平台看效果。

File->Building Setting->PC->Switch Platform

Continue Reading
cocos2dx

failed to export application

在用eclipse导出apk的时候,有时会遇到提示:

failed to export application

没有其他提示了,这个时候可以看一下workspace里面的log信息。我碰到的是这样的:

Unable to add ‘proj.androidassets360sdk_resres_272_1.dat’: Zip add failed
ERROR: unable to process assets while packaging ‘C:UserspcAppDataLocalTempandroid_7802955280335404337.ap_’
ERROR: packaging of ‘C:UserspcAppDataLocalTempandroid_7802955280335404337.ap_’ failed

查看目录下有这个文件,这样多数就是权限问题。而修改asset下的权限也没有用。因为asset是在打包的时候通过脚本拷贝的。 read more

Continue Reading
梦游杂记

梦游杂记 第三章 玉山

晓蝶的面前是一座山,说它是一座山,只是因为它大。大到除了山再也没有别的什么可以形容它。 山上没有草木,是因为没有草木赖以生存的泥土。没有泥土,是因为没有用于附着的粗糙平面。 看上去白皙,摸上去温润。 它一定不是风化的产物,风化缓慢而残忍,一定是先挑选出表面的异类分子,通过氧化使其变质。表面看似紧致,但经不起风的耐心。它会一个个分子地找,一次次反应地试。变质的分子会割裂自己,脱离组织。表皮就会被分割瓦解,原来悠然躲在表皮下的部分被迫成为表皮… 想到这,晓蝶开始意识到了这座山的珍贵。 它一定是被一层层皮壳,岩石,泥土,树木深深保护着。以至于还留有亿万年之前的动人清纯。 蚂蚁,只有蚂蚁愿意为了生存繁衍,愿意去啃噬草木,搬走泥土,剥开岩石,磨去皮壳。幸亏他们没有感情,如果有,他们的心脏一定会在玉山暴露的那一刻爆炸。多少代积攒的原始冲动,在一秒钟宣泄掉,那不是生命所能承受的。 光滑如丝,晓蝶纤细温柔的手抚摸着玉山,有如此感觉。 匠人的手粗糙,商人的手铜臭,官员的手虚伪,献媚男人的手邪淫。这些手摸上去会是一样的感觉吗? “你的礼物我收下了,谢谢!”,晓蝶轻启朱唇。 “太好了,就知道你会喜欢,那我们的事…” “我会考虑,给我三天时间,三天后,你会收到一个肯定答复,或者是这座玉山市场标价的钱。” 晓蝶起身,没有回头,径直走出了玉店。心里在想: 他已经拥有了玉山,还想拥有我,尽管我的肌肤如玉山般白嫩温润,但你知道吗?保质期只有十几年,几十年后,玉山依旧,但我已苍老不堪。 时间跟风化岩石一样,一点点割裂我的皮肤表面,产生燥人的褶皱。那个时候啊,你还会像抚摸玉山一样抚摸我吗?
Continue Reading
日记

自由是枷锁

吃饭回来了,这是我元旦这两天假期的第一次出门。 “你好先生,一共31块”,嘉和一品的服务员姑娘的声音柔软清亮。这也是我这两天第一次听到有人面对面的跟我说话。 晚饭吃了一碗皮蛋瘦肉粥,一碟四川泡菜,一笼酱香肉包,一盘江南梅菜饼,都是我喜欢的味道。 吃完回来的路上,我故意走的很慢。凉风扑面,空气依然污浊,人群依旧喧嚣。但是在享受了两天室内恒温、安静的日子后,门外环境的变化让我感受到了清新。 老婆会老家待产的日子里,只要一回家,就过起了足不出户的生活。打打dota,看看电视剧,看点技术文章。 一台电脑,似乎就能满足我所有的精神需要。 以前,还对这种日子有过些许期待,但过久了才发现,当孤独侵入骨髓,自由也显得索然寡味。 人们如同一艘艘被绑在一起的船,绑久了就向往自己乘风破浪。当你真正打破捆绑,开始享受鲲鹏万里的时候,就会发现,其实你的自由意志并没有那么强烈。 一切随性的日子,其实颓废不堪。人要向上,不仅需要内心向上的渴望,还需要外在因素对行为的约束。 为了上班,不得不早起,那就养成了早睡早起的习惯。为了给家人准备三餐,也就养成了按时进食的习惯。当这些都不需要了,好习惯也就废了。 自由是一把更牢固的枷锁,在孤独的时候,理解会更加深刻。 2015.1.2
Continue Reading
梦游杂记

梦游杂记 第二章 吃饭

勺子,是亮银色的,勺子背面映出庄周长长的脸,脑袋尖尖的。把勺子反过来,勺子里面变成了倒影,庄周的下巴尖尖的。

为啥是倒影?庄周的思维干净利落地跳到这个问题上,全然忘记了他给酒桌上带来的尴尬气氛。 能够唤醒人的,不一定是闹钟的响声,也可能是突然而来的寂静。 哦,对了,饭桌上的父母和父亲同事刘叔的一家正在等着庄周的祝酒辞呢。他突然明白了,勺子里映出自己的脸为什么那么长。 就在一天前,父亲在饭桌上说:“老刘家的孩子脑子真快!有一次,老刘让他给我倒茶,他给我倒了满满的一杯,老刘教训他说:倒酒要倒满,倒茶要倒浅!这规矩懂吗?人家孩子想都没想,直接来了句:嗨,我知道,但庄叔我们都是一家人,我们就不讲那么多客套了,怎么方便怎么来吧,你说是吧,庄叔?” 就在一分钟前,刘叔亲自倒了一杯酒,说:“孩子长大了,这个酒我们让庄周说个话儿,我们一起喝!怎么样?”。父亲接过话:“好啊,读了那么多书,也该有点用了,听你刘叔的,来段祝酒词!” 静默。 周庄的脑子在疯狂地搜索祝福的话语: 身体健康?不行,刘叔当了这么多年局长,他的胃溃疡、高血压我都是知道的,说出来会不会被当成是讽刺? 工作顺利?废话,他工作顺不顺利,只跟他领导和他的下属有关系,我说顺利他就顺利了? 合家欢乐?更是废话了,这不全家在欢乐的吃饭吗? 多向家拿钱?… 多找小蜜?… 一路走好?… … 不能再想了,思路已经像脱轨的高铁,没法在正常的轨道上行驶了。 还是静默。 就在一秒前,庄周从勺子里看到了自己长长的脸,他意识到,说话的机会已经错过了。长时间的思考,就是他唯一的表现。 他拿起桌子上最大的杯子,给自己倒了一杯白酒,满满地,比父亲脸上满满的失望还满。 他端起杯子:“都在酒里了!”,一口喝下。 片刻,天地在晕眩。 那些个日月星辰,那些个山花海树,那些个鹏,哪些个鲲,左摇右摆,上窜下跳。 就在一万年前,山洞里的母亲烤熟了早上刚刚打来的兔子,招呼全家吃饭。全家老小一拥而上,抢个精光。相互无话,贼香。
Continue Reading