Mugen 论坛
首页
注册

【IkemenGo】入门教程2:画面包新特性——多级菜单

White
白绝,论坛管理
2022-01-26 09:16:51

画面包新特性——多级菜单

1 前言

从本篇教程开始讲解IkemenGo的新特性,这部分从画面包开始讲起,之后才是人物和血条。Mugen的画面包,我之前已经写了很多教程,所以关于Mugen原来的内容并不会过多涉及,如果你不了解,可以去千寻网站阅读我的Mugen画面包教程。

IkemenGo的画面包依旧是使用 `system.def` 来定义的,所以配置的格式上和Mugen是一样的。只是在界面、功能、配置项上有了很多增加,所以Mugen的面包师学习IkemenGo的话是很容易的。教程使用的是IkemenGov0.98.1自带的画面包 `data/system.def` ,教程尽量涉及主要的更新,不保证每个内容都讲到。

废话不多说,下面开始介绍。

2 多级菜单

IkemenGo的菜单比Mugen更加灵活,自定义程度也更高。菜单定义在 `system.def` 的 `[Title Info]` 中。默认的配置如下:

;Ikemen feature: Flexible submenu grouping.
;Full documentation of this feature is available on Ikemen GO features wiki 
; Submenu: Arcade
menu.itemname.menuarcade = "ARCADE"                          ;Ikemen feature
menu.itemname.menuarcade.arcade = "SINGLE MODE"
menu.itemname.menuarcade.teamarcade = "TEAM ARCADE"
menu.itemname.menuarcade.teamcoop = "TEAM CO-OP"
menu.itemname.menuarcade.back = "BACK"                       ;Ikemen feature

; Submenu: Versus
menu.itemname.menuversus = "VS MODE"
menu.itemname.menuversus.versus = "1P VS 2P"
menu.itemname.menuversus.teamversus = "TEAM VERSUS"
menu.itemname.menuversus.versuscoop = "VERSUS CO-OP"         ;Ikemen feature
menu.itemname.menuversus.freebattle = "QUICK MATCH"          ;Ikemen feature
menu.itemname.menuversus.back = "BACK"                       ;Ikemen feature

; Submenu: Story Mode
menu.itemname.storymode = "STORY MODE"                       ;Ikemen feature
; story arcs menu items are automatically added before storymode.back
menu.itemname.storymode.back = "BACK"                        ;Ikemen feature

; Submenu: Network
menu.itemname.menunetwork = "NETWORK"                        ;Ikemen feature
menu.itemname.menunetwork.serverhost = "HOST GAME"           ;Ikemen feature
menu.itemname.menunetwork.serverjoin = "JOIN GAME"           ;Ikemen feature
menu.itemname.menunetwork.back = "BACK"                      ;Ikemen feature

; known IP addresses show up before serverjoin.back item
menu.itemname.menunetwork.serverjoin.joinadd = "NEW ADDRESS" ;Ikemen feature
menu.itemname.menunetwork.serverjoin.back = "BACK"           ;Ikemen feature

; This group is hidden and should not be moved to other menus.
; It is opened automatically, after synchronization with online player.
menu.itemname.server.netplayversus = "VERSUS 2P"             ;Ikemen feature
menu.itemname.server.netplayteamcoop = "ARCADE CO-OP"        ;Ikemen feature
menu.itemname.server.netplaysurvivalcoop = "SURVIVAL CO-OP"  ;Ikemen feature
menu.itemname.server.back = "EXIT"                           ;Ikemen feature

; Submenu: Practice
menu.itemname.menupractice = "PRACTICE"                      ;Ikemen feature
menu.itemname.menupractice.training = "TRAINING"             ;Ikemen feature
;menu.itemname.menupractice.trials = "TRIALS"                 ;Ikemen feature (not implemented yet)
menu.itemname.menupractice.back = "BACK"                     ;Ikemen feature

; Submenu: Mission
menu.itemname.menumission = "MISSION"                        ;Ikemen feature
menu.itemname.menumission.timeattack = "TIME ATTACK"         ;Ikemen feature
menu.itemname.menumission.survival = "SURVIVAL"
menu.itemname.menumission.survivalcoop = "SURVIVAL CO-OP"
menu.itemname.menumission.bossrush = "BOSS RUSH"             ;Ikemen feature
menu.itemname.menumission.bonusgames = "BONUS GAMES"         ;Ikemen feature
menu.itemname.menumission.back = "BACK"                      ;Ikemen feature

; Submenu: Mission => Bonus Games
; bonus characters menu items are automatically added before bonusgames.back
menu.itemname.menumission.bonusgames.back = "BACK"           ;Ikemen feature

