创建一个桌游模拟器
我决定开始编写一个我以前很喜欢的游戏。我之前从来没有做过游戏,也没有在Python中做过大型项目。
这个游戏是老牌的Avalon Hill游戏俄罗斯战役。
我最近在玩PyGame,想知道有没有什么理由不使用PyGame来做这个游戏,而是去尝试其他的引擎或语言。
使用PyGame来构建这个游戏有什么缺点呢?
我不太担心人工智能,主要是希望能先做一个最简单的双人游戏版本能运行起来。如果能保存游戏状态和通过网络对战那就更好了。
如果能给我一些开始这个项目的注意事项和建议,那就太好了。
2 个回答
我觉得你不需要太在意支持多个平台、前端和后端的分离、用XML-RPC和JSON进行多进程通信、服务器等等这些复杂的东西。
放下那些额外的想法,专注于你的主要创意:一个回合制的双人游戏。这是你做的第一个游戏,你会有很多东西需要学习,同时处理这些复杂的事情可能会让你感到压力很大。
把“后端”引擎和“前端”分开。后端负责记录游戏状态,接收来自前端的操作指令,生成随机数来解决战斗,向前端发送更新信息,处理保存和恢复特定游戏等。而前端主要是为这些功能提供用户界面。
PyGame是一个适合用来做客户端前端的技术,但你可以实现多个前端,比如一个PyGame的,一个基于浏览器的,或者一个用于调试的文本界面等等。后端当然不需要关心PyGame或其他用户界面技术。大多数前端用Python就可以了(除了需要用JavaScript、ActionScript等的前端,比如浏览器或Flash的前端),后端用Python也完全没问题。
把后端和前端作为独立的进程运行,并尽可能简单地进行通信。对于一个回合制游戏(我相信这个就是),使用XML-RPC或者更简单的变体(比如通过HTTP POST发送和接收JSON数据)会比较合适。
我会先从后端开始(可能会用JSON作为数据格式),搭建一个非常简单的WSGI服务器(也许用werkzeug之类的工具来帮助处理一些中间件),再做一个简单的调试命令行客户端。在每一步中,我会小心地丰富后端或前端,避免一次做太多事情或同时进行多个步骤。我不会使用“重型”技术或任何在我背后做神奇事情的大框架(比如ORM、Django、SOAP等)。
确保使用一个好的源代码管理工具(比如hg,如果你知道自己会独自完成的话,或者svn,或者如果你已经熟悉的话可以用bazaar或git)。