第100章 生死鬥

許毅的那個精簡版的小虛擬機核心在他回來後的幾天內很快就完成了。虛擬機模擬的是計算機的硬件,相當於人的身體,但還沒有靈魂,也就是計算機的軟件。虛擬機是操作系統中的計算機,而在虛擬機中運行的軟件則是軟件中的軟件了。由於這是精簡了的虛擬機,只能支持少數的一些機器指令,所在編寫虛擬機能夠運行的程序時,也得注意只用到這些指令的功能,否則就會報錯,說指令不能識別。

現在完成的這個虛擬機核心就相當於一個cpu,許毅接下來要做的就是給這個光禿禿的cpu加上其他硬件資源,例如加入圖形化的輸入輸出藉口,加上虛擬內存等。

再經過幾天時間,這些七七八八的組建總算完成了,最後將他們很好地組合起來,集成在一個大軟件中,最後許毅還在外面還加上了兩層加密性能絕好的“殼”。許毅有美術功底,所以他特地還進行了一下界面美化。根據許毅原來的構思,他將這個遊戲命名爲“達爾文生存”。

遊戲編寫好之後,他自己沒怎麼玩,因爲在他看來這實在是太簡單,沒意思。然後他把這個遊戲傳給周鬆,讓他試試。周鬆確實對這個表現出很大的興趣。於是,獲得許毅同意之後,他將這個遊戲放到了論壇上。結果令許毅大爲失望,對這個遊戲敢興趣的人並不多,而且這些人也只是玩個新鮮而已,等知道怎麼回事了,他們就將其拋棄了。周鬆做了調查,大家一致認爲這個遊戲實在是太缺乏趣味性,程序編寫之後,幾個小黑點在顯示器上移動,然後就這麼等着,看他們慢慢爬動,接着結果就出來了太無聊了!

這個時候,他們提出,最好能夠將這個遊戲複雜化,例如動作多樣性、更具挑戰性、遊戲更加熱血等等

倒!許毅看到他們的回帖之後真想抽他們。他辛辛苦苦把這個東西編寫出來,結果沒人欣賞,失策啊!許毅這次“寓教於樂”的嘗試就這樣胎死腹中。

不過,許毅還是沒有放棄,這些人的建議給了他靈感,連他自己都對他們提出的這個遊戲感興趣起來。許毅接下來的很長一段時間都那個黑客遊戲的構思和設計當中,按照他的構想,如果這個遊戲編寫成功,極有可能形成一個大型的賽事

許毅現在上課不睡覺了,取而代之的是趴在課桌上發呆,有時候又會突然拿起筆,在稿紙上記錄着什麼。顏玉看得奇怪,多次詢問許毅是不是出了什麼事情。她也看過許毅記錄在稿紙上的東西,都是一些框圖或者代碼之類的,她一點都看不懂。

許毅考慮到,把代碼完全放到虛擬機中執行這個方法現在還沒有條件實現,因爲虛擬機編寫的工程難度實在太大,同時需要很長的時間和極大的精力。另外,他編寫這個遊戲的目的是用來增加大家學習編程的興趣,提高編程水平,所以他改變了起初的想法,不再去編寫一個完整的虛擬機,而是仿真系統,代碼還是交給實際的計算機去執行,沒有必要重新編寫一個虛擬機。

仿真,顧名思義,模仿真實。也就是用一定的手段去建立相關模型,模仿現實生活中的一些具體存在的東西。例如某個小區的整體規劃模型就是一種實物模型仿真,屬於實物建模,用實物把想要表現的東西用模型做出來。另外還有一些抽象的仿真,例如虛擬現實仿真和純粹的數學仿真等。虛擬現實是用計算機技術把現實的東西做成動畫(二維、三維)的形式,這裡計算機及軟件就是用來仿真的工具;純粹的數學模型則是純抽象的概念,沒有形象的表現方式,用數學函數來表示系統,數學函數就是它的工具。

許毅所採用的方式就是虛擬現實仿真,以二維的動畫形式表現出來。經過幾周的構思和設計,他終於將整體框架大致完成。他將這個遊戲命名爲“生死鬥”,正如其名,這個遊戲的主要行爲就是各個“角鬥士”進行生死角鬥,不論是單打獨鬥還是進行大混戰,目的就是要殺死對方,贏得角鬥。

整個遊戲最重要的是仿真系統的服務端――fightserver,全部的數據和指令都是在fightserver當中處理並運行的,它就相當於遊戲的心臟,遊戲者並不能看到它,只是在底層運行。當然,fightsever提供了一個虛擬場地――fightmonitor,也叫“鬥獸場”。所有參加角鬥的角鬥士的外在圖形表示都是在這個鬥獸場中進行角鬥。

實際上可以說是仿真系統服務端包含兩個程序:fightserver和fightmonitor。

fightserver負責“角鬥士”的移動、與客戶端(client)進行通信、按照一定的規則控制遊戲的進程。

fightmonitor,即鬥獸場,則負責利用操作系統的圖形顯示功能在fightserver中顯示虛擬場地。fightserver可以同時和多個fightmonitor相連,這樣,大家就可以在多個顯示器上同時顯示生死鬥遊戲的情況。

有服務端,自然必有客戶端(client)。生死鬥的客戶端(fightclinet)是由遊戲參與者編寫。它相當於“角鬥士”的大腦,指揮着角鬥士的運動和動作。客戶端和服務端的通信是通過udp/ip協議進行信息交互的,所以,遊戲者可以實用支持udp/ip協議的任何程序系統。通過這種信息交互,客戶端發送指令去控制鬥獸場中的角鬥士,同時,角鬥士還可以反饋一些信息給服務端。

