• 浅谈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游戏,目前已经完成了战斗系统部分,正在编写脚本部分和任务系统。

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

  • 相关阅读:
    敏捷实践-学习实践资料汇总
    从数据仓库到数据湖—浅谈数据架构演进
    JVM知识点汇总备忘
    Protobuf的使用和原理
    kafka数据定时导入hive便于后续做数据清洗
    Mybatis Mapper接口动态代理实现原理及二次开发
    软考论文-写作大纲-备考思路总结
    css3另一个属性写法
    css3动画效果
    jquery点击鼠标后关闭图片
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/2989598.html
Copyright © 2020-2023  润新知