脚本在游戏中的应用

有幸在当前的公司接触了这种完全由脚本驱动的游戏开发。项目组的全部是做脚本开发的,两个不同的游戏,换一下脚本和资源,就成了同一个游戏。游戏的不同其实就是脚本和资源的不同。这和大多数游戏开发公司都不一样。

游戏引擎包含了一个Python引擎,渲染引擎,动画模块,网络模块,事件回调模块,资源管理模块。

Python引擎是和Python相关的部分,封装游戏引擎相关接口给脚本,解析脚本,执行脚本。后面这几个模块都要通过这个模块和脚本沟通。比如脚本创建一个渲染对象就需要调用引擎的创建渲染对象的接口,引擎先生成这样的一个C++对象,然后再生成一个相关的CPython对象(即Python对象在C++里面的表示),把二者联系起来并返回给脚本这个CPython对象。脚本执行这个对象方法的时候,引擎会获知这个CPython对象和方法,然后取出CPython对象对应的C++对象,调用相应函数即可。引擎回调Python对象的时候,会根据C++对象找到CPython对象,然后根据函数字符串名字找到这个脚本函数所对应的CPython对象,执行即可。Python对象的导出要做到完备性,脚本所需要的函数都应该导出,比如渲染对象的SetParent函数,把渲染对象挂到渲染树上。而一些不必要的接口也不应该i导出,比如渲染的对象渲染函数,因为具体的渲染应该对脚本逻辑透明。

渲染引擎是最复杂的,但是对脚本来说应该尽可能简单。主要包括1,节点的创建与挂载,至于销毁与卸载其实是不必要的。当Python对象引用计数为0的时候,会触发CPython对象的Dealloc函数,引擎可以在Dealloc函数判断渲染对象的父节点是否存在,然后把渲染对象从

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值