Hi Mark and welcome to Evennia!
You have quite a lot of questions there, let's see if I can give some ideas and hints. Note that since your questions are pretty specific, I'll have to give rather specific answers. If you are new to Python/Evennia (I don't know which concepts are familiar to you or not) some of this may sound a bit intimidating. If so, I recommend some resources to read throughout.
First of all, you are correct that if you use MULTISESSION_MODE = 0, then you will only have one Session per Account and Character. That is, if you connect to your account from somewhere else (like another browser), the first Session will be disconnected. You can read about the
different modes in my blog post here.
When you first connect to your game a series of methods on your Account object will be called. The important one in this case is the
at_first_login() hook and the
at_post_login() hook on the Account class (you override these from your gamedir, in typeclasses/accounts.py). The default at_post_login hook
is defined here and will by default (in MULTISESSION_MODE = 0) automaticallly puppet a character with the same name as your Character. If you use some other multisession mode, this will work differently. In your case, since you want to keep one-Session-per-Account but show an OOB menu instead, you'll need to override this hook (or at least part of it) to do something else.
How you handle your 'menu' is really up to you. There are two main ways to do it:
- Modify your OOCLook command so that when you look around you see the list of options you want. You could have the look-command analyze you every time you use it so that it can see that you have multiple Characters etc and can show different screens. You will then also need to create several Command-Sets for each such menu state and swap those out to match the commands listed (otherwise the user won't actually be able to chose any of the options. Here is how you add Commands. Here is also the documentation on Commands and Command sets to peek at.
- Alternatively you can implement your OOC menu using EvMenu, Evennia's native menu-creation tool. This will let you design your menu as simple functions ("nodes"). You can just fire off EvMenu in your Account's at_post_login hook as above. EvMenu will make the menu-creation easier, but you will likely have to think hard on how you want to then sequester out into your character creation and how to organize things. If you are not too familiar with Python, just displaying the options and supply individual Commands like the first point above might be better to start with.
As for puppeting of Characters from an Account, Evennia already supports this natively (it's the reason we separate Accounts and Objects/Characters in the first place). The whole mechanism around puppeting, warning etc is available in the default @ic command, which allows you to "become" any Character or even Object you have permission to puppet. You could steal havily from this when you tie together your PUPPET menu option. The source for the default @ic command is here. You may also want to look at the @ooc command which is used to un-puppet a Character and return to an OOC mode. You could either decide to use these as-is, copy them into your game dir and modify them to your purposes, or rip out pieces of them as needed ...
... If you are new to Evennia and Python both, I would recommend you don't dive into all this immediately though. Rather I would recommend you go through some of our tutorials. For example the A small MUSH-like game tutorial will step-by step let you build a simple MUSH-style game. Even if you are not interested in MUSHes per se, that one gives a rundown of the various Evennia components and how they hang together - and you end up with a small little game that you can expand on later if you want. All useful skills to use with your own game later.
Hope that helps for getting started! Don't be shy to ask questions, here or in the
IRC chat.
.
Griatch