u/pjasicek

Previous post - https://www.reddit.com/r/MightAndMagic/comments/1t0mnyr

A lot of people approached me if I will be able to integrate MM6+MM7 to the OpenYAMM in the same/similar manner as MMMerge did it. I am then continuing with this direction and my next goal will be to achieve a MMMerge parity as a baseline. Linked video is a WIP. I can travel between the continents using the dimensional door (temporary HUD element for that), I can take/complete quests on these continents, visit indoors locations, travel via foot or stables etc.

Once this is done, my next goal will be overall polishing, performance improvements - although along the way I did my absolute best to optimize all critical paths. On 1920x1080, Indoor dungeons with around 4000 FPS (depends on dungeon complexity), Outdoor maps usually 2000-4000 FPS, depending on the maps.

Then once this is a good baseline, my plan will be to provide LUA APIs for mods - to inject new skills, new races, new classes, new behaviors etc. - the idea is to keep MMMerge state "pure" and mods will go on top of it. But this is likely a talk for the future.

Almost all the plumbing is there but there are stil many rough edges and bugs to iron out. My editor/inspector also seems to work quite well for all the mm6/mm7 outdoor/indoor maps, which helps a lot with the whole process of integrating this.

Link to the project: https://github.com/pjasicek/openyamm

EDIT: I want to explicitly add credits to the whole OpenEnroth team and MMMerge team (Rodril and all the other contributors) and GrayFace is the father of MM6-MM8 modding. Without all of you I would not be able to do what I did, not a chance. So thank you all.

u/pjasicek — 12 days ago

For the past 7 weeks or so, I was working on a reimplementation of my most favourite game from my childhood - M&M8. My main goal was to create a complete authentic reimplementation of the original game, including all the mechanics, quirks, systems etc. without fixing it up with any custom ideas. Basically, ideally 1:1 replica which could then be build up on for potential continuation like modding, merging with MM6/MM7 (should be trivial now), new maps etc.

Now I've finally come to a point where I feel like the game is as close to the original as I could make it. There are some quirks here and there, like rendering artifacts, some AI glitches etc. But every single system in the game is implemented, close to every single spell in the game is implemented, all quests, all skills, day/night, fog, character reactions, timers, scripts, ... everything is there.

Stack used:

  • C++ for the game/engine, Lua for scripts (exported from *.EVT and *.STR)
  • Libraries: bgfx (rendering), SDL3 (windowing, input, sound), PhysFS, ffmpeg, libyaml, lua, doctest
  • Codex - I did not write the code by hand, I directed it. I am SW eng in my main line of work, but doing this by hand would not ever be possible. I architectured it, guided it, gave it guardrails, style guides, but I did not write the code.
  • I used the assets from the original LOD files, most of them I used as-is, but I did export a lot of them to human-readable format - like all the *.bin tables - converted to *.txt, dlv/ddm (delta data for outdoor/indoor maps containing spawns, actors, face event descriptions) - converted to yml, a lot of the data which was originally hardcoded in the binary itself I extracted to *.txt data tables, whole HUD/UI is described in YML etc.
  • Editor - I also created a supplementary editor which supports both indoor and outdoor maps, but so far it was used mainly to inspect the maps. It does support editing - has tools like terrain brushes, *.gib import, *.obj import, texturing, adding actors/spawns, adding objects etc. - but I did not yet use it to create any new maps.

Also I want to mention that I heavily used OpenEnroth project as a reference for many systems and mechanics. Without it, I doubt I would be able to do this as quickly as I did.

Link to the repo: https://github.com/pjasicek/openyamm

u/pjasicek — 14 days ago