本文首發自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
服務器
而後,再找到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