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