引言

这是一篇既有干货,又接地气的教程,能够帮助你快速达成以下目标
1.了解RPGMAKER MV插件内在机理;
2.将所学的语法知识运用于实战;
3.制作出自己心仪的游戏!

本人作为之前只学过C++的学生,为了完成作业主动钻研,拜读了很多大神的博客,然而他们大多存在着只是讲清用法,却不教会读者如何探索,自我学习的过程,所以我结合自己的艰难求索之路,尽力用生动的语言告诉读者我是如何学习的,通过这个过程的讲解,使得读者具有举一反三的能力。

1.1前期准备

1.1.1读者

1.作为读者,你需要熟练掌握JavaScript基本语法,本篇博客主要讲插件,中间遇到与插件制作密切相关的知识比如原型链会简要提到,但并不会详细讲,建议读者到B站上搜索JavaScript教程学习,作为解释型语言,其比C++容易掌握,如果有相关基础可以快速入门。其中对于插件制作较为重点的内容有:this指针,数组,函数与方法,原型链,json表;至于网页编辑才要用的DOM之类的可以不学。

2.需要初步了解RPGMAKER MV的基本知识,即游戏引擎中不需要自己动手写代码的部分;

3.插件怎么安放,插件怎么运行,插件头几行注释和一些相关参数是什么含义有人解释比我更清楚,这里推荐大家看一下@地球上的大海的相关博客

1.1.2工具

1.毫无疑问,RPGMAKER MV(注意其它后缀的RPGMAKER不一定是用JS语言的,RPGMAKER有许多版本,注意你选择的是哪种,目前来说MV是最先进的),我们之后简称其为RPGMAKER或者RM;

2.一个用来写代码的软件,JavaScript专用的有HBuilder(适合网页编辑)等,本人用的是VS2013,对于制作插件足够用了(理论上记事本也可以写代码);

3.W3School离线手册,使用它主要是可以找到JavaScript语言中对象的自带方法,比如数组方法[Array]和数学方法[Math]都经常需要在那查找;

4.RPGMAKER官方帮助文档中文版(上网搜一下可能有,这是许多大佬翻译的,有时进不去),选择JS库,可以看到RPGMAKER核型代码中定义的所有对象,并查询它们的属性与方法。
如果不介意看英文(或者找不到中文文档),可直接在引擎界面点击键盘F1,跳到英文文档界面,选择JS library。读英文更有利于你的编程。
5.我开了一个专栏提供一些供读者查阅的帮助文档,如精灵对象属性方法的解析,内容根据本人自己的理解整理,如有错误还请指出,随缘更新,见“插件制作辅助工具书”专栏。

1.2 RPGMAKER内建逻辑

1.2.1游戏到底是怎么搭建的?

先说什么是游戏引擎吧,在很久以前,游戏是用纯代码敲出来的,这样就有人想,同类型的游戏很多功能是相同的,比如控制角色移动,或者射击游戏的射击系统,为什么不能把代码封装起来,游戏需要用到的功能模块就像搭积木一样搭上去不就行了吗?于是游戏引擎应运而生,虽说引擎,但并不是说缺少它游戏就不能发动,它更像是一个脚手架和一堆砖块,就等着你怎么将其垒成楼房,而不用管脚手架怎么搭,或者砖块怎么烧。因为有了引擎,游戏制作更加简单方便,也不用每个人都去涉及晦涩的底层代码,有了游戏引擎,游戏制作才能不断进步,让上百GB的游戏成为可能。

RPGMAKER顾名思义,是用来做RPG游戏的引擎,这款引擎上手简单,但是由于较老,缺少很多现在的主流功能,所幸,这个引擎专门预留了插件接口,可以让我们接入插件,实现更多功能,没有做不到,只有想不到。要想做好插件,得先明白内建逻辑,接下来,我来带大家认识一下。

1.2.2游戏文件夹里的内容

当你新建一个项目时,就会获得一个大小上百兆的文件夹(打开引擎,在菜单栏选择“游戏”–“打开文件夹”即可快速打开)。

JavaScript的一大特点就是万物皆对象,除了五种基本数据类型外,各种内容都是以对象形式存储,处理,这些JS库就内建了游戏中需要用到的所有对象,先让我们认识一下它吧。

1.audio,movie
存储音频和视频的文件夹
2.data
存储游戏数据的文件夹,以json表的形式存储,存储如技能描述,角色描述,地图描述等内容(为什么叫“描述”,这个问题将在以后的“临时数据与系统数据”模块讲解)
3.img(即image的缩写)
用来存储游戏中的位图文件
4.js
核心代码,其中包括JS库代码以及plugin(插件)代码
5.save
游戏存档文件夹

1.2.3 JS库中的内容

