卷1:第25章 韋諾之戰(zhàn)

2018-02-24 15:55 更新

作者:Richard Shimooka, David White

譯者:謝路云

狀態(tài):完成

原文鏈接:http://www.aosabook.org/en/wesnoth.html

enter image description here

編程往往被簡單地看作一種解決問題的行為,開發(fā)者根據(jù)需求編碼得到一個(gè)解決方案。對代碼優(yōu)美程度的判斷一般來自于技術(shù)實(shí)現(xiàn)上的優(yōu)雅或者效率,而這本書(《開源軟件架構(gòu)》)中的項(xiàng)目就是它們之中的杰出例子。除了計(jì)算,代碼還對公眾的生活產(chǎn)生了深遠(yuǎn)的影響。它能夠激勵人們參與并創(chuàng)造新的事物。但不幸的是,大家在參與各種項(xiàng)目時(shí)仍然會遇到很高的門檻。

大多數(shù)編程語言都需要相當(dāng)?shù)募夹g(shù)專業(yè)知識才能使用,這對許多人來說遙不可及。此外,讓所有人都能編程不僅從技術(shù)上是困難的,而且對于許多項(xiàng)目也沒有必要。這樣做并不一定能夠得到簡潔的代碼或是聰明的解決方案。提高項(xiàng)目的參與程度需要開發(fā)者在項(xiàng)目和程序的設(shè)計(jì)時(shí)有遠(yuǎn)見,而這經(jīng)常是和正常的編程習(xí)慣相違背的。再者,大多數(shù)項(xiàng)目的核心都是一組熟練的高水平專業(yè)程序員。他們并不需要外部資源的幫助。因此,項(xiàng)目的可參與性就變成了可有可無的東西,甚至從沒有被考慮過。

我們的項(xiàng)目“韋諾之戰(zhàn)”試圖從源頭上解決這個(gè)問題。它是一個(gè)基于GPL2許可證的在開源模式下開發(fā)的回合制奇幻戰(zhàn)略游戲,它相當(dāng)成功,截至這篇文章發(fā)表時(shí)已經(jīng)被下載了超過四百萬次。雖然這個(gè)數(shù)據(jù)很可觀,但我們認(rèn)為這個(gè)項(xiàng)目真正的出彩之處在于其開發(fā)模式凝聚了一大批能力水準(zhǔn)各異的志愿者。

提高可參與性并不是我們開發(fā)者設(shè)立的一個(gè)模糊的目標(biāo),而是被視為這個(gè)項(xiàng)目成敗的關(guān)鍵。開源意味著韋諾之戰(zhàn)不可能立刻就吸引來大量高質(zhì)量的開發(fā)者。吸引更多掌握不同技能的貢獻(xiàn)者參與項(xiàng)目才能保證項(xiàng)目的長久活力。

我們的開發(fā)者從第一個(gè)迭代起就開始為擴(kuò)大項(xiàng)目的參與程度而努力。這不可避免的會對項(xiàng)目架構(gòu)的各個(gè)方面都產(chǎn)生一些影響。項(xiàng)目中的大部分決策在制定的過程中也都會考慮到這個(gè)目標(biāo)。本章會深入地講解我們的項(xiàng)目,尤其是我們在擴(kuò)大項(xiàng)目參與度方面所進(jìn)行的努力。

本章的第一部分概括了項(xiàng)目的代碼,包括編程語言、依賴和架構(gòu)。第二部分將集中介紹韋諾之戰(zhàn)獨(dú)特的數(shù)據(jù)存儲語言,叫做“韋諾標(biāo)記語言”(WML)。這部分將說明WML的功能,特別是對于游戲單位的影響。之后介紹的是多人游戲的實(shí)現(xiàn)以及一些外圍項(xiàng)目。章節(jié)的最后會給出一些我們在架構(gòu)和拓展項(xiàng)目參與度方面觀察到的結(jié)論。

25.1項(xiàng)目概況

韋諾之戰(zhàn)的核心引擎是用C++寫的,現(xiàn)在總共約20萬行代碼。這只是游戲的核心引擎,不包含任何游戲內(nèi)容,約占整個(gè)代碼庫的一半。我們的程序接受由一種叫做“韋諾標(biāo)記預(yù)言”(WML)的獨(dú)特的數(shù)據(jù)語言所定義的游戲內(nèi)容。游戲在發(fā)布時(shí)還包含約25萬行WML代碼。這個(gè)比例在項(xiàng)目中還在不斷升高。隨著項(xiàng)目的成熟,硬編碼在C++中的游戲內(nèi)容已經(jīng)越來越多地被重寫為WML所定義的操作。圖25.1給出了項(xiàng)目的大致結(jié)構(gòu)。綠色的部分是韋諾之戰(zhàn)的開發(fā)者們維護(hù)的,而白色的部分則是由外部的參與者們維護(hù)的。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號