自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

猪哥的白驼山

譬如为山,未成一篑,止,吾止也。譬如平地,虽覆一篑,进,吾往也。

  • 博客(91)
  • 资源 (3)
  • 收藏
  • 关注

原创 OBJ文件动态载入Unity中的一个算法小问题

FBX、OBJ等格式的3D文件,拖入Unity工程时,都经历了一个内部处理过程以转换成Unity能使用的格式。通常游戏项目的模型文件都是作为静态资源打包进安装包的。但假设面临在程序运行时,灵活动态获取模型文件,并马上使用的需要,该怎么办呢?Unity在这块并没有做很好的支持,不要和我说什么AssetBundle,那个也是要预先在Editor里手工处理好才能下载使用的。我是指直接丢过来一个O...

2016-12-30 17:42:13 3584 16

原创 每多变幻

又有近半年没更了。写上一篇文章的时候,我所在的游戏项目团队已是摇摇欲坠,所以正在利用业余时间持续开发山寨版的物理沙盒游戏,积极筹备跳槽。后来八月末误打误撞进了一家做医疗软件的小公司玩起了Hololens开发,也就是所谓的AR了。工具还是Unity,所以技术上倒也没多大变化。项目说大不大,说小呢,也不是那么简单。两个月做了个Demo,然后各种其他功能慢慢加,同时要面对工程的可维护性以

2016-12-30 16:52:26 417

原创 C# foreach循环内不要修改集合

