MMR update #1

Welcome to the first update for 2018! We didn't expect to get much done on Mad Monks' Revenge over the holiday period, so we're quite happy with how much actually got done. Lodes of fixes, new lobby, playable networking, and more!

Special thanks to Howie for continuing to play the game over the holidays and send me feedback.

A name in parenthesis and in bold is the finder of the bug/quirk. Thanks to all, I really do appreciate your time and support. Cheers!


  • debug line now draws over block tool (when in debug mode)
  • added common shortcuts to most toolbox items
  • line and block tool can now be used to erase tiles (Gareth) - handy for those who primarily create puzzles using the line tool
  • fixed bug that crashed when attempting to save a puzzle with more than two runners

Erasing with line tools


  • fixed players incorrectly being crushed in phase bricks (Howie)
  • fixed starting lives not getting applied when starting a game;
    • start lives did get applied on game over (tombstone)
  • fixed players not grabbing onto hand-over-hand/monkey bar when idling (Howie)
  • tools can now be used when idling facing the screen;
    • in the Original, using a tool always favours the right but when idling head on and the right is blocked, the runner did nothing

You can now use a tool in the idle position

  • fixed runner not being allowed to pass/be eaten when a monk is falling into a blasted brick
  • updated Fall Immunity quirk to include snares (Howie)
  • updated Climb Through Walls to include pick axe rubble (Nadia)
  • improved runner/monk positioning when a monk is eating a runner (Howie);
    • monk will now eat runner when 40% of the current frame is within the runner (vs 25% for all other animations)
    • runners will position themselves closer to the monk when being eaten on slime

Perfectly drawn diagram of a monk leaping


Online gameplay got the most attention over the holidays. An issue that causes the game to desync still needs to be fixed, plus saving and proper exiting. Most of our testing was with two players (2x Windows) and with three players (2x Windows, 1x macOS).

  • new lobby dialog;
    • all basic in and working
    • now resets when closing
  • start lives value is now synced correctly to all clients
  • game desync;
    • sync packets sent every 50 turns and verified every 100
    • upon desync, message shows and game will automatically restart (you will not be deducted a life)
    • log generated to aid debugging
    • fixed pre-game pause that could cause games to desync
  • fixed tick counters not correctly wrapping
  • fixed chat message overlaps (Gareth)
  • puzzle sets are now transferred to other players when the host starts a game (set filenames previously hard-coded);
    • the puzzle set is compressed and uploaded (web service via Azure Functions
      ) and downloaded by players
    • if playing the default two-player puzzle set, the game won't bother transferring it to other players
  • fixed incorrect player colours in chat messages (Nadia)

The interval that sync packets are checked is just arbitrary. This value will be tweaked once more testing shows the best value.

New lobby in action


  • updated FNA to 18.01.02
  • added missing library that caused the game to crash on macOS (thanks to Ethan for the help)
  • score board code streamlined on main menu
  • updated XML language files - now easier to read and edit
  • if the game is in full-screen mode when crashing, it will now switch to windowed-mode before displaying error message box (Gareth)
  • added support for button-less message boxes
  • disabled buttons no longer accept input
  • tweaked filename truncating in file dialog

Bugs being worked on

  • gamepad feedback keeps going when using more than one controller
  • monks merging when crossing on/off ladders and using ropes
  • switching to windowed mode hides the Dock (Sierra)
  • regen bomb timing does not accurately match the Original

What I'll probably do next

  • continue working on network games
  • ability to 'pause' the game when testing and return after minor edits