一起做网游吧【8.5】:轻松一下

网游的教程下周估计可以更新。目前正在处理文档和bug修正中。在最近的两周中,我几乎全力以赴在了网页上了,从时间上计算,大概占用了7天以上的时间,因为周末大部分时间要配老婆,所以,服务器的代码其实占用时间不多。

今天终于完成了大约90%的量了,当然,中间有些特性不得不放弃了。所以可以轻松一下。反思下这次的失误和教训,顺便说下将要更新的内容。

未能完成的内容:

1.web管理界面的数据更新,原因在于自己对javascript没有想象中熟悉,对于extjs库,没有时间去理清细节。这直接导致了制作周期比想象中的要长。

2.web管理界面中的事件及输出日志到web页面。由于第一点的原因,这部分未能有时间添加。以后可能作为一个专题来说。

3.web管理界面中的功能。没有想好该如何布局,即使想好了,由于对extjs不熟悉,暂时也没有能力添加。

已经完成的内容:

1.多服务器结构。虽然这个特性是我两周之前临时决定要增加的,但觉得还是提前处理比较好,而且,这个结构和之前计划的不太一样。之前的计划是,某台服务器作为唯一的接入点,将其他功能可以布置到其他的服务器上,其他服务器对于客户端来说,不可看见。这样做的好处是处理比较简单。缺点是接入服务器要有足够容量的连接支持,如果接入点出现故障的话,则没有人能接入了。现在我将这个分开了。在开始阶段,接入点还是只有一个可见,当用户登录之后,出现了服务器列表,每个服务器可能是由不同的服务器组合而成的。在加入服务器之后,用户将在该服务器下找一个当前用户最少的服务器进行重新连接。这样分担开了接入点的压力。当然,这样处理会有引发一些小问题。在代码更新的时候将会做特殊说明。

2.web管理界面的初步进行。虽然该部分我进行了努力的奋斗,虽然该部分进度非常的糟糕,但还是可以看的见点东西。

3.服务器的动态添加和关闭,移除等。监视状态的钩子植入(目前有些bug,可能是我整理代码引起的。)

在完成内容部分,虽然看上去不是很难,但其中的细节处理却比较的麻烦。而多服务器的结构,直接导致了之前数据库结构的重新安排。改动还是比较大的。之前提到的tcp_server,觉的有点满足不了要求,想改,却来不及了。通过调整结构,也总算可以了。

继续阅读一起做网游吧【8.5】:轻松一下

网游教程的代码位置

嗯,该如何解释这次事情呢?

之前的代码一直放在dropbox的共享目录中,今天才看了dropbox中的帮助文件,发现不支持共享目录,而我则是将代码的仓库直接放在共享目录中,开发的时候则是链接到本地目录下。需要上传的时候则将dropbox联网,自动完成了。

但dropbox不支持目录共享,我今天才注意,因为同步某个参考文件的时候由于网络问题,速度超慢,无所事事就看了帮助文档。在国内看来,上dropbox的条件是越来越艰苦了。

于是想看看有没有支持目录共享,类似于dropbox的网盘,最后找到了4shared。关键是各平台支持。唯一令我不满的是,不像dropbox那样,自动上传。因为我可不想每时每刻总挂在那里,而在ubuntu下,挂上这个,gui端不管点开那个文件夹都超慢,弄得我只好用emacs来进行文件夹浏览了。在fedora下稍好,但还是不想列出网盘的目录都要等半天,真希望出个dropbox的方式啊。

废话半天,今天的主角登场:(需要登入)

下次更新的时候,再增加一个仓库的压缩文件,共享目录,浏览可以,但不可以整个目录往下端(我没有找到方法,谁知道的话告诉我声),下载整个目录需要掏钱的。暂时先这样,最近一段时间在和网页大战,放弃的时间太长了,当初学的时候都还在html状态,谁要是对extjs熟悉的话,麻烦教教我,懒的仔细看帮助了。网页目前主要是为了查看各个服务器的状态以及进行管理。下一次的代码服务器将支持客户端的网页下载(目前就只有一个j2me客户端),以及通过网页来查看服务器状态,简单的管理服务器。但我的网页UI的代码能力,目前处在比0稍高的位置。

一起做网游吧【8】:初步的登录客户端

忙死了,忙死了。

将之前教程的客户端做出来了。部分代码是很早之前写的,部分代码是新改写的。放的位置在之前的帖子中有提到。使用j2me做客户端主要是因为我懒的说太多的内容,基本上每个函数和变量都有注释。如果还看不懂的话,那我就没办法了。值的注意的是网络线程的接收部分,有一个单次接收的最大的限制,不想弄的那么完美,如果想要解决的话,也不是很难。写代码要详细的注释绝对是一件体力+耐力的劳动,几乎每次写注释用的时间要比写代码用的时间要长,不小心用别的什么编辑器打开看的时候,或者因为使用的电脑不对,将文件转换的时候,一个不小心说不定就引起这个那个的问题,实在太麻烦了。

抱怨完了,简单说下编译方法,我是在linux下编译的,jdk安装在用户自己目录的bin中,我使用了一个链接,这样更新jdk的时候就只用修改下链接就行了,WTK也是类似的位置和方法,在client/mobile/phone/j2me中的makefile中可以看到,使用这么长的目录是因为说不定哪天心情好的时候,会弄个其他的平台。编译么,到上面长长的目录中执行make就行了,简单吧。启动模拟器的话,make startemu就行了。

写了长长的代码,却无话可说,而有的时候,可能只是最简单的几行代码,却值得浪费大把大把的唾沫。就像最近在看的mtk的东西,发现在调用memcpy的函数,系统默认的函数比我自己写的函数高效的多,使用不同的优化办法,我将linux内核代码的memcpy拖出来,发现和自己的想比,没有太大的差别,而与sdk中的memcpy想比,差老大一截,然后又用汇编优化,提升并不明显,使用汇编的块传送,循环指令保持到3行,还是差一截。看来sdk中的函数可能使用了硬件加速了。只好看看CP15了。