Evented Title Screen
Version: 1.0
Type: TitleScreen System
IntroductionEver since I started using RPGmakerXP, it has been a struggle of mine to make beautiful title menus. I tried many scripts like animated menus, custom picture scripts, different layout, and none seemed to be good to me. Surely I couldn't be the only one?
Features
- "Splash" screens if you wish
- COMPLETE customization
- Can add or take away options you want
- Includes a way to skip the splash screens
Screenshots
DemoBelow I've included a demo for a simple example. This shows how to do one splash screen, and simple standard "New Game, Load, Exit" functions.
I've also included a complex example. My KH style intros. I've included it to show how you can do any type of menu with proper events and music execution.
Tutorial DemoComplex Demo - KH Edition
InstructionsDepending on what you want to do, you will need a different amount of variables and switches. I always reserve the ENTIRE first page of switches to the Title Screen. Incase I want to get complex later on down the road. Same goes for the variables. Though alot go un-used, it would still be better to keep them all reserved and together rather than need one later and have to place it on Variable: 509 or something.
NOTE: I highly recommend downloading the demo to look at while you read.
Step One - Skipping the Boring Title Screen:The most important part of this tutorial, is the title skip script. Without it, this type of title screen is just simply impossible.
Here is the one I use:
#==============================================================================
# ** Scene_Title
#------------------------------------------------------------------------------
# This class performs title screen processing.
#==============================================================================
class Scene_Title
#--------------------------------------------------------------------------
# * Main Processing
#--------------------------------------------------------------------------
def main
# If battle test
if $BTEST
battle_test
return
end
# Load database
$data_actors = load_data("Data/Actors.rxdata")
$data_classes = load_data("Data/Classes.rxdata")
$data_skills = load_data("Data/Skills.rxdata")
$data_items = load_data("Data/Items.rxdata")
$data_weapons = load_data("Data/Weapons.rxdata")
$data_armors = load_data("Data/Armors.rxdata")
$data_enemies = load_data("Data/Enemies.rxdata")
$data_troops = load_data("Data/Troops.rxdata")
$data_states = load_data("Data/States.rxdata")
$data_animations = load_data("Data/Animations.rxdata")
$data_tilesets = load_data("Data/Tilesets.rxdata")
$data_common_events = load_data("Data/CommonEvents.rxdata")
$data_system = load_data("Data/System.rxdata")
# Make system object
$game_system = Game_System.new
# Make title graphic
# Make command window
# Continue enabled determinant
# Check if at least one save file exists
# If enabled, make @continue_enabled true; if disabled, make it false
command_new_game
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
#--------------------------------------------------------------------------
# * Command: New Game
#--------------------------------------------------------------------------
def command_new_game
# Play decision SE
# Stop BGM
Audio.bgm_stop
# Reset frame count for measuring play time
Graphics.frame_count = 0
# Make each type of game object
$game_temp = Game_Temp.new
$game_system = Game_System.new
$game_switches = Game_Switches.new
$game_variables = Game_Variables.new
$game_self_switches = Game_SelfSwitches.new
$game_screen = Game_Screen.new
$game_actors = Game_Actors.new
$game_party = Game_Party.new
$game_troop = Game_Troop.new
$game_map = Game_Map.new
$game_player = Game_Player.new
# Set up initial party
$game_party.setup_starting_members
# Set up initial map position
$game_map.setup($data_system.start_map_id)
# Move player to initial position
$game_player.moveto($data_system.start_x, $data_system.start_y)
# Refresh player
$game_player.refresh
# Run automatic change for BGM and BGS set with map
$game_map.autoplay
# Update map (run parallel process event)
$game_map.update
# Switch to map screen
$scene = Scene_Map.new
end
#--------------------------------------------------------------------------
# * Command: Continue
#--------------------------------------------------------------------------
def command_continue
# If continue is disabled
unless @continue_enabled
# Play buzzer SE
$game_system.se_play($data_system.buzzer_se)
return
end
# Play decision SE
$game_system.se_play($data_system.decision_se)
# Switch to load screen
$scene = Scene_Load.new
end
#--------------------------------------------------------------------------
# * Command: Shutdown
#--------------------------------------------------------------------------
def command_shutdown
# Play decision SE
$game_system.se_play($data_system.decision_se)
# Fade out BGM, BGS, and ME
Audio.bgm_fade(800)
Audio.bgs_fade(800)
Audio.me_fade(800)
# Shutdown
$scene = nil
end
#--------------------------------------------------------------------------
# * Battle Test
#--------------------------------------------------------------------------
def battle_test
# Load database (for battle test)
$data_actors = load_data("Data/BT_Actors.rxdata")
$data_classes = load_data("Data/BT_Classes.rxdata")
$data_skills = load_data("Data/BT_Skills.rxdata")
$data_items = load_data("Data/BT_Items.rxdata")
$data_weapons = load_data("Data/BT_Weapons.rxdata")
$data_armors = load_data("Data/BT_Armors.rxdata")
$data_enemies = load_data("Data/BT_Enemies.rxdata")
$data_troops = load_data("Data/BT_Troops.rxdata")
$data_states = load_data("Data/BT_States.rxdata")
$data_animations = load_data("Data/BT_Animations.rxdata")
$data_tilesets = load_data("Data/BT_Tilesets.rxdata")
$data_common_events = load_data("Data/BT_CommonEvents.rxdata")
$data_system = load_data("Data/BT_System.rxdata")
# Reset frame count for measuring play time
Graphics.frame_count = 0
# Make each game object
$game_temp = Game_Temp.new
$game_system = Game_System.new
$game_switches = Game_Switches.new
$game_variables = Game_Variables.new
$game_self_switches = Game_SelfSwitches.new
$game_screen = Game_Screen.new
$game_actors = Game_Actors.new
$game_party = Game_Party.new
$game_troop = Game_Troop.new
$game_map = Game_Map.new
$game_player = Game_Player.new
# Set up party for battle test
$game_party.setup_battle_test_members
# Set troop ID, can escape flag, and battleback
$game_temp.battle_troop_id = $data_system.test_troop_id
$game_temp.battle_can_escape = true
$game_map.battleback_name = $data_system.battleback_name
# Play battle start SE
$game_system.se_play($data_system.battle_start_se)
# Play battle BGM
$game_system.bgm_play($game_system.battle_bgm)
# Switch to battle screen
$scene = Scene_Battle.new
end
end
Some scripts may not be compatible with this version. If you have compatibility issues, please don't be afraid to use google. A simple search for "Title Skip RMXP" should suffice. Alternatively, there is another skip script by Pk8, that is usually compatible where this is not. "Pk8 Title Skip Rmxp"
Step Two - Setting up your database:This part will make sure that your actor doesn't appear on the map while the title is going. I highly suggest doing this even if you want the actor on the screen.
Simply go to the last tab in the editor and delete the entire starting party. (They will be re-added later)
NOTE: I have realized that some custom movement scripts, battle systems, and add-ons can cause errors if no members are in the party. In this case simply create a "blank" actor.
Step 3 - Setting up the Events:First things first. If you have a screen resolution script, you are going to have to place the start character event directly in the center. Otherwise simply make the first map an empty map with the default center position as the start position.
Next make sure the map is blank with NO tiles anywhere.
(Unless you are using a map as a bg)
Create a New Event anywhere, but I like to keep them all in one corner. Name it something like "Splashes" or "Logos" etc. This will be the first part of the title, and be the first event to run.
In this event you can start any BGM or display and images or sound effects that you want to show BEFORE the menu.
First, though, Create your first switch and name it Splashes.
Turn it on at the start of the event, this will let the other events later, know that the splashes are being shown.
DISABLE MENU ACCESSor people will be able to open the menu during your title screen.
Next do any fade in/out of your logos and what not. For the example I simply used a nintendo logo, and faded it in black. Followed by a hudson logo.
Here is what the event page looks like.
Now, if you want, you can start it up and notice that it will loop infinately.
This is where we will now fix that.
At the end of your page turn off the "Splashes" Switch and Create and Turn on a new Switch "Main - Title"
This is where it get's fun. If you want a few animations played before the actual titles appear, you are going to have to figure it out. (The kingdom hearts demo should be a good example.)
Otherwise, create a new event page on the same event, and check the box to make sure The "Main - Title" Switch is required to be on.
On this page we will simply display the background, and logo of the game. After that we will activate another switch which will be used to operate both graphics controls and menu selection.
Page 2:
Next create the last page. On this page we will use conditional branches and our first variable, which I named "selection". This will display the proper graphics depending on what is currently selected. 1 is new game 2 is load and 3 is quit.
Page3:
Next are the controls. This is where it gets really complicated... Instead of explaining I want you to take a look at the demo, or the pictures below and analyze what they do. The controls basically check which buttons are being pressed and handle if the player press, for example, Up when they are on the highest choice. A variable is also changed to properly keep track of which choice is currently selected. You can name this variable "Selection"
As you should see in the pictures, there is also controls for when the player presses enter. Now, the setup is all in the pictures and the demo, but incase you want to know. There are also more informative comments in the demo
Also, when you fade into a new game, you MUST use a picture because screen tone will cause glitches. I don't know why, but it does... if it works for you, then great! Most of the time though, the combos you must use to get it done prevent it from working.
Also:
ENABLE MENU ACCESSWhen you feel it is appropriate to do so of course
That's all!This might seem a bit complicated, and I'll admit it took me a while to understand, but once you get it; you will love making custom title screens. Honestly this concept could even be applyed to an in-game menu, but that is a little more complex and time consuming...
Next
Credits and Thanks
- Whoever made the title skip I use... (I've used it too long to even remember)
- Nintendo & Hudson for the logos used as an example
- Zexion ( ME )
Author's NotesIf you want to see a more complex title example please look at the KH demo. It has menus that pop up after the screen is made, animations on the logos etc. and more. Also please note that you can use a simple map as a background, and you can just use characters that walk around, etc. instead of making a fancy background. You just have to think a bit of what you want to do, and the events will do the rest!