遊戲中的“角鬥士”是一個抽象的數據模型,“他”由着自己的一些屬性:運動和戰鬥。運動有“走”、“跑”、“加速”、“減速”、“轉身”等等等等,許毅設計得很詳細,基本是按照一個人的實際情況來的。戰鬥模型許毅則簡化了,只有“拳擊”、“腳踢”這兩種攻擊以及相應的防禦動作而已。其實這個設計並不難,按照面向對象的設計思想,將“角鬥士”抽象成一個對象,其他的都是他的屬性,而屬性也還可以是對象,也就是說屬性也可以有屬性,依此類推

整個工程是非常龐大的,所以許毅在開始的時候並沒有急着動手編寫,而是仔細反覆地思考、補充。不但從全局考慮其整體結構,還得注意以後要添加新的功能。畢竟,現在他的構思相對來說,還比較粗糙,還有很多細節沒有考慮到,到時候肯定會要升級。作爲一個大的項目,這些因素都是必須考慮的。需求分析,可行性分析這些都是軟件工程的知識,沒有參與過大型的項目開發的人是體會不到這些步驟的重要性的。次等的程序員通常是想到什麼就立刻動手,準備工作什麼都不做,就這麼編下去,碰到問題再臨時解決,到最後甚至還會加上一些令人難以接受的代碼。於是,最終編寫出來的源代碼已經是“慘不忍睹”,甚至隔了一段時間之後連他自己都讀不懂這些代碼了。這種憑自己的感覺編寫軟件的方式在應付小軟件的時候通常不會出什麼問題,就算出了問題,從頭再編寫就是了,不用花多少時間。但遇到大型軟件的時候,這種開發方式往往能夠逼人去撞牆。編寫小部分都得花上幾個月的時間,哪有這麼多時間讓你去從頭開始?真正有經驗的程序員都知道“磨刀不誤砍柴工”的道理,他們實現會仔細規劃,整個程序會分爲幾個部分,估計以後將要進行那些功能的補充等等他們將這些經驗提取出來,然後經過科學研究,抽象出軟件工程學這麼學科。

當然,絕大多數黑客的代碼編寫習慣在正統的程序員眼中都不怎麼好,他們對程序效率的追求近乎苛刻,於是,他們的作品當中往往會出現一些生澀難懂的代碼,這些代碼是那麼的奇怪,以至於那些規規矩矩的程序員們想破頭皮也百思不得其解。他們往往會發出這樣的感嘆:“這樣也行?”、“變量怎麼可以這麼用?”、“天!這個算法太巧妙了,他到底是怎麼想到的?”這點可以從linus編寫的linux源代碼中找到實例。

許毅編寫的這個工程有點大,可以說是他第一次獨自一人開發這麼大的項目。給顏玉編寫的那個“超級黑客套裝”雖然貌似看起來很大,但那些軟件都是一些獨立的小軟件組成的,難度並不是很大。而他現在編寫的這個“生死鬥”就不同了,整體聯繫非常緊密,他不但要編寫整個仿真系統,而且還制定遊戲規則,最要命的是要將這些遊戲規則融合程序當中去。所以他才花那麼大的時間來進行構思和設計,因爲如果以後遊戲規則有所變動,那麼軟件也要進行相應修改,非常麻煩。

第167章 讓衆教授頭疼的中國學生第158章 逃離美國第202章 矛盾第78章 瘋子第162章 請釋放XYZ!第185章 毅蘭基金(中)第170章 網絡強暴第43章 宣傳風波(5)之黑客之道第07章 被人打悶棍第06章 春蠶蠟炬第59章 遲到的稿費第144章 疑惑第59章 遲到的稿費第118章 再次交鋒第41章 宣傳風波(3)第26章 歐若拉(上)第183章 類人智能第43章 宣傳風波(5)之黑客之道第71章 侵吞?(下)第152章 偶然事件第130章 雷霆怒第133章 擁抱第230章 美國之行(上)第143章 風影的秘技第123章 沈立文第214章 見沈教授第147章 離別之前第130章 雷霆怒第178章 決戰紫禁之巔第49章 BC第212章 電路第33章 他很強第136章 論壇程序漏洞第185章 毅蘭基金(中)抱歉!以及vip羣第81章 浪客第26章 歐若拉(上)第200章 Smartech-1第46章 轉校生第260章 “反戈”計劃第129章 雷霆第102章 筆記本第27章 歐若拉(中)第132章 留學?第254章第15章 收徒第74章 黑妹?人妖?第238章 觀察第189章 大誤會開加精大會嘍~第157章 衝擊第75章 突破關於有朋友QQ號碼被盜的聲明第35章 NT4.0發佈第101章 計算機社第65章 託付(上)第29章 鐵面修羅第260章 “反戈”計劃第195章 辭職第141章 IJCAI第38章 禮物第243章 迅速崛起的天毅第27章 歐若拉(中)推薦好書《超級系統》第33章 他很強第195章 辭職第15章 收徒第126章 雷霆之怒(上)第109章 夜總會第100章 生死鬥第01章 蜜罐系統(上)第57章 秒殺第233章 美國第22章 李豔第08章 完美女人第155章 舞癡第196章 1億第244章 演習第112章 機關槍?作弊!第55章 驟雨會議第53章 治傷第141章 IJCAI第01章 蜜罐系統(上)第172章 0DAY第37章 若無其事第256章 又見蜜罐第64章 NOI第181章 操作系統計劃(上)第112章 機關槍?作弊!第40章 宣傳風波(2)第05章 獲得新生第148章 初至麻省理工第171章 再次相遇第52章 在網吧第38章 禮物第13章 以其人之道還治其人之身第250章第06章 春蠶蠟炬第96章 字母鎖(上)第167章 讓衆教授頭疼的中國學生