点开js文件夹,你会看到如下几个js文件,这些就是引擎制作者给你搭好的脚手架,里面定义了各种游戏中的各种对象以及其方法,这时候你应该知道插件该干什么了吧?插件就是要重写这些方法,让它们保留原有的功能基础上夹带一些自己的“私货”,这些我都会在第三节详细讲述,接下来先让我们认识一下这几个文件究竟是干嘛用的吧。

windows

官方解释:游戏中所有窗口的原型

scenes

官方解释:游戏中所有场景的原型

spirites

官方解释:精灵类,具有显示动画特性的对象

以上三种对象我在第六章里详细解释

managers

顾名思义,管理者。

想象你的游戏是一个巨大的学校,你作为一个校长,不可能包干所有事,你只会管理,但是你不会数学,不会语文也不会英语。

有一天你说,我要举办一个数学比赛,那你也只能去找数学老师,没办法,你不知道怎么出数学题。

在这个游戏中,你说,我要设置一个方法,当执行这个方法时,就获得1000金币,然而你并不知道金币存在哪个房间(金币放在哪个原型链),也不知道怎么找到获得金币的方法(能够直接修改金币数据的函数)

所幸,你有一大群管家(managers)正在待命,你说:“有哪个管家是管金币的?”,这时物品管家(ObjectManger)跳了出来说:“是我”,你问:“你都会干什么?”,他抖了一篮子他会干的东西(通过查源码或者官方帮助文档可以知道),很明显,这家活只会管理物品,是个专业型人才,其中有一项技能(方法)就是修改金币的数量。于是好了,你就可以告诉他,当你说“恭喜发财”时,你就要让我的金库多出1000金币(调用ObjectManger.GetGold(1000)),这样,你根本不需要知道管家怎么得到的金币,金币放在哪,你只需要找到他并对他下达命令即可。

managers.js就提供了这样一大堆忠心耿耿的管家,包括数据管家(DataManger),位图管家(ImageManger),物品管家,配置管家(Config),存储管家(Storage),音频,视频,文本管家,场景管家(Scene),战斗管家(Battle),插件管家(Plugin)。随心所欲使唤他们吧。

plugin

一个用来存储插件配置的文件,作用和构造和json表差不多,当你修改了“插件管理器”的内容,代码层面的变动就发生在这个文件

1.3 内建逻辑

根据我的理解,游戏运行时,代码执行过程如下

1.调用核心代码,这部分过于高深暂时无法理解;
2.生成好场景中包含的精灵对象,生成场景,场景压入栈底,如果出现窗口则将其入栈,栈堆最上层的窗口显示,退栈表现为窗口关闭,入栈表示窗口打开,场景切换时栈堆被重置;
3.选择新游戏或者继续时,调用save.js里的数据加载存储数据,游戏运行中不断加载临时数据,调用场景的JS建立游戏场景,游戏开始。

上述只是最简单的浅层理解,但是我们暂时还不需要知道太深的内容,当你逐步摸清源代码时,你就自然地对游戏架构有清晰理解了。


如何自学

大家学习插件,要多琢磨别的作者写的源码,想看书一样多读多想,自然就学会了,这里推荐论坛"project 1",去上面下载些代码看看,自己写上注释从而达到理解,许多优秀的源码不仅教会你基础知识,也能教会你编程的一般思想。
此外,还要结合别人写的代码,查看对应的引擎源码,这样可以完全了解一整块的知识。

这是我的学习方法,以供参考


附录:一些可能遇到的问题补充,不断完善中

1.插件显示文字时出现乱码

我是用VS2013进行编辑的,给出相应的解决方案:
打开JS文件,选择:文件——高级保存选项——编码选择Unicode(UTF-8 无签名)即可。

2.函数未定义错误

出现“cannot read propety ‘call’ of undified"或者” undified is not a function"错误一般是有些函数未定义,这时可以在你以确定没问题的位置放alert(你认为可能有问题的函数)(或者直接在全局的位置放,因为全局函数优先调用),然后打开调试就可以知道到底那个函数是否定义,定义得怎样了。


链接

第二节:如何理解插件,以及编写代码时的注意事项
第三节:重写方法预备知识教学
第四节:重写方法(一):命名空间

新人创作不易,还望看了觉得有用的朋友顺手点个赞再走。有什么问题欢迎在评论区提出。

RPGMAKER游戏引擎基于JavaScript的插件制作(一)——前期准备以及RPGMAKER内建逻辑相关推荐

  1. RPGMAKER游戏引擎基于JavaScript的插件制作(六)——重写方法(三):在场景(scenes)中创建精灵(Sprite)——复制式重写的实例教学

    因为要开新坑了,准备连续更新把这个插件制作的坑填完,之后更新的是"可交互精灵--事件绑定教学","窗口(windows)教学","自动战斗AI实现-- ...

  2. RPGMAKER游戏引擎基于JavaScript的插件制作(三)——重写方法预备知识教学

    "重写方法"重写指的是对系统原函数的重写,重写方法的目的在于改变系统原函数的作用或者快速制作出与原函数功能类似的函数 3.1 什么是方法 其实这个应该属于语法上的知识,由于非常重要 ...

  3. RPGMAKER游戏引擎基于JavaScript的插件制作(二)——如何理解插件,以及编写代码时的注意事项

    之前写的时候不想写这部分就先跳过了,于是拖到现在- 这篇主要作用是做一些细节上的整理,根据我的经验不断完善,也欢迎在评论中补充. 重要的知识放在重写方法部分. 2. 1如何理解插件 我认为读我这篇博客 ...

  4. 转:高层游戏引擎——基于OGRE所实现的高层游戏引擎框架

    高层游戏引擎--基于OGRE所实现的高层游戏引擎框架 这是意念自己的毕业论文,在一个具体的实践之中,意念主要负责的是物件和GUI之外的其他游戏系统.意念才学疏陋,望众位前辈不吝赐教.由于代码质量不高. ...

  5. 高层游戏引擎——基于OGRE所实现的高层游戏引擎框架

    技术文档(Document) 来自:noslopforever的专栏 高层游戏引擎--基于OGRE所实现的高层游戏引擎框架 这是意念自己的毕业论文,在一个具体的实践之中,意念主要负责的是物件和GUI之 ...

  6. 基于jQuery日历插件制作日历

    这篇文章主要介绍了基于jQuery日历插件制作日历的相关资料,需要的朋友可以参考下 来看下最终效果图吧: 是长得丑了一点,不要吐槽我-.- 首先来说说这个日历主要的制作逻辑吧: ·一个月份最多有31天 ...

  7. 高层游戏引擎——基于OGRE所实现的高层游戏引擎框架(2)

    Preview 游戏形态与其所决定的程序形态 电脑游戏的本质是模拟现实 "游戏是先于人类的,许多学者在关注游戏时候发现,在自然界哺乳类动物里存在着大量的游戏行为-- "尽管游戏的历 ...

  8. html5游戏加入计时器,html5倒计时插件制作圆形计时器代码

    特效描述:html5倒计时插件 圆形计时器代码.计时器 代码结构 1. 引入CSS 2. 引入JS 3. HTML代码 jQuery计时器插件TimeCircles演示1 演示1(默认+美化) 演示2 ...

  9. android游戏引擎汇总

    随着Android系统的使用越来越广泛,了解一下Android平台下的游戏引擎就非常有必要.而同时因为基于Intel x86的移动设备越来越多,我也非常关注支持x86的移动游戏引擎.然而就目前为止游戏 ...

  10. unity三维地图的经纬度如何在二维地图上表示_三维GIS与游戏引擎的跨界融合,打造数字化孪生的平行世界...

    ▲点击关注,收获更多GIS精彩 游戏地图在游戏中起基础和关键作用,它承载游戏中的各种资源,是游戏系统中非常重要的组成部分(图1),所以游戏通常具有明显的地理意义.因此,虽然三维GIS与游戏引擎是两个不 ...

最新文章

  1. 【HDU】5256 系列转换(上涨时间最长的序列修饰)
  2. [RM HA 1] Cloudera CDH5 RM HA功能验证
  3. 网络——发送email(一个简单荔枝)
  4. (3.5)HarmonyOS鸿蒙上下左右方向滑动
  5. Who is the best at Dataset X?
  6. 【文献学习】强化学习1:基于值函数的方法
  7. oracle 删除行记录,使用实体框架从oracle数据库中删除记录
  8. 【Java虚拟机】运行时数据区
  9. dft的matlab实现,DFT的matlab实现
  10. Redis的lua脚本
  11. 一维码和二维码相关知识
  12. 韦根协议W26|W34通讯CPU卡读头HX-W26CPU在门禁梯控设备集成安装注意事项
  13. 如何使用patch命令打补丁
  14. ios 图片加载内存尺寸_iOS图片内存优化
  15. 台式计算机连接投影仪无信号,投影仪连接电脑没反应 电脑连接投影仪无信号解决办法...
  16. 戴尔服务器bios进不去系统,戴尔电脑进不了系统和BIOS
  17. “红山开源”创新论坛 | ChinaOSC
  18. 水晶报表的制作(图表)
  19. 基于微信在线教育视频学习点播小程序系统设计与实现开题答辩PPT
  20. pycharm运行按钮灰色解决方法

热门文章

  1. 有道词典 DIY 离线版
  2. 小型计算器的实现——Java GUI图形界面设计案例
  3. php个人微信聊天机器人,wxpy将个人微信号变成微信聊天机器人
  4. IFIX组态----安全与权限配置
  5. java绘制雷达图_【带着canvas去流浪(6)】绘制雷达图
  6. Android--扫一扫(识别二维码、条码)
  7. Mikrotik ROS软路由设置上网方式(一)
  8. K近邻算法,Matlab实现
  9. 微信小程序地图实现多个位置标记marker
  10. 图解机器学习算法(10) | XGBoost模型最全解析(机器学习通关指南·完结)