Use Map as Title Screen

Nolonar

Veteran
Veteran
Joined
Feb 18, 2018
Messages
117
Reaction score
143
First Language
French, German
Primarily Uses
RMMV
Just before MZ releases, here's a new MV plugin from me: N_TitleMap

What does it do?

It lets you choose a map, which will be shown instead of the usual Title Screen.

Instead of this:
TitleMap_off.png

You get this:
TitleMap_on.png

It renders a real map, with events and everything.
You can change weather, you can change the BGM or play BGS, you can even display message windows (make sure your message text ends with
Code:
\^
, or you won't be able to start a New Game!)

For more details, read the Notes in the plugin.

How to use
Enter the ID of the map you would like to display.
TitleMap_setup.png

You can see the Map ID in the status bar at the bottom of the RPG Maker UI.
TitleMap_setup_2.png

Copy-paste following code into a file named "N_TitleMap.js"
Code:
//===============================================================================
// N_TitleMap
//===============================================================================
/*:
 * @plugindesc Use a map as title screen.
 * @author Nolonar
 * 
 * @param mapId
 * @text Map ID
 * @desc The id of the map to render as title screen.
 * @type number
 * @default 1
 * @min 1
 * 
 * 
 * @help This plugin does not provide plugin commands.
 * 
 * Notes:
 * If you wish to use a map the player can visit during the game, know that this
 * plugin does not load any save games, so all Switches will be off and all
 * Variables will be 0. You can change Switches and Variables, but they will be
 * reset when you return to the Title Screen.
 * 
 * This plugin is designed without the player character (or followers) in mind.
 * If you wish to display the player character, use an event instead.
 * 
 * Works with most event command, with a few limitations:
 * 
 *      - Message type commands require user input, which conflicts with the
 *        Title Command window (players can't start a New Game, for instance).
 *        This can be worked around for "Show Text..." by ending your text
 *        message with the \^ control character.
 * 
 *      - Avoid the "Play Movie..." command. Movies will hide the Title Command
 *        window, but players can still interact with it.
 * 
 *      - The following commands do nothing:
 *          - Transfer Player...
 *          - Set Movement Route... (with Player as target)
 *          - Get on/off Vehicle
 *          - Change Transparency...
 *          - Change Player Followers...
 *          - Gather Followers
 * 
 *      - Scene Control type commands like "Battle Processing..." work, but why
 *        would you even use them on the Title Screen? Remember that all Switches
 *        (including Self Switches) and Variables will be reset when you return
 *        to the Title Screen. You could get into an infinite loop.
 * 
 *      - System Settings type commands work, but most are useless. You can't
 *        have Encounters, so changing them is pointless.
 * 
 *      - "Change Map Name Display..." does nothing.
 * 
 *      - Battle type commands only work in battle, so they do nothing.
 * 
 * Plugin compatibility:
 * This plugin replaces Scene_Title, and so is incompatible with any plugins that
 * modify Scene_Title. This Plugin is compatible with plugins that add entries to
 * Window_TitleCommand, as long as these entries bind to a function outside of
 * Scene_Title, or start with "command" (for example "commandNewTitleEntry").
 */
(() => {
    let parameters = PluginManager.parameters('N_TitleMap');
    //===========================================================================
    // Scene_TitleMap
    //===========================================================================
    class Scene_TitleMap extends Scene_Map {
        create() {
            Scene_Base.prototype.create.call(this);
            DataManager.loadMapData(parameters.mapId);
            this.createCommandWindow();
            // Scene_Map will create its own window layer later on.
            this.removeChild(this._windowLayer);
            // Needed to avoid player character from appearing on TitleMap when
            // player returns to Title.
            DataManager.setupNewGame();
        }
        createCommandWindow() {
            // Copy all commands from Scene_Title. This is compatible with
            // Plugins that add their own command to Scene_Title.
            let commands = Object.keys(Scene_Title.prototype)
                .filter(property => property.startsWith("command"));
            for (let command of commands) {
                Scene_TitleMap.prototype[command] = Scene_Title.prototype[command];
            }
            this.createWindowLayer();
            Scene_Title.prototype.createCommandWindow.call(this);
        }
        createAllWindows() {
            super.createAllWindows();
            this.addWindow(this._commandWindow);
            this._commandWindow.open();
        }
        drawGameTitle() {
            Scene_Title.prototype.drawGameTitle.call(this);
        }
        onMapLoaded() {
            $gameMap.setup(parameters.mapId);
            $gameMap.autoplay();
            $gamePlayer.center($gameMap.width() / 2, $gameMap.height() / 2);
            super.onMapLoaded();
            Scene_Title.prototype.createForeground.call(this);
        }
        start() {
            super.start();
            Scene_Title.prototype.playTitleMusic();
        }
        update() {
            $gameMap.update(true);
            $gameScreen.update();
            this.updateWaitCount();
            Scene_Base.prototype.update.call(this);
        }
        terminate() {
            super.terminate();
            if (Graphics.isVideoPlaying()) {
                Graphics._video.pause();
                Graphics._onVideoEnd();
            }
        }
    }
    //===========================================================================
    // Scene_Title
    //===========================================================================
    let Scene_Title_commandNewGame = Scene_Title.prototype.commandNewGame;
    Scene_Title.prototype.commandNewGame = function () {
        // Starting a new game resets the camera position,
        // so we remember the old position and set it back.
        let previous = {
            displayX: $gameMap._displayX,
            displayY: $gameMap._displayY,
            parallaxX: $gameMap._parallaxX,
            parallaxY: $gameMap._parallaxY
        };
        Scene_Title_commandNewGame.call(this);
        $gameMap._displayX = previous.displayX;
        $gameMap._displayY = previous.displayY;
        $gameMap._parallaxX = previous.parallaxX;
        $gameMap._parallaxY = previous.parallaxY;
    };
    //===========================================================================
    // SceneManager
    //===========================================================================
    let SceneManager_goto = SceneManager.goto;
    SceneManager.goto = function (sceneClass) {
        // Replace Scene_Title with Scene_TitleMap.
        if (sceneClass === Scene_Title) {
            sceneClass = Scene_TitleMap;
        }
        SceneManager_goto.call(this, sceneClass);
    };
})();

Terms of use
I hate complicated stuff, so just use this plugin freely as you see fit. No strings attached.

Just promise me a few things:
  • If anyone asks who made this plugin, be honest. If you made modifications to the plugin, it's alright to say: "I made some modifications, but the original author is someone else". You are not required to provide proper credits, but you are not allowed to lie about it either.
  • Do not monetize the plugin. If you want to sell your game, and your game uses and includes my plugin, that's fine. But you're not allowed to ask for money if people want to use my plugin. Hosting my plugin on a site that serves advertisements is... acceptable by me. Forcing people to see advertisements before they can access my plugin, however, is not fine.
  • Use my plugin at your own risk. Do not hold me responsible for anything that happens (good or bad).
It's not that complicated, really.
Just be a reasonable, decent human being, that's all.


Before I forget:
I do not provide support beyond the documentation already provided in the plugin. If you ask questions here, I might answer (no guarantee), or someone else might.

If you send me a private message or email about this, I most likely will ignore and block you. Don't do it, please.

For future reference: I intend to port this plugin to MZ eventually, but I can't make any promises about any release date.
 

ShadowDragon

Veteran
Veteran
Joined
Oct 8, 2018
Messages
1,954
Reaction score
647
First Language
Dutch
Primarily Uses
RMMV
I think SRD has one as well, but if you want a bit nicer title screen of instead everytime
the same map over and over, maybe you can set save map as title screen?

like, you have "start map" where the player normally starts as starters,
than if you save the game on a different map, that MapID is being saved for the
the title screen.
unless its a bit similair to zelda title screen, which have a title screen and a 1/4 of
the x and y scall;ed down, in 1 of the corners as save location of its map ID.

it would be nice to have something like that, that camara moves, but if you have
similair or map ID where the player saved would be nicer and it makes yours
more unique.
 

Nolonar

Veteran
Veteran
Joined
Feb 18, 2018
Messages
117
Reaction score
143
First Language
French, German
Primarily Uses
RMMV
I think SRD has one as well, but if you want a bit nicer title screen of instead everytime
the same map over and over, maybe you can set save map as title screen?

like, you have "start map" where the player normally starts as starters,
than if you save the game on a different map, that MapID is being saved for the
the title screen.
unless its a bit similair to zelda title screen, which have a title screen and a 1/4 of
the x and y scall;ed down, in 1 of the corners as save location of its map ID.

it would be nice to have something like that, that camara moves, but if you have
similair or map ID where the player saved would be nicer and it makes yours
more unique.
That's an interesting suggestion. I'll keep it in mind for future improvements.

I really should be studying for my upcoming exams, though, so don't expect improvements any time soon.


If you need to move the camera, I think you can already do that with the "Scroll Map..." event command. I haven't tested that one yet, but I think it should work.
 

Users Who Are Viewing This Thread (Users: 0, Guests: 1)

Latest Threads

Latest Profile Posts

Problem with sequels: Heroes getting rid of all their items and forgets all of their skills within the span of a year without explanation. :kaomad3:
I can see the end of my prologue. Perfect time to decide to pull everything over into MZ, right? Right?!
Excited to be nearing the end of setting up my own custom Point-And-Click system template! Just need to iron out some kinks, get an input text system going, add animations to buttons, and then finalize my button-mashing event system and it'll be complete >:3c
AlcTheHero wrote on Mystic_Enigma's profile.
hi.
Still recovering from my laptop's transformation into a brick. I hope to be back to making soon.

Forum statistics

Threads
99,642
Messages
967,604
Members
131,311
Latest member
jabbingquirker
Top