- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
基于Python的网络游戏脚本系统的设计与实现
摘要:传统的网络游戏开发采用c/c++实现游戏的逻辑功能,随
着游戏内容越来越丰富以及快速变化的市场需要,c/c++已经不能
满足开发者对于语言灵活性、易用性、动态编译的需求。为此文中
提出了一种基于python的游戏脚本系统,通过将游戏内容与游戏
引擎相分离、避免硬编码,提高了游戏的开发效率和稳定性。
关键词:python;网络游戏;脚本;集成
中图分类号:tp391.9文献标识码:a文章编号:1009-3044
(2013)09-2109-03
1概述
网络游戏发展至今,市场竞争相当激烈,这就促使开发者必须快
速、高效的响应玩家需求才能站得一席之地。传统的游戏开发中大
量使用c/c++技术,虽然c/c++有着明显的性能优势,但很多时候
我们关心的不是程序的运行效率,而是程序的开发效率、维护效率、
可移植性等[1]。在游戏中使用python脚本,就正好能满足这些目
标,小到一些计算公式,大到游戏的控制流程都可以通过脚本完成,
且python支持运行时动态修改,能做到代码热更新。因此,构建
基于python的网络游戏脚本系统是非常具有应用价值的。
2python动态脚本语言简介
python是一门优雅、简约、健壮的开源解释性语言。它诞生于
1989年,由guidovanrossum开发设计。python最初源自于某个
研究项目,为了提高工作效率而创造的一种通用程序设计语言。经
过十来年的发展,python已经逐渐完善,由于其强大的扩展性和丰
富的库支持,很多领域都出现了它的身影,譬如youtube、豆瓣等
就是使用python技术的成功案例。python的主要特点有[2]:
1)进入门槛低python语法相当的简洁,编写出的程序通常短小
精悍,且类似于自然语言,符合开发者的使用常识和直觉,再加上
设计精巧的数据结构和内存管理,使得它成为一门容易学习的编程
语言。
2)面向对象python中面向对象的实现是通过使用自定义的类和
对象来完成的,这种特性是在其设计之初就被赋予的。
3)内存管理功能python解释器接管了内存管理,这使得开发人
员可以更关注于程序本身逻辑的实现,而不必像c/c++程序员那样
常常分心于内存事务的处理。正因为如此,python开发的程序周期
更短、错误更少。
4)可方便地嵌入宿主语言并与其通讯通常一些特别强调性能的
地方,可以用c来编写,然后在python中调用这些扩展模块以达
到性能提升的目的。反之c/c++中也可以嵌入python解释器,这样
就可以替代动态连接库形式的接口,使得程序开发更灵活。
5)丰富的库python的标准库包含有数百个模块,其功能涵盖与
操作系统、解释器、internet等的交互,所有这些模块都已经充分
测试,可以直接在开发中使用。
3脚本系统架构设计
脚本在游戏开发中扮演着粘合剂的角色,如何高效、快捷的使用
和管理脚本,使之服务于游戏逻辑的开发并驱动整个游戏进程就是
我们需要解决的问题。脚本和宿主代码通常是以事件为中心进行相
互交互[3],具体在游戏中与脚本交互的就是我们的游戏引擎。从
图1中我们可以得知脚本系统的基本框架,即脚本语言本身和脚本
接口模块。脚本系统设计的关键在于接口模块的实现,为了提供一
个通用的脚本系统设计方案,我们将脚本接口模块集成到引擎中。
脚本接口模块主要作用是方便python脚本的扩展和嵌入,为python
脚本与游戏引擎之间提供一个数据交互的通道,从而将游戏的逻辑
和具体实现分离开来[4]。
3.1脚本接口模块的总体设计
脚本接口模块的总体设计如图2所示,它由游戏世界接口、脚本
对象管理器、脚本包装器、逻辑脚本、消息处理器脚本几个部分组
成。其作用主要包括以下一些方面:
1)提供python脚本能够实现游戏具体功能的接口,具体包括脚
本可以创建游戏对象、修改游戏中角色对象属性、设置定时器、打
印调试日志等功能,这是由游戏世界接口管理完成的。
2)便于引擎管理脚本文件,使得引擎能够根据逻辑灵活的调用
相关脚本。这是通过脚本包装器将脚本文件由一个独立的管理类模
块管理实现的,脚本包装器由逻辑脚本对象、消息处理器对象组成。
其中消息处理器对象维护着一个消息到逻辑处理的映射关系表。
3)通过修改消息处理器对象维护的映射关系表,引擎内核可以
动态的加载、修改、删除脚本对象,从而实现游戏逻辑的热更新。
通
文档评论(0)