卷1:第25章 韦诺之战

2018-02-24 15:55 更新

作者:Richard Shimooka, David White

译者:谢路云

状态:完成

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

enter image description here

编程往往被简单地看作一种解决问题的行为,开发者根据需求编码得到一个解决方案。对代码优美程度的判断一般来自于技术实现上的优雅或者效率,而这本书(《开源软件架构》)中的项目就是它们之中的杰出例子。除了计算,代码还对公众的生活产生了深远的影响。它能够激励人们参与并创造新的事物。但不幸的是,大家在参与各种项目时仍然会遇到很高的门槛。

大多数编程语言都需要相当的技术专业知识才能使用,这对许多人来说遥不可及。此外,让所有人都能编程不仅从技术上是困难的,而且对于许多项目也没有必要。这样做并不一定能够得到简洁的代码或是聪明的解决方案。提高项目的参与程度需要开发者在项目和程序的设计时有远见,而这经常是和正常的编程习惯相违背的。再者,大多数项目的核心都是一组熟练的高水平专业程序员。他们并不需要外部资源的帮助。因此,项目的可参与性就变成了可有可无的东西,甚至从没有被考虑过。

我们的项目“韦诺之战”试图从源头上解决这个问题。它是一个基于GPL2许可证的在开源模式下开发的回合制奇幻战略游戏,它相当成功,截至这篇文章发表时已经被下载了超过四百万次。虽然这个数据很可观,但我们认为这个项目真正的出彩之处在于其开发模式凝聚了一大批能力水准各异的志愿者。

提高可参与性并不是我们开发者设立的一个模糊的目标,而是被视为这个项目成败的关键。开源意味着韦诺之战不可能立刻就吸引来大量高质量的开发者。吸引更多掌握不同技能的贡献者参与项目才能保证项目的长久活力。

我们的开发者从第一个迭代起就开始为扩大项目的参与程度而努力。这不可避免的会对项目架构的各个方面都产生一些影响。项目中的大部分决策在制定的过程中也都会考虑到这个目标。本章会深入地讲解我们的项目,尤其是我们在扩大项目参与度方面所进行的努力。

本章的第一部分概括了项目的代码,包括编程语言、依赖和架构。第二部分将集中介绍韦诺之战独特的数据存储语言,叫做“韦诺标记语言”(WML)。这部分将说明WML的功能,特别是对于游戏单位的影响。之后介绍的是多人游戏的实现以及一些外围项目。章节的最后会给出一些我们在架构和拓展项目参与度方面观察到的结论。

25.1项目概况

韦诺之战的核心引擎是用C++写的,现在总共约20万行代码。这只是游戏的核心引擎,不包含任何游戏内容,约占整个代码库的一半。我们的程序接受由一种叫做“韦诺标记预言”(WML)的独特的数据语言所定义的游戏内容。游戏在发布时还包含约25万行WML代码。这个比例在项目中还在不断升高。随着项目的成熟,硬编码在C++中的游戏内容已经越来越多地被重写为WML所定义的操作。图25.1给出了项目的大致结构。绿色的部分是韦诺之战的开发者们维护的,而白色的部分则是由外部的参与者们维护的。

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号