This is a hobby project of mine, which impelements an algorithm and a web based UI that finds armor sets to satisfy certain requirements in the game Monster Hunter 4 Ultimate (Japanese Version: Monster Hunter 4G).
Monster Hunter has an unique skill system, and in order to active a certain skill, we need to craft a combination of armors including a weapon, a helmet, a body armor, a waist armor, an arm armor, a legs armor and an amulet, whose total contribution to the desired skill exceeds a skill points level. Finding the right set of armor pieces that activates the required skills is difficult, as there are ~ 150 different skill trees, ~ 600 candidate armors for each of the pieces, and each armor contributes to several skills, positively or negatively. What makes the problem more interesting is that armors may have slots, where different decorations contributing to different skills can be plugged in.
monster-avengers is such a tool to efficiently find the right armor combinations given the desired set of skills. With a carefully designed algorithm, it
It also comes with a web based UI.
There is currently one instance of this tool running on a server with very limited computational resource. You can find it at http://mh4u.breakds.org.
Located in csharp/winbind_wrapper. A C# wrapper class implemented via DLLImport.
Work in progress.
I am working on a series of posts discussing the algorithm behind this project on my blog. Take a look if you are curious and interested.
For those who is interested in either the algorithm or the implementaion, you can find a brief description below. Note that the code is still not very well documented yet, and I am working on adding the comments and documentations to the code as much as possible with the limited time budget.
The code is mainly divided into 2 parts:
ArmorUp::Search
is the main entry point to the algorithm.The C++ code is managed by CMake. To build the C++ binary:
cd cpp/
mkdir build
cd build
cmake ..
Now, you can either run make
to build the binary serve_query
, or ccmake .
to configure the Makefile generation. You can toggle the build type to be RELEASE
to build a much more efficient binary.
To run the web server that serves the UI, you need a lisp implementation (e.g. SBCL), and quicklisp. After having them configured, you can place the project folder (or a symbolic link to the folder) under quicklisp/local-projects
, and start sbcl
. At the Common Lisp top-level, run
(ql:quickload 'monster-avengers)
(monster-avengers.simple-web:armor-tools :start)
to start the web server. You should now be able to access the web app locally at localhost:16384/app?lang=en
. Note that this project depends on several of other projects, which should be downloaded at placed at quicklisp/local-projects
:
There are currently some limitations in the current implementations, and I will work on improve over them. Those that I am aware of are:
All the codes in this project are under the MIT License.