RPG Maker 2 World Creation Guide 1.1 Basic to Intermediate Information by Brandon Mintern last updated 11-30-06 doan@doanthenado.com a.k.a. Doan the Nado -Contents- 1. Legal Stuff 2. Introduction 3. World Creation Frequently Asked Questions 4. Getting Started: World Layout 5. Connecting Maps 6. Object and Event Placement 7. Exit Map Script 8. Enter Map Script 9. Perpetual World Events 10. World Organization 11. Final Notes 12. Acknowledgements 13. Version Info As usual, you can copy the section name, press Ctrl-F, and find the section you need. 1. Legal Stuff This World Creation Guide was written entirely by me, and I therefore take full credit for it. Anyone else who claims they wrote it is lying. Feel free to download and share this guide to your heart's content: I would like as many people as possible to have access to it. All trademarks and copyrights contained in this document are owned by their respective trademark and copyright holders. 2. Introduction One of the most basic things necessary in creating your RPG is to create the world the player will be navigating. This process, however, is quite complex, and many beginners go about the scripting and orientation techniques all wrong when creating their maps. I know I certainly did, and it caused me to remake a few of my maps several times. This guide will cover basic world creation from start to finish. It will not cover the Map Editor or Dungeon Editor: TheFinalRune has a great FAQ about Map Creation which can be found on the following page, along with some other great FAQs: http://www.doanthenado.com/guides.html. As for the Dungeon Editor, it's pretty straightforward: refer to the instruction manual, and also press Start in the game to get additional help with it. What is covered by this guide is proper World Organization, tips on the layout of your areas, Object and Event Placement, perpetual world events, and the all-important Enter and Exit Map scripts. In all aspects of creation, I will be focusing on consistency and efficiency. I will not be giving suggestions on how to make breathtaking environments: that is up to you. Finally, I will be scrapping the default Enter and Exit Map scripts and giving my own recommendations for these. If you rely heavily on the default ones, you may not want to follow this guide. 3. World Creation Frequently Asked Questions Unlike my Custom Camera System, there are already some frequently asked questions out there, so I don't have to make these up. Here are a few that I have seen. How can I make my player face the right direction when entering a map? This is covered in the Enter and Exit Map portions of this guide. How can I make the camera face the right direction when going from one map to another? This is mainly an issue of map/dungeon orientation. It is important for connecting worlds to all be facing the proper direction. For more information on this issue, see the section on layout. How can I get rid of the default warp sound or make my own? This, too, is an Exit Map script issue which is covered in this guide. When my maps have Visual Effects on them, the effects pop up after the screen fades in. How can I fix this? I will explain exactly why this happens and how to fix it in the sections on Enter Map scripts and Perpetual World Events. I am trying to make an event lay down, but it does not happen until the screen fades in, why? This is exactly the same issue which is occurring in the previous question. Why are you scrapping the default Enter and Exit Map scripts? The main reason is inefficiency. The default Enter Map script uses a huge series of Script Branch: Conditions instead of using the more memory- efficient Script Branch: Sort. A second reason is customizability: the defaults use quite a few sample flags and variables in their scripts, and it is often hard to see exactly what is going on: many creators are not using the stuff that is in there. Another reason is that I like to create my games from the ground up, and that includes removing all traces of what was there before I got started. The default data is very helpful in learning how to use the system, but once you get the hang of it, you are better off making your own stuff, which leads me to the final reason of creating these scripts from scratch. I feel like a lot of RPGM2 creators do not realize how Enter and Exit Map scripts work and as a result, do not realize how to properly use them and utilize their full potential. By informing you on how to create basic versions of these scripts, perhaps I can encourage you to play around a little bit more with them and realize their full potential. You haven't even made a game yet: what qualifies you to make an FAQ? Ouch, that one hurts. Well, I've seen many of these questions asked time and again, and myself and others have answered them time and again. I also believe that my memory-conscious creation techniques can benefit everyone, and may be instructional even to those who are familiar with RPGM2. Finally, even though I have not yet put out a complete game, I have worked on various ones and worked heavily with custom elements, all of which required the use of custom Enter and Exit Map scripts and well- structured worlds. 4. Getting Started: World Layout The first thing you must do when creating your world is to create your world. I know, you're saying, "Well, duh, if you're going to say that, why did you bother making this guide?" Okay, so let's get started. The first choice you must make is what editor your world is best suited for: the Dungeon Editor or the Map Editor. I, myself, like the simplicity of the Dungeon Editor for beginners especially, as the complexity of the Map Editor has chased away many-a promising RPGM2 creator. The Dungeon Editor is best-suited for indoor areas such as houses, shops, castles, prisons, ship cabins, pyramids, large boxes, or whatever else makes sense in your game. The Map Editor, while a bit cumbersome to learn, has a lot more potential, with the ability to make irregular landscapes. It is best used for making outdoor areas, but can also be used for natural indoor areas such as caves, mine shafts, volcanoes, and anything else which is not defined by the straight lines which are used in the Dungeon Editor. Once you have chosen which editor you will be using, it is time to begin creation. Please take my advice and sketch out your area first: you will save a lot of time later when you do not run out of space and have to recreate much of what you've done. So get out a paper and pencil, or (if you like to use computer programs) open an image editor, and sketch out your area. Once you have this done, try to think of possible additions you might want to make to this area in the future: if you are using the Dungeon Editor, it will be important to leave space where you might want to add stuff, because if you are up against the edge of the editor, you will either have to move everything over, scrap the addition, or warp the player to a new world. Once you have everything laid out, it's time to create your world. First, assign a direction on your drawing to be north: it is important to do this for every map you make, and to be consistent. Be sure when you are creating your area that you keep the directions correct. In the Map Editor, you can tell which way north is by the "N" on the map in the lower-right corner of the screen. In the Dungeon Editor, press R1+L1 to face the camera north. I am not going to cover actually creating the world: that is up to you. Play around with the different controls, have fun, and just keep plugging away at it. Before you know it, you will be making very good-looking areas to rival any RPG. 5. Connecting Maps Most of the time, it is not possible to put everything in one area: it is necessary to use teleports. This happens typically when moving from outdoor to indoor areas, or to adjoining sections of large areas. The main thing to keep in mind here is consistency: for our Enter and Exit Map scripts to work together properly, it will be important to follow the principle mentioned in the previous section of always keeping North to the north. If a player has the camera facing north and is walking right (east), and he teleports, he expects to end up on the left (west) side of the next map, with the camera still facing north. If a player walks to the north wall of a house and goes up some stairs, he should be on the north wall of the floor above, and the rest of the rooms should be to the south of him. The lesson here is to pay special attention to connecting rooms and to multiple-story buildings. Make sure to figure out exactly how the areas connect together before designing them. Here is a sample, with north being up in both drawings. A Multiple-Story House ---------------------- First Floor Second Floor ______________ __ ____________________ | | | |-> Enter| | |_^_| | |_D_ | |_|_| | |_n_| | |_U_| | |_|_| |___________| |_p_| | |_V_| | |___|____ _______| |___| _______ _| | | | | | | | | | | | | | | | | | | | | | | | |_______ ________| |_____________|______| Note that the stairs are in the same place on both floors. It is also important to make sure that the overall dimensions of both floors are the same: it would not make sense for the second floor to be shaped different from the first floor. Finally, if you truly want realism, try to make some of the main inner walls match up. In this case, the east-west wall which is at the bottom of the stairs is also in the same place upstairs. The same is true of the north-south wall downstairs. Of course, when entering this house from outside, it would only make sense to either enter a front door from the south end or a backdoor from the north end, and the player should be teleported to the proper part of the house. There is a little more freedom when making connecting areas on the same level, but it is important to maintain the same theme in both areas (unless a change is intended), and as mentioned before, to make sure the player is teleported in a way that makes sense. That is, the player should not view the transition from one map to another as a teleport, but instead as a smooth movement from one map to the next. One other important idea is to try to conserve space when making the interiors of minor buildings. For example, the interiors of all shops for one town could probably go in one Dungeon. If you use a black background and spread the interiors to the four corners of the map, you will never be able to see the other ones, as long as they are all small and you are using the proper camera angle. You may even be able to get away with having two or three "stories" of shops, that is, having 4 shops located at Z=0, 4 at Z=15, and perhaps even some in the middle. Be very careful when doing this, you do not want the player to be able to see the other interiors, but the fact is that merely creating a Dungeon requires 112 memory before you even place any blocks, so if you can put 8 interiors on one map instead of 8 maps, you have already saved yourself 784 memory. 6. Object and Event Placement Now that you have your world built, it is time to fill it up. It is actually a good idea to keep this step in mind while building your area, because if you only allow one square for a fireplace and it takes up two, you will have to do some redesigning. This area of creation is a bit cumbersome for some players; just keep in mind that it is first necessary to create your Object Model, Character Model, Building, or Event before it can be placed using Object Placement and Event Placement. The first step, then, is to determine what you would like to put in your world and to create the object models. If you started out in Beginner mode and switched to Hard (if you are not in Hard mode right now, be sure to switch immediately), this part is trivial: the objects are already all created. If you started out in Hard mode, you will have to create every barrel, crate, and sack that you want to use. HERE'S A TIP when coloring objects: some of them just have gray as their color. If you want to change the color, try to make it a different shade of gray. You can make it darker or lighter, or reddish-gray, and this will change the actual color of the object more than you might expect, without making it look dumb. Regardless of whether you started on Beginner or Hard, you will most likely want to create your own Character and Building models. The next step is to decide which elements should be objects and which should be events. Anything that will just be sitting there doing nothing, such as a rug, table, chair, throne, wall tapestry, sleeping person, or anything else which is merely for looks should be made into an object. If it is something the player can examine, such as a bookshelf ("The words in these books are way too big."), or if it is a person the player can talk to, you will want to make it an event. Also, if it is an object which you would like to resize in a special way, it will also have to be an event. Once you've decided which are objects and which are events, it is time to place the ones which are objects. Go to Object Placement and in the Data section, choose your Map or Dungeon, then go to Edit. You should see your world. Go to the desired locations and place the various objects on your map. One thing that a lot of people do not know about is that you can stack objects on top of each other by holding R1 when placing second and subsequent objects. Once you are all done, press Select to exit and save all of your changes. Now it is time to create your events. Go into the Event Editor, choose your model, decide which direction you want it to face, create the Apply (Content) script for your event, and set how you would like the event to Start (Touch, Examine, Talk, etc). Some events should also have a Motion script: if you want the event to move in any way or to display a VFX or anything else which happens throughout the time the player is on the map, it belongs in an Action script in the Motion field. I have seen many players use Auto Start Content scripts when they should actually be using Action scripts. In fact, I do not use Auto events at all, as I view them as somewhat unpredictable. In most cases, the Action script is the way to go. Finally, it is time to place your events. Go to Event Placement, select your map or dungeon, select your Object Placement data, and then edit your Event Placement data, placing all of your events. After you create adjoining maps, you will want to come back in here and place your warp points to access those maps. Congratulations, the majority of your world has been created! 7. Exit Map Script Don't worry, I did not forget about the Enter Map script, but the Exit Map script has a little bit less going on and is therefore simpler, so I have decided to discuss it first. Some people do not know how to go about using an Enter or Exit Map script, so I will discuss that first. In most cases, I will refer to an "Enter Map script" or an "Exit Map script", but the reality is that these are not just scripts. It is first necessary to go into the Script Editor and create your script as a Content script. The next step is to go into the Event Editor, create an Event (preferably with the same name), make it a System event (this is in the Type field), and then for Apply, choose the script you just created. Your script is now complete. Okay, so what are the basics of an Exit Map Script? Well, let's think about what needs to happen when the player leaves the map. In no particular order, the screen needs to fade to black, game info needs to be loaded for use in the next Enter Map script, and a warp sound needs to play. Depending on some of your game specifics, other things may need to occur, but this is the basic stuff that needs to go in every map script, so that is what I will cover. So let's go into the script editor and create a script called "DefaultExitMap". Mine looks like this: 000 Data: Game Info: Load 001 Script Control: Apply Together 002 Screen Effect: Color=[All Black] Trans=0% 15F 003 Script: Call [WarpSound] And here is the "WarpSound" script: 000 Script Branch: Sort: Variable [WarpSound] 001 Script Branch: Apply If: Number is +1 002 003 Script Branch: To End 004 Script Branch: Apply If: Number is +2 ... ... 020 Script: Branch End Of course, after each Apply If is where you will put the various exit sounds which you want to play. A note about the WarpSound variable: this is a variable that you will have to set up yourself. Then, in each teleport event, set this variable to cause the desired sound to play. That pretty much covers the Exit Map script. Those are the things that are done on every map when exiting. For some maps, you will want other things to happen: for these ones, create separate scripts for them which contain the unique things, and then call the DefaultExitMap script at the bottom. 8. Enter Map Script Now for the complex-but-powerful Enter Map script. First, I will give a little background on it. The first thing that happens when the player warps to a new map is that the Enter Map script runs. Nothing else occurs until this script completes. This means that events' Motion scripts do not begin until the completion of the Enter Map script. This is the cause of much confusion regarding how to properly display Events, and I hope to clear that up here. If you skipped the Exit Map Script section, I suggest you read it now, as it outlines the methods necessary to create these kinds of scripts. Keeping those in mind, let's begin creating a script called (you can probably guess) "DefaultEnterMap". Here is what it looks like: 000 Script: Call [FaceDirection] 001 Data: Variable: [DefCamDirection] = +6 002 Data: Variable: [DefCamAngle] = +40 003 Data: Variable: [DefCamDistance] = +350 004 Script: Call [SetCamera] 005 Sound: Map Music Okay, so lines 001-004 are a sort of plug for my Custom Camera System. If you happen to be using it, this is a good place to set your default variables for each map. If you are not using my CCS, then all you need to worry about is the "FaceDirection" script (and actually, instead of calling "FaceDirection", you could simply place its contents here, in "DefaultEnterMap") and the Map Music. Here is "FaceDirection": 000 Script Branch: Sort: Variable [Party: Dir] 001 Script Branch: Apply If: Number is 0 002 Party: Direction Change (Leader) E 0F 003 Script Branch: To End 004 Script Branch: Apply If: Number is 1 005 Party: Direction Change (Leader) SE 0F 006 Script Branch: To End 007 Script Branch: Apply If: Number is 2 008 Party: Direction Change (Leader) S 0F 009 Script Branch: To End 010 Script Branch: Apply If: Number is 3 011 Party: Direction Change (Leader) SW 0F 012 Script Branch: To End 013 Script Branch: Apply If: Number is 4 014 Party: Direction Change (Leader) W 0F 015 Script Branch: To End 016 Script Branch: Apply If: Number is 5 017 Party: Direction Change (Leader) NW 0F 018 Script Branch: To End 019 Script Branch: Apply If: Number is 6 020 Party: Direction Change (Leader) N 0F 021 Script Branch: To End 022 Script Branch: Apply If: Number is 7 023 Party: Direction Change (Leader) NE 0F 024 Script: Branch End That is all that needs to be done when you enter a map. You will find if you start test play using this script, however, that there is a major error: the screen will never fade in. My suggestion for fading the screen in is to make it a separate Event which is placed on every map, which should preferably be appropriately named "FadeIn". This will be an Event with no model and no Apply script, but instead, create an Action script to be placed in its Motion field. The script needs to only contain: 000 Screen Effect: Color=[All Black] Trans=100% 15F 001 Event Control: Temporary Removal The reason for separating fading from the Enter Map script is to allow it to end before fading-in occurs. This will allow events' Action scripts to begin *before* the screen fades in, getting rid of all those annoying blips where the player sees something move funny right after the screen fades in. One example where this helps is when placing flames on candles: without doing this, the screen will fade in and then "poof!", the flames appear. With this small change, the screen will now fade in with the candles already lit. If you test play an area and it does not fade in, chances are good that you simply forgot to place this event on that map, and that is all you need to do to fix the problem. There are many cases where you may want to modify this sample Enter Map Script which I have provided. This includes those who want to use Nash's special Content script, in addition to countless other things that can be done in an Enter Map script. If you want to do something which is specific to one map, the best idea is to create a script which calls the DefaultEnterMap script and then executes the other stuff that needs done. Do not be afraid to make changes that suit your game: that is the whole reason that I described how these things work. 9. Perpetual World Events I touched upon this briefly in a couple other sections, but so many people do not know how to properly use Action scripts that I thought it deserved its own section. Action scripts have a few major uses: 1. To tell an event how to move (the intended use) 2. To finish execution of the Enter Map script after it terminates (see Enter Map Scripts for details) 3. To register button pushes by a player 4. To run constant checks in a battle system (real time or active time) 5. To run weather and clock scripts 6. And more... I will touch upon #1 again briefly: any time an event should be executing a perpetual action, an Action script is called for. From here on out, anytime I say "use an Action script", I really mean "create an Action script and place it in an Event's Motion field and place the event on every map where you need the effect to occur". Okay, so create an Action script for the Event with its desired movement: this can be anything from a resizing script (very useful in making things like the Dressing Table look right by resizing along the Y- and Z-axes) to a random movement command, to something as simple as "lay down". Now, whenever you are on the map, your event should have its desired effects. This is also where VFX should be placed on events. Purpose #2 was covered in the previous section, so I will move on to #3. In order to make use of custom buttons, you will have to have a script which looks for button presses. If you want these button presses to have an effect on the party, that is outside the scope of this guide: check out Nash's advice on executing Content scripts anytime. However, for things like controlling a custom camera, creating jukebox controls, or showing some kind of pop-up on-screen display, using an Action script to register button pushes is truly the way to go. All that needs to be in the script is: 000 Script Branch: Repeat: Flag[Off(fixed)] Off 001 Input: Buttons: Constant Wait 002 Script Branch: Sort: Variable[User Button] (this is variable 004) 003 Script Branch: Apply If: Number is 8 004 Script: Call [Start Pressed] 005 Script Branch: To End 006 Script Branch: Apply If: 10 007 Script: Call [L1 Pressed] 008 Script Branch: To End ... Script Branch: Apply If... 020 Script:Branch End 021 Script:Branch End This event will need to be placed on every map where the buttons are to be pushed. For more information on which buttons correspond to which numbers, go to Variable 004 (User Button) and press Start, but note that the buttons numbered 5 and 7 are switched. The task of running constant checks in a battle system is best relegated to one or more Action scripts. These can check things such as Event or Game Info to see where the enemies and the party are located, then alter variables which represent member and enemy HP. Another Action script can constantly check this HP to see who is dead and remove them from battle. Exactly what should be in such a script is beyond the scope of this guide, but may be included in a future Custom Battle System that I am working on. A final example of a use for an Action script is in a clock or weather script. These can be as simple or as complex as you want: simply wait a certain number of frames and then do something, whether it be changing the weather or an Hour variable. Place this in a continuous repeat loop so that it happens throughout gameplay. These have been covered in varying degrees in the Technical Help forum of the message board, so I will not go into further detail here. 10. World Organization Finally, now that you have your world created, your Objects and Events placed, and your Enter and Exit Map scripts created, it is necessary to put them all together somewhere. In order to do this, you will have to go to World Organization and create a new one for your world. Under the Basic tab, name your area, choose the proper Map or Dungeon, and add your Object and Event Placement in their respective fields. If the world is to have Default Battle System enemies, add the correct information to the Units field. I have no experience with the DBS, so I will not pretend to tell you how to go about creating enemy units. My suggestion in this area is to check out how some sample worlds are built and model this aspect after them. Next, choose your BGM and World Sounds. This is actually optional, as you may wish to use custom music or to set up some kind of "Jukebox" where the player can control the music, in which case, you would want to leave the music here as "-None-". Finally, move to the "Script" tab and add the DefaultEnterMap and DefaultExitMap scripts in the proper fields. If you do not see your scripts, chances are that you forgot to make Events for them. If this is the case, review the Exit Map Script section to see how to do this. Your world is now complete. Test play as much as possible to ensure that you have left no bugs for the player to find, and once you are satisfied, move on to the next one. Congratulations on a job well done! 11. Final Notes This guide was typed up rather quickly (and somewhat haphazardly). If anything needs clarified or there was a typo, make a post to the message board or send an email to doan@doanthenado.com, and I will be happy to make any necessary changes. As I have stated, I encourage you to modify any and all scripts I have included here: they are merely guidelines as to how to properly construct your scripts. If you have any questions regarding how to do this, make a post on the message board and I or another member will surely help you out. Thanks for reading my guide; I hope you learned something from it. 12. Acknowledgements Thanks to those various members who have been asking questions regarding the topics covered in the guide: you are the reason I wrote it. Thanks to all members of the Domain community. It has been over two years since the board began and we are now nearing the 150 member mark. I am glad to be part of such a great community. Links: The Domain of Doan the Nado: http://www.doanthenado.com Domain Message Board: http://doansdomain.proboards27.com Nash's Post regarding Content scripts: http://doansdomain.proboards27.com/index.cgi?board=Help&action=display&thread=1138247994 13. Version Info Next version: Better explanations of the sample scripts. 1.1.1: 11-30-06 Read it over for the first time in a while and made a few minor changes, mostly related to typos and rewording. 1.1: 3-15-06 A later re-read of the first version, edited to fix some typos and to clarify a few points. 1.0: 3-14-06 Initial release version, not even proof-read. Put together quickly to help a member of the Domain with his map creation.