Custom Loading and Menu Screens

FF WALLPAPER1

Howdy folks!  Lately, I’ve been getting a lot of questions about how to create custom loading and menu screens in Freedom Force vs The Third Reich.  There probably were tutorials once-upon-a-time, yet while there are some good threads about this on Freedom Reborn, there isn’t, to my knowledge, a good, clear, set of instructions on how to do this.

So, you want to give your mod a little extra bit of personality, replace the main menu with a picture of the Thundercats, the Teen Titans, or whatever your mod is about, right?  Well, the process is really quite simple.  Like most things with FF, these interface screens are really easy to customize.  It’s just a matter of replacing files in the right directory.  With the following instructions, you can replace the main menu screen, the Rumble Room screen, the loading screen, and every other game menu and loading screen.

  1. Make sure your mod has the right directory.  You’ll need Art\Library\Interface_Scenes, and at least some of the subfolders.  Which ones you need depends on what all you want to replace.  If you’ve begun your mod by copying FFX, you probably won’t have these files.  You can copy them out of the main FF Data folder, or you can grab them out of one of my mods (which all have at least some of these images replaced).  Now, the folders corresponding to the various loading screens are mostly intuitively named:
    1. mg_ff_team_main is the main menu screen, mg_rumble_room is the rumble room screen, and so on.Screenshot (24).png
  2. Each interface scene in the game consists of two parts, a texture, the actual image that is displayed, and a nif, or mesh file, which is the canvas upon which the texture is displayed.Screenshot (25)
    1. The texture will have a specific name that the nif tells the game to look for.
    2. Some of the scenes have animated or otherwise unusual nifs that can be hard to fit with a texture.  You’ll notice that the default main menu is like this, scrolling through a whole host of characters.
    3. You can replace these with simpler nifs from other portions of the game.  I’ve done this with the main menu in all of my mods, simply substituting a flat nif from one of the loading screens for the default nif.
      1. Of course, if you change nifs, you need to make sure the you rename the texture that goes with it appropriately so the game can find it.
      2. For example, the texture that goes with my chosen main menu nif is load_skyking.dds, while the default texture is made up of a number of different pieces each with a specific name.Screenshot (26).png
  3. To change the image displayed by your chosen interface screen, simply replace its texture with one of your choice.  It must be named exactly the same thing!
    1. All textures used in FF have to be square, with even dimensions.
    2. Interface scenes must be 1024 x 1024, .dds format.
  4. If you’re not sure how to save an image in .dds format, I recommend using GIMP, a free image editing program that can take a .dds plug-in.
    1. After installing GIMP, open your image with it, crop or scale to approriate dimensions, and then Export As a .dds file, named whatever your base texture is, i.e., load_skyking.dds.
  5. That’s it, you’re done!  Enjoy your cool new custom screens!

Well, that was easy, but what if you want to create custom loading screens for your mod’s campaign missions?  Well, this is also pretty simple, but it does require a few more steps.

  1. These files also go in your interface_scenes directory, but instead of replacing them, you actually need to create your own.
  2. Copy one of the comic_blank (comic_timemaster, comic_blitzkreig, etc) folders out of the vanilla Data folder and past it into the Art/Library/Interface_Scenes directory in your mod.
  3. You’ll see that it is a similar animal as the other interface scenes we already discussed, except instead of a nif and ONE texture, it is a nif and THREE textures.  This is what makes those cool fake comic covers for the game’s mission loading screens.
    1. The comic cover itself is broken into two pieces, and then there is a ‘back’ image which provides the background.  You need to replace the two textures with your own cover image chopped up into pieces of exactly the same dimensions.
    2. OR, you can do just like we did with the main loading screen, and simply replace the comic cover nif with a plain nif and only have to make one texture.
    3. Name your folder something fitting for your mission, avengers1, for example.
  4. Now comes the slightly more complex bit.  You’ll need to create entries in FFEdit for your brand new loading screens.
    1. Open up FFEdit, and make sure the Primary Data path points to your mod folder.  Now, click on the ‘Res’ (resources) tab, and scroll down until you see the ls_blank (NOT is_blank!) entries.
    2. Select one of these, like ls_01_begin, and click ‘copy.’
    3. Rename your new entry to be ls_yourmissionname.  Note, it must match exactly what the mission name is in the Campaign tab, so it is a good idea to switch over there, copy the mission name, and just paste it after ls_.
    4. Point the source of the entry to your newly created mission loading screen.  Make sure to trim the data path to start at ‘library’!
    5. Save, rinse, repeat for other missions.Screenshot (28)
  5. You’re done!  These should now display whenever you load one of the appropriate missions.

