發(fā)布時(shí)間:2023-11-29 16:05:00 瀏覽量:109次
為什么游戲服務(wù)器很多都用Java開(kāi)發(fā)
Java 做游戲服務(wù)器開(kāi)發(fā)的優(yōu)勢(shì)還是很多的,《我的世界》的服務(wù)器就是Java開(kāi)發(fā)的。Java技術(shù)比較成熟,大數(shù)據(jù),云計(jì)算,網(wǎng)站App后臺(tái),基本都采用Java開(kāi)發(fā),同時(shí)跨平臺(tái),游戲服務(wù)器這個(gè)領(lǐng)域,使用Java的公司月越來(lái)越多,一是技術(shù)成熟,簡(jiǎn)單,有很多框架可以使用,二來(lái)是招人也比較方便。
這里
游戲服務(wù)器和應(yīng)用服務(wù)器不一樣,游戲服務(wù)器是需要讓多個(gè)玩家同時(shí)在線,而應(yīng)用服務(wù)器是玩家和系統(tǒng)之間的數(shù)據(jù)交互和通訊,所以應(yīng)用服務(wù)器大多以http 短連接為主,而游戲服務(wù)器需要多人同時(shí)在線,同時(shí)服務(wù)器有時(shí)候要主動(dòng)通知客戶端,所以游戲中以長(zhǎng)連接為主,同時(shí)支付等功能又需要http的短連接, 所以游戲服務(wù)器網(wǎng)絡(luò)短連接+長(zhǎng)連接模式。游戲服務(wù)器網(wǎng)絡(luò)模塊需要學(xué)些Netty等NIO高性能的網(wǎng)絡(luò)庫(kù), 同時(shí)需要http,所以一般會(huì)搭建一個(gè)http server, 用來(lái)提供支付,資源更新, 游戲公告等功能服務(wù),有時(shí)候登錄也是走的http。Httpserver可以使用spring等, 具體取決于開(kāi)發(fā)人員如何選定。多人同時(shí)在線的游戲邏輯服務(wù)器通常使用的是長(zhǎng)連接,需要要提供高性能,高并發(fā),目前主流的游戲服務(wù)器很多都用Netty這個(gè)NIO的網(wǎng)絡(luò)框架??蛻舳税l(fā)數(shù)據(jù)到服務(wù)器,或服務(wù)器發(fā)數(shù)據(jù)給客戶端都需要對(duì)數(shù)據(jù)協(xié)議進(jìn)行約定,將要發(fā)送的數(shù)據(jù)對(duì)象序列化成二進(jìn)制,然后傳送,接收端收到數(shù)據(jù)后再反序列化回來(lái),一般這個(gè)我們采用Protobuf來(lái)做, 性能好,體積小,跨語(yǔ)言平臺(tái)。
Java游戲服務(wù)器的數(shù)據(jù)庫(kù)的技術(shù)
游戲開(kāi)發(fā)中經(jīng)常需要把數(shù)據(jù)保存到數(shù)據(jù)庫(kù),同時(shí)有些數(shù)據(jù)可能我們要緩存起來(lái),數(shù)據(jù)這塊也是比較重要的,Java 提供了完整的數(shù)據(jù)庫(kù)的支持,JDBC,可以支持多個(gè)數(shù)據(jù)庫(kù),我們可以選用mysql等常見(jiàn)的數(shù)據(jù)庫(kù)。同時(shí)為了加快訪問(wèn),我們會(huì)把數(shù)據(jù)庫(kù)中的數(shù)據(jù)緩存起來(lái),一般主流的緩存技術(shù)可以采用redis來(lái)做。同時(shí)在開(kāi)發(fā)中我們?cè)O(shè)計(jì)到大量的更新和修改數(shù)據(jù)庫(kù)中的數(shù)據(jù),如果全部手寫sql,寫起來(lái)也麻煩,同時(shí)如果數(shù)據(jù)結(jié)構(gòu)有改動(dòng),所有的sql都要改動(dòng),所以一般我們會(huì)給數(shù)據(jù)庫(kù)系統(tǒng)加一個(gè)ORM的框架,封裝好后直接可以把數(shù)據(jù)結(jié)構(gòu)更新到數(shù)據(jù)庫(kù),和把數(shù)據(jù)庫(kù)內(nèi)容加載出來(lái)生成數(shù)據(jù)結(jié)構(gòu)。
Java 游戲服務(wù)器的日志技術(shù)
日志對(duì)于游戲服務(wù)器開(kāi)發(fā)來(lái)說(shuō)是非常重要的,特別是上線的時(shí)候,日志是最重要的一個(gè)調(diào)試手段,線上版本代碼出了bug,也只能通過(guò)日志來(lái)查,所以一個(gè)好的日志系統(tǒng)非常的重要,Java的日志系統(tǒng)也是非常成熟的,比如log4j等,很多日志系統(tǒng)可用。而且都比較成熟。
Java多線程技術(shù), 反射, 注解
多線程,反射,注解對(duì)于Java游戲服務(wù)器來(lái)說(shuō)也是非常重要的技術(shù)棧,首先我們要做高性能高并發(fā),多線程就是非常重要的手段, 線程調(diào)度,線程同步, 線程通訊等。整個(gè)游戲服務(wù)器的業(yè)務(wù)驅(qū)動(dòng)也是基于多線程來(lái)驅(qū)動(dòng)的,所以多線程對(duì)Java游戲服務(wù)器非常重要。Java的注解就更加普遍了,很多我們要做的服務(wù),描述這個(gè)服務(wù)的一些屬性,我們經(jīng)常需要使用注解,基于注解,我們能更好的管理我們的服務(wù),編寫業(yè)務(wù)邏輯。反射也是我們做游戲服務(wù)器常用的,特別是事件響應(yīng)和處理,我們把對(duì)應(yīng)的處理和對(duì)應(yīng)的事件聯(lián)系起來(lái),底層都是通過(guò)反射,根據(jù)對(duì)應(yīng)的事件編號(hào)等規(guī)則找到處理的反射對(duì)象或方法,底層來(lái)處理,這樣業(yè)務(wù)邏輯層只需要接入服務(wù)的處理類就可以了,底層通過(guò)反射來(lái)把對(duì)應(yīng)的事件映射派送到對(duì)應(yīng)的服務(wù)。
游戲開(kāi)發(fā)常用的算法
游戲服務(wù)器,很多采用狀態(tài)同步,其實(shí)所有的業(yè)務(wù)邏輯就是在服務(wù)端來(lái)跑, 服務(wù)端要處理游戲常用的經(jīng)典問(wèn)題,碰撞檢測(cè),尋路導(dǎo)航, 怪物AI等。所以我們需要基于Java服務(wù)器實(shí)現(xiàn)常用的算法和工具,比如尋路導(dǎo)航,行為決策樹(shù),有限狀態(tài)機(jī), 物理引擎,碰撞檢測(cè)等。對(duì)于大型的MMORPG而言,還需要做好AOI的狀態(tài)管理等,這些游戲中常用的核心算法我們要準(zhǔn)備好。
Java游戲服務(wù)器組織項(xiàng)目工具
使用Java來(lái)做游戲服務(wù)器,我們?nèi)绾芜x擇開(kāi)放工具有Eclips+Maven或者是idea, 從開(kāi)發(fā)工具來(lái)說(shuō)都相對(duì)好用,但是idea似乎更懂程序員,越來(lái)越多的人也投入了idea的懷抱。其實(shí)兩個(gè)方式組織起來(lái)都非常簡(jiǎn)單,還有些項(xiàng)目一個(gè)項(xiàng)目,兩種工具開(kāi)發(fā)模式都支持。多人協(xié)作,代碼的版本管理,目前比較流行的有svn, git, git應(yīng)用非常的廣泛,針對(duì)分布式開(kāi)發(fā)與版本管理,都非常好用,svn使用相對(duì)簡(jiǎn)單,但是分布式多人協(xié)作這塊確實(shí)沒(méi)有g(shù)it靈活方便。
Java來(lái)做游戲服務(wù)器需要用到的大體的一些技術(shù)點(diǎn),我們就給大家講解到這里,下面我大家分享一下我們做商業(yè)項(xiàng)目的Java服務(wù)器用到的庫(kù),供大家參考。
Netty | nio socket 框架 | [http://netty.io/](http://netty.io/)
jprotobuf | 通信雙方消息編解碼 | [
https://github.com/jhunters/jprotobuf](
https://github.com/jhunters/jprotobuf)
Guava | 玩家數(shù)據(jù)緩存系統(tǒng) | [
https://github.com/google/guava](
https://github.com/google/guava)
Jedis | 跨服數(shù)據(jù)內(nèi)存數(shù)據(jù)庫(kù) | [https://redis.io](https://redis.io/)
quartz | job調(diào)度任務(wù) | [
http://www.quartz-scheduler.org/](
http://www.quartz-scheduler.org/)
groovy | 熱更新維護(hù)相關(guān) | [
http://www.groovy-lang.org/](
http://www.groovy-lang.org/)
proxool | mysql數(shù)據(jù)鏈接池 | [
http://proxool.sourceforge.net/](
http://proxool.sourceforge.net/)
slf4j+log4j | 日志系統(tǒng) | [https://www.slf4j.org/](https://www.slf4j.org/)
maven | 依賴管理及項(xiàng)目構(gòu)建 | [http://maven.apache.org/](http://maven.apache.org/)
下面給大家?guī)?lái)java游戲項(xiàng)目合集,可以平時(shí)練手,也可以當(dāng)做畢業(yè)設(shè)計(jì)
最全Java游戲項(xiàng)目合集?。ê创a+課件)10款經(jīng)典游戲項(xiàng)目訓(xùn)練_超詳細(xì)教學(xué)內(nèi)容_Java入門_Java基礎(chǔ)_嗶哩嗶哩_bilibili
熱門資訊
探討游戲引擎的文章,介紹了10款游戲引擎及其代表作品,涵蓋了RAGE Engine、Naughty Dog Game Engine、The Dead Engine、Cry Engine、Avalanche Engine、Anvil Engine、IW Engine、Frostbite Engine、Creation引擎、Unreal Engine等引擎。借此分析引出了游戲設(shè)計(jì)領(lǐng)域和數(shù)字藝術(shù)教育的重要性,歡迎點(diǎn)擊咨詢報(bào)名。
2. 手機(jī)游戲如何開(kāi)發(fā)(如何制作傳奇手游,都需要準(zhǔn)備些什么?)
?如何制作傳奇手游,都需要準(zhǔn)備些什么?提到傳奇手游相信大家都不陌生,他是許多80、90后的回憶;從起初的端游到現(xiàn)在的手游,說(shuō)明時(shí)代在進(jìn)步游戲在更新,更趨于方便化移動(dòng)化。而如果我們想要制作一款傳奇手游的
3. B站視頻剪輯軟件「必剪」:免費(fèi)、炫酷特效,小白必備工具
B站視頻剪輯軟件「必剪」,完全免費(fèi)、一鍵制作炫酷特效,適合新手小白??靵?lái)試試!
4. Steam值得入手的武俠游戲盤點(diǎn),各具特色的快意江湖
游戲中玩家將面臨武俠人生的掙扎抉擇,戰(zhàn)或降?殺或放?每個(gè)抉定都將觸發(fā)更多愛(ài)恨糾葛的精彩奇遇?!短烀嬗肪哂卸嗑€劇情多結(jié)局,不限主線發(fā)展,高自由...
5. Bigtime加密游戲經(jīng)濟(jì)體系揭秘,不同玩家角色的經(jīng)濟(jì)活動(dòng)
Bigtime加密游戲經(jīng)濟(jì)模型分析,探討游戲經(jīng)濟(jì)特點(diǎn),幫助玩家更全面了解這款GameFi產(chǎn)品。
6. 3D動(dòng)漫建模全過(guò)程,不是一般人能學(xué)的會(huì)的,會(huì)的多不是人?
步驟01:面部,頸部,身體在一起這次我不準(zhǔn)備設(shè)計(jì)圖片,我從雕刻進(jìn)入。這一次,它將是一種純粹關(guān)注建模而非整體繪畫的形式。像往常一樣,我從Sphere創(chuàng)建它...
7. 3D動(dòng)畫軟件你知道幾個(gè)?3ds Max、Blender、Maya、Houdini大比拼
當(dāng)提到3D動(dòng)畫軟件或動(dòng)畫工具時(shí),指的是數(shù)字內(nèi)容創(chuàng)建工具。它是用于造型、建模以及繪制3D美術(shù)動(dòng)畫的軟件程序。但是,在3D動(dòng)畫軟件中還包含了其他類型的...
8. 開(kāi)發(fā)三昧游戲叫什么(三昧動(dòng)漫)
?三昧動(dòng)漫對(duì)于著名ARPG游戲《巫師》系列,最近CD Projekt 的高層回應(yīng)并不會(huì)推出《巫師4》。因?yàn)椤段讕煛废盗性诓邉澋臅r(shí)候一直定位在“三部曲”的故事框架,所以在游戲的出品上不可能出現(xiàn)《巫師4》
9. 3D打印技巧揭秘!Cura設(shè)置讓你的模型更堅(jiān)固
想讓你的3D打印模型更堅(jiān)固?不妨嘗試一下Cura參數(shù)設(shè)置和設(shè)計(jì)技巧,讓你輕松掌握!
10. Unity3D入門:手把手帶你開(kāi)發(fā)一款坦克大戰(zhàn)的游戲
Unity工程創(chuàng)建完成后如圖所示: 接下來(lái)應(yīng)該導(dǎo)入此項(xiàng)目所需的Unity Package文件,要用到的Unity package文件大家可以去Unity3D的官方網(wǎng)站下載(地址:ht...
最新文章
同學(xué)您好!