亚洲AV免费看深爱成人|日韩av另类一级特黄片在线|中国免费一级黄片|国产av一二三区|亚洲有码AV在线|久久亚洲国产日韩欧美|成人免费AV网站|婷婷一区综合一区|亚洲AV无码导航|高级欧美成人网站

java怎么做游戲開發(fā)(如何學習java游戲服務器開發(fā)?)

發(fā)布時間:2023-11-27 01:21:39 瀏覽量:129次

?如何學習java游戲服務器開發(fā)?

java怎么做游戲開發(fā)(如何學習java游戲服務器開發(fā)?)

為什么游戲服務器很多都用Java開發(fā)

Java 做游戲服務器開發(fā)的優(yōu)勢還是很多的,《我的世界》的服務器就是Java開發(fā)的。Java技術比較成熟,大數(shù)據(jù),云計算,網站App后臺,基本都采用Java開發(fā),同時跨平臺,游戲服務器這個領域,使用Java的公司月越來越多,一是技術成熟,簡單,有很多框架可以使用,二來是招人也比較方便。

這里

游戲服務器和應用服務器不一樣,游戲服務器是需要讓多個玩家同時在線,而應用服務器是玩家和系統(tǒng)之間的數(shù)據(jù)交互和通訊,所以應用服務器大多以http 短連接為主,而游戲服務器需要多人同時在線,同時服務器有時候要主動通知客戶端,所以游戲中以長連接為主,同時支付等功能又需要http的短連接, 所以游戲服務器網絡短連接+長連接模式。游戲服務器網絡模塊需要學些Netty等NIO高性能的網絡庫, 同時需要http,所以一般會搭建一個http server, 用來提供支付,資源更新, 游戲公告等功能服務,有時候登錄也是走的http。Httpserver可以使用spring等, 具體取決于開發(fā)人員如何選定。多人同時在線的游戲邏輯服務器通常使用的是長連接,需要要提供高性能,高并發(fā),目前主流的游戲服務器很多都用Netty這個NIO的網絡框架。客戶端發(fā)數(shù)據(jù)到服務器,或服務器發(fā)數(shù)據(jù)給客戶端都需要對數(shù)據(jù)協(xié)議進行約定,將要發(fā)送的數(shù)據(jù)對象序列化成二進制,然后傳送,接收端收到數(shù)據(jù)后再反序列化回來,一般這個我們采用Protobuf來做, 性能好,體積小,跨語言平臺。

Java游戲服務器的數(shù)據(jù)庫的技術

游戲開發(fā)中經常需要把數(shù)據(jù)保存到數(shù)據(jù)庫,同時有些數(shù)據(jù)可能我們要緩存起來,數(shù)據(jù)這塊也是比較重要的,Java 提供了完整的數(shù)據(jù)庫的支持,JDBC,可以支持多個數(shù)據(jù)庫,我們可以選用mysql等常見的數(shù)據(jù)庫。同時為了加快訪問,我們會把數(shù)據(jù)庫中的數(shù)據(jù)緩存起來,一般主流的緩存技術可以采用redis來做。同時在開發(fā)中我們設計到大量的更新和修改數(shù)據(jù)庫中的數(shù)據(jù),如果全部手寫sql,寫起來也麻煩,同時如果數(shù)據(jù)結構有改動,所有的sql都要改動,所以一般我們會給數(shù)據(jù)庫系統(tǒng)加一個ORM的框架,封裝好后直接可以把數(shù)據(jù)結構更新到數(shù)據(jù)庫,和把數(shù)據(jù)庫內容加載出來生成數(shù)據(jù)結構。

Java 游戲服務器的日志技術

日志對于游戲服務器開發(fā)來說是非常重要的,特別是上線的時候,日志是最重要的一個調試手段,線上版本代碼出了bug,也只能通過日志來查,所以一個好的日志系統(tǒng)非常的重要,Java的日志系統(tǒng)也是非常成熟的,比如log4j等,很多日志系統(tǒng)可用。而且都比較成熟。

Java多線程技術, 反射, 注解

多線程,反射,注解對于Java游戲服務器來說也是非常重要的技術棧,首先我們要做高性能高并發(fā),多線程就是非常重要的手段, 線程調度,線程同步, 線程通訊等。整個游戲服務器的業(yè)務驅動也是基于多線程來驅動的,所以多線程對Java游戲服務器非常重要。Java的注解就更加普遍了,很多我們要做的服務,描述這個服務的一些屬性,我們經常需要使用注解,基于注解,我們能更好的管理我們的服務,編寫業(yè)務邏輯。反射也是我們做游戲服務器常用的,特別是事件響應和處理,我們把對應的處理和對應的事件聯(lián)系起來,底層都是通過反射,根據(jù)對應的事件編號等規(guī)則找到處理的反射對象或方法,底層來處理,這樣業(yè)務邏輯層只需要接入服務的處理類就可以了,底層通過反射來把對應的事件映射派送到對應的服務。

游戲開發(fā)常用的算法

游戲服務器,很多采用狀態(tài)同步,其實所有的業(yè)務邏輯就是在服務端來跑, 服務端要處理游戲常用的經典問題,碰撞檢測,尋路導航, 怪物AI等。所以我們需要基于Java服務器實現(xiàn)常用的算法和工具,比如尋路導航,行為決策樹,有限狀態(tài)機, 物理引擎,碰撞檢測等。對于大型的MMORPG而言,還需要做好AOI的狀態(tài)管理等,這些游戲中常用的核心算法我們要準備好。

Java游戲服務器組織項目工具

使用Java來做游戲服務器,我們如何選擇開放工具有Eclips+Maven或者是idea, 從開發(fā)工具來說都相對好用,但是idea似乎更懂程序員,越來越多的人也投入了idea的懷抱。其實兩個方式組織起來都非常簡單,還有些項目一個項目,兩種工具開發(fā)模式都支持。多人協(xié)作,代碼的版本管理,目前比較流行的有svn, git, git應用非常的廣泛,針對分布式開發(fā)與版本管理,都非常好用,svn使用相對簡單,但是分布式多人協(xié)作這塊確實沒有git靈活方便。

Java來做游戲服務器需要用到的大體的一些技術點,我們就給大家講解到這里,下面我大家分享一下我們做商業(yè)項目的Java服務器用到的庫,供大家參考。

java怎么做游戲開發(fā)(如何學習java游戲服務器開發(fā)?)

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ù)內存數(shù)據(jù)庫 | [https://redis.io](https://redis.io/)

quartz | job調度任務 | [
http://www.quartz-scheduler.org/](
http://www.quartz-scheduler.org/)

groovy | 熱更新維護相關 | [
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 | 依賴管理及項目構建 | [http://maven.apache.org/](http://maven.apache.org/)

下面給大家?guī)韏ava游戲項目合集,可以平時練手,也可以當做畢業(yè)設計

最全Java游戲項目合集?。ê创a+課件)10款經典游戲項目訓練_超詳細教學內容_Java入門_Java基礎_嗶哩嗶哩_bilibili

java怎么做游戲開發(fā)(如何學習java游戲服務器開發(fā)?)

熱門課程推薦

熱門資訊

請綁定手機號

x

同學您好!

您已成功報名0元試學活動,老師會在第一時間與您取得聯(lián)系,請保持電話暢通!
確定