Doing More with EZScript

We’ve talked a bit about how to do fairly simple things with EZScript, so I thought I’d take some time tonight to talk about getting just a bit more fancy.  There are a few fairly common types of missions whose creation in EZScript may seem a little difficult to figure out when you’re just beginning.  One of the things that I wanted to do when I was first getting started on the DCUG was figure out how to create a mission where success or failure depended largely on the player’s ability to be stealthy.  Do y’all remember the stealth mission from the original FF campaign, the one where Minute Man had to sneak past a bunch of thugs who would trigger an alarm if they saw him?  Well, that gave me the idea, and since I was working on a Batman campaign, it seemed like a perfect fit!

But, how should I go about it?  Well, thanks to M25’s pointers, I finally worked out what I needed to do, and it is a system I’ve used for several missions since then.  To illustrate it, I’ll create part of  a Ninja Turtles mission in which the Heroes in a Half Shell have to slip past the police without being seen, while at the same time searching the city for clues.  We begin with a simple cutscene, and take advantage of the “Next:” field to spawn several encounters at the same time.

#——————————————————————————-

Encounter: Intro1
Type: Cutscene
Next: Punk1, Punk2, Punk3, Guard1, Guard2, Guard3

Start Cutscene:
narrator says, “After rescuing a plucky reporter from a gang of thugs out to ‘send her a message,’ the Turtles joined April O’Neil in pursuit of a story that would prove that they had not been behind a number of recent robberies around New York.”
narrator says, “While the boys stopped for a pizza, April continued her investigation, following her nose right into a trap!”
Cinematic camera on leonardo to raphael
leonardo says, “April’s disappeared, dudes!”
raphael turns to leonardo
raphael says, “Don’t worry Leo, she’s a big girl. I’m sure she can take care of herself.”
Camera on donatello
donatello says, “I’m not so sure guys. I mean, those creeps are probably still looking for her. What if they found her again?”
Cinematic camera on micaelangelo to leonardo
michaelangelo plays animation melee
michaelangelo says, “Well dudes, we gave those losers a pounding once, we can do it again!”
leonardo says, “Right Mikey, let’s hit the streets and see if any of the local riff-raff know anything. But remember, let’s act like ninjas and stay out of sight!”

#——————————————————————————-

Now, there are two things I want to point out about this.  First, you’ll see that I’m calling for six encounters to begin, but they are all encounters that won’t actually start RUNNING until you move characters close to them.  The characters in them will spawn, but they won’t take up too much juice just sitting there.  Something like this gets a lot more demanding when you are triggering encounters that start immediately, and that is something to keep in mind if your machine is a little on the older side.  Second, I forgot to talk about the difference between “Camera on” and “Cinematic camera on” commands in my last EZScript post.  Camera on points the camera more or less straight down at a single character, at a moderate height that will include a good deal of background.  Cinematic gets you in a little closer, and can be good for dramatic moments.  It is also good for FOLLOWING moving characters.  I tend to alternate the two, so there aren’t any jerky camera transitions.  Also, you can tell the game to stretch a shot from one character to another with the Cinematic camera, and that can be good for creating the illusion of a conversation or a face-off.

