First Project: The Questinator

We need a project

Why do we need a project? Well, because a big part of why I first decided to start this blog is I wanted to work through a project from start to finish in a way that people could hopefully learn from and make their own Mudlet development smoother/faster/better. I admit I’m biased towards my way of doing things, though, and the point isn’t to necessarily get people to copy me so much as to explain how I do the thing and why I do the thing that way.

So we need a project to work through together. And I decided it will be the Questinator.

WTF is a Questinator?

I’m so glad you asked! We can start right here with step one, definining what the project is!

the Questinator is a tool which allows users to document quests in their mud, and aids in completing them.

That’s great, but what does it mean?

Well, wouldn’t you know it that’ll be the next step! Time to start defining things on a more granular level.

If this is where you are expecting me to start talking about user stories, or UML, or the like… you probably don’t need this tutorial quite so much. And honestly I only sort of vaguely use any of that and don’t feel confident teaching it.

But I do think it’s important to think about what you actually want to accomplish, and at least the bare sketch of how up front.

So, Questinator will:

  • Present either a userwindow or adjustableContainer with its interface inside
  • Maintain a set of quests, each of which will:
    • have a list of ‘phases’ of the quest, which can be thought of as the general steps involved
    • have a list of areas each phase takes place in
      • the areas can and ideally will correspond to the area in the Mudlet mapper.
      • But ideally I want this to be usable for taking notes even if you are not using the Mudlet mapper
    • maintain a list of rooms involved in the quest
      • as with the areas ideally these will correspond to roomID and roomName in the Mudlet Mapper
      • But ideally I want this to be usable…
      • Each room will maintain information about
        • general notes… whatever you might want.
        • NPCs in the room related to the quest
        • Commands you might want to send in the room which relate to the quest. “kill porcupine” or “give porcupine to farmer”
        • the phase(s) of the quest in which it is involved
    • Be able to give the list of all NPCs from all rooms for each phase or the full quest
    • Same for areas and rooms
  • Provide for configuration of things like
    • font face
    • font size
    • function to use to go to a room
    • function to use to go to an area
    • single page or tabbed layout
    • create links?
  • Config is saved to disk and loaded on start
  • Provide a way to quickly configure functions for the generic mapper and the IRE mapper, since they’re the two most commonly used mapping scripts.
  • Should have its own commandline for interacting with it via the keyboard
    • this should be doable using aliases from the normal command line as well
  • But will make commands to send and rooms/areas to goto clickable is configured to do so

That uhh… seems like a lot

It can, when you try to take it all in at once. But thankfully it is not Athena and need not be born from our skull fully formed and ready to do battle.

In upcoming posts and videos we’ll get the dev environment fully setup and begin working on laying the project out, implementing the things we need a little at a time.

I look forward to our progress together!