最近因为笔记本数据丢失,翻网盘的时候找到了大学时候写的基于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游戏,目前已经完成了战斗系统部分,正在编写脚本部分和任务系统。
-------------------------------------------------------------------