<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Per Pixel Lighting]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Garuda</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Garuda]]></copyright><item><title><![CDATA[移动硬盘复活记]]></title><link>https://blog.youkuaiyun.com/Garuda/article/details/79512683</link><guid>https://blog.youkuaiyun.com/Garuda/article/details/79512683</guid><author>Garuda</author><pubDate>Sat, 10 Mar 2018 22:55:08 +0800</pubDate><description><![CDATA[前几天把移动硬盘接到机箱上的usb时电压不太够，顺手就找了个直流变压器接上了。过了一小会，感觉不对劲，usb线怎么这么热。立即把电源拔下来一看，坏了，15V的。果然，移动硬盘再怎么插也没反应了。当时第一反应是可能电压过载会把硬盘盒的保护电路烧掉，但是硬盘本身应该是好的。所以把硬盘盒拆开，把硬盘取出来直接接到电脑的SATA接口上试试，结果电脑都起不来了。这回彻底悲剧了。虽然硬盘里没有非常重要的东西，...]]></description><category></category></item><item><title><![CDATA[罪恶装备Xrd卡通渲染]]></title><link>https://blog.youkuaiyun.com/Garuda/article/details/79511538</link><guid>https://blog.youkuaiyun.com/Garuda/article/details/79511538</guid><author>Garuda</author><pubDate>Sat, 10 Mar 2018 20:59:39 +0800</pubDate><description><![CDATA[随着前两年《阴阳师》《崩坏学院3》的大成，行业内掀起了一股二次元小高潮。很多公司都在上马二次元风格的产品。话说我们几年前就有团队想做二次元风格的产品，然而当时鹅厂的市场根据用户数据分析给出的意见是，二次元属于小众市场，在当时手游市场飞速增长，动不动就出爆款的环境下，小众市场当然是应该被抛弃的。但是猪场的团队显然不是这么思考问题的，所以有了《阴阳师》。由此可以看出，鹅厂和猪场的打法是非常不同的，扯远...]]></description><category></category></item><item><title><![CDATA[近来用到的几个技术点]]></title><link>https://blog.youkuaiyun.com/Garuda/article/details/78941690</link><guid>https://blog.youkuaiyun.com/Garuda/article/details/78941690</guid><author>Garuda</author><pubDate>Sun, 31 Dec 2017 14:10:04 +0800</pubDate><description><![CDATA[mono的JIT在运行时会造成轻微的卡顿。为了避免这个卡顿对手感的影响，我们在进入游戏时就对局内的功能类做预编译。预编译很简单，调用一下函数指针即可。找到应该预编译哪些累则稍麻烦一些，要给mono加些日志，输出局内JIT编译的函数列表局内关闭mono的GC，具体内容在之前的一篇博客中有介绍Android平台内存分析。为了降低内存占用，我们对游戏进程在android平台上的内存占用进行了仔细的分析，]]></description><category></category></item><item><title><![CDATA[关闭mono的GC，防止其带来的卡顿]]></title><link>https://blog.youkuaiyun.com/Garuda/article/details/75331062</link><guid>https://blog.youkuaiyun.com/Garuda/article/details/75331062</guid><author>Garuda</author><pubDate>Tue, 18 Jul 2017 21:41:50 +0800</pubDate><description><![CDATA[我们的游戏品类特殊，对游戏对局内的画面流畅性要求极高。不允许出现可以明显察觉的卡顿。当我们解决了所有对象创建，JIT编译等带来的卡顿之后。还有一个较为棘手的卡顿来源就是GC。我们想了各种办法尽可能的减少对局内的内存分配。包括对UI的特殊处理，对网络消息的特殊处理。最后终于能够做到在一个对局之内不会产生GC。
但是，我们知道，这件事并不是一劳永逸的。随着关卡的继续开发，总有一天还会出现GC，有些内]]></description><category></category></item><item><title><![CDATA[gnu flex document]]></title><link>https://blog.youkuaiyun.com/Garuda/article/details/72772820</link><guid>https://blog.youkuaiyun.com/Garuda/article/details/72772820</guid><author>Garuda</author><pubDate>Fri, 26 May 2017 19:02:37 +0800</pubDate><description><![CDATA[网上好像并没有很方便的查看flex的链接，github上只有texi格式的文档，我将其转成html希望能方便到需要的朋友
GNU Flex document

