A mmlv format parser made in python. For making Mega Man Maker Levels.
Find a file
2023-10-30 12:26:42 -04:00
blank.mmlv Added set_ver and implemented api access for version 2023-09-15 15:02:37 -04:00
definitions.py completed set_player 2023-10-18 00:52:36 -04:00
LICENSE Add LICENSE 2023-08-31 18:11:23 +00:00
mmlv_library.py finished check_overlap and mark_block_as_used 2023-10-30 12:26:42 -04:00
README.md finished check_overlap and mark_block_as_used 2023-10-30 12:26:42 -04:00
sample.mmlv improvements 2023-10-25 21:00:31 -04:00
testing_grounds.py finished check_overlap and mark_block_as_used 2023-10-30 12:26:42 -04:00

Py-MMLV, a MMLV Format Python Library by Timothy GFO

The Goal

The goal of this project is to create a single, easy to use, and flexible Python Library for the MMLV format used in Mega Man Maker. This project takes advantage of the common ConfigParser Module, and uses it to read and write the files, for use in Py-MMLV.

This includes:

  • Files generated with Py-MMLV will generally be smaller in file size, this could in theory improve load times. The reason is that Mega Man Maker stores integers as "1.000", while Py-MMLV just does "1". Py-MMLV will also be smart enough to automatically remove redundant entries in the file. (in the future)
  • Every function that spawns something in the level should have intuitive naming and arguments.
  • A stable base to improve upon: Every function will lookup in the definitions.py file.
  • Be able to generate from scratch a valid mmlv file, as well as modifying a file (valid or not).
  • It should also be able to FIX corrupted Mega Man Maker Levels, at least attempt to. How? Maybe, checking for duplicate keys (hard), checking for incorrect values, checking for invalid coordinates...

Installation

Dependencies: configparser os requests the included "definitions.py" After you install the required dependencies, you just download the mmlv_library.py file and import it on your program. It's still work in progress, not complete at all...

Usage

When in beta, you should be able to import as a module in another python program and call functions like "set_tile(mm1iceman, version_of_tile, x, y)". You need to specify the filename variable before doing anything. Maybe there is a better way to specify filenames...

Support

If you find a bug, remember to create an issue about it. But don't do it right now, there is more bug than code.

Roadmap

save changes to temporary file, then rename original to temp name, then rename the changed file to original name add a get function for every set add automatic room activation to set_tile add ability to all functions to accept raw x, y values (the times 16 numbers in mmlv) and raw codes (like "a" instead of "active") complete set_tile, set_spike, set_ladder add set_enemy and set_boss have integrated functions for changing/replacing the blocks that have some code in them with something else. add verifier for what a block contains, what type of thing (the block x, y contains an object, or the block 1, 5 contains an enemy object)

Contributing

I would like to be the main developer of this project until it has some missing core functions since I treat this as a learning project. However, feel free to notify me of any issues. Also, pull requests are welcome.

License

GNU General Public License v3.0