下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、第一步:評估你的能力必須的技能:懂至少一種編程語言。 迄今為止, c+因為性能和效率的優(yōu)越性成為游戲開發(fā)者的首選。 visual basic, java 或者 c# 可能也是不錯的選擇;熟悉一種圖形庫。通常的選擇是sdl, opengl, 或者dx/d3d。(譯者注:網(wǎng)上也有很多免費/付費引擎下載和出售); 選擇一種網(wǎng)絡通訊庫。 你可以從winsock, sdl_net, 或directplay中選擇。(譯者注:很多人喜歡開發(fā)自己獨特的網(wǎng)絡庫,這并不復雜,似乎ace也是一種選擇); 對游戲開發(fā)有大體的經(jīng)驗。例如,事件循環(huán),多線程,gui 設計,等等。 強烈推薦的技能:c/s結(jié)構(gòu)通訊; 多平臺開
2、發(fā)。 你可能希望設計一個mmorpg, 尤其是服務器能運行在多種操作系統(tǒng)。為此,我推薦使用sdl, opengl 和sdl_net;網(wǎng)站開發(fā)。如果你想讓用戶通過網(wǎng)站查看玩家統(tǒng)計,服務器信息和其他信息,這是必須的。(譯者注:其實網(wǎng)站可以交給其他人開發(fā),如果有必要的話); 安全管理。你當然不想因為有人攻擊你的服務器而浪費時間! 團隊組織能力。 你需要一個你能成功領導和管理的團隊; 第二步:初步規(guī)劃我注意到很多人在不同的論壇發(fā)帖子尋找團隊開發(fā)mmorpg。他們中的大部分是這樣:“我們成立了一個公司/游戲工作室,需要3個美工,兩個程序,1個音樂制作,等等。為了創(chuàng)新,不要看過去的mmorpg,你有全部的
3、自由用來創(chuàng)造你想要的世界,等等。我們會在項目完成并賺到錢的時候付給你酬勞,等等”。不幸的是,以現(xiàn)有的技術和帶寬,你無法擁有一個動態(tài)的世界。朝向無法到達的目標前進只會導致失敗。正確的做法是拿出一些小規(guī)模的,功能性強的,可擴展的設計和構(gòu)架。,基本軟件構(gòu)架首先,嘗試創(chuàng)建一個簡單的c/s模型,有如下功能:創(chuàng)建一個新角色; 保存那個角色(服務器端); 用那個角色登陸; 能夠和其他人交談; 能在3d空間游覽; 保存角色看起來簡單,其實不然。 例如,有兩種方式保存角色:使用數(shù)據(jù)庫服務或者使用文件。兩者有各自的優(yōu)缺點: 現(xiàn)在你決定了如何存儲角色,你還得選擇c/s通訊的網(wǎng)絡協(xié)議:tcp 還是 udp?,我們都知
4、道tcp速度慢,但是更準確,并且需要額外帶寬。我實際使用tcp并沒有遇到什么問題。如果你有充足的帶寬,tcp是個好選擇,至少對初學者是這樣。 udp 會很麻煩,尤其是對新手。記住,游戲或引擎的初步測試會在你的局域網(wǎng)進行,所有的包都會按順序依次抵達。在inteet上無法保證這一點。雖然包會按順序到達,但是有時候會丟包,這通常是個麻煩事。 當然,你可以設計你的協(xié)議使得c/s能夠從丟包中恢復。但這對初學者來說很痛苦,不值得推薦。 第三步:選擇數(shù)據(jù)傳輸協(xié)議又是看起來很簡單,其實不然。你不能只是發(fā)送0結(jié)尾的串。因為你需要一個通用的協(xié)議,能同時適用字符串和二進制數(shù)據(jù)。用0(或其他字符)做結(jié)束符是不明智的,
5、因為那個結(jié)束符可能是你要發(fā)送的數(shù)據(jù)的一部分。此外,如果你發(fā)送20字節(jié),然后再20字節(jié),服務器極有可能收不到兩個20字節(jié)的包。取而代之的是,它會一次性收到40字節(jié),為了避免浪費帶寬在不必要的頭上。而且,你可以發(fā)送1kb的包,但服務器會以兩個小包的形式收到它。所以你必須知道哪里是一個包的開始,哪里是結(jié)束。在 “永恒大陸”(譯者注:原文: eteal lands,本文的作者正在開發(fā)的一款mmorpg)中,我們用如下的方法:offset 0: 1 字節(jié) 表示傳輸?shù)拿睿?offset 1: 2 字節(jié),傳輸?shù)臄?shù)據(jù)長度; offset 3: 變長,消息內(nèi)容; 這種方法有一致的優(yōu)點:所有的數(shù)據(jù)傳輸有統(tǒng)一的標
6、準。缺點是有些命令有固定已知的長度,浪費了一些帶寬。以后我們會改成混合的方法。下一件事是決定服務器模型: “非阻塞soket,不使用線程”,或者“阻塞soket,使用線程”。兩種方法(使用線程 vs 不使用線程)各有優(yōu)缺點。線程:服務器響應會更加平滑,因為如果一個玩家需要大量時間(例如從數(shù)據(jù)庫中讀取數(shù)據(jù)),這會在它自己的線程中完成,不會影響其他人。(譯者注:也許作者的意思是每個玩家都有獨立的線程,但這對mmorpg不太現(xiàn)實); 難以恰當?shù)膶崿F(xiàn)和調(diào)試:你可能需要大量同步,并且一個小疏忽就會導致災難性的后果( 服務器癱瘓,物品復制,等等); 可以利用多處理器; 無線程:實現(xiàn)和調(diào)試更簡單; 響應速度
7、慢; 在我的公司,我們使用無線程的方法,因為我沒有足夠的資源和人力處理線程模式。第四步:客戶端你打算做2d還是3d游戲?有些人認為2d游戲做起來簡單。我兩者都做過,并且我傾向于3d游戲更簡單。容我解釋。2d下,你通常有一個幀緩沖,也就是一個巨大的象素點數(shù)組。象素點的格式會因顯卡的不同而不同。有些是rgb模式,另一些是bgr模式,等等。每種顏色的bit數(shù)也會不同。只有在16bpp模式才有這個問題。8-bit和24-bit模式簡單一些,但有他們各自的問題(8-bit顏色數(shù)太少(256),而24-bit速度更慢)。同時,你需要制作你的精靈動畫程序,不得不自己排序所有對象,以便他們以正確的順序繪制。當
8、然,你可以用opengl或者d3d制作2d游戲,但通常這并不值得。并不是所有人都有3d加速卡,所以使用3d庫開發(fā)2d游戲一般會帶給你兩者的缺點:不是所有人都能玩,你也不能旋轉(zhuǎn)攝像機,擁有漂亮的陰影,和3d游戲炫目的效果。(譯者注,目前絕大部分顯卡都支持565的16bpp格式,這個也成為目前16位色的業(yè)界通用格式,有不少文章和代碼都是講述這一格式下圖像處理的,尤其是使用mmx技術) 3d的途徑,正如我所說,更簡單。但是需要一些數(shù)學(尤其是三角)的知識?,F(xiàn)代的圖形庫很強大,免費提供了基本的操作(你不需要從后到前排列對象,改變物體的色彩和/或帖圖都十分簡單,對象的光照會按照光源和它的位置計算(只要你
9、為它們計算了法向量),還有更多)。并且。3d給了你的創(chuàng)作和運動更多的自由度,缺點就是不是所有人都能玩你的游戲(沒有3d卡的人數(shù)可能會讓你大吃一驚的),并且,預渲染的圖片總是比實時渲染的更漂亮。(譯者注:市面上想買不支持3d的顯卡目前很困難,只是高性能的3d卡價格也不低)第五步:安全顯然,不能相信用戶。任何時候都不能假設用戶無法破解你精巧的加密算法(如果你使用了的話)或者協(xié)議,用戶發(fā)送的任何信息都要通過驗證。極有可能,在你的服務器上,你有固定的緩沖區(qū)。例如,通常有一個小(可能是4k)緩沖區(qū)用來接收數(shù)據(jù)(從soket)。惡意用戶會發(fā)送超長數(shù)據(jù)。如果不檢查,這會導致緩沖區(qū)溢出,引起服務器癱瘓,或者更
10、壞的,這個用戶可以hack你的服務器,執(zhí)行非法代碼。每個單獨的消息都必須檢查:緩沖區(qū)是否溢出,數(shù)據(jù)是否合法(例如用戶發(fā)送“進入那扇門”,即使門在地圖的另一端,或者“使用治療藥水”盡管用戶沒有那種藥水,等等)。我再次強調(diào),驗證所有數(shù)據(jù)非常重要。一旦有非法數(shù)據(jù),把它和用戶名,ip,時間和日期,和非法的原因記錄下來。偶爾檢查一下那個記錄。如果你發(fā)現(xiàn)少量的非法數(shù)據(jù),并且來自于大量用戶,這通常是客戶端的bug或者網(wǎng)絡問題。然而,如果你發(fā)現(xiàn)從一個用戶或者ip發(fā)現(xiàn)大量非法數(shù)據(jù),這是明顯的跡象表明有人正在欺騙服務器,試圖hack服務器,或者運行宏/腳本。同時,決不要在客戶端存儲數(shù)據(jù)。客戶端應該從服務器接收數(shù)據(jù)
11、。換句話說,不能發(fā)送這樣的消息“ok,這是我得物品列表”或者“我的力量是10,魔法是200,生命值是2000/2000”。而且,客戶端不應收到它不需要的數(shù)據(jù)。例如:客戶端不應該知道其他玩家的位置,除非他們在附近。這是常識,給每個人發(fā)送所有玩家會占用大量帶寬,并且有些玩家會破解客戶端從中獲取不公平的利益(像在地圖上顯示特定玩家的位置)(譯者注:就像傳奇的免蠟燭外掛)。所有這些似乎都是常識,但,再次,你會驚奇的發(fā)現(xiàn)有多少人不知道這些我們認為的常識。 另一個要考慮的問題,當涉及到安全:玩家走動的速度必須在服務器計算,而不是客戶端。(譯者注:這是重要的原則,但是會耗費大量服務器資源。魔獸世界沒有這樣做
12、,它采用類似其他玩家揭發(fā)的形式掩蓋這個事實,導致加速外掛可以用,但是在有其他玩家的時候會暴露)。服務器應該跟蹤時間(以ms為單位)當客戶最后一次移動的時候,并且,移動的請求如果比通常的極限更快到來,這個請求應該被拋棄。不要記錄這類虛假請求,因為這可能是因為網(wǎng)絡延遲(也就是玩家延遲,過去的10秒內(nèi)發(fā)送的數(shù)據(jù)同時到達了)。檢查距離。如果一個玩家試圖和100億公里以外的玩家交易(或者甚至在另一張地圖上),記錄下來。如果一個玩家試圖查看,或者使用一個遙遠的地圖對象,記錄它。小心假的id。例如,正常情況下每個玩家都會分配一個id(id在登陸的時候分配,可以是持久的(唯一id)。如果id在玩家登陸的時候賦
13、予9或怪物被創(chuàng)建的時候),顯然可以用玩家數(shù)組(保存玩家)的位置(索引)作為id。所以第一個登陸的玩家id是0,第二個是1,依此類推?,F(xiàn)在,通常你會有一個限制,比如說2000個索引在玩家列表里。所以如果一個客戶端發(fā)送一條命令類似:“查看 id200000的角色”,這會使服務器當機,如果沒有防備的話,因為服務器會訪問非法的內(nèi)存區(qū)域。所以,一定要檢查,就像這樣: if actor id max players 然后記錄非法操作并且斷開玩家。如果你使用c或者c+,注意或者定義索引為unsigned int 并且檢查上限,或因為某些原因定義為int(int,默認是有符號的),記得檢查 max 。沒有做這
14、些會嚴重挫傷你和其他用戶。類似的,要檢查超出地圖坐標。如果你的服務器有某種尋路算法,并且客戶端通過點擊地面來移動,確保他們不要點擊在地圖外部。 第六步:獲得一個團隊制作游戲需要大量的工作(除非是個pong and tetris游戲)。尤其是mmorpg。你無法單靠自己。理論上,一個完整的團隊組成是這樣:至少3 個程序員: 1 個做服務器,兩個客戶端(或者一個客戶端,一個負責工具,例如美術插件,世界編輯器,等等)。有6個程序員是最好的,更多就沒必要了。這取決于你的領導能力。最少一個美工,2到3個更合適。如果這是個3d游戲,你需要一個3d美工,一個2d美工(制作帖圖,界面,等等),一個動畫師,和一
15、個美術部負責人。美術部應該由有經(jīng)驗的人組織和安排,除非你就是個藝術家。少數(shù)世界構(gòu)建者:創(chuàng)建所有地圖是個漫長的過程, 并且直接關系到游戲的成敗。再次,你需要一個世界構(gòu)建部的負責人。你的世界需要協(xié)調(diào)一致,所以不能只有一個意氣用事的人。 一個 網(wǎng)站管理員是必須的,除非你精通網(wǎng)站設計,并且愿意花時間做網(wǎng)站。音效和音樂不是必須的,但是有音效和音樂的游戲比沒有的會更吸引人。 一個游戲經(jīng)濟系統(tǒng)設計師.。你也許覺得那很簡單,可以自己來做,但事實上那是最復雜的工作之一。如果經(jīng)濟系統(tǒng)設計不良(比如物品沒有平衡,資源在地圖上隨意放置,等等。) 玩家會覺得無聊并且退出游戲。我們早期的進展存在很大的問題,尤其是因為經(jīng)濟
16、系統(tǒng)主要是由我(一個程序員)設計的,它沒有被恰當?shù)挠媱?。于是,我們花費了兩個月來重新思考和建立一整個新的經(jīng)濟系統(tǒng)。這需要一次完全的物品清除。我告訴你,玩家會很不樂意你刪除他們的物品。幸運的是,大部分玩家贊同這個想法,但是這么多小時的爭論,妥協(xié),解釋和時間的浪費還是讓我們喪氣。以后會更多。 如前所說,你需要一個1015人的團隊,不包括協(xié)調(diào)員和管理者。這1015人必須是有經(jīng)驗的。如果都是新手就不值得,因為你需要花大量時間解釋要做什么,怎樣做,為什么他現(xiàn)在的做法不好,等等。一開始就湊齊1015人幾乎是不可能的。不管你在不同的論壇發(fā)多少帖,你也無法找到合適的團隊成員。畢竟,如果一個人熟練于他/她的領域
17、,為什么在你無法拿出任何東西的時候他/她要加入你的團隊?很多人有遠大的想法,但是實現(xiàn)它們需要大量時間和努力,所以他們寧可從事自己的工作也不會加入你。那如果你需要1015人,但是無法讓他們加入你的團隊,你如何才能制作一款mmorpg呢?好,事實上,你一開始不需要所有人都到位。你真正需要的是一個程序員和一個美工。如果你是個程序員,只要找個美工就可以了。請求懂美術的朋友幫忙,花錢請大學生/朋友做一些美術或者其他工作?,F(xiàn)在你有了一個美工,你期待的游戲的樣子,現(xiàn)在可以開始實現(xiàn)了。一旦你有了可以運行的 c/s引擎,一些用來展示的截圖(或者更好,玩家可以登陸你的世界,四處走動,聊天),更多的人會愿意加入你的
18、團隊。更恰當?shù)氖?,除非你使用獨有的技術,否則你的客戶端可以開源。許多程序員會加入(作為志愿者)一個開源工程而不是非開源項目。而服務器不應該開源(除非你打算做一款完全開源的 mmorpg)。其他一些忠告:在有東西可展示之前,不要夸大你的游戲。最惹人煩的事情之一就是一個新手發(fā)一個“需要幫助” 的請求,要求一個巨大的團隊加入他的游戲制作,解釋這個游戲到底有多酷。一旦你擁有了網(wǎng)站廣告(通常是在一個免費主機),你會看到一個吸引人的導航條,包含“下載”,“截圖”,“ 原畫”(譯者注,原文:concept art,概念藝術,在游戲應該指美工的原始設計),“論壇”。你點擊下載鏈接,然后看到美妙的“建設中”頁面
19、(或者更糟糕,一個404錯誤)。然后你點擊截圖,得到同樣的結(jié)果。如果你沒有東西給人下載,就不要放下載鏈接。如果沒有截圖展示,不要放截圖鏈接。然而更好的是,在工程進展10%(程序和美工)之前,不要浪費時間在網(wǎng)站上。 第七步:打破某些神話你無法制作mmorpg, 只有大公司才可以。我不同意。雖然制作一款像魔獸世界(world of warcraft),無盡任務2(ever quest 2),亞瑟王的召喚2(asherons call 2),血統(tǒng)2(lineage 2),和其他一些游戲?qū)σ粋€小的自發(fā)團隊是不可能的,但是做一款像樣的游戲還是可以的,只要你有經(jīng)驗,動機,和時間。,你需要1000小時的編程
20、來制作一個可運行的測試版,大概1015k小時完成幾乎完整的客戶端和服務器。但是作為團隊領導者,你不能只編程。保持團隊團結(jié),解決爭執(zhí),維護公共關系 (pr),技術支持,架設服務器,懲罰搗亂分子,自由討論,等等都是你的職責。你可能會被非編程的任務淹沒。你很可能需要上班/上學,這減少了你花費在項目上的時間。我們很幸運,沒有成員離開團隊,但是如果這種事情發(fā)生,那的確是大問題。假設你的美工半途離開?;蛘吒愀?,他/她沒有給你使用他/她作品的許可。當然這可以通過和他們簽訂合同來解決,但找另外一個美工仍然很麻煩。一個工程中有兩種不同的美術風格也是問題。 需要大筆金錢(通常 4-6 位數(shù)) 用來架設一個 mmorpg 服務器.當然,這不是真的。我見過專業(yè)服務器,1000gb/月,不到100美元/月(2300美元的初裝費)。除非你的數(shù)據(jù)傳輸協(xié)議設計非常不合
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年冀教版選擇性必修3化學上冊月考試卷含答案
- 2025年外研版2024八年級地理下冊月考試卷含答案
- 2025年新科版八年級地理上冊階段測試試卷含答案
- 2025年蘇教版必修1地理上冊階段測試試卷含答案
- 2025年浙教版九年級歷史上冊階段測試試卷
- 2024年北師大新版必修3地理上冊階段測試試卷含答案
- 2025年仁愛科普版九年級歷史上冊階段測試試卷
- 二零二五年度美容院美容師職業(yè)發(fā)展規(guī)劃聘用合同3篇
- 2025年度專業(yè)潛水員聘用合同范本大全4篇
- 2025年度定制門窗及智能控制系統(tǒng)集成合同4篇
- 安徽省蚌埠市2025屆高三上學期第一次教學質(zhì)量檢查考試(1月)數(shù)學試題(蚌埠一模)(含答案)
- 【探跡科技】2024知識產(chǎn)權(quán)行業(yè)發(fā)展趨勢報告-從工業(yè)轟鳴到數(shù)智浪潮知識產(chǎn)權(quán)成為競爭市場的“矛與盾”
- 《中國政法大學》課件
- GB/T 35270-2024嬰幼兒背帶(袋)
- 遼寧省沈陽名校2025屆高三第一次模擬考試英語試卷含解析
- 2024-2025學年高二上學期期末數(shù)學試卷(新題型:19題)(基礎篇)(含答案)
- 2022版藝術新課標解讀心得(課件)小學美術
- Profinet(S523-FANUC)發(fā)那科通訊設置
- 第三章-自然語言的處理(共152張課件)
- 醫(yī)學教程 常見化療藥物歸納
- 行政事業(yè)單位國有資產(chǎn)管理辦法
評論
0/150
提交評論