What’s next?  Well, the three encounters where the Turtles are looking for clues are all just variations on the same theme, stop a mugging, catch a thief, etc.  I’m going to make one of them an interrogation, though, so that our heroes can get some information pointing them to the final encounter.  I COULD make this clue encounter both an interrogation AND something else using a Custom Encounter, but we’ll talk about those another day.  Punks 1-3 won’t have a marker specified, so they’ll be random.  The player will have to search for them.  Guard 1-3, however, have to be tied to a specific location if we want them to look right.  Let me show you what I mean:

#——————————————————————————-

Encounter: Guard1
Type: Flee The Scene
Villains: cop, cop
Marker: post1
Next: If All Escaped: Alarm1
Next: If Some Escaped: Alarm1
Next: If None Escaped: None

Alert Cutscene:
Camera on leonardo
leonardo turns to Villain1
leonardo says, “Uh-oh brothers, we’d better stick to the shadows. We can’t afford to be seen, but I’d really rather not hurt innocent policemen.”

Start Cutscene:
Cinematic camera on raphael
raphael says, “They’ve spotted us! Let’s take ’em!”
donatello says, “But…they’re the good guys!”
raphael says, “Better that they wake up with a headache than we end up in a lab somewhere!”

Villains Escapes Cutscene:
Camera on donatello
donatello says, “This can’t be good…”

None Escaped Cutscene:
leonardo says, “That was too close…we must be more careful. Remember the lessons Master Splinter has taught us.”

#——————————————————————————-

You see, the base for this kind of stealth mission is simply a “Flee the Scene” encounter, and you could technically do that without calling for a marker, but if you want it to look like that Minute Man mission, where your flunkies trigger an alarm, you’ll need to do a little extra work.  See, having a specific marker, in this case “post1” allows you to place another marker “post1_end1” which will tell the villains where to run.  That may not really seem that helpful, but if you were to place the alarm bell from the Nazi base map over that marker, then you’d see these cops run for that alarm, rather than for a particular edge of the map.  Now, you’ve got a few options as to what to do once the alarm is tripped.  If you want stealth to be absolutely vital to the mission, you can simply put “lose” after the next entries for characters getting away.  What I like to do, however, is force the player to face a boatload of reinforcements if they can’t slip past the guards.  The next step is the key, though, as getting the right look is only part of the issue.

#——————————————————————————-

Encounter: Alarm1
Type: Hunt
Villains: cop
Minions: cop
Marker: post4

Start Cutscene:
michaelangelo says, “Look out, here comes the cavalry!”

#——————————————————————————-

You now have to tell the game to summon reinforcements for the shocked cops.  Here, we place a “post4” marker next to a doorway nearby, and use a hunt encounter so that these policemen will chase after the Turtles.  Thus, if the alarm is tripped, it will seem like the cops have called for backup.  You can even add in more dialog to indicate exactly what is going on.

And there you have it.  It is really simple in the execution, but it took me quite a while to figure out.  I like to think that the result in game is actually pretty neat, and a nice variation from the standard fare of “punch this guy.”  I hope that was useful to someone out there!

The Ease of EZScript