之前在游戏中为了实现剧情脚本延时创建Npc的功能,写了这么一段代码:LinkedList DelayCreateNpcTasks = new LinkedList(); void TickDelayCreateNpc() { foreach (CreateNpcTask task in DelayCreateNpcTasks)

2016-07-28 08:41:43 6483

原创 ulua(一)上手

在项目中引入脚本系统有两个好处:1.灵活快速地调试测试各种数值、设定,省却重编译的时间2.热更新,游戏内容修改后用户不需要重新下载安装要在Unity中使用Lua脚本,各种解决方案很多,我选择较为热门的ulua来试试。关于ulua的前世今生、各种奇奇怪怪的项目名字、分别包含哪些东西、可以用来做什么,我想首先是要搞清楚的。这些问题的答案在www.ulua.org这个网站

2016-07-17 18:02:45 1408

原创 C#设计模式(一)订阅-发布模式

本来是在持续开发Besige,但考虑到以后迟早会在设计模式这块继续拓展,就新开了一个标题,算是个开个头。模式这东西原本可以独立于语言之外来说,但考虑到不同语言的实现毕竟有些差异,我本人搜索文章时,也不喜欢搜出一堆其他语言的参考资料来,为了少制造些垃圾信息积点德,就在标题前加了个C#。订阅-发布模式又称观察者模式,很多资料只是介绍了个大致思想,很难找到把订阅者和发布者最大化解耦的参考

2016-07-01 22:55:57 2349

原创 山寨Besiege(七)加入零件朝向的调整操作

前文提到了一些需要处理的细节问题,今天我们来一个个解决:一、轮子的安装位置调整        因轮子尺寸相对立方体木块的不规整性,直接固定在立方体Trigger的位置点,明显是浮空的。我之前想过用额外规定吸附点之类的方式解决此问题,后来转念一想,冒出个最朴素的解决方案:直接对固定位置点作一个调节。        为此我强行oop了一波,把Modules类的LinkTo方法设为v

2016-06-25 22:33:09 1755

原创 山寨Besiege(六)代码托管、重构

停更了好久,一是最近试着找了下新工作费了些精力,二是公司项目比较忙,三是项目从试验阶段进入重构阶段的时候,往往也确实费工夫。现在抽空继续……一、Besige项目现已托管在csdn平台上了!地址:https://code.csdn.net/obmar45/besige/tree/master考虑到空口说白话对类似重构这种工作很难做到精确到位的描述,这样可能就让难得有少数几个愿意深

2016-06-20 03:16:04 724 2

原创 山寨Besiege(五)车轮

自从有了电,生活真方便。自从有了引擎,做游戏真方便。再度感慨下社会分工合作的神奇,假如自己做一个WheelCollider,不知道复杂到哪里去了。Unity的WheelCollider是个很高端的玩意,不光会滚,还自带悬挂弹力模拟,所以做出像越野摩托那种弹力十足的东西也应该不难。轮子就没什么好贴图的了,直接选讲参数:1.Wheel Damping Rate     

2016-05-21 05:35:00 1305

原创 山寨Besiege(四)操控轴

这次我们实现转向轴。先贴两个图给个直观印象:题外话一:猪哥考虑过学一学3DMax,一是方便自己做点需要的模型,二是工作中可以更好地和美术沟通,三是某些时候这种复合型淫才的招聘薪资屌爆了。但综合考虑了一下,这种没什么难度但需要一定时间的活还是留到更后面一点再做,先赶程序本职工作最要紧的搞扎实了先。题外话二:我这人好妄自菲薄,刚接触Besiege这个游戏

2016-05-21 04:36:28 1247

原创 山寨Besiege(三)需求分析与架构设计

在昆明工作的日子,我虽对经理忽悠的作风极为不屑,但对他整天挂在嘴边的那些软件工程思想还是很尊崇的。无论是传统的瀑布流,还是敏捷开发,无论是大的系统,还是小的功能,先分析需求、再构思设计、再实现的流程是永恒真理。事情还没弄清楚就开始动手做,是初学者的幼稚行径,越成熟的设计师,越是重视前期的需求分析,思路清晰后,编码也只是“唰”一下的事情了。习惯总得从无到有养成。所以这次我刻意走一个完

2016-05-08 15:46:58 1315

原创 山寨Besiege(二)瞎扯下项目管理

上回说要用Github维护项目,试了下上传速度为5-10k/s,用买的vpn则是50k/s,虽然传200M的东西也不是不可能,但终感太麻烦,于是放弃了这个念头。也许能畅快地翻墙是一个高级码农必备技能,但现在这个逼我还是不装了。同时在本地使用版本管理系统的必要性也还不是那么强烈,我想等有需要的时候弄一个也不是什么难事,这次就打打嘴炮算了。关于版本管理:我倾向于用Git

2016-05-08 13:08:54 692

原创 山寨Besiege(一)计划

去年我玩到一款游戏叫做《Besiege》,号称steam三大收割膝盖之一的神作,确实一分钟就爱上了它。然后自己在家初步仿制了一下手机版,现在是这个样子:中间浅色木箱是核心块,深色的是新加木块,从左下角图标中拖出零件,拖动中会有提示图标,拖到能安放的地点时会有提示木块出现,松手则确认组装。然后点击右上角的运行按钮,箱子摔下来变成这样:零件间的粘合力是我

2016-05-01 00:18:14 803

原创 C#碎碎念(二)快进一波

可能更有效率的学习方式是先泛读系统姿势,再在实战中根据需要翻书。我讨厌在语法中裹足不前的状态,这次再快进一波。1. 三个参数修饰符 ref out paramsref表示按引用传参,out加了一道必须返回值的验证,params可用于传多个参数非常方便。2.属性相较于C++常需自己写读写方法,C#算是先进一步,自动实现的属性已经大大简化写法,要习惯用。3.

2016-04-30 18:32:01 662

原创 C#碎碎念(一)值类型与引用类型

凌晨四点写这种东西,一股森森的咏春打木桩的既视感。说要强化语言其实是个很棘手的事情,因为一个人不知道自己不知道什么,不过好在鄙人在此方面积淀尚薄弱,随便翻翻书也能有所收获。预计会将专门学习C#的周期计划从五周压缩到三周,比如我一开始是想先讲“反射”的,但翻完一整章实在又不知道从何说起,毕竟实战出真知,有些东西项目中暂时用不到就真是没法学。所以不求全,短期内随便能总结几点是几点吧。

2016-04-26 05:02:12 412

原创 三言两语说shader(九)钻石

这次的目标是绘制一颗闪闪发光的钻石,追求效果是越接近真实越好。先说说为此我这几天干了些什么。1.看了stalendp blog里那篇《钻石效果》后头的参考文献最有价值的就是ATI在2004年GDC上作的演讲,题目就叫Drawing a Diamond。但是由于只有ppt,所以很难重现工程深入学习。思路大概是预备了一张折射CubeMap,一张带模拟色散的反射CubeMap,最后再

2016-04-17 14:36:48 6935

原创 三言两语说shader(八)墙体透明

很抱歉这篇文章要放个空弹。计划写“墙体透明”的原因,也是工程实际需要,摄像机固定侧视主角,但场景是真3D的,所以有时主角会被墙挡住,这时要作一些处理。之前用过一种直接让人物变色显示的方案,但性能损耗严重,具体原因我还没分析。个人觉得让墙体变透明的方案观感效果可能更好。还是一样,什么都自己想办法是不明智的。上网搜了下,文章很多,随便贴两篇:Unity 墙遮挡人物时

2016-04-09 22:27:03 775

原创 三言两语说shader(七)黑幕扩散

按计划继续,目前为止写了三篇对工程已有shader的分析解读,当然实际上我读的shader远不止这三个啦,比如这周就把乐乐同学的blog里的几十篇文章泛泛通读了一遍,主要也是为自己开始构思写一些简单的shader作准备,所谓“思而不学则殆”,不多看些别人的东西自己就想搞创作明显是要吃亏的。所谓“黑幕扩散”,就是一开始屏幕全黑,然后从中心向外逐渐展示出游戏画面。为什么我要做这么一个东

2016-04-09 21:18:07 2609 1

原创 三言两语说shader(六)外发光、表面shader

外发光(Rim Light),网上也很多例子。可用来做怪物受击时的身体闪光等。我一开始以为和轮廓描边差不多,实际上样子是类似,原理还是完全不同的。手头工程里有个顶点像素shader的例子,但是我发现Unity Surface Shader Examples里就有Rim Light,所谓简单就是美,直接贴这个官方例子,顺便说说Surface Shader好了。考虑到这次的内容比较

2016-04-03 16:13:13 4801 1

原创 三言两语说shader(五)轮廓描边

这也是个常见的shader,可以实现类似动漫《枪之国度》的那种轮廓描边卡通画风。在我手头的项目里用来给怪物加“霸体”效果,所谓霸体意思是怪物此时无法被击倒。用途诸如此类。下面放效果图:原谅我在Asset Store里找了半天最后找到这么个丑陋的模型,不过刚好它不是很精细,很好的暴露出了缺点,模型表面法向量突变(也就是不光滑)的地方描边会断掉。这个shader

2016-04-03 14:10:58 7524 1

原创 三言两语说shader(四)渲染流水线及相关

对一件事物的理解,分真懂和假懂,以及似懂非懂,往往前面走快了,中途就要停下来想一想,不然后面就越来越慢,搞技术,大抵如此了。前几天刷刷看了几个shader,产生一些疑问,比如一个shader完全没有properties可不可以?那些所谓的“语义”到底有什么用?顶点shader的参数从哪里传过来的?等等。都是些基本东西,不过越基本越重要啦。所以今天继续讲原理。先贴两个

2016-04-02 09:29:43 1023

原创 三言两语说shader(三)矩阵变换

一、话痨接下来两篇打算补点理论姿势,哪里讲错了大家及时指出,多多包涵。说好讲轮廓效果的,怎么又扯起矩阵来了? 是这样的,即便是上一篇中最简单的黑屏效果,里头的顶点处理函数vert_img,其实也包含了一句: o.pos = mul (UNITY_MATRIX_MVP, v.vertex); 这个MVP是unity shaderlab提供的内置矩阵,大体就是从物体本地坐标变换到世界坐标、再到

2016-03-29 00:50:35 1458

原创 三言两语说shader(二)黑屏效果

我看了下shader这东西要玩深也是要经年积累的,按一般的顺序从漫反射到镜面反射等等那样来的话,太费精力。我这次是要作一个游戏开发技能的系统学习总结,所以shader这块大致的计划是以手头项目为依托,先看懂其中用到的大概三个,包括黑屏和两个轮廓描边,再自主编写一到两个有实际需求的,包括一个黑幕扩散、一个墙体后的人物透视,最后再做一个稍微酷炫些的比如钻石光效之类的,然后就收手转入下一块。计划

2016-03-25 21:04:08 2399

原创 三言两语说shader(一)前言、一些资源

先说明下情况,本人也是刚刚开始学习shader,这次开更要写的一系列文章也都是自学笔记形式,只求交流探讨,不敢擅为人师。本来不想用这个标题的,搞得像什么大师一样,但忆起达叔曾经曰过:“男人不装酷,枉在世上混”,我也就无所畏惧了。所谓游戏,就是一个不断在屏幕上画图的程序。根据模型的位置、贴图、环境光等原始信息,计算出屏幕上应该显示出什么图像,就叫渲染。很久以前这段计算

2016-03-25 08:59:12 527

原创 开更

快两年没更新这个博客了,时间6得飞起。2014年7月停更后大概一直在学Unity3D,然后2015年5月终于如愿进入了一家游戏公司干到现在。觉得是时候再学习总结一些东西,让技术上一个台阶了。

2016-03-25 08:18:19 277

原创 二叉查找树

二叉查找树的查找、插入(建立在查找的基础上)jiao

2014-07-10 16:08:13 580

原创 传说中的二分查找

很久以前在csdn的编码挑战栏里第一次看到“90%的程序员无法正确实现二分查找”

2014-07-08 14:29:34 655

原创 std::cin 与 ctrl+z 配合使用时遇到的问题

《C++ Primer》第四版第一章1.4.4节,就早早的教了women

2014-07-08 10:25:03 1553 1

原创 迪杰斯特拉算法

这是一个经典的求图的最短路径算法。

2014-07-05 13:12:21 731

原创 关于GDI+的那些事(3)——在内存中将bmp数据压缩为jpeg

GDI+是支持各种常见图片格式的,自带各种bian

2014-07-01 14:56:40 1049 2

原创 关于GDI+的那些事(2)——创建空白Image

Image类应该是GDI+中最重要的一个类了。

2014-07-01 14:14:17 1749

原创 关于GDI+的那些事(1)——效率、双缓冲

一年来做了一些图像相关的工作,

2014-07-01 12:02:38 2772 1

原创 八皇后问题

基本资料同理不罗列了。

2014-06-16 15:44:04 550

原创 赫夫曼编码

名词我就不解释了。注意构造赫夫曼树的方法并不唯一

2014-06-11 16:05:06 758

原创 广义表

广义表是一种能嵌套自身的数据集合,即某个元素本身又可能是一个小的广义表。实现广义表的过程中,我发现数据结构设计倒不难,难在如何表现、如何解析上。最简单的表现形式就是带括号的字符串,比如(A,B,(C,D))这种。那么(, B)这种合不合法呢?对于(A,B))这种明显不合法的输入,又如何检测出来呢?为此我还专门去看了下正则表达式这玩意。最后我意识到,首先要给出合法的定

