Jump to content

Conversion of Monster Database to YAML


Aleos

Recommended Posts


  • Group:  Development Manager
  • Topic Count:  56
  • Topics Per Day:  0.01
  • Content Count:  732
  • Reputation:   525
  • Joined:  12/13/11
  • Last Seen:  

 

MobDB -> YAML!

As of Git Hash: 7992e08, rAthena's monster database has been converted to YAML! Sorry for the delay of this post!

What this means:

The monster database being in YAML format means that the database is now much more human-readable, just like the item database. This allows for quick review, modification, and addition of monsters without having to memorize the CSV format or use any third party tools. The parser now also has much better error handling when reading monsters into memory so tracking down those pesky typos is a thing of the past!

The update combines mob_race2 and mob_drop databases into the mob_db so there is much less searching around multiple databases when doing anything with monsters!

The Mode field has been adjusted. rAthena will now be following the Aegis format of utilizing AI and Class to define monster modes. Don't fret, the Mode field is still fully supported for any custom monster modes! A detailed document with the AI and Class values can be found in doc/mob_db_mode_list.txt.

Each monster can now be classified with multiple RaceGroups. Before a monster was limited to a single group, but that is a thing of the past!

As with any YAML conversion we have provided an option in the CSV2YAML tool built right into rAthena! Just build the CSV2YAML tool within Visual Studio or via Make and run the executable. The tool will provide you with general steps and convert your custom monsters right on over to the YAML format!

Following suit with the item database conversion, the monster database will still support SQL! Simply continue to utilize the YAML2SQL tool which can convert the YAML monster database into SQL format. This allows servers who utilize SQL to continue with this method.

What this means to developers:

Pull Requests can be reviewed much quicker and much more simpler. Identifying the actual change to the monster and easily verifying said change without having to count commas!

Comparing monster data to Aegis becomes easier for the AI and Class as it's easy to identify immediately what the monster's mode should be without having to count the custom mode bits in rAthena.

Additional features being added to the monster database no longer requires the development of a side database. A vast majority of the monster data is now part of the mob_db structure and can continue to grow in this format! As already seen with the Green Aura for MVP update from kRO.

 

Redefined Import System:

Now that the mob_db is in YAML format, the adjustment of monsters is much simpler. If a change is being made to an monster only the parts that are being changed have to be defined in the import. Below are some examples:

Adjusting Scorpion attack to 1000.

  - Id: 1001
    Attack: 1000

Allow Amon Ra to walk and adjust the Yggdrasil Berry to a Diamond at 80% drop rate.

  - Id: 1511
    Modes:
      CanMove: true
    MvpDrops:
      - Item: Diamond
        Rate: 8000
        Index: 0

Check out the mob_db documentation for further details!

Thanks to @Lemongrass, @nitrous, and lukasrmattos for their help!

  • Upvote 3
  • Love 2
  • MVP 1
Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  99
  • Topics Per Day:  0.02
  • Content Count:  623
  • Reputation:   94
  • Joined:  05/11/12
  • Last Seen:  

Great work guys!!

Link to comment
Share on other sites

  • 2 months later...

  • Group:  Members
  • Topic Count:  3
  • Topics Per Day:  0.00
  • Content Count:  17
  • Reputation:   0
  • Joined:  01/17/13
  • Last Seen:  

Great work! thanks for your amazing work guys, good bye to messy txt databases.

As a suggestion it'll be great to have a file structure like item db, (ie mob_db_mvp.yml, mob_db_mini_boss.yml and mob_db_general.yml) or something like that, giving a better organization and customization posibilities.

A little question here.

On 3/4/2021 at 6:40 AM, Aleos said:

Redefined Import System:

Now that the mob_db is in YAML format, the adjustment of monsters is much simpler. If a change is being made to an monster only the parts that are being changed have to be defined in the import. Below are some examples:

How does this apply to SQL? id, name_aegis and name_english are NOT NULL. If I want to add a new drop to a mob, shoul I only populate id, name_aegis, name_english, drop1_item, drop1_rate to mob_db2_re?

Also this update has broken FluxCP mob databases (mvp ranking, etc), so maybe a mob_db_compat.sql views are coming?

Thanks again for your great work.

Edited by Adimgar
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...