13年初我刚参加工作,至今快有四年,有三年半的时间参与游戏服务器开发维护。
我经历过的游戏类型:
1.页游slg:
挂载腾讯平台,所有技术:netty3,jetty,spring,jpa
简单的c-->s架构,跨服也是报名拉取数据到跨服服务器。
2.手游回合制:
这款项目开发阶段我从头参与到底,经历过几次回合制战斗的过程改版,由于跟第一款游戏
来自同一家公式,所用技术差别不大,除了netty3换成了mina2(现在我已忘完)。
这款游戏也是目前我做的比较成功一款,月流水峰值时到了3KW,无奈我受不了诱惑,来到了大城市。
3.棋牌h5:
技术已经成型,我主要是维护,更改了后期的缓存架构。
游戏分成私人场,多人场,用户服务等,由于不分服,所以项目采用分布式开发,引入gate网关概念。
前段所有的请求先到达网关服务,消息路由、负载均衡到达私人场服务器、用户服务器。各个服务间
rpc通讯。但是有个问题,就是消息不能动态路由、服务多了也不好治理。
技术:netty4(这时候netty社区已经很推崇4版本了,当初把3替换成4的时候也遇到了不少问题,主要的就是
bytebuf造成的内存溢出,我下一篇会说下关于服务的发布),spring,自己写的缓存(加上过期策略)等
4.页游3d arpg:
服务端的领导是个工作十几年的大神,所有的东西都是自己写的。
简单的c-->s架构。
游戏中用到spring,其实无非是ioc(自己写好了),aop(自己写好了),spring事务管理(这里有点复杂,我们
之前没有用事务,后来加上去了,感觉还可以,当然只是事务的简单特性)。
orm:自己写的,可以搞个dbutils
通讯:aio,自己封装个session,所有事件都通过eventHandler
actor:自己写的,类型disruptor
寻路:这个引用了u3d里的navmash,包括同步的部分,我专门说。
其他等等
5.我想要做什么游戏服务器出来?
这个服务架构是参考pomelo的,然而网易的node.js我并不会,我试着把它翻译成java版本,后来想想没有必要。架构服务开发者,并非是局限。我会用到的东西:
java8
mysql
spring
netty4
rpc(打算参考dubbo)
zookeeper
apache dbutils(常用的Apache工具类)等
开发工具:intellij idea14(你还在用eclipse么?试试这个)
注:这个纯粹是写着瞎几把玩玩,也是对这几年工作一个回顾,把用到的东西做个总结。
同时由于个人接触的比较少,所以欢迎大神指点。
如果你的游戏玩家不多,简单的c-->s搞定一切。