游戏服务器开发

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_35336312/article/details/82994069

本人从事游戏服务端开发3年以来,对于游戏服务端开发的总结

一款网络游戏的开发,上线是一个团队共同合作的成果。每一个成员都是这款游戏成功道路是的基石。

1.学会沟通

一个游戏开发团队角色构成主要由:总经理,技术主管,策划组(游戏数据,系统,特效,玩法的设计),美术组(游戏原画,UI,特效的设计),客户端开发组(客户端程序员...),服务端开发组(服务器程序员...),测试组,外加运维。游戏的大部分的逻辑和数据验证是放在服务器进行的,因此和策划沟通,明确的了解需求是十分重要的。由于游戏逻辑的复杂性,会出现策划无法预估的情况因此服务端开发中要完善这个逻辑,此时要先于策划沟通才能保证实现功能的正确性。同时和客服端的沟通也是必不可少的,双方选择的处理方式和交互方式,决定了是否能实现一个游戏的功能和游戏的性能的可靠性。所以做为一名游戏程序员,一定要有良好的沟通方式和技巧。

2.善用架构

架构的设计好比房屋建筑结构,房屋结构设计的好坏是保证所建造的结构安全适用,能够在规定的年限内满足各种预期功能的要求,并且经济合理。软件架构的设计的好坏也是同等的道理,软件架构的设计一般有几个特性。

易用性:架构一旦完成,在开发的时候就要方便使用。如:网络通信架构,设计好之后,其他开发者就不需要关心客户端的数据是怎么被传输到服务器端的,这个时候对于服务器开发者来说,只需要实现一些简单的接口,就可以直接对客户端发送来的请求进行处理操作。

可扩展性:代码的可扩展和部署机械的可扩展。比如说游戏中活动有很多种,而且还可能不定时的增加。对与每个活动的开始,结束,奖励发放,活动出发的事件等一系列共有的功能,应该集中管理,抽象出基类,形成成活动表,再有具体活动区继承这个基类区实现。而不是每一个活动的出现,去单独的实现这些重复的功能。比如当数据库太大要分库,需要支持在不影响其它服务器运行的情况下,可以动态的添加机器。而当压力降低之后,又可以移除某些机器,合理利用资源。

高吞吐量:能尽量最大化的利用计算机固定的资源,去处理更多的请求,更快速的响应客户端。服务器架构设计的时候考虑异步处理,减少IO等待时间(比如请求redis,存储数据库,和其它服务器通信)以及数据缓存。说到异步,一定会涉及到多线程,并发等相关的技术。

架构设计不仅仅咋游戏整体布局用到,而且在每个功能设计的时候都应该要去考虑。逻辑开发是一个任重而道远的过程,同一个问题,可能有很多种实现方式,不同的实现方式对效率和吞吐量有很大的影响,所以就需要对需求功能的理解要深入,不同功能之间的关联要明确。对常用的设计模式要知道如何使用。

3.辅助工具开发

一个游戏成功的运营,需要很多服务去支持它,比如sdk接入,充值接入,日志统计,游戏运行管理系统(一般叫后台管理系统,是内部人员为了管理游戏的而开发的系统)。比如修改某个用户的等级,封号等。管理系统一般会用web开发,与游戏服务器通信;比如 开服工具,日志分析工具,数据处理工具等。凡是繁琐重复的事情可以用程序去完成的都可以写出来,提高效率。

附:

想做Java游戏服务器方面的开发要掌握的技术有以下一些:

1,网络通信框架,Mina或Netty必须熟悉一种。而且自己必须要亲自搭建过,并明白其它原理。

2,通信协议制定和处理断包粘包,这一般属于网络通信框架要解决的问题。

3,数据缓存框架,redis或memcache选择一个,能熟练使用其客户端的命令。

4,Java基础,Java NIO通信原理,Java集合的使用,Java多线程开发,Java锁的使用

5,了解一些设计模式。最好能把23种设计模式都看一遍,并结合自己的开发经验,看哪些可以用到设计模式,但也不能死套设计模式,要灵活运用。

6,熟悉使用Mysql数据库

7,了解数据库连接池的一些框架,比如Mybatis,hibernate

8,对Http协议熟悉,熟悉一种web容器,比如tomcat,了解其配置。

9,对常用的一些Linux命令要熟悉使用。

10,热爱学习,不断的充实自己,上面所说的只是入门技能而已,真正做起来要复杂的多,一定要让自己喜欢游戏这个行业,这样才能有动力做下去,做自己喜欢的工作还是比为了工作要好的!

java服务器目前主流框架技术有 

网络层netty或mina 
数据协议protobuf 
数据库mysql 
缓存数据库redis    jdbc一般是mybaits或者jpa 
项目管理maven 
设计层面spring 
然后还需要熟悉多线程 
linux的基本操作,git或者svn。 

猜你喜欢

转载自blog.csdn.net/qq_35336312/article/details/82994069