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

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

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

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

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

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

25.1項目概況

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

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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號