站务联系

学习JAVA游戏服务器开发需要了解的情况

发布时间:2021-03-16   来源:网络整理    
字号:

一,游戏服务器开发的工作介绍

近来遇见有很多人想从其它开发领域转入游戏服务器开发行业上来,他们可能认为游戏服务器开发薪资高,或许认为做游戏服务器还要把握的技术更初级,可以锻练自己,或许认为想换个环境等等。不管出于何种成因吧,做为一名几年的游戏服务器开发者,当然是持欢迎心态的,那么我就先介绍一下游戏服务器开发的工作吧,游戏服务器开发详细要做什么工作呢?

1,团队沟通

基本上不管做哪些开发,都是一个团队来完成的,游戏只是这么,游戏团队通常由老总,总经理,CTO(技术总监),主企划(领导一些人,包括数值企划,系统企划,特效企划),主美(领导一些人,包括原画,UI设计,特效动作设计),客户端主程(领导一些人,客户端程序员,客户端程序员...),服务器主程(领导一些人,包括服务器程序员,服务器程序员),外加维保。而游戏的大部分逻辑实现与逻辑数据验证就会置于服务器端,所以服务端程序还要明晰了解企划的需求,要了解就须要勾通,沟通方法的正确与否,直接关系至功能的实现是否正确,由于游戏逻辑的复杂性,单纯的文档描述或许不会十分完整,不象其它行业需求文档就几百页,详细的图文并茂,制定好以后也甚少变化。所以做为一名游戏程序员,一定要有良好的勾通模式跟方法。

2,架构设计

这个构架设计如同盖房子打基础,基础好,房子就稳固,基础不好,房子高了就容易倒。架构设计还要结合软件工程学来弄,它还要对服务器的整个步骤有足够的了解,对需求的变化有足够的认识。架构的设计通常有几个特点。

首先是易用性,架构即便完成,在开发的时侯就该便于使用,比如网路通讯构架,设计好以后,其他开发者就不需要关心客户端的数据是如何被传输至服务器端的,这个时侯对于服务器开发者来说,只须要实现一些简略的插口,就可以直接对客户端发送来的恳求进行处理操作。再比如说服务器端数据的储存与更新,开发者只须要写少量SQL句子或基本不用写,都由构架的底层代码完成,开发者只须要读取封装好的API,就可以把数据存入数据库而不用关心数据的最终流向,只须要关心实现逻辑就可以了。

第二,可扩展性,可扩展性包括两个方面,一是代码的可扩展性,比如说游戏中的任务处理吧,一个游戏中任务或许有几十种,而且还或许不定时的降低游戏服务器,为了分辨不同的任务类别该执行哪些操作,最简略只是最差的写法是if else,想象一下,一个方式上面,有几十个if else,这简略是bug的理想诞生地呀。一种可行的做法是使用责任链模式(具体的请参考设计方式的实现),这样每种任务都有一个单独的类去处理它,而不会影响其它的类,符合开闭原则,相互关联少,越少越不容易出bug。二是布署的可扩展性,比如,如果在线数量猛然降低或预期或许要提高,一台化学机器或许处理不进来这么多的恳求,那如何办?那就须要支持在不影响其它服务器运行的状况下,可以动态的添加机器。而当压力增加以后,又可以移除这些机器,合理运用资源。

第三,高吞吐量,这个是指能尽量最大化的运用计算机固定的资源,去处理更多的恳求,更快速的响应客户端。这就须要在服务器构架设计的时侯考虑异步处理,减少IO等候时间(比如恳求redis,存储数据库,和其它服务器通讯)以及数据缓存。说到异步,一定会牵涉至多线程,并发等相关的技术,所以构架设计的时侯还要对这部份知识有足够的了解。

学习JAVA游戏服务器开发需要了解的情况

这类游戏在线数量庞大,游戏中要处理的数据也十分庞大。所以对服务器功耗要求十分高,一般都是选用C++做为开发语言,C++可以直接操作显存数据,与操作系统直接交互,减少数据之间的复制,它运行效率高,处理速率快,是这类游戏开发的首选开发语言。服务器端选用分布式构架,把不同的模块分散在多台物理机上处理。需要学习的大致有C++编程,Linux网路编程、TCP/IP通讯协议、多线程编程再加数据库。它通常开发周期比较长,一个游戏的上线基本上还要三到五年。

2,网页游戏

这类游戏相对于端游来说,开发周期短,因为是网页游戏,游戏的界面展示依赖于网路传输,所在在画面跟特效上会次于客户端游戏太多。游戏的优点主要集中在游戏的打法上。但是对于服务器端来说,和端游类是差不多是一样的,有些公司之前是做端游的,他们就直接把端游的服务器构架用来就可以使用,以完成迅速开发。

3,手机游戏

手机类游戏现在是最火最热门的游戏,因为他的用户量大,用户占有时间长。但是相机游戏大多数是通常小游戏,功能简略,玩法单一,一般都是休闲娱乐的。现在还有一些稍为小型的MORPG游戏。所以相机游戏开发周期更短,上线更快。

目前,游戏市场竞争激烈,当前服务器主流的开发语言是C++跟Java,但是C++学习难度大,开发速率慢。为了满足游戏服务器迅速开发,快速上线,所以一般来说我们都是使用Java语言来开发服务器。近年来,随着游戏市场的发展,游戏服务器开发技术因Java而生成了一套机制。可以供开发者选择。

三,使用Java开发服务器还要学习哪些

Java语言,由于学习成本低,开发速度快,稳定性高,开源框架多,目前已成为网页游戏跟相机游戏服务器开发的主要语言。咱们从系统的开发步骤简略梳理一下服务器开发还要用到的技术。

1,网络通讯

学习JAVA游戏服务器开发需要了解的情况

3.1,数据同步

一说至数据同步或资源共享的时侯,一般还会考虑到锁的使用。因为一份资源同时只好被一个句柄访问才是安全的。Java的JDK中提供了一些锁,比如:synchronized,以及java.util.concurrent.lock包中的Lock对象,java.util.concurrent包中还提供了其它的一些原子操作的类,我们晓得i++操作不是线程安全的,但是可以使用AtomicInteger中的getAndIncrement();方法取代,还有线程安全的ConcurrentHashMap哈稀Map。以及阻塞队列LinkedBlockingQueue等。都是逻辑开发中常用的处理数据同步的类。

图说天下

×
二维码生成