关于本Blog上所有项目代码的说明
作者:rain 日期:2010-03-11
网络泡泡龙-情侣版
作者:rain 日期:2010-03-11
精灵的宝藏Demo发布
作者:rain 日期:2009-11-28
引擎制作计划
作者:rain 日期:2012-01-23
无论是游戏独立制作人还是出于兴趣写几个经典小游戏练手都需要大量时间花费在上面,那么一款成熟可靠的游戏制作中间件就是必不可少的。几乎所有的开源或免费的游戏引擎都只是对DirectX或OpenGL的包装,很少有涉及到真正制作一款游戏所需要的。虽然对于游戏制作的方方面面基本都有开源实现,但是并不是完整,整体一块的,需要自己写很多粘合代码,这就使得工作量大大提高。鉴于市面上的免费和开源引擎或多或少都不能另我满意,于是决定自己实现一套。
对于我自己的游戏引擎首先的要求就是:
1.由于面向PC的Windows平台,所以底层渲染接口选用DirectX且必须是9或以上以实现完全的硬件加速
2.避免重复造轮子且节约时间,选用开源的DirectX包装库(平坦式C接口包装)以简化对DirectX的调用代码
3.面向纯2D实现则需要实现一款游戏所需要用到的方方面面的功能,大概功能如下:
对于我自己的游戏引擎首先的要求就是:
1.由于面向PC的Windows平台,所以底层渲染接口选用DirectX且必须是9或以上以实现完全的硬件加速
2.避免重复造轮子且节约时间,选用开源的DirectX包装库(平坦式C接口包装)以简化对DirectX的调用代码
3.面向纯2D实现则需要实现一款游戏所需要用到的方方面面的功能,大概功能如下:
经典休闲游戏重制集
作者:rain 日期:2011-10-27
对于一些经典游戏我是很感兴趣的,不光源于对游戏的热爱而且还是她们陪我渡过了童年生活。我是一个怀旧的人,喜欢回忆一些曾经的回忆。现在决定利用手头的技术重新制作她们,设想的小游戏包括休闲游戏系列,比如一些流行的Flash游戏重制,魂斗罗或合金弹头系列,1947系列,坦克大战系列,纸牌系列,圆桌武士或名将系列,口袋街霸系列,时空之轮等。可以看到STG,RPG,FTG,ACT等各占之一。当然重制对于完整度取决于时间和精力,有些几乎不可能完全恢复原作(比如时空之轮)只能尽自己所力尽量完成框架和基本功能。下面是对于重制游戏的意义:
1. 网上有很多Flash版本的经典游戏,为何要重制?
目前重制采用C++/DirectX/OpenGL,效率得到最大保障且游戏的流畅程度绝不是Flash版本所能达到,但对于游戏的重制基本还是采用原作的图像,当然如果能找到原作的高清版本图像我也不会有意见:-)还有很重要的一点是可能会对游戏的玩法做一些突破希望能让人们有愿意玩的冲动。比如马里奥版的传送门等。
2. 都是2D游戏,为何没有3D游戏,目前不是最流行的吗?
的确,3D游戏是我的最爱,但2D更是我的最爱(画面精美流畅,玩起来爽快)。虽然目前虚幻3,Crystal Space 3D都是可以免费使用,但3D游戏的制作对于个人来说不是技术而是素材.2D的素材还可以自己搞搞或者网上找找.3D Model就不那么好找,找到也不那么适合自己的游戏也不会改。且制作的3D游戏在Mobile OS上也比较高端难以大众(至少目前是)
3. 除了追忆回忆,还有什么意义?
所有这些重制游戏将选用开发完成度高,可玩度高的移植到Android OS中或将发布到应用商店中免费共享.这样不仅锻炼了技术,也让许多人空闲之余分享到了自己的快乐。
鉴于工作任务繁重,此个人爱好将是长期计划。
免费重制游戏集将开设独立网站供发布。
-----------------------------------------
目前试水之作是“阿穂钓鱼”,取之于同名Flash游戏,完成度不高仅供练手之用。(主要抠图等美工活累死我了)。鉴于工作繁忙且该游戏也达到了最初的初衷就此发表吧。
*游戏编译于VC++ 2008,需要Dx9最新Runtime library,和VC2008 redist,没有的需要到M$上下载。
*所有素材取之于原作,本作品非商用且不拥有任何权利。(所有素材未加密,任何挪作它用和本作无关)
*鼠标左右控制小船,按住鼠标左键放线,放开收线,鼠标滚轮向前滚动加速收线。

