spaceengine modding语言的python、asp和json抽象

selang的Python项目详细描述


#空间引擎修改语言抽象
使用python,在空间引擎中定义完整的系统。

有了太阳,地球和月亮。
你可以在"mysimplesystem.lp"中写下以下几行:

``asp
root(太阳,"mysimplesystem")。
轨道(太阳,轨道(地球,月亮,"0.005"),1)。
````

ne/install/dir

您现在可以运行spaceengine并按f3搜索并转到"mysimplesystem"。



es)在$path中。




将创建ta/kalgash.json

8个文件:在"data/kalgash.json"中定义的四个kalgash系统中,每一个都有两个文件。
这两个文件对应于spaceengine modding接口,需要一个星记录(应命名为system record)和一个行星记录(应命名为ob请注意,以`.star.sc`结尾的星记录非常简单。

将直接将生成的文件放入预期的目录中,即"<;spaceengine installation directory>;"/addons/catalogs/{star,planet}/`.


如果需要,可以使用此cli:




api示例
想要用太阳、地球和月亮来复制一个简单的太阳系。

"太阳":(1,轨道(1,偏心率=0.04),
1:(‘月球’,轨道(0.05),

1:(‘月球’,轨道(0.05),


{{{{{非显式物体
1:ref(‘地球’,地球质量=1.2),"‘超级地球




/>地球到地球模型(模型,'~/游戏/航天引擎/航天引擎/航天引擎/'
``


//
//////
se lang使用的内部模型非常简单,因此可以直接使用:

``python
从selang导入ref,orbit,model,model_到se


model=model(
"我的小系统",

("太阳",1,orbit(1,偏心率=0.04)),
(1,"月球",轨道(0.05))
),
{
1:ref('地球',地球质量=1.2),超级地球
}


很好的记录和强大的。然而,除了文档中描述的简单情况之外,
您最终将编写python脚本[以自动化一些标准的东西,比如rings](lucas.bourneuf.net/blog/uess.html)。

任何格式创建的内部模型。
任何情况下使用的内部模型。






asp
asp是(逻辑)编程语言,类似于prolog。
它允许逻辑关系的高级表达,这对于DSL来说非常有趣。

缺乏黑洞,轨道(红矮星,地球,"0.2",10)。




%kalgash 3系统
轨道(黑洞,环(太阳,12,轨道(1,地球,1),轨道(1,地球,1)),20)。




%kalgash 4系统
%kalgash4系统
轨道(黑洞,环(太阳,8,太阳,8,1,逆行)。
轨道(黑洞,地球,"2.5")。
轨道(黑洞,环(太阳,8,太阳,8,"4")轨道(黑黑洞,环(太阳,8,"4")。




<

<
br/>
%kalgash 5系统
轨道(黑洞,环(sun,8),1,逆行)。
轨道(黑洞,地球,"2.5")。
轨道(黑洞,环(蓝巨人,8),20)。
````
请参阅[data/](data/)中的其他示例。



json
json与python基本类型非常接近,因此可以实现到python api的准明显映射。

输入ED。它很冗长,但很简单:
``json
{
"name":"kalgash 3"、
"uid":"kalgash"、
"type":"黑洞"、
"childs":{
"type":["ring"、12,"sun"]、
"distance":20、
"childof":{
"1":{
"type":"earth"、
"distance":1
}
}
}
}
```


参见[data/](data/)中的其他示例。




spaceengine的ng可能不是这两种类型之一,
但是我很高兴制作了相应的解释器,并将它们用于一些[用例](lucas.bourneuf.net/blog/se-lang.html)。





dev
-[x]asp输入:简短而简单。
-[x]json输入:不可编程,但对简单工作很有用。
-[x]python输入:良好的enough
-[]lisp输入。
-[x]从文件中读取输入
-[x]从[planetplanet.net]复制kalgash系统(https://planetplanet.net/2018/03/21/asimov-kalgash-take2/):[参见博客条目](https://lucas.bourneuf.net/blog/se-lang.html)
-[x]复制[uess](https://lucas.bourneuf.net/blog/uess.html)
-[x]找到简化uess e的方法编码:python完成这项工作。
-[x]用户为环设置的间距
-[x]对环元素的特定处理
-[x]允许对对象使用标准名称:`sun`,`earth`,…
-[x]允许对对象使用非标准名称:`planet`和`star`函数。
-[]注入任意的航天引擎脚本代码。
-[x]全轨道定义
-[]测试套件
-[]将星重心作为对象处理(底线:处理二进制对象所必需的)








是的。


[SE先锋](https://github.com/aluriak/SE先锋),用于异步多人游戏。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
url开头的java Android改型查询   java如何配置open fire从外部数据库对用户进行身份验证?   OpenMapStreet API/GoogleMap API在Java/Swing应用程序中的使用   java如何将线性脉冲应用于可变点   java包含来自动态属性值的文件   LinkedBlockingQueue中的java addAll()是线程安全的(如果不是,解决方案是什么)?   swing将JPanel保存为图像   Java哈希集中元素的集合排序   java如何从网站下载整个文件   区分“类括号”和“方法括号”的java JFlex Lexer   在Java中,如何在不使用for循环的情况下执行n个数组的元素级加法   java在一个事务中插入大量数据   java无法在安卓上使用Firebase Auth登录