做一个简单的游戏服务器

  为什么其实不重要!

做一个简单网游服务器。

  服务由两部分构成,网关和世界服务器,绞尽脑汁,还没有想到一个好听的名字,可以肯定的是要code n行,就暂定CodeN {N >= 0}。

  语言选用C++和lua,其实也蛮像选scala的,但小众了点,自己也没有java基础,怕有搞不定的问题,c++ lua会更有信心一点。db redis和mongodb 比较,倾向于redis,他大代码量比mongodb少,也更有信心一点点,但是redis的查询、运维,好像不是那么方便,forget it,运维不是我现在考虑的事,哈哈,mongodb query也一般。

  网络协议采用protocol buffer, 和同事交流,他们觉得这个太大了了,不适合游戏,但我喜欢他的表达能力、非常省带宽编码的编码方式。我深信消息协议一定是应该用一种语言中立的声明方式。我第一次读protocol buffer的时候,这就是我想要的。恨透了直接用 c struct 做消息,没有collection,没有移植可言,甚至没有string,全部依靠sctruct的offset。这种方式唯一的好处是没有encode,decode,但太原始了非常不科学。

网关,功能比较简单,负责保持连接,消息转发,后续会加聊天功能。对网关有一构想:

    1、在服务器宕机的时候,自己重启世界服务器,在线就玩家会主城,这样服务器的可用性高一点。

   2、不停机维护,新服务器起来的时候,网关做服务器切换,玩家还是登陆主城,玩家不用下线。

上述两点或许是一个东西,想得还不是特别明朗。网关基础基本没有运算,压力主要来自网络io,代码、功能都会比较简单。除基础部分外,准备都要lua实现,还能热更新,啦啦啦,德玛西亚!

   世界服务器主要用C++, lua只负责灵活的计算无关的功能,作为系统的plugin,系统开放部分接口。这个太大了,容下N回分功能聊起。

服务器状态方便或或许会参照mongodb,搞一个http的方式查询,具体的内容由lua来做。


现在的想法是山寨(Copy To China?)一个《神仙道》,客服端可能用object c/ cocos2d-iphone先实现,后面一点自己重新写2d图像引擎。理由?我还没这样的一个轮子,所以我要整一个出来,哈哈!cocos2d也不完美,在我看来。他有点肥,我比较欣赏他action的设计,每个action很灵活,在加上一些修饰action的action,如速度控制,action queue, forever这些流程控制,粒度相当合适,超有装配游戏的feel。非常适合坐小游戏,现在还有不少工具。

  Can I ? just do it .

Netty是一个基于Java的高性能网络编程框架,它提供了一种简单而强大的方式来构建可扩展的网络应用程序。如果你想编写一个Netty游戏服务器,可以按照以下步骤进行: 1. 导入Netty库:首先,在你的项目中导入Netty库。你可以在Maven或Gradle中添加相应的依赖项。 2. 创建服务器引导类:创建一个服务器引导类,用于配置和启动你的Netty服务器。这个类将负责设置服务器的各种参数,如端口号、线程模型等。 3. 配置ChannelHandler:Netty使用ChannelHandler来处理网络事件和数据。你需要编写自定义的ChannelHandler来处理游戏逻辑,如接收和处理客户端的请求、发送游戏状态等。 4. 实现业务逻辑:根据你的游戏需求,实现相应的业务逻辑。这可能涉及到游戏规则、玩家管理、战斗逻辑等方面。 5. 处理网络事件:在你的ChannelHandler中,重写相应的方法来处理网络事件,如连接建立、数据接收、连接断开等。你可以根据需要进行相应的处理,如解析数据、更新游戏状态等。 6. 启动服务器:在服务器引导类中,调用相应的方法来启动你的Netty服务器。一旦服务器启动,它将开始监听指定的端口,并等待客户端的连接。 7. 测试和调试:在服务器启动后,你可以使用相应的客户端程序来测试和调试你的游戏服务器。确保服务器能够正确地接收和处理客户端的请求,并返回正确的响应。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值