1. 网上有很多Flash版本的经典游戏,为何要重制?
目前重制采用C++/DirectX/OpenGL,效率得到最大保障且游戏的流畅程度绝不是Flash版本所能达到,但对于游戏的重制基本还是采用原作的图像,当然如果能找到原作的高清版本图像我也不会有意见:-)还有很重要的一点是可能会对游戏的玩法做一些突破希望能让人们有愿意玩的冲动。比如马里奥版的传送门等。
2. 都是2D游戏,为何没有3D游戏,目前不是最流行的吗?
的确,3D游戏是我的最爱,但2D更是我的最爱(画面精美流畅,玩起来爽快)。虽然目前虚幻3,Crystal Space 3D都是可以免费使用,但3D游戏的制作对于个人来说不是技术而是素材.2D的素材还可以自己搞搞或者网上找找.3D Model就不那么好找,找到也不那么适合自己的游戏也不会改。且制作的3D游戏在Mobile OS上也比较高端难以大众(至少目前是)
3. 除了追忆回忆,还有什么意义?
所有这些重制游戏将选用开发完成度高,可玩度高的移植到Android OS中或将发布到应用商店中免费共享.这样不仅锻炼了技术,也让许多人空闲之余分享到了自己的快乐。
鉴于工作任务繁重,此个人爱好将是长期计划。
免费重制游戏集将开设独立网站供发布。
-----------------------------------------
目前试水之作是“阿穂钓鱼”,取之于同名Flash游戏,完成度不高仅供练手之用。(主要抠图等美工活累死我了)。鉴于工作繁忙且该游戏也达到了最初的初衷就此发表吧。
*游戏编译于VC++ 2008,需要Dx9最新Runtime library,和VC2008 redist,没有的需要到M$上下载。
*所有素材取之于原作,本作品非商用且不拥有任何权利。(所有素材未加密,任何挪作它用和本作无关)
*鼠标左右控制小船,按住鼠标左键放线,放开收线,鼠标滚轮向前滚动加速收线。

