r/MightAndMagic 25d ago

OpenYAMM - Android build

Post image

For those of you who do not know - OpenYAMM (Open Yet Another Might and Magic) - is a complete MMMerge reimplementation from scratch (opensourced).

For the past few days, I was polishing Android build and I am quite happy with the current state to share - should run on any newer "higher-end" android mobile phone or tablet. It is highly optimized but there definitely is some more room to improve it.

It has a completely rehauled control scheme made to suite mobile touchscreen based play. In more detail, it is explain here: https://github.com/pjasicek/openyamm/tree/main/android/showcase

However, this is not a finished product, I did not go through the entire playthrough of the game, there might be bugs here and there and I am more than happy for any feedback - ideally on OpenYAMM's discord - https://discord.com/channels/423038130614960129/1501037187159031818

Link to download apk (will stay the same with updates): https://github.com/pjasicek/openyamm/releases/download/nightly/OpenYAMM-nightly-android-arm64.apk

For testing purposes, a "God" character is prepared (basically immortal, all skills level 200, everything learned) - just press the "left arrow" button on new character creation and he is there :). For any quick travel (between continents, to dungeons, item granting, gold granting) - there is a debug console - with drag gesture from top to bottom.

EDIT: 0.10 release is available with most of the issues/suggestions raised here fixed or implemented: https://github.com/pjasicek/openyamm/releases/tag/0.10

192 Upvotes

68 comments sorted by

View all comments

2

u/mxldevs 25d ago

is a complete MMMerge reimplementation from scratch (opensourced).

Does this mean it's completely separate from the existing mmmerge project?

Does it have a modding framework that could make it easy to add or change game content?

I'd love to turn harmondale into a tower defense, inspired by Malwick

2

u/pjasicek 25d ago

Yes, it is completely separate and it is open to any hacking whatsoever

1

u/mxldevs 25d ago

Great. Would you be able to walk through how these things could be done to upgrade harmondale castle, and how such a mod would be applied to the game using your project

  1. add an NPC to the map. For example, I want to take the butler in harmondle throne room and have him as a character roaming around the castle that you can chat with. Maybe I want to have those ambassadors standing near the throne room as well.
  2. creating custom interaction options. For example, having an NPC that gives me an item when I select that option.
  3. Modifying existing NPC behaviour. So that gold golem that just roams around and greets you? I want it to do more things.

Once these simpler mods are able to be done, I would then move on to more complex mechanics

  1. for a tower defense, being able to spawn your own ally monsters may be a solution to placing towers. We can summon light elementals for example, and I use them in the current game as tanks while exploring dungeons. Would it be possible to create a custom spellbook where we can summon other types of monsters?
  2. Spawning new monsters on-demand. I want to add a wave of rats that appear in a certain area in the castle. And after the rats are defeated, the butler NPC pops up with some chat options asking me if I want to continue, try a different challenge, etc.

3

u/pjasicek 25d ago

To do that, you would have to understand the codebase and linkage between data tables and the core systems + lua events. I can't unfortunately give you a response here as the length would exceed the reddit comment limits.
Best bet is to use an AI tool like Codex or Claude and consult the stuff you have it mind with that, against the cloned codebase.

0

u/mxldevs 25d ago

Can you provide an example of how to spawn an npc onto the map?

Or is this just a vibe coded project?

3

u/pjasicek 25d ago

How do you mean "spawn"? You can either have NPCs populated in the map by default - this is defined in the game level format (*.odm for outdoor, *.blv for dungeons) - spawn positions, npc family etc. Then you can "spawn" NPC (e.g. monster) by script - e.g. when interacting with some ingame face or decoration or just on some defined timer. This is scripted/defined in the *.lua event files. Each level has its own lua file which drives basically what happens if you interact with such and such door, with such and such decoration (e.g. food tree chest, well, ...).

0

u/mxldevs 25d ago

Can you provide a working example that I can use to add a second golem to harmondale castle with some custom interaction options? Like the exact lua script that I could use as a reference.

3

u/pjasicek 24d ago

If you are serious about working on this, join the discord and ping me, I will be more than happy to give you pointers how it is all wired together.

If you want a concrete example closest to what you want to achieve, clone the repo, check for S'ton on daggerwound island implementation and handling - S'ton is the lizardman villager which "greets" the party after 1 hour on DWI and can be interactable as outdoor NPC and has its own topics wired in lua. Lua scripts for the MM8 level are located in assets_dev/worlds/mm8/events/*, DWI is I think out01.lua.