; Submenu: Watch Mode
menu.itemname.menuwatch = "WATCH MODE"                       ;Ikemen feature
menu.itemname.menuwatch.watch = "CPU MATCH"
menu.itemname.menuwatch.randomtest = "RANDOMTEST"            ;Ikemen feature
menu.itemname.menuwatch.replay = "REPLAY"                    ;Ikemen feature
menu.itemname.menuwatch.back = "BACK"                        ;Ikemen feature

; Options
menu.itemname.options = "OPTIONS"

; Exit Game
menu.itemname.exit = "EXIT"

IkemenGo是支持多级菜单的,也就是说,有的菜单点进去后还是一个菜单列表,这样的菜单姑且叫做组菜单,而有的菜单点进去后就直接进入游戏模式了,这样的菜单叫做模式菜单

IkemenGo的菜单配置项由下面这种格式组成:

menu.itemname.{配置名序列} = {菜单显示名称}

在配置名序列中,你可以添加多个菜单配置项以创建嵌套子菜单,嵌套的菜单配置项之间用英文的点符号 . 隔开。

例如:

menu.itemname.menuarcade = "ARCADE"                          ;Ikemen feature
menu.itemname.menuarcade.arcade = "SINGLE MODE"

这段代码会创建一个显示为 `ARCADE` 的菜单,但是它是组菜单,而不是模式菜单,因为下面的配置项规定了它还有下一级菜单显示为 `SINGLE MODE` ,且这个菜单为模式菜单。

注意这里 `menuarcade`和 `arcade`并不是最终显示的文本,而是配置名,只是方便你在 `system.def`区分各个菜单。一般配置名是任意的,你可以自由更改。

菜单是可以多级嵌套,没有限制,比如你可以继续定义一个

menu.itemname.menuarcade.arcade.watch = "SINGLE MODE WATCH"

这样就会创建一个三级菜单,其中 `watch` 菜单为模式菜单,显示为 `SINGLE MODE WATCH` ,以此类推。

那么IkemenGo是如何知道模式菜单进入游戏后是什么模式呢?这是通过模式菜单的配置名确定的,即尽管菜单的配置名一般是可以任意定义的,但是模式菜单的配置名必须是下面这些,以指定你最终的游戏模式:

  • * `arcade`: 街机模式
  • * `teamarcade`: 团队街机
  • * `teamcoop`: 团队协作
  • * `versus`: 对战模式
  • * `teamversus`: 团队对战
  • * `versuscoop`: 协作对战
  • * `freebattle`: 快速对战
  • * `storymode`: 故事模式
  • * `serverhost`: 建立联机房间
  • * `serverjoin`: 加入联机房间
  • * `joinadd`: 增加IP地址
  • * `server`: 联机成功后显示的组菜单
  • * `netplayversus`: 联机对战(联机成功后显示,必须在server后)
  • * `netplayteamcoop`: 联机协作(联机成功后显示,必须在server后)
  • * `netplaysurvivalcoop`: 联机生存(联机成功后显示,必须在server后)
  • * `training`: 训练模式
  • * `survival`: 生存模式
  • * `survivalcoop`: 生存协作
  • * `watch`: 观战模式
  • * `randomtest`: 随机对战
  • * `replay`: 对战回放
  • * `options`: 设置界面
  • * `back`: 返回上一级菜单
  • * `exit`: 结束游戏
  • * 下面是一些不常用的模式,以后再介绍吧。
  • * `tournament`: 此模式未完成
  • * `trials`: 此模式未完成
  • * `timeattack`: Time Attack
  • * `bossrush`: Boss Rush
  • * `vs100kumite`: VS 100 Kumite
  • * `timechallenge`: Time Challenge
  • * `scorechallenge`: Score Challenge
  • * `bonusgames`: Bonus Games
  • * `bonus`: 内部保留
  • * `connect`: 内部保留

那么,刚刚那个例子,即 menu.itemname.menuarcade.arcade.watch = "SINGLE MODE WATCH"` 最后的模式菜单,进入后其实是观战模式,因为配置名为 `watch`

IkemenGo这样的配置,可以让你充分自由地设计菜单,甚至除了上面列出来的内置的模式,如果你懂编程的话,也可以自己写代码设计模式。在配置菜单时,还有下面几点要注意的:

  • * 菜单的显示顺序,由配置项顺序决定
  • * 如果某个组菜单只有一个模式菜单,那么点击组菜单时会自动进入该模式菜单
  • * 如果某个模式菜单的配置名找不到对应模式,那么点击时可能会导致游戏退出