深入 GalCon:Python、游戏开发和人工智能
Alex. J. Champandard
赖勇浩(http://laiyonghao.com) 译
原文地址:http://aigamedev.com/open/interviews/inside-galcon-python-ai/
AiGameDev.com在这个周一的 pratical insights 是对Phil Hassey采访。Phil 是一个独立游戏开发者,也是游戏产业社区的活跃分子。他曾赢得2006年4月的 Ludum Dare 比赛(这个比赛关注群体行为),结果就是产生了名为 GalCon 的非常流行的游戏——上世纪 80 年代叫 Galactic Conquest 的游戏的复刻版。
我最近经常跟 Phil 通 email,问他很多关于 Galcon 的问题,比如人工智能、用 Python 开发游戏等。你可以在访问他的网站或 GalCon 的网站找到关于他的项目的更多的信息。此外,还可以下载游戏的demo 。
截图1:Ludum Dare 比赛的参赛作品。
Alex Champandard:您好,Phil,感谢您抽出时间来回答这些问题!您能否简要地介绍自己,以及关于成为游戏开发者的背景呢?
Phil Hassey:我自 10 岁以来就一直在制作游戏。我想大概是因为我没有其它事情可做 :),我最喜爱的语言是Python,所有的游戏都是用它开发的。当然我也用 C 写性能敏感的东西,也基于 PHP 来开发 Web 项目。我的游戏大部分都是开源的,我写了不少适用于游戏开发的开源工具/库。
Phil Hassey 开发的游戏:
Imitation Pickles — Games
AC:Galcon 创意从何而来的呢?能否向不知道这个游戏的读者简单地介绍一下这个游戏?
PH:2006年4月有一个48小时的游戏开发竞赛称为Ludum Dare。比赛主题是群体,而且我一直希望再度缔造“银河征服”风格的游戏,所以我尝试实现飞船群。游戏的原型在48个小时内做出来并赢得了比赛。后来我接受了大家的鼓励,继续开发,然后就有了 GalCon。
Phil Hassey 的相关材料:
The Glorious History of Galcon
AC :这些飞船是游戏的重要组成部分,我很好奇你如何实现它们的。是否基于 Craig Reynold 的操控行为理论?需要实现很多特定的算法吗?
PH:其实算法很简单-给所有的飞船指定目的地即可。然后执行碰撞检测,让它们腾出地方。
AC :模拟这么多的飞船,你遇到性能问题了吗?如果是遇到过,又是如何解决这些问题的呢?
PH:当然遇过。以前的版本一屏上最多能有 4096 个元素,而我用的又是蛮力碰撞检测。所以在某些情况下,速度就变得相当慢了。当前版本的最大值是2048,并且使用了网格细分屏幕的碰撞检测算法。在把飞船放到屏幕上的时候,我也用来些心思来初始化它们的显示,以
相关文档:
知识点
1.线程是“轻量级”进程,因为相较于进程的创建和管理,操作系统通常会用较少的资源来创建和管理线程。操作系统要为新建的进程分配单独的内在空间和数据;相反,程序中的线程在相同的内存空间中执行,并共享许多相同的资源。多线程程序在结内存的使用效率要优于多进程程序。
2.python提供了完整的多线 ......
http://chardet.feedparser.org/ 自动检测编码
http://effbot.org/zone/celementtree.htm cElementTree
http://github.com/jaybaird/python-bloomfilter bloomfilter
http://docs.python.org/library/threading.html#threading.activeCount threading ......
PEP 0263
Defining Python Source Code Encodings
Python will default to ASCII as standard encoding if no other
encoding hints are given.
To define a source code encoding, a magic comment must
be placed into the source files either as first or second
line in the file, suc ......
关于Python程序的运行,其实一个Python程序就相当于一个应用程序,它不需要经过编译,只需要用户电脑上面安装Python环境即可。要运行一个py程序,直接双击这个py文件即可。一般情况下,没有提示用户输入或控制屏幕显示,打开一个py文件时会突然闪一下马上就退出,这是由于程序运行已经完成了。若需要显示,则要添加一 ......