-
破解
post by idnemo / 2007-12-7 11:18 Friday前段时间给公司的一个NDS游戏开发写了一个工具。接触到了一些NDS游戏开发的东西,原来NDS还在使用256色的调色板,原来很多NDS游戏的开发仍旧在沿用着GBA的开发模式。所谓活用NDS的机能都是任天堂自己的人驾轻就熟,技术壁垒和封闭在游戏机游戏的开发中更甚。
我做的活是破解一个后缀名是.spr的图片文件格式,然后自己制作工具将多个.spr文件打包合并。这个文件格式是用于NDS游戏加载图片时需要的。而我,没有任何的参考文档,有的只是用UltraEdit去看这个文件的16进制组织格式(实际上,除了文本文件,其余文件都是二进制的组织格式,UE只不过是让文件显示成16进制而已)。如果曾经尝试过用UE打开一个JPG或者BMP文件,并去破解这个文件格式是怎么组织的时,你就会知道这是怎样的一个苦活累活了。当然,这两种文件的格式大概就是一些位图块并接而成,并不甚很难。而像.spr这种格式,它的里面有众多的偏移地址,有些偏移地址指向的是调色板,有些则指向的是位图块。更让人头疼的是,我的工作还必须判断哪几个字节是short、int还是long,它们代表什么含义。在合并两个文件时,我还必须人工去判断,合并之后数据会不会溢出。因为NDS必须最大限度的缩小容量以及最大限度的降低加载图片的时间,所以这个文件被组织的非常小,而且得便于程序的读取。
这个活让我更加切实地明白了,游戏机游戏的制作跟PC简直是天壤之别。对于32位机来说,应用程序最大有2G内存可以用。纹理用32位的真彩也已经非常普遍了。而且,微软还给你MSDN。可是像NDS还有千方百计省字节的,还有用256色调色板的,较少的帮助文档而且并不公开。 -
本本又坏了
post by idnemo / 2007-12-2 7:31 Sunday最近一段时间笔记本老蓝屏,恢复了系统也不顶。一开始怀疑是内存不兼容,可是用了大半年了,怎么现在才出现不兼容呢。所以就插单根内存试,发觉内存插在插槽1中不会蓝,但是插在插槽2上就老蓝。现在送去修了,修的说估计主板不顶了,要换,估计3、4天。偶就那个不爽啊,咋个华硕的哪个那么差捏。买了8个月,已经修过两次了。前次是白屏,这次是蓝屏。这样的质量,售后再好也吃不消啊。 -
那些转瞬即逝、擦肩而过的美
post by idnemo / 2007-11-23 13:09 Friday今天下班回家的时候,在南京西路碰到一个长得极像凯瑟琳·希尔的金发美女从身旁走过。她是如此的像,以致于我甚至产生了一种冲动想上前问她是不是凯瑟琳·希尔。仅仅就那么几秒钟的时间,理性战胜了冲动。我当时真的以为看到了凯瑟琳·希尔。南京路是上海最繁华的商业街,在我路过梅塞德斯、法拉利的销售部时,经常就能看见一些衣着光鲜的老外和中国人。为什么不能是呢?
可是回到家里,敲下这段文字时,却显得犹豫起来。回想起来,也有可能是看错了吧。毕竟金发碧眼的美女很多,就好像老外看中国人都长得一样,中国人看欧美人也长得差不多似的。我也google不到任何凯瑟琳·希尔和上海有任何联系的信息。
生活多数时候是那么无奈而苦闷,却偶然能遇见一些意想不到的美。当它们突然呈现眼前时,我真的希望时间永远的停留在那一刻。正如一部电影中所说:那些美被包裹在你的生活中,藏在你生命里的任何一秒。如果你连一分钟也无法停留,也许你就会错过它。凯瑟琳·希尔,主演过《一夜大肚》。
-
TCP和UDP:妓女和嫖客的故事(二)
post by idnemo / 2007-11-19 13:37 MondayTCP和UDP是传输层中定义的两种传输协议。在网络编程中,第一个步骤就是为应用程序选择TCP还是UDP传输数据。
它们的区别简单说来就是:
TCP保证数据全部送到,不会丢失,但信息传输较慢。UDP不保证数据全部送到,但传输速度快。
回到上次的那个故事,嫖客完事之后付钱给妓女。于是妓女清点钞票,保证拿到了全额的服务费用。这,就是TCP。后来,妓女由于技巧高超,找她服务的嫖客越来越多,可以说是应接不暇。忙于接客的她头昏脑胀,无暇顾及每次是否都拿到了全部的费用,反正多赚一笔是一笔。等到她发觉钱收少了时,才再去找嫖客要。这,就是UDP。 -
select模型:妓女和嫖客的故事(一)
post by idnemo / 2007-11-12 13:05 Mondaywinsock API中的两个函数recv()和send()都是阻塞式的,这种通信效率是很低的。
举这么一个例子吧,从前有一个妓女和一个嫖客,这个嫖客呢每天都要逛窑子和那个妓女OOXX。所以那个妓女每天就在门口等待嫖客的到来,若嫖客没来,她也一直傻等在那里。即便有其他嫖客想来,妓女也不带理的。
这就是阻塞式的方式,阻塞式的意思就是函数若没有执行成功,则不返回。这是大多数函数的做法,但是对于通信中的recv和send来说,这种方法是十分低效的,因为这两个函数会使得整个线程都阻塞住,无法做其他事情。就好比那个傻等嫖客的妓女一样。
那么为什么通信程序要使用I/O模型?I/O模型就是应用程序提供一个缓冲区,在缓冲区进行收发数据。如果函数recv和send没有执行成功,则函数立即返回,线程可以先做其他的事情。等下次有数据要收或要发时,再执行函数。这样的函数就是非阻塞式的。
也就是说,当那个妓女看到嫖客没有来时,她可以采取一些行动,来增加她的接客效率。这,就是I/O模型。微软为了提高妓女的接客效率,一共提供了5种I/O模型。附件下载:
comSocketLib.rar 2.13MB -
本周高挂免战牌
post by idnemo / 2007-11-9 15:43 Friday今天晚上和几个在上海的大学同学聚了一次。
明后两天要加班做一个检测游戏客户端发送数据的工具。等这个工具做完了,我就把做这个工具时,自己写的一个通信库开源放在blog上。
这一周的网络编程暂停,有时间补上。 -
网络编程第一步
post by idnemo / 2007-11-2 12:59 Friday网络编程对于初学者来说,确实是很头疼的,主要是相关的资料和书籍相比3D编程来说要少很多。
对于windows下的网络开发来说,MSDN永远是首要的参考资料。至于书籍,只有一本《windows网络编程技术》算是权威书籍,其余多为烂书,特别是国人写的服务器端编程的书籍更是烂到极点。比如《VisualC++ 网络游戏建模与实现》中的socket编程部分则是直接从《windows网络编程技术》里摘抄内容和代码,换个名字就成了作者,实在是让人恶心到极点。
《windows网络编程技术》这本书已经绝版,但是网上可以下载得到PDF版的。google一下不难找到,好像CSDN也有。因为PDF格式较大不好上传,所以这里就只传这本书的代码了。学编程,最快的办法就是看好的代码。附件下载:
windows网络编程技术.rar 1.24MB -
做一名游戏程序员,你准备好了吗?
post by idnemo / 2007-10-26 14:23 Friday我进游戏公司的经历出奇的顺利。没有别人介绍,自己投简历,第一次面试,东星就将我招了进去。而且效率出奇的高,面试完20分钟后就通知我第二天上班。现在想来,一年多的游戏编程路,能这么顺利的找到工作,还是有些心得的,这里就想开始说说这个吧:如何成为一名游戏程序员。
网上可以找到无数成为为新手所写的成为游戏程序员所必须要的技能、所需要读的书之类的。我基本也是照样这样的路子走过来的,选择一门语言(C++)->选择平台(win32)->选择图形SDK(DX)。这是做电脑游戏的一条最普通的道路,如果你想做手机游戏就选Java。附件下载:
足球.part2.rar 1.06MB -
恩,新的BLOG内容
post by idnemo / 2007-10-26 14:18 FridayBLOG写了一段时间了,说的大多是自己乱七八糟的一些事。可能除了朋友和同学会偶尔光顾一下,估计也不太会有人看。所以从今天开始,打算写一些对别人有用的东西。我会系统的将自己每周、每个月所学以及编程的心得写出来发在BLOG上。1,也许可以增加点击量。2,也是对自己所学的一种复习。3,BLOG是大学同学的一番心血,既然开了,我就得好好写一写。
进东星已经快3个月,试用期一过可能就要进入公司的刚刚开始的神秘项目中了。公司因为是做游戏代工的,有些项目的计划是必须保密的,我不会过多涉及项目中的事,所以以后BLOG的内容以游戏编程方面为主。今天是第一次,所以就写写自己是怎么进公司的吧。附件中是大学里做的demo,第一个分包。
附件下载:
足球.part1.rar 1.43MB -
夜,真相
post by idnemo / 2007-10-19 12:19 Friday今天下班回来的路上抬头看了一阵天空,上海的夜空是如此的单调,除了月亮只能看见最亮的金星。记得以前在云大的时候,时不时还会拿望远镜看看星空。学校虽然是在昆明市区,天晴的时候整个大熊星座还是清晰可见。上海这些年虽说绿化搞得还可以,但是环境的污染不是喝个血瓶就能回复的。
想起前些天看过的一个电影,美国前副总统戈尔主演的纪录片《难以忽视的真相》,主要说的就是现在全球二氧化碳排放量的上升,导致全球变暖,气候异常,以及冰川融化带来的海平面升高。里面提到了如果二氧化碳的增加量以现在这个速度递增,那么50年后全球有很大一部地区都将被海水淹没,这些地区中就包括上海、北京这些海拔较低的城市。我觉得这个事实应该不会假,不过我相信人都是被逼出来的,或者说人类都是被逼出来的,解决办法也迟早会有。至于我,每天座地铁,再环保不过的交通工具了,所以觉得自己已经够环保了。万一哪天人类真被大自然给灭了,反正也不是我的错。而且我本人对车没什么兴趣。
idnemo
- 致力于游戏开发~~
