Endless Sky C++代码的Python绑定
项目描述
Endless Sky的Python绑定
使用Python与Endless Sky C++类交互或在游戏运行时与之交互。
pip install endless-sky-bindings
此库不包括Endless Sky数据,因此要加载这些数据,您需要找到系统上安装的副本或克隆Endless Sky仓库以获取它。下面的代码示例假设在~/endless-sky处检查了endless-sky。
库
一旦掌握了endless_sky.bindings模块(在此绑定到'es'变量),C++类将直接暴露给Python;有关文档,请参阅Endless Sky中的头文件。
>>> from endless_sky.loader import load_data
>>> es = load_data(resources="/Users/tomb/endless-sky")
>>> ships = es.GameData.Ships() # these objects correspond to
>>> ships.<tab><tab>
ships.Get( ships.Has( ships.size(
>>> shuttle = ships.Get("Shuttle")
<endless_sky.bindings.Ship object at 0x1087391b0>
>>> ship = es.Ship(shuttle) # make a copy to avoid modifying the template
>>> ship.<tab><tab>
ship.Acceleration( ship.Hull( ship.Mass(
ship.AddCrew( ship.HyperdriveFuel( ship.MaxReverseVelocity(
ship.Attributes( ship.IdleHeat( ship.MaxVelocity(
ship.BaseAttributes( ship.IsBoarding( ship.MaximumHeat(
... and many more, see header files for documentation
>>> ship.Attributes().Attributes()
<endless_sky.bindings.Dictionary object at 0x1087392f0>
>>> dict(ship.Attributes().Attributes())
{'bunks': 6.0, 'cargo space': 20.0, 'drag': 1.7000000000000002, ...}
>>> ship.SetName("Summer Breeze")
>>> x.Name()
'Summer Breeze'
警告:endless_sky.bindings包含不可重置的单例,如GameData,因此一旦加载了一些数据(直接使用GameData.BeginLoad(),使用load_data或间接使用解析函数),就无法在不退出Python的情况下卸载数据。
命令行使用
加载数据文件
% echo -e 'ship Rocket\n\tattributes\n\t\tdrag 10' > myData.txt
$ python -m endless_sky load --empty-resources myData.txt # only prints ships atm
'Rocket': {'drag': 10.0, 'gun ports': 0.0, 'turret mounts': 0.0},
$ python -m endless_sky load -- --resources ~/endless-sky
{'Aerie': {'bunks': 28.0,
'capture attack': 1.8000000000000003,
'capture defense': 2.4000000000000004,
'cargo space': 50.0,
...
$ # In order to parse a file with vanilla outfits defined, use --resources
$ python -m endless_sky load --resources ~/endless-sky myData.txt
{'Aerie': {'bunks': 28.0,
...
<'Rocket' is somewhere in here>
...
同时运行游戏和Python解释器
$ python -m endless_sky run --resources ~/endless-sky --default-config
从源代码构建
git clone --recursive git@github.com:thomasballinger/endless-sky-bindings-python.git
cd endless-sky-bindings-python
Mac
brew install libmad libpng jpeg-turbo SDL2 openal-soft
Linux
sudo apt-get install libsdl2-dev libpng-dev libjpeg-turbo8-dev libopenal-dev libmad0-dev libglew-dev libgl1-mesa-dev libegl1-mesa-dev libgles2-mesa-dev uuid-dev
Windows
Invoke-WebRequest https://endless-sky.github.io/win64-dev.zip -OutFile win64-dev.zip
Expand-Archive win64-dev.zip -DestinationPath . -Force
Remove-Item win64-dev.zip
cd endless_sky/endless-sky
patch -p1 < ../../patch.diff
cd ../..
pip install
开发笔记
更新Endless Sky补丁
这些绑定使用Endless Sky的补丁版本来去除线程并做了一些其他更改。
要更新补丁
- 在endless_sky/endless-sky子模块中做出更改
- 将此目录作为工作目录,运行
git diff > ../../patch.diff
在更新Endless Sky使用的版本后,这可能是必要的。
此补丁的目的是使Python绑定工作;如果将来将此仓库与Emscripten编译的JavaScript绑定结合,则需要扩展。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源代码分发
endless-sky-bindings-0.0.14.tar.gz (686.1 kB 查看哈希值)
构建分发版
关闭
endless-sky-bindings-0.0.14.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ab79933c15a4f0a2611a1b39ba2f1b9dc4e29cceb6d07874cdcfe0abb26d9e0c |
|
MD5 | ae731c914bca249371bc1affd4bd0a8e |
|
BLAKE2b-256 | e7767c886eb5ec95f762138abf8dcbdee3427df00efab93e795adbfa9f35abcb |
关闭
endless_sky_bindings-0.0.14-cp39-cp39-win_amd64.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 15745bb3e4e5b2c2995dd0e3736dd0d7d9c36a5b0bc8018a7ed509fd1fb625c1 |
|
MD5 | 66ec91844f58097b20d68298f7fd005d |
|
BLAKE2b-256 | 2310f39479b1a48747be08233d269081737b4bc5f8b4e801919f56f37f7db2dc |
关闭
endless_sky_bindings-0.0.14-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ac7398d1756f0b8ae7f1eb2de93e2b0154b90f0483bcfcf8055f8a5adf7af159 |
|
MD5 | e6be248473bbde5f80a9a8a74ed3477e |
|
BLAKE2b-256 | 26ba93ae848d601cb4ab5ca1b9f258bc2d039898a244b64944466335c728afbd |
关闭
endless_sky_bindings-0.0.14-cp39-cp39-macosx_10_15_x86_64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 7f28c843f7f8878691b30eee86c89a658ad02ba02877e29820099954e71f0542 |
|
MD5 | 166fd57830ba6ea78dcaad7987b24270 |
|
BLAKE2b-256 | 5abd2de12d5be6e6dcd497d565bdacbf35b8b7293638ba9150b342fe99540f7d |
关闭
endless_sky_bindings-0.0.14-cp38-cp38-win_amd64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 3c82f9b7f790fd76a6fab6b2c62ebedea6fa829e95d58213576c2971d90e6465 |
|
MD5 | 3b9cadfad7807bf025a461bf8c5e2dfb |
|
BLAKE2b-256 | d885b70ad5ca5285f60b4bb5806fa03583e2d5df4e2dbb9f050ebb88d45f3a62 |
关闭
endless_sky_bindings-0.0.14-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f7d3e4f39798644a1e6267e76e35ae0bf9981392a3b79a1cacbf415d21ce4a98 |
|
MD5 | b286233b0b8336bfb630e172feaa1ba1 |
|
BLAKE2b-256 | fcca3b808611c26db49394b04d3423cc14db4e4d80557f5313ae76745df443f7 |
关闭
endless_sky_bindings-0.0.14-cp38-cp38-macosx_10_15_x86_64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 49aadbe781c01c09c503ee6f134d73f58b2b410d104c64d7f2264dfe0fbd3eb1 |
|
MD5 | 455901f78a92ece5375cf874749cb9cc |
|
BLAKE2b-256 | 635eb80c6eb9b998560510bad4e94c133919a6f7c889e320b636165e5857bb15 |