跳到主要內容

精選

遊戲伺服器2025年初架設與研究part14收送封包的Json格式與Unity內建JsonUtility相關的問題(支援性)

 上次針對如何在Unity的新版TMP Text中使用中文字 而這次則是來分享一下先前有提過的 Json文字轉換 的問題 首先我們知道Unity內建的Json轉換是 JsonUtility JsonUtility 在使用上有一些限制在 算是有優點也有缺點 優點是畢竟是寫在Unity底層的, 效能 比較好 如果功能沒有問題的情況下,可以比額外安裝的Json轉換插件效能要好上不少 甚至有些插件能差兩倍以上的執行效能 不過自然也是有缺點 就是它有不少 不支援 的型別 很多時候常常讓伺服器與遊戲端的人打架的其中一個原因,伺服器表示資料明明就有送,遊戲端則是表示我沒收到(伺服器傳的Json格式轉不出來的種種問題或是可能性) 詳細可以參考Unity的官方文件 https://docs.unity3d.com/6000.1/Documentation/Manual/json-serialization.html 那我這邊也把一些重點特別拿出來講 首先我們先前在聊天訊息回傳的時候,就已經有用到基本的功能 可以先看到我們伺服器端的程式碼(Python) 如以上這語法 這是我們先前使用的方式 那這邊因為是跟先前相同的 相同的部分我就用截圖來顯示(詳細程式碼在Part11有可以複製) 可以看到我們主要回傳的結構 json.dumps({"type": "chat", "message": msg}) 這段就是把後面的內容透過Json轉換成Json字串後傳給使用者(遊戲端) 而我們Unity接收的位置是這樣寫的 ServerPacket packet = JsonUtility.FromJson<ServerPacket>(json); 這行就是我們今天 主要 想討論的地方 並且假設大家想要使用額外安裝的Json套件,也幾乎就是替換這行就能達到想要的效果 接下來我們看到ServerPacket這個class 這邊可以看到關鍵是我們的class要 可序列化 也就是說要加上 [Serializable] 那雖然說是只要加上可序列化,就能轉換 但是也是因為這樣,有很多不能被Unity內建支援的型別,則會轉換不出來 而...

對於遊戲伺服器2025年的小伺服器硬體選擇&系統安裝過程分享

首先前言是希望能自己架設遊戲伺服器包含資料庫或是輕量網站

雖然考慮了許久,網路上也有不少選擇

也考慮過自組一台小電腦當作伺服器

但是最後還是考慮了方便性+性能+功耗都分別取了個中間值

最後選了個

ASRock 華擎系列【mini蛇夫座】R5-5600GT六核 迷你電腦(64G/2T SSD)《Mini X300》(預設無系統)

那效能上還算可以,記憶體跟硬碟空間則是選擇了組裝的裡面的最高規格,畢竟這種mini電腦想升級可能是會有些麻煩,所以既然價格沒有差太多,就選擇裡面的最高配備

雖然有不少低功耗的小電腦也相當吸引人,不過考慮還是有點基本效能,未來如果當作遊戲伺服器的情況可以有點基本能力(希望能有)

根據了種種考量後,最後的選擇就是這台了,整體大小來說是蠻小的,正面來說大概就手機螢幕的大小,整體可以塞到小櫃子內的程度


至於有人說變壓器太大或是風扇很吵麻...目前倒是沒什麼感覺


因為我也有其他裝置的變壓器比它還大的,然後風扇可能是因為沒有全速運轉,現在感覺很安靜


等未來有機會讓它全速運轉在分享一下狀況了吧~


安裝過程麻煩了一些,給它接滿了線


為了安裝系統先是製作了個Linux Ubuntu server安裝的USB,不過還因此把我的USB弄壞了一個(直接損毀讀取不出來了)


然後接鍵盤滑鼠螢幕,搭配USB後就開始安裝


目前已經安裝了Linux Ubuntu server系統


安裝好之後那些就幾乎都不需要了,目前把除了網路線與電源線都已經拔除了。


只要靠遠端來執行一些伺服器的操作就好。


當然安裝過程中也是遇到一些困擾


像是安裝固定IP的設置也是有點小麻煩


畢竟要當作伺服器,總不可能還使用浮動IP,但是我又不希望影響到其他台設備,並且原本的PC也希望維持浮動IP,但是都接在同一台數據機上,因此研究了好久


還好最後順利的維持了內網+外網固定IP,又不影響到其他台主機或wifi裝置的浮動IP


當然這邊也要提一下,如果安裝的時候就接著網路線,好像就會自動安裝預設的網路相關的設定,如果沒有接...就要手動連線


然後如果沒有設定到開機自動連線,就會每次重開機都是沒有連線的狀態,這是需要設定的~


雖然我這邊就不想測試了,不過提醒想安裝的人如果不想之後網路還得手動設置,安裝的時候還是把網路線給插上吧(按照預想應該是會自動抓的)


那這次就先分享到這邊~如果有什麼疑問也可以直接留言~

留言