关于protobuf的cocos2d-x lua的集成,参考过网上的一些资料,考虑过用google官方实现,但感觉过于臃肿,且没有直接的lua接口,实际应用需要做的框架级的工作较多,再有就是protoc-gen-lua(https://code.google.com/p/protoc-gen-lua/),这个感觉就比较轻量了,但是还是有需要proto转换lua的前置操作,另外就是据说某些protobuf的使用方式还不被支持,最后发现了云风做的一个实现:pbc(https://github.com/cloudwu/pbc)感觉思路很不错,而且有lua binding,决定尝试下cocos2d-x的集成。
K-Res
Perforce (P4)的文本换行处理设置
CJ过后看到同事拿来的Perforce国内代理商的宣传单,发现已经把有很多游戏开发公司用P4这点作为一个宣传了,再看看目前现在svn项目中的.svn信息所占空间比正式资源还大的情况,决定体验一下这个很多游戏公司都在用的P4!
其实从上学再到工作这些年也接触了不少VCS(或者叫SCM),从VSS,CVS再到SVN,GIT,每次尝试一种新的系统时总会看到很多介绍和之前用的系统比的优势的文章(这点Perforce最是夸张,直接在官网上给出了和其它VCS比较的详细PDF文档,如http://www.perforce.com/sites/default/files/pdf/perforce-cvs-comparison.pdf还有http://www.perforce.com/sites/default/files/pdf/perforce-subversion-comparison.pdf和http://www.perforce.com/sites/default/files/pdf/perforce-git-comparison.pdf看出来商业软件确实是做的比较到位!),虽然很多描述在亲身体会过后感觉并不尽然,不过还是希望P4能带来更多的“然”。
费了这么多话,还是写点正题吧,目前P4也没用的多么深入,更算不上多精通,所以比较之类的话题还是算了吧,记一下关于文本换行处理设置的心得吧。
发现一款基于OllyDbg的Android ARM调试工具
最近研究Android平台的原生代码so保护时找到了一款很好用的汇编级调试工具:基于OllyDbg的GikDbg,传送门:http://www.gikir.com/product.php
上学时学习汇编曾经接触过OllyDbg,用起来很是顺手,结合着IDA的静态分析,学到了不少底层的知识。
最开始研究Android原生代码逆向时用的是IDA Pro,明显看到最近的版本中,IDA一直在强化动态调试能力以及对移动平台的支持,不过实际测试时发现,虽然的arm elf可以反汇编以及分析代码,但是动态调试时其自带的android_server远程调试服务器不能很好地支持Android 2.3.3以上的系统,网上搜索看到有人说可以使用gdb server来远程调试,但是试了几次都没有成功。android_server据说在IDA 6.3版以后就可以很好地支持4.0+的系统了,无奈没有资源…
后来很幸运的找到了这个GikDbg,显示抱着试一试的想法,用4.0.3的模拟器测试了一下,发现很好用,Attach,断点等一切正常,就是反应速度稍慢,这应该是gdb远程调试的通病吧…
最开始看官网上的Android版名字叫GikDbg.ART还以为只有开启ART运行时模式才行,后来实测DVM也没有问题,而且连模拟器都能很好的支持,当然物理设备的话需要root,否则push不过去gdbserver。
使用说明在这里:http://gikir.com/blog/?p=115,Android 4.0.3模拟器DVM运行时一次成功!
熟悉一下Xcode下Mac App动态链接库的runpath
Xcode虽然已经用过很久了,但是很少接触Mac App的开发,尤其是对于Mac App的动态链接库用法更是知之甚少(大部分时间都是在做iOS开发而iOS又不支持动态链接库⊙﹏⊙b汗),果然在研究FMOD Studio的跨平台音效库时遇到了问题…先是在win32下写了一段测试代码,配合Studio工具做出的bank完成了基本加载、播放等基本逻辑,准备上Mac平台试验一下,结果一通忙活include和lib后,编译链接没问题了,停掉虾米的推荐准备听听Mac版的声音效果如何,结果一运行程序就崩溃了,看了下日志输出:
dyld: Library not loaded: @rpath/libfmodL.dylib
Referenced from: /Users/wzkres/Library/Developer/Xcode/DerivedData/CCTechDemo-gdcppdyfmrhlhzhidvykxyjrcvwo/Build/Products/Debug/CCTechDemo Mac.app/Contents/MacOS/CCTechDemo Mac
Reason: image not found
感觉有点类似win32下的没找到动态链接库的dll…不过既然是没见过的提示,还是搜索学习一下吧。
iOS6下慎用MPMoviePlayerViewController!
这个MPMoviePlayerViewController的事要从何说起呢,嗯……其实主要还是由于在播放视频时按Home键切出引发的问题:
先是测试发现游戏在播放开场视频时按Home键切换到后台后会触发libGPUSupportMercury.dylib: gpus_ReturnNotPermittedKillClient导致crash,关于这个异常大苹果的Technical Q&A QA1766(http://developer.apple.com/library/ios/#qa/qa1766/_index.html)已经交待得很清楚了,简单来说就是应用在处于后台状态时是不允许执行任何OpenGL命令的,包括前台时提交但尚未实际执行的缓冲指令!不过文档中提到的几个关键点我也都按规矩做了处理,稍作跟踪后发现,导致这个异常的原因是在应用播放视频时切到后台之后,MPMoviePlayerPlaybackDidFinishNotification通知被莫名其妙的触发了,导致后续逻辑按照开场视频播放结束开始执行,进而去加载OpenGL贴图,初始化状态等,于是自然被OS认为是违规调用了OpenGL命令,因此被kill掉了!
Android中GLSurfaceView在横竖屏切换时重新创建表面缓冲导致的问题
在做Android的OpenGL ES应用时,经常会遇到接入各种支付SDK等弹出UI导致当前横竖屏状态切换的问题,比如游戏是横屏landscape的,而支付SDK弹出的View是竖屏portrait的,这时如果不插手处理的话,系统会对GL的表面缓冲进行重新创建的处理,比如横屏的800×480会被重新创建为480×800,这样就会导致绘图错误,效果可以参考下面stackoverflow上贴出的图片。
解决这个问题的方法是:
Continue reading…
关于Unity3D内置Blinn Phong光照模型计算在移动设备上的曝光问题
Unity3D的surface shader用起来很是方便,比直接的cg写起来省事的多,而且有很多现成的东西可以include,比如光照部分就是,常用的lambert, blinn phong都提供了现成的实现,但是最近在做specular时发现,内置(https://unity3d.com/unity/download/archive下载全部内置shader source或 Windows, Mac)的LightingBlinnPhong在移动设备上使用时会出现高光曝掉的问题!
简单看lighting.cginc中的相关函数:
Realtek HD Audio前面板插口没反应的一个解决方法
主板是微星的770T-C35,机箱是一款世纪之星的不知道什么型号的,HD Audio前面板连接线已经接好主板,有防呆也不可能插反,但是耳机接入前面板3.5插口后就是没反应,查看了HD Audio控制面板,显示如下:
前面板显示没有插入,也没有声音,检查了前面板接线盒主板说明书后意识到一个问题:可能接线或插口并没有按有sensor的方式连接,也就是说前面板的插口不能像后面板载的那样实时显示插头插入拔出情况,所以前面板接口一直没有声音,于是关闭掉了检测: Continue reading…
Win8的Hyper-V导致视频硬件解码DXVA失效的问题
在使用TMT,完美解码的PotPlayer, MPC HC, KMP等播放器看蓝光原盘和1080P mkv等视频时发现如果开启硬解的话,会出现“绿屏”的问题!出现问题的机器是AMD X2 245的U和HD4850显卡,Win8 64位系统,查了下资料这块显卡对视频硬解是支持的,于是第一反应是显卡驱动,试遍了amd官网的各种legacy驱动(HD4000系列已经被列入legacy了)和guru3d上的各种第三方修改,增强驱动后,均没有解决,不是绿屏就是卡死,DXVA Checker也检查了显示没问题的,然后一度以为legacy了后amd的新系统64位驱动就渣掉了,快要放弃的时候发现guru3d论坛上有人提到Win8的Hyper-V会导致硬件出问题,于是恍然大悟,之前为了玩WinPhone8的SDK和模拟器,开启了Win8自带Hyper-V虚拟机组件,于是果断卸掉,重启后再用各种播放器硬件一切恢复正常,看到CPU占用率下降,应用不卡真是一件非常舒心的事…

