文/ 羅培羽
經常能聽說某某策劃自學技術然後把單機遊戲做出來,但很少聽說誰自己做了個網遊,除了工作量大之外,服務端的門檻是原因之一。
比起遊戲客戶端,遊戲服務端的入門難度較高。原因在于,其一,客戶端引擎和工具相對完善和統一,學習資料衆多,而服務端至今沒有較強大的方案,都是各個項目自己的一套,且很多缺乏文檔;其二,犯錯的風險較大,特别是對于線上遊戲,出bug的危害要比客戶端bug大一些;其三,服務端開發涉及到的技術領域較多,又不直觀,加大了開發難度。
跨越層次多,導緻知識盲區大
從技術角度,入門服務端的難點在于需要跨越較多的技術層次。以下是服務端程序的一種分層,這裡我把它分層6層。實際項目中往往某些層的内容較少,不會單獨分出來,但邏輯上的分層大體相似。這6層分别是①基礎層②核心層③框架層④邏輯底層⑤邏輯中間層⑥邏輯上層,各層的内容如下:
①基礎層
數學庫、數據結構、緩沖區、字符串處理、Json等
為什麼不容易自學
經常能聽說某某策劃自學技術自己做了個好玩的單機遊戲出來,但較少聽說誰自學服務端做的很好的。除了就算做出來也無法直接拿給别人看的原因外,過長的學習流程是導緻自學不易的主因。如下圖,要做好服務端開發,可能要先學socket、學網絡協議,再由此基礎搭建服務端,然後實現各種功能。
但是核心層的知識,比如網絡、數據庫,包含的内容比較多,而且如果要做到高效率、不出錯,需要學習很多内容。比如網絡,先丢幾本書,很厚。
比如數據庫,再丢一本書,還是很厚。
這就導緻了學習的流程很長。以看書學習為例,如果學客戶端,可能看到第一章就能做個五子棋,看到第二章就能做個貪食蛇,以此類推,每一步都能出點成果。而如果看服務端的,那就完了,可能先啃個200頁的基礎,啥都做不出來,等看到300頁才做個很基礎的,這對自學是非常打擊的。
遊戲公司怎樣培養人新人
如果是比較成熟的遊戲公司,會有一套帶新人的體系。一般而言,會從業務需求出發,先讓新人接觸簡單的業務邏輯,再逐步涉及複雜的業務,當熟悉業務後可能會嘗試一些改動框架底層的任務,以提升技術水平。這樣每次學習基本隻需學習一個層次的知識,減少了難度。
如下圖,在一開始時接觸較為簡單的業務,那麼隻需仿照邏輯中層的已有代碼,稍微熟悉支撐它的邏輯底層即可。對于複雜的核心層、框架層無需學會,減少了入門難度。
但也由于業務層不太涉及核心層和基礎層,某些公司不太注重長期的人才培養,僅培養到“能開發業務”這層就停止。對于新人,核心層與基礎就要靠自己學習。業務層的編寫更多是模仿能力,仿照已有的代碼改動,而核心層會涉及一些底層的知識。
對比于從基礎開始的自學,公司培養模式的學習曲線如下圖的橙色線,學習一點就能出一點輸出。而自學曲線如藍色線,要花上較長時間才有輸出。
另一方面,某些遊戲公司會給程序員評級,比如從初級程序、核心程序一直到行業專家。
其中一種等級劃分方法是根據能夠解決問題的範圍而定。如下圖,具體來說能夠解決部分業務問題的是初級程序員,能夠解決所有業務問題的是核心程序員,能夠解決所有技術問題的是副主程,能夠在解決所有技術問題并能夠管理團隊的是主程,能解決任何問題的是行業專家。
盡管要2年後才動筆,作為後續服務端書籍的調研,一套好的教程應當有好的流程,從遊戲公司的培養模式上汲取經驗,能夠讓讀者看一點就能輸出一點成果,盡量避免看到最後才能做點東西。另,筆者的《Unity3D網絡遊戲實戰(第二版)》詳解了一套簡易服務端的實現,歡迎關注。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!