另外发现一个flex/bison的windows port，直接在windows上用方便很多
win flex bison]]></description><category></category></item><item><title><![CDATA[fbx sdk c# wrapper]]></title><link>https://blog.youkuaiyun.com/Garuda/article/details/71335952</link><guid>https://blog.youkuaiyun.com/Garuda/article/details/71335952</guid><author>Garuda</author><pubDate>Sun, 07 May 2017 16:49:06 +0800</pubDate><description><![CDATA[fbx sdk c# wrapperFbxWrapper是fbx sdk的c#封装。目的是为了方便fbx工具的开发，同时也可以方便的与Unity集成。代码使用SWIG生成。目前使用fbx 2016 vs2013版本。想要升级到最新的fbx sdk版本应该不会很难。实现
首先要以正确的顺序include所有的头文件。为此实现了一个小工具IncludeGraph，用于对所有的头文件根据依赖关系进行排序，]]></description><category></category></item><item><title><![CDATA[技术在游戏研发中的重要性]]></title><link>https://blog.youkuaiyun.com/Garuda/article/details/55510982</link><guid>https://blog.youkuaiyun.com/Garuda/article/details/55510982</guid><author>Garuda</author><pubDate>Fri, 17 Feb 2017 15:30:28 +0800</pubDate><description><![CDATA[作为一个有追求的技术开发人员，总是希望能够做出好的技术。
那么对于游戏研发领域，什么样的技术才是好的技术呢，技术对于游戏研发的重要性如何呢。在从业若干年之后，我个人的总结是：好的技术创造好的游戏体验，提高开发效率。
 
首先，好的技术可以创造出好的游戏体验，这些体验包括：
1.游戏画面带来的视觉体验
这一点最为直观。逼真，或者酷炫的画面可以给予玩家强烈的视觉感官刺激。例如当年以画面作为最]]></description><category></category></item><item><title><![CDATA[用c#在excel中插入图片和设置表格宽度]]></title><link>https://blog.youkuaiyun.com/Garuda/article/details/53106632</link><guid>https://blog.youkuaiyun.com/Garuda/article/details/53106632</guid><author>Garuda</author><pubDate>Wed, 09 Nov 2016 22:14:34 +0800</pubDate><description><![CDATA[问题的由来是我想在excel中自动插入图片，插入图片后我想根据图片的大小调整cell的大小，于是不经意间就来到了一个坑的面前。。。。
Range对象有ColumnWidth属性和RowHeight属性，这两个属性的单位不同，并且都不是像素。。。
RowHeight的单位是point，可以这样换算
        public static int PixelToPointY(int pixe]]></description><category></category></item><item><title><![CDATA[unity 5.3.5镂空shader的一个bug]]></title><link>https://blog.youkuaiyun.com/Garuda/article/details/52302993</link><guid>https://blog.youkuaiyun.com/Garuda/article/details/52302993</guid><author>Garuda</author><pubDate>Wed, 24 Aug 2016 18:29:24 +0800</pubDate><description><![CDATA[现象
在某些android手机上，比如OPPO r7s（adreno 405 GPU），镂空效果错误。该透的地方没透。主要用于草和树的渲染。
定位
弄了一个简单的sample（不用unity），discard指令是可以正确执行的，怀疑可能跟unity的环境有关。
用Intel® Graphics Performance Analyzers debug了一下，shader中的clip函数被翻]]></description><category></category></item><item><title><![CDATA[在android平台hook OpenGL es的API]]></title><link>https://blog.youkuaiyun.com/Garuda/article/details/50655399</link><guid>https://blog.youkuaiyun.com/Garuda/article/details/50655399</guid><author>Garuda</author><pubDate>Fri, 12 Feb 2016 22:28:14 +0800</pubDate><description><![CDATA[在android平台上（其他平台也差不多），OpenGL es API的调用是通过一个一个跳转表实现的。这个跳转表的首地址被保存到当前线程的TLS （ Thread Local Storage）中。
我们来看一下Android系统中相关的源代码。我这里引用的是android 4.4.2的代码，不同版本中源码文件所在的位置略有不同。
先来看frameworks\native\opengl\lib]]></description><category></category></item><item><title><![CDATA[利用手机传感器测量高度]]></title><link>https://blog.youkuaiyun.com/Garuda/article/details/46137465</link><guid>https://blog.youkuaiyun.com/Garuda/article/details/46137465</guid><author>Garuda</author><pubDate>Fri, 29 May 2015 00:40:38 +0800</pubDate><description><![CDATA[最近简单了解了一下android系统的传感器。其中较常用的是加速计Accelerometer，可以用来实现“摇一摇”。
一开始，从加速计这个名字本身来理解，以为是测量加速度的，也就是手机如果静止，则加速计应该返回0.
后来发现其实是表示手机外部的支撑物对于手机施加的力产生的加速度，其方向相对于手机的本地坐标系。简单说如果手机静止不动，加速计的值为-g。这样的好处是这个值可以反映手机在静止时的方]]></description><category></category></item><item><title><![CDATA[移动VR开发初体验]]></title><link>https://blog.youkuaiyun.com/Garuda/article/details/45397201</link><guid>https://blog.youkuaiyun.com/Garuda/article/details/45397201</guid><author>Garuda</author><pubDate>Thu, 30 Apr 2015 17:27:15 +0800</pubDate><description><![CDATA[自从google收购oculus开始，VR的概念越来越火。Unite 2015简直就成了半个VR展，而仅仅1年之前UNITE 2014上还仅有一个oculus的一个极其简陋的展示。
最近体验了一下三星的Gear VR，很不错。只要漫游的速度不是很快，保证帧率的情况下，几乎没有明显的眩晕感。比之前体验的oculus dk1强太多了。Gear VR自带的应用也比较丰富，有全景照片，全景视频，3d电影]]></description><category></category></item><item><title><![CDATA[新攒了台机器]]></title><link>https://blog.youkuaiyun.com/Garuda/article/details/44571053</link><guid>https://blog.youkuaiyun.com/Garuda/article/details/44571053</guid><author>Garuda</author><pubDate>Mon, 23 Mar 2015 21:57:58 +0800</pubDate><description><![CDATA[自从多了一个叫Unreal4的东西，5年前攒的机器明显跑着有点力不从心。于是琢磨着新攒一台机器。挑了一个礼拜配件，周末装出来。
机器定位在中端游戏机（虽然现在基本没时间玩游戏），配置单如下