In honor of the EZScript Script-Off, I thought I’d take tonight’s post and talk a bit about how to get started with a mission and also post an example script.  For those of you following my “Projects from the Ether” series, don’t worry, it’ll be back soon.  EZScript was, as I said in yesterday’s announcement, a great tool before the advent of the Editor, but now that we have that as well, it is really surprisingly easy to use.  To get started, I’d advise you to read the excellent manual that comes with any download of FFX3.  You’ll find a specific folder for EZScript, and there is tons of great info in those documents.  However, I can give you a crash course here to help you get the hang of it.

  1. First off, decide what you want to do.  I know this may sound like common sense, but it really does help to have a clear idea going into a project.  Decide which characters you are going to use, and make sure that you give them names that won’t cause EZScript problems.  If you’re using herofiles, avoid apostrophes or anything other than letters.  Also, keeping names lowercase is generally a good idea.
  2. If you want to use a map already set-up to work with EZS, (meaning all of the events in your mission will occur at a random spot on the map) you can simply open up the editor and start writing, but if you want to dictate where things will happen, you’ll need to place “markers” on the map you want.  You’ll want to read the Manual to get a good idea of what goes into making EZS maps, but I’ll go ahead and tell you the basic types of markers any adventure needs.
    1. hero1, 2, 3, and 4 (assuming you’re using 4 characters)
    2. encounter1, 2, 4, etc.  You don’t NEED more than a few of these if you’re going to use specific markers, but it’s usually a good idea to have a dozen or so in case someone else wants to use the map.  All encounters that aren’t tied to a specific marker will randomly appear and one of these.
    3. skirmishspawn (very important and often forgotten)
  3. Next, you start writing your actual mission in the editor.  The easiest way to do this is simply to use someone else’s as a base.  I constantly reuse my own work, especially the stuff I KNOW works, and it saves me time and cuts down on careless errors.  You can also start a mission from scratch with the editor.  The first thing to do is to click on the “Panels” menu at the top of the program, and navigate to whichever directory you’re working in.  Doing this will let the editor recognize all of your characters, special objects, even your herofiles!
  4. Now you’re ready to pick from various different types of encounters to create the ACTION of your adventure.  If you’ll look at the big white box on the top right, you’ll see a drop down menu where you can select different types of encounters, objects, characters, and basically all of the elements you need to create your script.
  5. If you want, say, Spider-Man to stop a mugging, then chose the Save Civilian encounter, and you’ll be webbing street punks in no time!  Just chose whichever encounters you like, fill in the blanks, and you’re all set.  Missions will run straight from one encounter to the next, unless you specify something different, and as soon as the last encounter is finished, the mission will end.  Also, if you want to make sure you didn’t make any typos (my nemesis!), then click on the “Tools” menu at the top, and select the analyze option.  EZScript Editor will actually point out all of your mistakes in red!

So, just how easy to use is EZScript?  Well, I put the following simple mission together in under five minutes.  Assuming you have herofiles or built-in characters named “ninja” and “deadpool,” you can drop this in your “stories” directory and play it on any EZScript enabled map.:

Story: Ninjageddon

#Sample EZScript adventure
#
#———————————-

Encounter: Opening
Type: Cutscene
Allies: civilian_female

Start Cutscene:
Cinematic camera on deadpool
deadpool says, “Something clever involving the army of ninjas I’m about to kill.”
Ally moves to deadpool
Ally says, “Help, ninjas!”

#———————————-

Encounter: Badguy1
Type: Hunt
Minions: ninja

Start Cutscene:
Cinematic camera on Minion
Minion says, “Kill deadpool!”
Camera on deadpool
deadpool plays animation melee
deadpool says, “Something clever…again.”

End Cutscene:
Cinematic camera on deadpool
deadpool says, “I need to stop these ninjas from blowing up a bus full of children…or some such.”

#———————————-

Encounter: Explosion1
Type: Disarm Bomb
Villains: master_ninja
Minions: ninja
Bomb: ger_crate_ammo
Time: 160
Next: If Bomb Disarmed: Win
Next: If Bomb Exploded: Lose

Start Cutscene:
Cinematic camera on master_ninja
master_ninja says, “You have come to me to die!”
Camera on deadpool
deadpool says, “Blah, blah, blah, clever clever.”

Disarm Bomb Cutscene:
Cinematic camera on deadpool
deadpool says, “Was it the red wire, or the blue one?”

Bomb Exploding Cutscene:
deadpool says, “Ouch!”

Bomb Disarmed Cutscene:
deadpool says, “That got it!”

Bomb Exploded Cutscene:
deadpool says, “Ouch!”