用Unity作個遊戲(一) - 建立項目時須要注意的點

本文首發自inspoy的雜七雜八 | 菜雞inspoy的學習記錄php

以前那篇cocos轉unity的系列算是坑了(撒花html

前言

本身是在用unity去嘗試作遊戲的,中間也遇到了不少不少各類各樣的問題,也都在努力去解決。
到目前爲止也取得了很明顯的成果:主流程都是通的,如今容許多個玩家同時在線,在同一個場景中移動,轉向,釋放技能;服務器也能穩當的同步各個玩家的信息給全部人。
不過問題也愈來愈多,因爲如今網絡通信機制的問題,老是會出現莫名其妙的網絡斷開,並且斷開的只是客戶端接收響應的通道,客戶端依然可以發給服務端消息, 服務端也能夠收到,固然也正常地返回結果給客戶端,然而這裏客戶端就收不到了。
另一個狀況是:如今的同步機制是客戶端各自模擬邏輯和運動,服務端只是負責同步各自的位置,某個玩家把本身的位置告知服務端,服務端再廣播給全部其餘玩家。這樣就會有個問題,因爲網絡延遲的存在,不一樣玩家看到的場面局勢是不同的,並且如今也沒有對技能釋放出來的拋出物進行同步,那些火球的攻擊斷定也是客戶端自行判斷的,並且不一樣客戶端的判斷結果頗有可能不同,這已經很難再進行優化了,要改的話必須改爲由服務端計算全部移動斷定邏輯,客戶端只負責發送指令和顯示服務端推送的位置信息,本身移動時客戶端不作移動,僅當傳送給服務端的指令信息被處理,服務端推送給客戶端位置變化的git

開個新坑

既然以前的項目寫崩了,仍是從新新開一個坑吧233此次決定開源,以後的博客會盡可能同步實際的開發進度,文章裏也會貼出部分代碼,完整的代碼能夠去github上找,地址是這裏
固然如今的話,想作個完整的遊戲仍是很難,主要問題仍是沒有美術,沒有美術,沒有美術orz
反正作這個項目的主要目的仍是學習,美術資源的話考慮去AssetStore找找。
じゃ、 始まりましょうね~github

建立項目

新建一個unity項目(我使用的是此時unity的最新穩定版5.5.2f1),首先爲了版本控制,先作一些設置:
Edit->Project Settings->Editor裏面找到Version Control-Mode,選擇Visible Meta Files。還有Asset Serialization-Mode,選擇Force Text
服務器


這樣作的做用在於能夠更好地讓unity在git之類的版本控制工具下工做,使全部Assets的Meta文件可見且被版本控制工具管理,強制把全部Assets以文本方式存儲,雖然這樣作的話可能會使asset的文件尺寸變大,不過以純文本代替二進制存儲在版本控制系統中的好處是不少的,首先能夠更方便直觀地比較文件版本之間的差別,並且當不一樣的人同時編輯同一個文件時,兩份文件能夠很方便的被合併,二進制存儲的話就不行了,只能獨佔簽出來避免衝突。

而後,再找到Edit->Project Settings->Player,把裏面的Run In Background打上勾
網絡


其實這個選項並非必須的,只不過咱們這個遊戲是多人聯機的,因此到時候測試的時候確定要多開,若是不容許後臺運行的話窗口失去焦點的時候遊戲就會自動暫停運行,咱們可能就不能很方便地觀察同步狀況了。

目錄結構

這個根據我的習慣來定就行了,我這個項目是這樣:編輯器

Assets              - Assets根目錄
| - Resources       - 可能須要在程序中動態加載的資源
    | - Prefabs     - 保存全部預設體
        | - Views   - 每一個UIView的預設體,即MVP結構UI的M部分
    | - Materials   - 材質
| - Scenes          - 遊戲場景
| - Scripts         - C#腳本
    | - Conf        - 配置相關,包括Data和Utils
    | - Entity      - 遊戲場景中各類類型的實體,如角色,火球
    | - Event       - 事件系統
    | - Gameplay    - 遊戲邏輯相關
    | - Network     - 網絡通訊相關
    | - UI          - MVP結構UI的VP部分
    | - Editor      - 編輯器擴展相關

完整代碼

上面貼出的代碼片斷因爲篇幅限制只保留了關鍵部分,完整的代碼可在個人github上找到wordpress

相關文章
相關標籤/搜索