Tags: Game
万恶的Notepad
作者:rain 日期:2011-05-27
在调试一个下载模块(PHP)时本机测试没有问题,但是放到其他机器中测试下载文件总是格式错误。对比下载文件和原始文件Hex发现文件头被插入了EF BB BF,这是典型的Bom tag。由于需要支持多国语言和更好的兼容性,所有文件编码均采用Utf-8 - Bom格式保存。于是检查源代码,没有发现异常。回想问题只出现在测试机上,是否文件复制到测试机发生了编码变化,细细一想大呼被耍了。由于该下载模块有一个配置文件,需要用户设定一些参数,但此配置文件在本机上是去Bom保存的,但Copy到测试机上后我会用Notepad打开该配置文件然后修改一些路径配置信息保存后问题就发生了。其实Notepad是不知不觉把我的配置文件用+Bom的Utf-8保存,使得系统下载时包含了该配置文件输出了Bom tag导致文件格式异常。当然现在写下来过程轻松愉快,其实排错的过程耗费了不下5小时,其中走了很多弯路,主要是测试文件正好和Bom tag是个倒序,这样正常文件和测试下载回来的文件字节前面十几bit正好相反,导致我犯了迷糊,网络字节序因该还没有到浮出应用层的程度吧。这样后来还怀疑FastCgi和ISAPI,甚至怀疑到了IIS和Apache,嗨,痛并愉快着大概就是这样吧...
Tags: Bug
一个非常非常诡异的问题
作者:rain 日期:2011-05-25
所有问题的根源从表象到底层始终是有据可查的,可是这几天遇到一个非常诡异IE Bug问题。问题的表现是这样的:
Win7 32bit旗舰版+IE8,一个纯HTML页面,本地通过IIS访问,此页面有若干Div层,层之间分别设有z-index css属性。如果通过http://localhost/ 或 http://127.0.0.1/ 访问则无任何问题。但如果通过http://计算机名/ 访问则页面的z-index属性错乱。以前只知道用不同形式的Url访问会有权限的问题,第一次看到还会引起IE对html和css解析有影响。同样用Chrome则无此问题,这样证明应该是IE自身问题。而且此类问题一时还无从下手解决。还真是头疼的IE的兼容性问题...
Win7 32bit旗舰版+IE8,一个纯HTML页面,本地通过IIS访问,此页面有若干Div层,层之间分别设有z-index css属性。如果通过http://localhost/ 或 http://127.0.0.1/ 访问则无任何问题。但如果通过http://计算机名/ 访问则页面的z-index属性错乱。以前只知道用不同形式的Url访问会有权限的问题,第一次看到还会引起IE对html和css解析有影响。同样用Chrome则无此问题,这样证明应该是IE自身问题。而且此类问题一时还无从下手解决。还真是头疼的IE的兼容性问题...
Tags: Bug
会哭的孩子有奶吃
作者:rain 日期:2011-01-06
看到一老外写的文章,比较有意思。原来在外国做IT也有如此纠结之事啊。
[转载]
我是一个软件工程师。对于任何一个从事于这个领域的人,这有一个众所周知而且毫无疑问的事实:最有效率最专业的程序员的产能会比最差的那个高上1000倍。如果这个看起来不太可能,请记住,如果一个程序员写出了很多bug而需要其他程序员去修改,那他的生产率是负的。而且除非他造成的破坏性已经产生后果,否则你很难发现问题所在。我过去曾给专业的程序员上课,即使在我的这些学生中,你也可以很容易的发现这种事实。
我没有发现哪个企业,不管在哪——即使在硅谷——也没有一个企业能把对程序员的工资等级差异化到接近一个数量级的程度,更别说三个了。事实上,我们更倾向的做法是辞退或拒绝考虑任何超过35岁的人。给出的理由就是他们要求更多的钱。
[转载]
我是一个软件工程师。对于任何一个从事于这个领域的人,这有一个众所周知而且毫无疑问的事实:最有效率最专业的程序员的产能会比最差的那个高上1000倍。如果这个看起来不太可能,请记住,如果一个程序员写出了很多bug而需要其他程序员去修改,那他的生产率是负的。而且除非他造成的破坏性已经产生后果,否则你很难发现问题所在。我过去曾给专业的程序员上课,即使在我的这些学生中,你也可以很容易的发现这种事实。
我没有发现哪个企业,不管在哪——即使在硅谷——也没有一个企业能把对程序员的工资等级差异化到接近一个数量级的程度,更别说三个了。事实上,我们更倾向的做法是辞退或拒绝考虑任何超过35岁的人。给出的理由就是他们要求更多的钱。
程序员的十大烦恼
作者:rain 日期:2010-11-21
英文原文:http://www.kevinwilliampang.com/2008/08/28/top-10-things-that-annoy-programmers/
每个程序员都有自己烦恼的事。不论这事指的是范围蠕变(scope creep),还是 指匈牙利变量命名 (Hungarian notation),还是有臭味的同事,我们都明白,这是我们有我们行业里的特定的烦恼。 下面要说的就是十大让程序员们烦恼的事情,这是我从最近的在StackOverflow上的一个调查里整理出来的,并且掺杂了一些我个人的经验:
10. 注释 — 只解释了“how”却没有解释“why”
入门级的编程课程通常会教育学生们写代码前先写注释、而且要尽量多注释。 这种教育的出发点是“多注释肯定比少注释好、少注释肯定比没注释好”。 可不幸的是,很多的程序员把这当成了一种任务,对每一行代码都注释一下。 这就是为什么会经常看到像Jeff Atwood在他的博客文章Coding Without Comments提到的代码:
C++代码
- r = n / 2; // 让 r 等于 n 除以 2
- // 当 r - (n/r) 大于 t 时进行循环
- while ( abs( r - (n/r) ) > t ) {
- r = 0.5 * ( r + (n/r) ); // 设置 r 等于 r + (n/r) 的一半
- }
软件发布形式的演变
作者:rain 日期:2010-10-17
今天不谈技术只谈技术宏观面。一个大家可能都没有察觉却时时可能发生潜移默化改变的现象,那就是软件提供服务的理念的转变。
计算机软件提供客户以各种各样的信息服务,没有软件计算机就是一堆废铁。很早以前软件的存在形式以各OS系统中自定义的Portable Execute(Windows后缀缩写为exe)中存在,这种软件提供形式的好处是用户自我感觉独立性强,软件以私人财产的形式存放于自己电脑之中只为其个人服务。因国内盗版过于严重,这种形式存在的软件渐渐被Web取代。软件的功能即提供服务,所以只要实现了服务的功能什么样的承载形式对于开发商来说就是一个产品定位的前瞻性问题。现在目前主流的一个体独立的形式Exe形式存放于用户电脑之中和以公共服务器为载体通过浏览器为各客户电脑提供服务的Web形式的各自优缺点简单剖析一下以及未来的趋势。
计算机软件提供客户以各种各样的信息服务,没有软件计算机就是一堆废铁。很早以前软件的存在形式以各OS系统中自定义的Portable Execute(Windows后缀缩写为exe)中存在,这种软件提供形式的好处是用户自我感觉独立性强,软件以私人财产的形式存放于自己电脑之中只为其个人服务。因国内盗版过于严重,这种形式存在的软件渐渐被Web取代。软件的功能即提供服务,所以只要实现了服务的功能什么样的承载形式对于开发商来说就是一个产品定位的前瞻性问题。现在目前主流的一个体独立的形式Exe形式存放于用户电脑之中和以公共服务器为载体通过浏览器为各客户电脑提供服务的Web形式的各自优缺点简单剖析一下以及未来的趋势。
C#的XmlDocument加载Xml错误(根级别上的数据无效)
作者:rain 日期:2010-09-07
更好的SexyAppFramework
作者:rain 日期:2010-08-15
Kanji是一款跨平台的游戏引擎,兼容运行于Windows,Mac,iPhone和IPad平台,支持硬件加速,同时支持3D&2D的渲染,I/O,视频回放等。底层可选用OpenGL或DirectX,简单易用的API设计。更棒的是他提供了SexyAppFramework相同的接口来使用Kanji,使得开发者不必为引擎的更改而改动代码同时又为游戏的性能和功能提供了更出色的表现。
详细见官方网站:http://www.kanjiengine.com/cms/
详细见官方网站:http://www.kanjiengine.com/cms/
Tags: GameEngine
电脑硬盘保护点滴
作者:rain 日期:2010-05-12
别把语言当信仰
作者:rain 日期:2009-08-30
今天些须空,借文字天马行空一番,只当说笑。
计算机世界里所有的技术问题都是组合问题,0和1的组合。当然这样说有些绝对也有些偏痴。现在进入正题,完美的修习路程基本上就是简单->复杂->简单,大约有95%的人员停留在前二个阶段且很难进化到第三个层次。从简单到复杂就像从刚入门的小伙到熟练使用大型工具开发出不错的项目或产品是一个不算长的时间,尤其是现在工具的先进性只要个人努力一些不用一年基本上都能到达这个层次。但是鲜有人到达第三个层次,既是化繁为简,返璞归真,简既是多等等的深刻寓意。在第三层次既是对过去思想的反思也是对过去思想的全面推翻,有所思即有所悟。世界万物都遵循着一种看不见,无限深的生命法则,小到病毒,原子,大到星球,星系无不都遵守着这一法则。不光是生命体,物理体,甚至精神,思维等东西也遵循这一规律。我国古人很早就有参透其中奥妙,演化出八卦,道德经等等东西。再那个遥远的时代中国古人的智慧和文明对于宇宙万物的认识要远远超出现代社会,凤凰涅槃真是先毁灭后重生的最好例证。放下比拿起更难。第三层次难于到达,甚至我们都称这一层次的人为神是不无道理的,首先要摒弃过去的思想,重新反思。如果从这IT技术的钱来做技术这条他们是做不到的,因为思考是不来钱的,因为他们等不起长时间的思考而不动手干点什么,也不会轻易放弃以前的思想和经验,学了一些就要充分挖掘这些技术的“钱”力。用简单的工具办更多的事,用惯了大型集成工具的人很难过渡到简单工具上,只会整天挂到网上寻找更复杂好用的工具,殊不知越是大型工具给你的项目带来易用,好用,快速构建的基础上也是在吞噬着你的劳动价值,因为别人也能用大型工具而并不是你一个人能用。且最重要的一点是大型工具背后说掩盖的事实真相却是优秀技术员最宝贵的技术食粮。
计算机世界里所有的技术问题都是组合问题,0和1的组合。当然这样说有些绝对也有些偏痴。现在进入正题,完美的修习路程基本上就是简单->复杂->简单,大约有95%的人员停留在前二个阶段且很难进化到第三个层次。从简单到复杂就像从刚入门的小伙到熟练使用大型工具开发出不错的项目或产品是一个不算长的时间,尤其是现在工具的先进性只要个人努力一些不用一年基本上都能到达这个层次。但是鲜有人到达第三个层次,既是化繁为简,返璞归真,简既是多等等的深刻寓意。在第三层次既是对过去思想的反思也是对过去思想的全面推翻,有所思即有所悟。世界万物都遵循着一种看不见,无限深的生命法则,小到病毒,原子,大到星球,星系无不都遵守着这一法则。不光是生命体,物理体,甚至精神,思维等东西也遵循这一规律。我国古人很早就有参透其中奥妙,演化出八卦,道德经等等东西。再那个遥远的时代中国古人的智慧和文明对于宇宙万物的认识要远远超出现代社会,凤凰涅槃真是先毁灭后重生的最好例证。放下比拿起更难。第三层次难于到达,甚至我们都称这一层次的人为神是不无道理的,首先要摒弃过去的思想,重新反思。如果从这IT技术的钱来做技术这条他们是做不到的,因为思考是不来钱的,因为他们等不起长时间的思考而不动手干点什么,也不会轻易放弃以前的思想和经验,学了一些就要充分挖掘这些技术的“钱”力。用简单的工具办更多的事,用惯了大型集成工具的人很难过渡到简单工具上,只会整天挂到网上寻找更复杂好用的工具,殊不知越是大型工具给你的项目带来易用,好用,快速构建的基础上也是在吞噬着你的劳动价值,因为别人也能用大型工具而并不是你一个人能用。且最重要的一点是大型工具背后说掩盖的事实真相却是优秀技术员最宝贵的技术食粮。
Web开发之Open
作者:rain 日期:2009-08-13
由于需要在嵌入的Flash中与客户端交互,所以在Url中嵌入JavaScript代码供调用执行。比如打开FireFox,在地址栏中输入JavaScript:window.open("http://www.RainCoding.com/blog","RainBlog") 不出意外的话能够正常看到效果(弹出一个窗口显示RainBlog内容),但是open方法返回了一个错误,显示为null或object。由于该错误的原因无从考证,所以想办法绕过。试试用函数包装一下看看,改成 JavaScript:new Function('window.open("http://www.RainCoding.com/blog","RainBlog")')() 执行,这次就没有错误了。
Tags: HTML JavaScript Web






