Skip to content

Building, Installing and Distributing

Super edited this page Jul 26, 2024 · 9 revisions

The latest release version of Ikemen GO is available for download on the releases page. For those who want to test experimental features (at the cost of possible unreported bugs), the nightly version can be found on the releases page under the "nightly" tag. Both versions of the engine comes with sample content, so it's ready to use right after extracting it.

Extract downloaded characters into the chars directory and stages into the stages directory. Character and stages also have to be added into the select.def file (by default located in data/select.def, but the path can be changed by custom motifs, read below for more information).

Refer to the default select.def file distributed with the engine for more detailed information on how to add characters and stages.

A motif is a custom configuration of the graphics and sounds used in the game's interface, as well as other things such as the character roster. The base motif is found in the data/ directory. Custom motifs are placed as subdirectories under data/. For example, the "kfm" motif is placed in data/kfm/ directory and can be assigned as motif in save/config.json or called via -r command line argument.

Here's what a motif covers:

  • character roster and stage list, character and stage parameters, basic modes settings (select.def)
  • screenpack definition file with parameters that control graphics, sounds and music interface, customization options (system.def)
  • storyboard files
  • lifebar definition file with parameters that control fight screen graphics and sounds (fight.def)

To set the default motif, edit the save/config.json file (equivalent to Mugen's data/mugen.cfg) with a text editor, and change "motif" setting to your motif path, e.g. data/kfm/system.def.

To install a downloaded motif, first extract the file into a new directory. Open that directory to see if there are files in it; if so, move that directory into Ikemen's data/ directory. If there is a single directory instead, move that bottom-level directory into the data/ directory.

First things first, let's quote Mugen's system.def file:

DO NOT MODIFY OR OVERWRITE MOTIF FILES

Information like this is also present in Mugen's read me file. While not enforced, following this advice is even more important in Ikemen Go than it used to be in Mugen, due to how often this engine is updated and how base files are meant to be used as a working example of new features. Keeping the content portable makes migration between versions much easier.

To make your own motif, create a subdirectory under data/ with the name of your motif, and copy system.def into the new directory. If you'd like to edit any other files besides system.def, make copies of them in your motif directory and change them there. Any data file that doesn't exist in your motif directory will default to the one in the data/ directory, so if you did not copy select.def over, data/select.def will be used when you run with your motif selected.

Fonts are search in directories in the following order:

  • motif subdirectory
  • data/ directory (not recommended to keep custom fonts here)
  • font/ directory (not recommended to keep custom fonts here)

In other words the recommended place for custom fonts is inside your motif subdirectory, alongside all the other motif files (use relative paths to reference subdirectory, E.g. font/myFont.def referenced in data/kfm/system.def file will first check if the font is present in data/kfm/font/myFont.def path, before looking anywhere else)

Unless you're making a fullgame/compilation, do NOT distribute your motif with Ikemen GO executable or files that are not related to motif. The engine is available on different operating systems, so for many users convince of having an executable included in the package is meaningless. Files unrelated to motif makes migration between engine version harder for people that want to install your motif.

Ikemen GO aims for full compatibility with characters, stages, storyboards, lifebars and screenpacks released for Mugen 1.0 and Mugen 1.1 (official engine releases). When it comes to Winmugen content the compatibility is meant to be at the same level as Mugen 1.1 (we're not aiming for better backward compatibility than Mugen itself does). If something doesn't work it means that either the content itself is buggy (Ikemen Go engine and scripts are less tolerant for wrong syntax compared to Mugen) or it's a compatibility issue that should be reported here. Be sure to search to make sure your issue hasn't already been reported.

Characters and stages can use any of the new Ikemen GO features, regardless of mugenversion parameter set in their DEF files.

To maintain backward compatibility with Mugen content, almost all Ikemen GO specific screenpack and lifebar features are disabled by default - after installing a Mugen motif you will get pretty much the same functionality as in vanilla Mugen, with almost none of the Ikemen GO additions, such as submenus, new game modes, tag and ratio team modes, score system, and many other features unique to Ikemen GO.

In order to update Mugen motifs start by testing the engine, without replacing default screenpack and lifebar, to familiarize yourself with new functionalities. Ikemen GO comes with default motif files that can be used as a base for updating Mugen screenpack and lifebars:

  • data/select.def: character roster and stage list with comments explaining all the new character and stage parameters, as well as basic modes settings
  • data/system.def: Winmugen 240p screenpack definition file
  • data/mugen1/system.def: Mugen 1.0 720p screenpack definition file
  • data/big/system.def: a version of Mugen 1.0 720p screenpack with more slots
  • data/fight.def: Winmugen 240p lifebar definition file
  • data/mugen1/system.def: Mugen 1.0 720p lifebar definition file

Updating Mugen motif is a matter of copying new motif sections and parameters over from one of the default Ikemen GO motif DEF files to your screenpack and/or lifebar DEF files, and adjusting their values as needed. They are all marked with Ikemen feature comment, for easier recognizing which parameters are unique to Ikemen GO. You don't need special knowledge to do so - any Mugen screenpack or lifebar tutorial will teach you how to work with motifs.

As of today only new lifebar features have been fully documented. As mentioned in the screenpack page, screenpack parameters won't be documented until the engine stabilize feature-wise. Until then everything related to these parameters may change without notice. Most of the new screenpack parameters have self-explanatory names though, so it should be fairly easy to use them despite lack of documentation.

data/work directory contains art and sound assets that can be easily imported to your custom screenpack and lifebar files using Fighter Factory program (import.ffe files can be used to automate assets importing).

Updating to new version (if you use content that follows guidance present in this article) is a matter of moving over your motif subdirectory, chars, sound, stage folders and setting correct path in save/config.json motif setting. About a minute of work total.

On Linux it can be compiled executing the following commands on a terminal:

Install golang, git, GLFW dependencies, and OpenAL:
sudo apt install golang-go git libgl1-mesa-dev xorg-dev libgtk-3-dev libasound2-dev

Download Ikemen GO repository:
git clone https://github.com/ikemen-engine/Ikemen-GO.git

Move to downloaded folder:
cd Ikemen-GO

Then run the makefile:
make Ikemen_GO_Linux

*Compatibility Workaround:
To ensure compatibility with your system, append MESA_GL_VERSION_OVVERIDE=3.0 before your binary, like this: MESA_GL_VERSION_OVERRIDE=2.1 ./Ikemen_GO this should fallback to software rendering if necessary.

Setup the development environment. (execute only once)

For mac, the easier way is using homebrew. Install homebrew following these instructions
Next, open a terminal and use homebrew to install the dependencies.

brew install git go

The following packages are not required but they makes it a lot easier to code.
brew install --cask visual-studio-code

Get the code:
git clone https://github.com/ikemen-engine/Ikemen-GO.git

Compiling

Open a terminal, move to downloaded folder:
cd Ikemen-GO

Then run the makefile:
make Ikemen_GO_MacOS

The compiled Ikemen GO binary now should be inside the bin folder. And now, Ikemen can be opened double clicking Ikemen_GO.command, or with the terminal: ./bin/Ikemen_GO_MacOS

Part 1: Setting up the compiler

Step 1: Install MinGW-w64 toolchain. Follow the step called "Installing the MinGW-w64 toolchain" in this guide.


Step 2: Install Go. The latest version is recommended. https://golang.org/


Part 2: Building the code

Step 1: Download the repository.

Step 2: Open the Build folder inside the Ikemen_GO folder.

Step 3: Run the build.cmd file.

You may need to run the command go mod download first in the root of the repository (the folder that contains go.mod) if this is your first time building. Note that as of this writing, get.cmd is currently in the process of being phased out and is generally not recommended.

If done correctly, you should have a new folder called bin inside the Ikemen_GO folder, containing the compiled executable.

To to run the executable, you need the data, external and font folders and a screenpack. You can download the screenpack files at this repo. These files need to be extracted into the bin directory alongside the newly-created executable.

Linux distro compatibility as of 2024-03-26

  • Ubuntu/Debian - Supported
  • Arch/Artix - Requires GlibC/Mesa/OpenAL installed/updated
  • SUSE - Supported
  • Manjaro - Supported
  • Fedora - Supported
  • Tiny Core - Unsupported
  • Puppy - Requires GlibC/Mesa/OpenAL installed/updated
  • Batocera - Supported
  • Solus - ?
  • Kali - Requires GlibC/Mesa/OpenAL installed/updated
  • Alpine - Requires building against MUSL

Thanks to Cylia Margatroid and Gacel for testing.