freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

畢業(yè)設(shè)計(jì)-基于unity3d的多人網(wǎng)絡(luò)斗地主游戲的設(shè)計(jì)與實(shí)現(xiàn)-資料下載頁

2024-12-03 19:14本頁面

【導(dǎo)讀】娛樂性也比較強(qiáng),老少皆宜。隨著互聯(lián)網(wǎng)技術(shù)的飛速發(fā)展,斗地主呈現(xiàn)的形式也變得多。形式的變化能夠讓人足不出戶也能感受到和伙伴們一起玩游戲的樂趣。以及大體的設(shè)計(jì)框架和思路,并且以圖文,部分核心代碼解釋的形式展示出來。采用了Unity3D作為開發(fā)引擎,結(jié)合Visualstudio2021開發(fā)工具,通過基本的socket通。訊和一些算法,最終實(shí)現(xiàn)了多平臺的多人網(wǎng)絡(luò)斗地主的設(shè)計(jì)。Unity3D工作模式;采用C#腳本語言也更符合Unity3D游戲設(shè)計(jì)面向?qū)ο蟮脑O(shè)計(jì)理念,

  

【正文】 D public int id。 public ListUser users。 public int [] dipai。 public bool isok = false。 江蘇理工學(xué)院 畢業(yè)設(shè)計(jì)說明書 (論文 ) 第 22 頁 共 13頁 public int count = 0。 public int score = 0。 int currentindex = 1。 public int onliable = 0。 的牌 public string carddata1=””。 public index = 1。 public int NextIndex。 方法 public Table() { for(int i=0。i3。i++){(new User(“”,null))。} +=new (Check)。//添加 = 。//間隔時間 TABLESTATE=。//桌面狀態(tài) } public AddUser(string connected,AsyncUserToken)。 public bool isallzhunbei()。 (發(fā)牌方法上面已經(jīng)有詳細(xì)說名 ) public void Shuffle()。 (排序算法上面有詳細(xì)說明 ) private static void BubbleSortFunction(int [] array)。 public void jiaodizhu(int index,int score)。 public int GetFaPaiIndex()。 public void ProcessTableMessage(string message)。 江蘇理工學(xué)院 畢業(yè)設(shè)計(jì)說明書 (論文 ) 第 23 頁 共 13頁 public void SetFaPaiIndex(int index,string carddata)。 如果指定時間內(nèi) ,沒有收到客戶的消息,那么認(rèn)為它掉線,發(fā)送不出牌 public void Check(object sender,EventArgs e)。 粘包 問題 TCP 和 UDP 的 介紹以及區(qū)別 TCP 是傳輸控制協(xié)議,它是面向連接的,在通信之前必須要建立與對方的連接關(guān)系,跟撥打電話方式類似,傳輸可靠,用于傳輸大量數(shù)據(jù) (流模式 ),速度比較慢,只支持一對一通信。 UDP 是用戶數(shù)據(jù)報(bào)協(xié)議,面向非連接的,通信之前不需要與對方建立連接,跟發(fā)送郵件方式類似,傳輸不可靠,用于傳輸少量數(shù)據(jù),傳輸速度快,支持一對一、一對多、多對多通信。 粘包介紹及處理 上面介紹了 TCP 和 UDP 通信的區(qū)別,本設(shè)計(jì)是基于 TCP 協(xié)議完成的, TCP 是面向連接流式無邊界的傳輸方式。當(dāng)傳輸通道建立之后,則數(shù)據(jù)流就像水一樣流過來,其中沒有數(shù)據(jù)邊界的概念,包隨便多大,因而會出現(xiàn)多個包最后粘成一個大包 。當(dāng)然這個是TCP 的原因,還有一種是緩存機(jī)制的原因,發(fā)送端在默認(rèn)的狀態(tài)下是需要等到緩沖區(qū)滿了才會發(fā)送出去的。當(dāng)然也可以適當(dāng)使用 push 刷緩沖區(qū)可以減少粘包的現(xiàn)象,如果緩沖區(qū)處理不及時,沒有做到來一個數(shù)據(jù)包處理一個,那么也會引發(fā)粘包問題。 TCP 數(shù) 據(jù)交互是基于數(shù)據(jù)結(jié)構(gòu)的傳輸。舉例: 要發(fā)送兩種數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù): {give me some data}{don’t give me anything},如果服務(wù)器端不知道怎么斷開就會容易發(fā)生粘包,可能接受到的數(shù)據(jù)會是 {give me some data don’t give me anything},這時服務(wù)器就傻眼了就不知道怎么處理了,沒見過這么詭異的數(shù)據(jù),當(dāng)然也就不知道怎么處理。 本設(shè)計(jì)中采用的自定義數(shù)據(jù)包結(jié)構(gòu)來處理粘包問題。 在 字節(jié)流前面先加上 一個 標(biāo)志, 標(biāo)志就是數(shù)據(jù)包的字節(jié) 長度,這樣在讀取的時候可按字節(jié) 讀取。這樣可有效控制粘包問題。并可以成功避免殘包的問題,且不會發(fā)生連鎖江蘇理工學(xué)院 畢業(yè)設(shè)計(jì)說明書 (論文 ) 第 24 頁 共 13頁 反應(yīng),一個壞包的出現(xiàn)不會影響下一個包的正常讀取。如 {*Length*DataStram}。該中解決方案的優(yōu)點(diǎn)是可以保證通信的 100%準(zhǔn)確,缺點(diǎn)是影響程序性能,因?yàn)榘醋止?jié)讀取包,必定會影響程序的效率。 結(jié)構(gòu)圖如下 (圖 55): 圖 55 自定義的數(shù)據(jù)結(jié)構(gòu) (1)發(fā)送數(shù)據(jù) : public void SendData(string text) { if (stream != null) { byte[] data。 data = (text)。 byte[] data1 = new byte[ + 1]。 data1[0] = (byte)。 (data, 0, data1, 1, )。 (data1, 0, )。 } } (2)接受 數(shù)據(jù) : private void OnGetData(byte[] data) { try { (data,0,databuffer,end,)。//SourceArray,起始位置,數(shù)據(jù)包,寫的位置,長度 end += 。 int data1 = databuffer[offset]。//取出第一個數(shù) while (end offset = data1 + 1) 江蘇理工學(xué)院 畢業(yè)設(shè)計(jì)說明書 (論文 ) 第 25 頁 共 13頁 { string text = (databuffer, offset+1, data1)。 (text+ +())。 if ( 0)//如果有字符發(fā)送過來,就接受 { (text)。 offset = offset + data1 + 1。 //游標(biāo)到有效位末尾 data1 = databuffer[offset]。 } } if (end ==offset) { offset = 0。 end = 0。 } } catch(Exception ex) { (())。 } } 通過這種自定義 數(shù)據(jù)格式,能夠有效的防止粘包的問題, 讀取的時候來一個完整的包就讀取一個包,放到隊(duì)列中,然后再按照隊(duì)列先進(jìn)先出的處理方式進(jìn)行處理, 確保了數(shù)據(jù)的正確性 。 第 6 章 發(fā)布和測試 江蘇理工學(xué)院 畢業(yè)設(shè)計(jì)說明書 (論文 ) 第 26 頁 共 13頁 服務(wù)器端性能檢測 在網(wǎng)絡(luò)斗地主,既然是多人聯(lián)網(wǎng)在線游戲,那么就必須要一個 性能比較強(qiáng)的服務(wù)器端,因此服務(wù)器端必須具備以下幾個必備條件: ? 確保服務(wù)器不會輕易崩潰,具備很好的健壯性; ? 能夠處理高并發(fā)請求; ? 資源消耗少; ? 響應(yīng)速度快; ? 連接安全穩(wěn)定 用專門的 TCP 測試工具來檢測服務(wù)器的性能, TCP 測試工具就是模擬一個高并發(fā)請求的過程,在短時間內(nèi)向服務(wù)器發(fā)送 3 千個鏈接請求,看服務(wù)器的運(yùn)行狀態(tài)。然后打開 windows 任務(wù)管理器,觀察連接前后資源的消耗情況,如下圖測試前后資源消耗對比(圖 611/圖 612): 測試前 CPU: 0%,資源消耗 62%: 圖 611 TCP測試之前資源 消耗圖 測試后 資源消耗: 62%,測試過程中 CPU 最高 14%: 江蘇理工學(xué)院 畢業(yè)設(shè)計(jì)說明書 (論文 ) 第 27 頁 共 13頁 圖 612 TCP測試后資源消耗圖 由此可見基本上處理高并發(fā)還算可以,服務(wù)器端不會奔潰,并且資源消耗也比較低,連接也比較穩(wěn)定,不會出現(xiàn)連接不上的情況,總體而言還是滿足了服務(wù)器端設(shè)計(jì)的幾個要求。 打包發(fā)布 Android 應(yīng)用 導(dǎo)出 Android 設(shè)置 在導(dǎo)出 Android 應(yīng)用之前,必須要先確保安裝上了 Android 開發(fā)環(huán)境,這里就不詳細(xì)介紹了,網(wǎng)上相關(guān)教程也不少,參照配置即可。然后選擇 Unity 的 FileBuilding Settings切換到 Android 平臺 Switch 切換,效果如下圖 (圖 621): 江蘇理工學(xué)院 畢業(yè)設(shè)計(jì)說明書 (論文 ) 第 28 頁 共 13頁 圖 621 切換 Android設(shè)置 1 設(shè)置應(yīng)用 ID 參數(shù) (如圖 622) 圖 622 設(shè)置導(dǎo)出應(yīng)用參數(shù) 真機(jī)效果圖 導(dǎo)出成 APK 應(yīng)用軟件安裝到 LG 平板和中興手機(jī),這兩臺 Android 機(jī)具有不同的分辨率,也正好測試了一下分辨率的自適應(yīng),效果如下圖 (圖 631/圖 632): 圖 631 Android 手機(jī) 測試 江蘇理工學(xué)院 畢業(yè)設(shè)計(jì)說明書 (論文 ) 第 29 頁 共 13頁 圖 632 Android 平板 測試 真機(jī)測試看出來還是滿足 了不同型號不同分辨率,滿足了應(yīng)用的自適應(yīng)性。 打包發(fā)布 IOS 應(yīng)用 導(dǎo)出 IOS 設(shè)置 操作同上選擇切換 IOS 平臺,但必須有個前提就是在 Mac OS 環(huán)境下操作,然后點(diǎn)擊 Player Settings,設(shè)置 ID,選擇適用 IPad 和 IPhone,選擇是否是真機(jī)還是模擬器測試,選擇 iOS 版本,效果圖 (圖 641): 江蘇理工學(xué)院 畢業(yè)設(shè)計(jì)說明書 (論文 ) 第 30 頁 共 13頁 圖 641 導(dǎo)出 IOS設(shè)置 由于 IOS 開發(fā)需要向蘋果申請開發(fā)者賬號,然后向 Xcode 安裝證書,然后才能夠?qū)ЫK理工學(xué)院 畢業(yè)設(shè)計(jì)說明書 (論文 ) 第 31 頁 共 13頁 入真機(jī)進(jìn)行測試,這里導(dǎo)出 IOS 不像導(dǎo)出 Android 那樣直接能生成 APK 可安裝文件,必須先生成 Xcode 工程,然后通過 Xcode 來生成應(yīng)用進(jìn)行真機(jī)測試,關(guān)于導(dǎo)入證書,詳細(xì)圖文過程我寫在 blog 中,地址: Unity 設(shè)置完畢后,點(diǎn)擊生成 XCode 工程,然后連接 IOS 設(shè)備,在設(shè)備選擇真機(jī)調(diào)試,如圖 (圖 642): 圖 642 選擇真機(jī)設(shè)備 設(shè)置完畢后選擇運(yùn)行,即可在真機(jī)中看到效果。 真機(jī)效果圖 真機(jī)效果圖如下 (圖 65),這里機(jī)器是 iTouch: 圖 65 iTouch真機(jī)測試 江蘇理工學(xué)院 畢業(yè)設(shè)計(jì)說明書 (論文 ) 第 32 頁 共 13頁 效果基本達(dá)到預(yù)期要求。 打包發(fā)布 Web 應(yīng)用 關(guān)于 UnityWebPlayer 的 SandBox Security(安全沙盒機(jī)制 ) 關(guān)于 Unity 的 Socket 通訊,在其他平臺都能夠正常跟服務(wù)器端進(jìn)行交互,但一旦切換到 Web 平臺就會報(bào)錯,這里 Unity 的 Web 平臺,基于安全性考慮,官方做了一個端口權(quán)限的問題,服務(wù)器端必須要打開 843 端口的訪問權(quán)限,客戶端瀏覽器才能跟服務(wù)器進(jìn)行正常的 socket 通訊。 打開服務(wù)器端口訪問權(quán)限: 在 Unity 的 安 裝 目 錄 下 找 到 一 個 的 工 具 , 具 體 路 徑 是 在“ ...\Unity\Editor\Data\Tools\SocketPolicyServer”下有一個 可執(zhí)行工具。然后打開 cmd Dos 窗口,輸入命令 all,看到以下效果 (圖 66) 圖 66 打開服務(wù)器端口權(quán)限 當(dāng)有一個 WebPlayer 連接上服務(wù)器之后, cmd 窗口就會給出提示允許連接。 導(dǎo)出 Web 設(shè)置 如圖 (圖 67),在 Web 平臺導(dǎo)出設(shè)置里面可以輸入 WebPlayer 的寬和高,以 及是否允許程序在后臺執(zhí)行,一般我們都選擇允許,這樣即使窗口失去焦點(diǎn),也能夠確保程序照常運(yùn)行。 江蘇理工學(xué)院 畢業(yè)設(shè)計(jì)說明書 (論文 ) 第 33 頁 共 13頁 圖 67 導(dǎo)出 web設(shè)置 運(yùn)行結(jié)果 用瀏覽器打開剛剛導(dǎo)出的頁面,原理是通過 WebPlayer 插件來加載生成的 .unity3d資源,然后通過頁面呈現(xiàn)出來。效果圖如下 (圖 68) 圖 68 瀏覽器端測試 打開三個瀏覽器端,然后都登陸成功,服務(wù)器端顯示出三個登陸玩家,基本達(dá)到預(yù)期效果。 江蘇理工學(xué)院 畢業(yè)設(shè)計(jì)說明書 (論文 ) 第 34 頁 共 13頁 打包發(fā)布 PC/Linu
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1