一个python等轴测游戏引擎。
Isomyr的Python项目详细描述
<> <> I S O M Y R <> A Python Isometric Game Engine
Introduction
i-so-myr:(n)在 前景和背景,具有不同的属性,可以存在于任何 在一段可测量的时间内的几个游戏世界。
isomyr是一个基于pygame的等距游戏引擎,用python编写。一个 同位素游戏引擎的叉子,它为构造 等距图形游戏与演员谁可以拿起和放下物体,跳到 在投影的三维等轴测环境中移动。
Features
- 演员:用于玩家和怪物的游戏对象。能够面对,重力, 碰撞响应,跳跃,自动化和库存。
- 多帧动画和图像。
- 速度、碰撞和触摸检测的简单物理模拟。
- 所有对象都可以使用python进行定制和扩展。
Installation
发展
如果你想为txspore开发或者使用我们正在开发的最新代码,你可以 可以从源安装。你需要安装bzr,然后 以下内容:
$ bzr branch lp:isomyr $ cd isomyr $ sudo python setup.py install
易于安装
您可以使用setuptools easy_install脚本在系统上获取txspore:
$ sudo easy_install Isomyr
手动下载
您可以通过以下方式从python包索引手动下载源tarball 访问以下网址:
http://pypi.python.org/pypi/Isomyr/
你需要解压源代码,将cd压缩到源目录,然后 然后您可以按常规操作:
$ sudo python setup.py install
检查源
安装后,可以通过从 顶级源目录:
$ ./admin/testDocs.py $ ./admin/testRunner.py
它将运行测试套件并报告任何单元的成功与失败 测验。
Usage
示例
在isomyr的顶级源目录中,有一个examples目录。 它包含以下内容:
- 同位素的原始例子,移植到isomyr。这是一个 两个房间的世界,玩家可以拿起两个物体并跳到床上。
- 一个新的开放式的例子,有14个“房间”,代表一个外部 环境。这个例子简单地展示了在许多连接到 未填写的场景。
检查示例目录中的每个python文件是最好的方法 了解如何使用isomyr创建游戏。
示例可以从顶级源目录运行,例如:
$ python examples/TwoRooms/tworooms.py
您可以使用箭头键导航播放机,<;space>;表示跳转,<;enter>; 供使用。
Known Bugs
- 当玩家速度增加时,他们的跳跃高度也会增加。 当它足够高时,玩家可以跳出场景。这可能需要 天花板应该放在房间里…但是跳跃的物理应该是 也检查过了。
TODO
其他
- 添加一个用于管理精灵的包装(相关的位置向量、大小等; 请参见isometric.py中的代码。
- 添加对configparser引擎/游戏配置的支持。
- 添加仅绘制墙的沙盒示例。
- 为所有操作添加日志记录(以便在控制台中轻松调试)。
- 提供一种配置机制,让游戏开发者可以定义 标题栏图像。
- 找到所有xxx注释,修复它们,然后删除它们。
- 将所有一些方法和变量重命名为是的。
新示例
- 可考查的对象。
- 可爆炸对象
- 程序生成的背景图像/网格等。
- 一个有多种地形类型的“房间”,从上面走过可以演示 由地形决定的部分玩家速度。
- 一个时间演示,在不同的房间(门是 用不同的日历传送到其他世界。
文件
- 使用into about tutorial更新用法(并将tutorial部分移出 自述文件)。
- 使用交互式提示示例更新用法。
- 使用有关单元测试的信息更新用法。
- 用isomyr使用的透视比信息更新文档。
- 添加单元测试。
- 将常见问题从自述文件移到文档中。
直接动物皮肤
- 将getimage分割成不同的方法。
- 为每个方向指定一个方法名。
世界大厦
- 对于新事物对象,确保添加了具有子对象的对象 对一个世界来说,所有的孩子都能正确地设置他们的世界属性。
- 添加对解析ascii映射以生成文件室的支持。
玩家调整
- 当玩家捡到一个物品时,它应该重新设置该物品的父项(新父项= 玩家)。
- 当玩家删除一个itme时,它应该重新设置项的父级(新父级= 场景)。
- 对场景、播放器等的更改应导致
场景引擎不必检查单个对象的更改。
- 添加对象历史记录跟踪机制
- 玩家感觉现在在引擎里…这不好 抽象。玩家考试应该是玩家和 对象,在世界范围内(或者更实际地说,在 给定场景的上下文)。
发动机改进
- engine.start引用了pygame.time.get_ticks–让我们为这个设置一个包装 以我们自己的游戏时间为例。
- 世界相对时间属于世界,但游戏时间属于引擎- 把它移回去。
- 为来自世界的文本数据添加一个面板(阅读描述、与
核电站、核电站等)
- 需要检查常规视图和信息面板,并牢记这个想法 一个游戏图形用户界面正在这里开发…需要考虑如何使这个 可扩展且可用的未来功能将影响布局
- 可能需要将视图从发动机模块中拉出并放到某个位置 否则,可能:
- 使用view.py、title.py、inventory.py创建一个新的gui子包, textarea.py模块?
- 或者只是一个gui/layout.py模块?
- 为没有蒙皮的对象提供默认蒙皮。也许只是很多 灰色的,上面有网格(间隔为对象的基本单位)。
- 定义以下各项之间的数学关系:
- 玩家角色大小和场景边界
- 背景大小/位置和场景边界
- 允许透视比率是可配置的。(沙箱中的原型)
- 编写一个floor/grid生成实用程序函数。(沙箱中的原型)
- 允许网格元素在运行时受控制(例如,更改平铺颜色 动态地)。
多重皮肤支持
- 添加对对象的支持,使其具有基于交换的不同皮肤 根据环境因素(例如,碎玻璃、跛行的球员、坐着 玩家)。
物理
- 模块组织:
- 宇宙需要成为一个子包
- universe/world.py,universe/weather.py,universe/universe.py, 宇宙/时间.py,宇宙/天空.py(月亮,流星s,彗星,恒星)
- 时间
- 在World Instance上添加本地游戏内时间跟踪
- 创建可配置的日历对象
- 每个世界都应该用一个日历来实例化,可以通过 实例 世界需要定义轴向倾斜度、日长、年长度
。
- 场景需要指明地球上的位置,以便白天可以 已确定;它们还需要指明起始季节(一年中的某个时间) 以及一天的开始时间
- type of atmosphere
- distance of the sun from the planet
- worlds need to define an average global temperature
- based on this, highs and lows need to be calculated for various latitudes
- similarly for the seasons, with axial tilt taken into consideration
- weather conditions should be predefined based on latititude, season, global temperature, axial tilt, etc., (as well as allowable transitions from one type of weather to another)
- 行星体
- type of sun, color of light
- configurable moon count
- mass/visibility of moons
- light level given off by each moon
- regularity of visible meteor activity
- 世界表面的运动
- worlds need to define mass so that gravity, rate of fall, weights of objects, etc., can be calculated
- objects also need to indicate their masses
- visually, movement could take place in outdoor and indoor scenes, but could also take place at a top-down map-level, allowing for an interactive and visual means of traversing great distances
- 增加对分数速度的支持。
- 现在的等距变换似乎不可能做到这一点, 因为它使用比特移位。
- 为下降率添加重力乘数(这适用于世界实例)。
- 这会影响落体速度以及横穿 表面
- 这会影响对象的权重。
- 添加地形穿越修改器(增加玩家速度)…例如, 路面,沙子,泥浆,水。
- 允许玩家拉动物体。
- 推拉物体会影响玩家的速度(取决于 物体的重量和被推过的表面,或 拉)。这需要分数速度值。
复杂的相互作用
- 天气模拟的想法引发了另一个想法:事件注册 用于各种世界或场景的变化。例如,农民人大可以 订阅天气。天气变化可能会 通知(天气变化(最近,当前),如果转换定义为 对农作物有害(雾->;雨很凉,干旱->;倾盆大雨很坏,任何东西 冰雹是坏的,等等)然后农民NPC可以戏剧性地情绪化,四处奔波, 快点离开酒馆等。
网络支持
- 支持多个服务器以实现负载平衡。
- 使用rabbitmq进行消息交换。
- 对客户端代码使用txamqp。
Changes
同位素1.0至等摩尔0.1
- 重构游戏中的对象类以改进抽象。
- 为宇宙和世界对象添加抽象并重构关系 在世界和场景之间。
- 为添加了一个事件/处理程序系统(基于zope 3事件系统) 抽象对象与其环境之间的交互。
- 用numpy向量数学代替了慢向量数学。
- 将gui代码重构为自己的模块。
同位素0.9至1.0
- 根据扭曲编码标准(增强的PEP-8)清理代码 合规);删除了未使用和冗余的代码。
- 重构蒙皮代码以改进游戏创建工作流。
- 为world对象和重构的游戏组件添加了抽象 关系(例如,玩家与环境的关系)。
- 改进了对象速度实现。
- 开始添加单元测试。
- 添加了一个“开放地面”的例子游戏。
1.0
之前的同位素- 未知。