MUME / MMapper

🧙‍♂️MMapper is a graphical client designed for the MUME (Multi-Users in Middle-earth) game
https://mume.github.io/MMapper/
GNU General Public License v2.0
35 stars 26 forks source link

MMapper as a Service #31

Closed nschimme closed 6 years ago

nschimme commented 7 years ago

@waba4mume has been playing around with the idea of having a web-based mapper in https://github.com/waba4mume/play-mume/tree/mapper. I agree that this seems to be the best way to get additional users but perhaps we should think about it from a service perspective. What if we could do the MUME what Google Maps did to Earth?

I propose that we instead simplify the mapper client to just poll metadata like the current location and surrounding rooms from a MMapper server. This unlocks an possible future bonus of built in Group Manager support, per-character memory of doors, and a centralized map that is updated by a group of core cartographers.

An alternative idea to having a web client is also a mobile native client. However, given how keyboard-centric MUDs are I never truly see tablets or cell phones being truly MUME-capable devices. As such, web is probably still the best way to move forward.

waba4mume commented 7 years ago

A few comments:

teoli2003 commented 7 years ago

Beside the sheer size (and complexity) of such a project (I'm afraid of any side project that cannot be broken in pieces of about 40 hours of work max), a few comments:

"a centralized map that is updated by a group of core cartographers." Working on a project with a large contributor base (~1000 unique contributors/month), this open the can of worms of the contribution process and the governance problem (who can edit the centralized map, do we want a review mechanism?, one or several maps managed by teams, …). Also more and more projects tend not to build contribution mechanism themselves (it is a huge amount of work) but tend to rely on 3rd-party (wiki for publish-without-formal-review, or github for review-before-publish). The publish-without-formal-review paradigm seems difficult (I for sure wouldn't people to touch my map without me approving the changes) and the review-before-publish doesn't scale to frequent small changes (like I expect for a map).

"Group Manager"…"it is illegal in PK situations" Also I would like to stress the point of @waba4mume about rules abuse. I would like to keep MMapper2 safe: If you don't activate the group manager, you are always following the rules. I even would like to see it outside MMapper2, as an add-on or as an extension of the MUME protocol (with MUME enforcing the rule about 'you are in a PK situation').

I think 'MMapper as a service' is a solution; we should clearly identify the use cases we want to improve there, so that we can compare this with alternative solutions.

nschimme commented 7 years ago

Good points from both of you. Let's simplify the scope then to get a working minimum viable product!

MMapper, in my experience, has three primary users/uses ordered by popularity:

  1. Online Players who wish to role play and/or PK
  2. Cartographers who wish to organize the world
  3. Offline Players who wish to explore risk-free

I propose we eliminate Offline Players right off the bat because this feature doesn't require a hosted service. Additionally, let's eliminate the Cartographer users from the first iteration because this is a significantly smaller portion of the entire MUME community. As such, we will focus primarily on Online Players and try to build a minimalistic web-based mapper and client for newbies to play on.


Other points:

nschimme commented 7 years ago

I'm going to take a look at how I can render a MMapper map into tiles similar to this guy using z/x/y coordinates to identify each tile. I'll be able to then emit the current z/x/y position of a MUME character over Web Socket to an HTML5 browser which needs to then select which z/x/y corresponding tile to display in its <canvas> tag. I already have some basic Web Socket and client code here: https://github.com/nschimme/MMapper/tree/client2

P.S. I have some concerns about the latency of being able to move around this map but we'll tackle that at one step at a time.

nschimme commented 7 years ago

I managed to resurrect my old code and get it playing alongside the Javascript mud client. Performance sucks because its literally serializing the entire OpenGL viewport each time. I haven't had a chance to break everything into tiles yet. Will update once again when I make more progress.

prototype

nschimme commented 7 years ago

I've been thinking about this some more and discovered Leaflet which is used by the OpenStreetMaps project. There has even been some work on using it in a real-time fashion which could be close to the behavior that we want.

I imagine what we'll want to do first is then export a MMapper2 map as OpenStreetMap tiles. Secret rooms could be handled as separate layers that are only displayed as needed but that's probably much further down the road.

It also looks like they have a lot of plugins to draw from!

nschimme commented 6 years ago

This is necessary anymore now that Waba has made his mapper public