2014-06-09 14:58:51 647

原创 signed unsigned 引发的血案

问题产生于局域网传输一幅图片。服务端是由

2014-05-21 10:12:06 603

原创 MFC中手动create窗口退出程序报错的解决方法

问题产生自一个需要添加列表(CListView)的工程

2014-05-20 11:02:27 3718

原创 指向指针的指针

写这篇文章,是因为几天前

2014-05-18 00:02:29 552

原创 多维数组

数组这玩意,我想很难找到不支持这种数据结构类型的语言了。

2014-04-22 14:29:14 656

原创 变长参数处理

有时候,有些函数,参数个数是非固定的,典型的比如printf()。

2014-04-21 11:46:43 652

原创 堆分配存储串

string类型是天天用的玩意,但是自己实现时,用顺序存储还是链式存储更合适呢?《数据结构》中介绍了三种方式:1,定长顺序存储    长度有限,貌似没大用处3,块链存储    数组和链表的一种混用形式,原本直觉上认为这种方式较合理,但仔细思考发现,其便利性也仅体现在连接了。综合来说不如第2种。2,堆分配存储    这种方式是今天要实现的。    方法的选择上,理论上

2014-04-19 13:20:33 725

Introduction to 3D Game Programming with DirectX11

作者: Frank D.Luna 2012年出版 有名的书,不多介绍了

2016-03-25

《游戏编程入门》光盘源码

《游戏编程入门》的源代码,可以直接运行。

2013-04-12

空空如也

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

TA关注的人

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