我想创建一个基于古代文明的经济游戏。我不确定如何设计。如果我正在开发一个较小的游戏,例如《太空侵略者》的副本,那么构造这样的游戏就不会有问题:
- 主控制类
- 图形类
- 玩家等级
- 敌人阶级
我不知道如何为大型项目(例如经济游戏)做到这一点。我是否创建一个包含许多城镇的国家/地区类别?城镇是否包含很多建筑类别,大多数包含人口类别?我是否会开设可供玩家绕行的寻径课程?
我想创建一个基于古代文明的经济游戏。我不确定如何设计。如果我正在开发一个较小的游戏,例如《太空侵略者》的副本,那么构造这样的游戏就不会有问题:
我不知道如何为大型项目(例如经济游戏)做到这一点。我是否创建一个包含许多城镇的国家/地区类别?城镇是否包含很多建筑类别,大多数包含人口类别?我是否会开设可供玩家绕行的寻径课程?
Answers:
我是否创建一个包含许多城镇的国家/地区类别?
当然。
城镇是否包含很多建筑类别,大多数包含人口类别?
当然。
我是否会开设可供玩家绕行的寻径课程?
当然。
您上面建议的所有内容似乎都是合理的。从长远来看,这可能不是您的最佳方法,但这很好。您知道这显然很有意义,因为这是最先出现的组织模型。采取这一点并从中开始实施很重要。两者都会使您入门,使您摆脱通常在开发初期就困扰开发人员的初始“设计瘫痪”,并且(如果事实证明存在某种缺陷)会教您一两个有关优缺点的信息。特定的设计方法。
您自然而然地想到了这些概念,并根据一些简单的规则将它们分组为代码:
Person
该类,但如果游戏只关心它们的整体,例如在早期版本的SimCity中,您可能不需要该类型也不需要该类型的实例来创建城镇人口的1:1映射(int populationCount
可能就足够了)。尽管很简单,但是在尝试确定是否以及如何将思维概念转换为源代码时,回答这些问题可以使您受益匪浅。您可能还需要阅读有关面向对象设计的SOLID原理。
请注意,在注释中提出的有关实体/组件系统的建议也是一种有效的方法,尽管我会在这里避开它,除非您将项目范围缩小到较小的范围(这是因为在一个项目中可能面临两个新的,大的挑战太令人生畏,可能会稀释您仅专注于一个方面所获得的教育收益)。在面向组件的模型中,上述问题中的“类型”变得更加隐式:不是代码中的具体类型,而是由形成实体的组件集合定义的隐式类型。可以应用相同的指导原则。
对于简单的游戏,您所描述的内容(逻辑游戏对象的每种主要类型都有一个类)非常有意义。如果这是您第一次编写此类游戏,我建议您这样做。
几点提示:
在更复杂的游戏中,您可以使用更高级的技术,但是我建议您不要使用这些技术,除非您对基本的OOP方法非常满意(即成功制作了几款完整的游戏)。更高级的方法可能包括: