【开源】嵌入FC(小霸王游戏)模拟器插件

仓库地址:lcc-nes

lcc-nes

Cocos Creator 嵌入FC(小霸王游戏)模拟器插件。

前言

最近在vscode上发现一个小霸王插件,间接的了解到有纯js实现的FC模拟器jsnes。于是手痒,就做了这样一个插件。你可以很方便的在你的creator游戏中嵌入这个模拟器,唯一遗憾的是creator不提供脚本控件音频的API,所以目前插件可能只有web平台有声音。(有想是支持原生平台的,但是好像改了底层代码就无法使用这种插件方式了,看以后有空吧)

安装

安装十分简单,只要把这个项目作为Creator插件放到插件目录就可以了,具体请查看Creator插件包

使用

使用也很简单,所有组件在LCC NES组件组里面,如下图:

avatar

第一步,先添加Emulator组件到节点上。

如下图:

avatar

图片里面有个热血格斗传说.nes的二进制文件,这是插件里面测试用的,你可以在插件roms目录里面找到,这个目录可能后面会删除。所以ROM可以自己下载,因为creator二进制文件必须是.bin结尾的,所以你应该需要修改文件后缀名,测试rom位置如下图:

avatar

第二步,添加显示对象。

Emulator组件有getTexture() 函数可以获得渲染的纹理,你可以用在需要的地方。插件也提供Sprite组件的显示方式,可以在节点上添加DisplaySprites组件,然后把Sprite组件拖到里面的数组中。如下图:

avatar

现在应该就可以看到显示的内容了,大概如下图:

avatar

第三步,添加手柄控制器。

Controller组件添加到里面去,里面可以选择玩家的数量,目前jsnes支持2个玩家,然后就可以修改按键映射。如下图:



你也可以在代码里面控制,可以直接看源码:

// 常量定义,注意模块嵌套
module lcc {

export module nes {
		
/**
 * 玩家序号
 */
export enum Player {
    PLAYER_1 = 1,
    PLAYER_2 = 2,
}

/**
 * 游戏按钮
 */
export enum Button {
    A       = 0,
    B       = 1,
    SELECT  = 2,
    START   = 3,
    UP      = 4,
    DOWN    = 5,
    LEFT    = 6,
    RIGHT   = 7,
}
}
}
  • 通过节点事件控制游戏: nes_button_event
// 玩家1,游戏按钮A, 按下
this.emit("nes_button_event", lcc.nes.Player.PLAYER_1, lcc.nes.Button.A, true);

// 玩家1,游戏按钮A, 放开
this.emit("nes_button_event", lcc.nes.Player.PLAYER_1, lcc.nes.Button.A, false);

// 注意: 虽然是直接通过代码控制,但是PLAYER_1玩家的控制器必须存在。也就是说必须有PLAYER_1的Controller在节点上。
  • 也可以直接获取Controller组件,调用onButtonEvent(lcc.nes.Button.A, true)这种方式实现。

结束语

不管能不能用上,先储备起来。。。

13赞

先 mark

优秀plus

mark一下

mark一下

666,更多游戏这功能终于有用了

可以上微信小游戏吗 能不能过审?

我几天前也注意到 vscode 这个插件了,然后开玩笑和同事说,咱们可以做个 creator “摸鱼” 插件,打开 creator 然后在里面玩 FC 游戏。

看来还是我境界低了,楼主对需求把握得更好。

mark一下

一看就是工作不饱和的样子!:joy:

楼主牛批,之前只能想想,现在有人实现了,6666:+1:

楼主,我这边用 2.3.4版本的编辑器,会有这个报错

0 already defined in Enum.
at Object.cc.errorID (E:\Program Files\CocosDashboard\resources.editors\Creator\2.3.4\resources\engine\bin.cache\dev\cocos2d\core\CCDebug.js:257:6)
at Object.Enum (E:\Program Files\CocosDashboard\resources.editors\Creator\2.3.4\resources\engine\bin.cache\dev\cocos2d\core\platform\CCEnum.js:87:12)
at disable-commonjs://C:\Users\Administrator.CocosCreator\packages\lcc-nes\assets\scripts\lcc-nes.js?001:397:30
at disable-commonjs://C:\Users\Administrator.CocosCreator\packages\lcc-nes\assets\scripts\lcc-nes.js?001:405:10
at disable-commonjs://C:\Users\Administrator.CocosCreator\packages\lcc-nes\assets\scripts\lcc-nes.js?001:505:7
at disable-commonjs://C:\Users\Administrator.CocosCreator\packages\lcc-nes\assets\scripts\lcc-nes.js?001:506:3
at disable-commonjs://C:\Users\Administrator.CocosCreator\packages\lcc-nes\assets\scripts\lcc-nes.js?001:566:3

@495904500

这个不能忽略吗, 主要是我直接用的cc.macro.KEY里面的按键枚举, 好像不太标准,有数值混在里面。

这个只在编辑器里面出现直接不用管他

主要是在项目里面,最好可以去掉。

不然每次项目编译都要去检查自己的项目是否有报错,每次都得核对一下是否你这个插件的报错还是我项目里面的报错。
挺耗时间的,体验比较差,就感觉有点烦。

大佬要是可以解决了就更棒了。

不管怎样还是得感谢大佬的无私开源精神。

先mark一下再说

不能过审,早就上架过了

好了,重写了键盘映射这一块, 更新项目
但是正在使用的Controller组件必须先移除,然后再重写加入

大佬能否帮忙看看,为什么我键盘没办法控制游戏的控制按键,没办法玩游戏,只能看游戏一直自动播放。

是我工程处理错了么。

这个是我测试的项目工程:
testFcNes.zip (2.2 MB)

运行时不明白为什么会有个链接请求,而且失败了,不知道是不是这个原因。

控制脚本处理:controllerScript.js start()

其他节点组件的处理