最近因为笔记本数据丢失,翻网盘的时候找到了大学时候写的基于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游戏了。

下面是一些截图:

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

show_text的脚本的部分:

选择菜单部分:

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

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

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

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

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

avg是java关键字_浅谈AVG游戏中的脚本相关推荐

  1. java扫码枪键盘_浅谈在react中如何实现扫码枪输入

    触发原理 原理就是监听键盘输入,比如扫一个为6970596130126的69条形码,用扫码枪扫一下会在光标位置依次输出: 6 9 7 0 5 9 6 1 3 0 2 6 但这不是完整的,所以需要写一个 ...

  2. java 定时任务怎么关闭_浅谈springboot项目中定时任务如何优雅退出

    在一个springboot项目中需要跑定时任务处理批数据时,突然有个Kill命令或者一个Ctrl+C的命令,此时我们需要当批数据处理完毕后才允许定时任务关闭,也就是当定时任务结束时才允许Kill命令生 ...

  3. mysql declare与set的区别_浅谈MySQL存储过程中declare和set定义变量的区别

    在存储过程中常看到declare定义的变量和@set定义的变量.简单的来说,declare定义的类似是局部变量,@set定义的类似全局变量. 1.declare定义的变量类似java类中的局部变量,仅 ...

  4. mysql存储过程set什么意思_浅谈MySQL存储过程中declare和set定义变量的区别

    在存储过程中常看到declare定义的变量和@set定义的变量.简单的来说,declare定义的类似是局部变量,@set定义的类似全局变量. 1.declare定义的变量类似java类中的局部变量,仅 ...

  5. python中if和elif的区别_浅谈对python中if、elif、else的误解

    今天下午在练习python时用了"if...if...else..."的分支结构,结果运行出来吓我一跳.原来我想当然的认为"if...if...else..." ...

  6. python中分支语句elif与else的区别_浅谈对python中if、elif、else的误解

    今天下午在练习python时用了"if...if...else..."的分支结构,结果运行出来吓我一跳.原来我想当然的认为"if...if...else..." ...

  7. java中virtual关键字_浅谈virtual、abstract方法和静态方法、静态变量理解

    说点对这几个容易混淆的词的理解: 1.c++中的virtual方法的 virtual关键字主要是防止继承中重复继承父类的同一个方法而设置的标识. 2.virtual与abstract关键字的不同之处在 ...

  8. scale和java比较_浅谈java中BigDecimal的equals与compareTo的区别

    这两天在处理支付金额校验的时候出现了点问题,有个金额比较我用了BigDecimal的equals方法来比较两个金额是否相等,结果导致金额比较出现错误(比如3.0与3.00的比较等). [注:以下所讲都 ...

  9. java 小偷_浅谈小偷程序之Java

    浅谈小偷程序之Java 题外话:如果用EditPlus作为编辑器的话如果保存的格式默认为unicode的话那么在里面写中文用resin作为应用服务器的话就可能出现报500 Servlet错误哦!主要是 ...

最新文章

  1. 一文读懂生成对抗网络GANs(附学习资源)
  2. .Net桌面程序的旗舰--参加亚控科技组态王7.0发布有感
  3. 《javascript设计模式》笔记之第七章:工厂模式
  4. 莫烦python简历_Matplotlib画图教程
  5. ubuntu pycharm设置快捷图标_这些Ubuntu中的小技巧,你知道吗?
  6. Jedis与Redisson对比有什么优缺点?
  7. jquery getjson php,jquery中调用php json函数的方法分享
  8. 4.1 编程语言的几个发展阶段
  9. VB.Net实现Ftp上传的方法
  10. 计算机网络习题——循环冗余校验
  11. 微信群二维码活码生成源码
  12. 黑马程序员——多态和抽象类的相关知识
  13. 为谷歌浏览器Chrome创建多个用户
  14. Jetty9开发(1)
  15. ZZ 自制低成本3D激光扫描测距仪(3D激光雷达),第二部分
  16. 失落的帝国:盛大业务大收缩
  17. 计算机入门可以做什么工作,如何上好计算机入门课
  18. 抽象类,多态与鸭子类型
  19. oracle库函数,Oracle:函数目录
  20. GOOGLE HACKING 系列文章

热门文章

  1. ubuntu20.4服务器搭建ftp并连接(阿里云服务器)
  2. 如何批量采集饿了么外卖商家信息
  3. 一个整数N除以2余1,除以3余2,除以4余3,...,除以10余9,但除以11余0,计算符合该条件的最小整数
  4. 使用挤压、哈哈镜、扭曲进行文字图像增强
  5. 手提计算机键盘中的除法,手提电脑除法是哪个键
  6. 创新模式存争议、资质审核不负责,BOSS直聘IPO道阻且长?
  7. 网页设计用什么软件最好
  8. 基于CBO的执行计划简介
  9. 网络流量分析软件 mysql_网络流量监测图形分析工具 Cacti
  10. QT + C++《QlistWidget 的基本运用》