机械硬盘有一块之前的西数2T绿盘，暂时够用了。

集体照留念

 
主板没啥说的，一直用华硕的
 

作为一个游戏从业者，还是应该买一块差不多的显卡，980，970太贵，960性]]></description><category></category></item><item><title><![CDATA[doom3的UI系统]]></title><link>https://blog.youkuaiyun.com/Garuda/article/details/41780285</link><guid>https://blog.youkuaiyun.com/Garuda/article/details/41780285</guid><author>Garuda</author><pubDate>Sat, 06 Dec 2014 23:01:27 +0800</pubDate><description><![CDATA[doom3的UI系统是纯数据驱动的，例如
windowDef TextTitle2
{
     rect     20,341,600,55
     visible     1
     text     "#str_00073"
     forecolor     0.6,1,1,0
     textscale     0.8
     font     "fonts/micro"
 ]]></description><category></category></item><item><title><![CDATA[记一个手游app数据文件的破解]]></title><link>https://blog.youkuaiyun.com/Garuda/article/details/41247067</link><guid>https://blog.youkuaiyun.com/Garuda/article/details/41247067</guid><author>Garuda</author><pubDate>Tue, 18 Nov 2014 15:00:11 +0800</pubDate><description><![CDATA[出于一些很猥琐的需要，同时自己也想做一些新鲜的尝试，周末用了大半天时间破解了某款手游的数据文件。
过程比我预想的要顺利，主要原因还是我们开发人员的懈怠，咳咳。
过程如下：


