浅谈AVG游戏中的脚本

最近因为笔记本数据丢失,翻网盘的时候找到了大学时候写的基于XNA的2D游戏引擎的代码,和为这个引擎写的使用示例。

其中比较大点的示例就是一个ACT游戏,一个AVG游戏和一个A*寻径算法。

因为当时的AVG游戏的脚本没有加密,就拿出来了看了一下。


谈到脚本,我想大家都不陌生,通过简易快速和可扩展性俘获大家的脚本语言比比皆是。

之前在百度博客的时候,就有很多人问道过AVG游戏的脚本。


其实AVG游戏的脚本,就是比较简单的逐行运行的脚本,大多数时候,都可以自己简单的定义一下脚本命令然后自己进行解析执行。

下面给大家看看我之前的AVG游戏的脚本。



最开始是几个set命令。前面是名称,后面其实是相应的资源的代号。使用中文进行set,可以在后面写脚本时更能清楚的使用。

audio_start就是播放音乐的指令,后面的音乐代号其实也可以在开头用set进行中文化,不过由于音乐的数量并不多,在这里就直接播放了。

show_text 就是显示文本后面有文本内容, 使用的字体的代号,以及显示的位置。后面的游戏截图会显示的。

disapp_all_text就是将之前显示的文本都消失。

fadein back(家) 就是家的背景渐变显示出来。

同理,fadeout back。就是将背景渐变的消失。

string xxxxx。 也就是AVG游戏中的逐字显示文本了,通常是独白。

name xx string xxx。 就是AVG游戏中某个人物说话了。 前面是人物名称。


下面看看后面的脚本:



wait指令,其实是不进行的操作的,就是延迟一条脚本。这个看各自的需求了。

后面有一个很重要的选择。 选择在AVG游戏中是非常重要的,因为不同的选择,意味着不同的剧情和不同结局。

我在这里才用了menu select(choose)<2>指令。

choose在这里是一个变量,用于记录你的选择ID而<2>则是选择的数量,由于我的脚本是逐行解析运行,所以这里定义出选择的数量会比较的方便。 后面则是选择框的大小了。

menu end 用于选择定义的结束。

然后就是if语句了,通过if 判断 choose选择项,从而通向不同的脚本。

这只是简单的方式,如果是自定义的命令脚本,并一次将所有的脚本进行解析的话,其实可以在脚本内部进行跳转,只不过我觉得那样看起来会比较乱(类似C++中的goto...);

下面的是1.mg和2.mg脚本。由于我的只是示例所以脚本并未命令,通常用数字做命令到后面会非常乱,并不建议。

1.mg



2.mg



大家可以看到,通过不同的选择,一个去了咖啡厅,一个去了公园。这也是AVG游戏中常见的套路。

其实还会有音效effect, 天气等的指令,在这里不一一列举出来。都是举一反三的。

很多人不了解AVG游戏的运作,最主要的是很少有人愿意把自己游戏的脚本拿出来共享。

我相信大家通过这样的脚本,也能大致的开发自己的AVG游戏了。



转载请注明出处:http://blog.csdn.net/ml3947


下面是一些截图:

主菜单,这里其实是有飘樱花的动画的。


show_text的脚本的部分:




选择菜单部分:


-------------------------------------------------------------------

当时的游戏引擎WingEngine会在以后的文章中进行介绍。虽然微软很多年没有更新XNA了,但是因为有一个开源的项目MonoGame,我的代码可以无缝的移植过去,并运行成功了。

可能会在以后继续介绍一下。

同时本人也正在使用Cocos2d-x开发一款传统的RPG游戏,目前已经完成了战斗系统部分,正在编写脚本部分和任务系统。

-------------------------------------------------------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值