网游服务器程序员须知

      说是须知,有点大了,我的网游开发经验也只不过三个月。不过,在这三个月里,我学到了很多东西,把它记录下来,以备忘,希望对大家也有所帮助。

      1、开发商VS游民:在编程的时候,要特别注意双方的利益。在遇到双方利益可能有所冲突的地方,首先选择维护开发商的利益。

      现在网游的开发很短,三四个月就可以开发出一款不错的网游。而且,很多网游的公测时间也很短,更甚者没有公测,只是简单的内测之后就上线了。鉴于多种原因,使得游戏BUG在所难免。在开发的时候,我们是无法预料BUG的所在的。但是,很多时候,我们可以决定BUG的得益者和失益者。如果你选择了让游民做得益者,那你就可能为自己埋下了一颗地雷。因为,如果某个游民发现了这里有BUG,他一般不会上报这个BUG,他有可能利用这个BUG,让开发商损失惨重。而你,有着不可推卸的责任。在你找这个BUG的时候,也会耽误你大量的时间,因为你掌握的资料很少,可能无从下手。你以后日子的艰难度可想而知。而如果让开发商做得益者,当某个游民发现这个BUG的时候,他一般会上报的(不报就自认倒霉了)。这个时候,开发商是不会太在意这个BUG的。而你要做的,就是根据该游民上报的BUG资料,用最少的时间找到这个BUG所在,修复这个BUG。最后在游戏里给这个游民一些好处就可以了。

      举个例子吧。游民商城购物的函数,要涉及两个方面。一方面要扣除游民的游戏币,另一方面要把商品给游民。在程序里,这可能就是简单的两行代码。我的做法是,先扣除游民的游戏币,再把商品给游民。

      2、缓存对象的创建与销毁:网游服务器端为了加快对客户端请求的处理速度,会在内存中存储尽可能多的表记录或者对象,使得内存中的缓存数据非常庞大。这时,就需要有一个比较好而且高效的缓存管理机制。根据编程语言的特点不同,处理起来会有很大的差别。我们的服务器端用的是JAVA语言,这里,我也只谈JAVA的处理关节。

      我们知道,JAVA的一个很突出的特点是垃圾自动回收机制,所以JAVA在设计时就没有设计析构方法。而对于一个缓存了的对象,可能有很多的变量指向它。当我们想销毁这个对象时,如果只是简单的赋值为null,那么,在游戏运行时,很有可能出一些莫名其妙的错误。感觉明明把这个对象销毁了,但是它的属性或者功能还是出来了,因为这个对象还有其它的引用变量没有赋null值。就是找问题出处时,也会很盲目。经过我的实践、研究,和对源代码的参考,我总结出的机制是,对于每个类的缓存对象,都要建立一个缓存对象管理类,其内部存储了所有的该类已创建对象。并且,如果想销毁一个对象,都要从管理类中把它删掉。当我们想要获得该类的一个对象时,都要从这个管理类中取。这样就达到了维护缓存对象的目的。

      可能你有更好的方法,欢迎沟通。或者你会说,给JAVA类创建一个“析构”方法不是更好么?我也想过,但是没有想出好的方法来。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值