下载安装包，解压，发现几个XXX.db文件，最感兴趣的是一个50多M的XXX.db用UltraEdit打开XXX.DB文件，没有任何线索。只发现这几个文件有相同的文件头搜索.DB文件可能是什么文件，发现了开源库sq]]></description><category></category></item><item><title><![CDATA[doom3技术分析]]></title><link>https://blog.youkuaiyun.com/Garuda/article/details/22415935</link><guid>https://blog.youkuaiyun.com/Garuda/article/details/22415935</guid><author>Garuda</author><pubDate>Fri, 28 Mar 2014 17:41:30 +0800</pubDate><description><![CDATA[前言
2011年11月doom3代码发布
2012年11月doom3 BFG代码发布
两个游戏内容虽然相差不多，但doom3 BFG版本在技术上有很大进化（多线程框架，SWF，立体渲染）。本文技术分析主要基于doom3BFG版本
架构



idCommon是总控制类
绿色的是子系统，可以在各处调用。
Entity是基于继承的结构
多线程渲染

整体分为两个线程，主线程（]]></description><category></category></item><item><title><![CDATA[说说unity项目的优化]]></title><link>https://blog.youkuaiyun.com/Garuda/article/details/20064119</link><guid>https://blog.youkuaiyun.com/Garuda/article/details/20064119</guid><author>Garuda</author><pubDate>Thu, 27 Feb 2014 18:28:26 +0800</pubDate><description><![CDATA[最近由于公司一个项目的需要（马上就上微信了呦），我被临时抓过来搞了一个月的unity。
主要是帮着搞一下性能的优化以及解决一些兼容性问题。因为我之前对Unity和移动开发都不是很了解，所以简单总结一下，积累点经验。


首先是选定基准平台，android是小米1，ios是iphone4。先在小米1上简单的profile了一下，发现android平台的帧率非常不稳，对profile工作影响很]]></description><category></category></item><item><title><![CDATA[对stlport容器进行排序的一个bug]]></title><link>https://blog.youkuaiyun.com/Garuda/article/details/8802890</link><guid>https://blog.youkuaiyun.com/Garuda/article/details/8802890</guid><author>Garuda</author><pubDate>Mon, 15 Apr 2013 11:16:01 +0800</pubDate><description><![CDATA[这两天客户端遇到一个bug比较坑爹，记录一下。
有一段代码是将一些坐标的z值放到一个stlport的vector中用sort函数排序。
结果sort函数中迭代器越界了，导致栈上的数据被篡改。
迭代器越界的原因是用于排序的浮点数中有QNAN，造成functor不满足严格弱序，在某些数据下就会产生迭代器越界。
这时开启stl debug宏会有断言。
试了一下vc2010自带的stl使用同样的]]></description><category></category></item><item><title><![CDATA[工作这几年感悟较深的几点]]></title><link>https://blog.youkuaiyun.com/Garuda/article/details/8723917</link><guid>https://blog.youkuaiyun.com/Garuda/article/details/8723917</guid><author>Garuda</author><pubDate>Tue, 26 Mar 2013 21:42:12 +0800</pubDate><description><![CDATA[目标导向。一项工作，在真正从产品中看到效果或者解决了一个实际问题之前，这件工作的实际价值为0。也就是说一件工作在真正完成前，谈任何功劳苦劳贡献等等都是没有任何意义的。如果在团队中能够达成这种共识，那么以此为基础的主动工作则是提高工作效率和质量的关键。在工作中的任意时刻，心里对各项工作要有一个明确的优先级。总是应该先做优先级高的事（除非低优先级的事马上就要做完了）。判断哪些事优先级高哪些优先级低则是]]></description><category></category></item><item><title><![CDATA[unreal engine4效果很不错]]></title><link>https://blog.youkuaiyun.com/Garuda/article/details/7650845</link><guid>https://blog.youkuaiyun.com/Garuda/article/details/7650845</guid><author>Garuda</author><pubDate>Sun, 10 Jun 2012 22:29:30 +0800</pubDate><description><![CDATA[看了unreal engine4的ElementalTech Demo和Featuresand
 Development Walkthrough两个视频，效果还是非常赞的。看来epic这几年是下了大力气了。
下面说说ue4的重要特性吧
1.     延迟渲染
Ue4完全抛弃了预计算技术，取而代之的是全实时的延迟渲染。这个应该是ue4在渲染上最大的改变。随之而来的将会是ue4比ue3对硬件的]]></description><category></category></item></channel></rss>