DCUG Developer’s Journal #4

Howdy folks!  Time for another dev journal!  This one covers a range of topics but focuses on the addition of new characters to the mod’s massive roster.

First off, I am proud to announce that I’m no longer the only storyteller that will be featured in the DCUG!  Since the very, very beginning, one of my great hopes for this project was that it would serve as a springboard for others to tell their own stories in my version of the DCU.  I envisioned it as a massive sandbox that other DC fans could play in and help me flesh out.  Several folks started various projects to contribute, but they all eventually fell through for one reason or another, most because people just got busy with real life.  I actually still have a partially completed campaign called “Monkey Business” written up that a great guy named lmalonsof and I were working on back in the day, featuring a team-up of DC ape villains.   It promised to be a blast, and I should probably dig it out and try to finish it up one of these days.

Anyway, the new (and, really, only other) member of the DCUG team goes by Or Wolvie, a fellow FF modder who started a very promising project a few years ago but put it on hold after running into technical difficulties (I still hope he’ll finish it one of these days!).  I asked him if he’d like to tell some of his own stories in the mod, and to my delight, he agreed.  I gave him his pick of characters and teams, and he dreamed up some really fun adventures for Green Arrow and for the Teen Titans.  He’s well on his way to having his two new campaigns scripted up, and hopefully I’ll have some previews of them to share before too terribly long.  I for one am really looking forward to them!

Now, on to the update!

In preparation for the finale for the JLA/JSA crossover, I’ve been working on adding some new characters to the mod.  My plans for the mission involve a host of villains of the two teams, drawn from all points in time.  I find myself needing some more of the JSA’s villains, as they were relatively poorly represented previously.  This seems like a good opportunity to offer some reflections on my design philosophy and some info on how characters are built.

It starts with tracking down or requesting the art assets for a character.  At this point, almost any comic character you can imagine has been created, at least in some fashion, by our wonderful FF community.  So, I created my wishlist of JSA foes, posted on Freedom Reborn, and within an afternoon, the community pointed me to where I could find all of them.  Then it’s just a matter of dropping the meshes, skins, and keyframes into the FFvTTR Custom/Library/Art/Characters directory, where I can check them out with the CharacterTool.  When I have chosen the ones I want, I launch the current DCUG build and use the in-game character creator, which is wonderfully flexible and user friendly, to create a character file, or “Herofile”, which records and interprets their stats (like strength, speed, agility, etc.), powers, attributes (like if they can fly or climb walls), material type, and voice.  I often use existing HF packs as a starting point, but I always customize the characters with my own interpretation.

The DCUG was the first mod I ever created, and my character design philosophy has evolved a bit since I made all of its characters.  Now, this means I have to keep an eye on myself so that I don’t screw up the balancing by designing a character the way I did for my more recent mods like Marvel Adventures.  In general, my biggest priority for the early DCUG was comic accuracy and breadth, and I would just provide enough powers and abilities to capture the character, not paying as much attention to playability and fully realizing them as I could have.  I’m in the process of going back and polishing the existing characters to reflect a more comprehensive approach, and I’m building new ones with a more thorough eye as well.

I put more focus on making characters interesting to play and filling each one’s Herofile, giving them a full range of 10 powers whenever possible, as many attributes as made sense, and generally trying to use all available slots.  So, the first new characters I was developing were JSA foes, as I mentioned, and they posed a challenge because I really wasn’t all that familiar with them, having read few of their stories.  Fortunately, the Internet is full of information on ridiculous minutia, like the powers of 3rd stringers like The Fiddler.  My go-to sources are Ben Reily’s excellent Marvel RPG page, which, counter-intuitively, also has info on DC, and the great site Rapsheet, which has info on comic villains.

So, I built the Fiddler, giving him a range of powers to represent his magical violin (yes, that is a real thing in the DC Universe.  Aren’t comics grand?).  I also gave him some neat FFX (Freedom Force community expansion) attributes that allow him to use his music to affect the actual environment of a level.  He can do things like bring inanimate objects to life to fight for him.

I also built The Gambler, who is just a normal human with trick guns and knives.  He proved a challenge because of his limited powers.  While FF is perfect for depicting super-beings, it can get a little tough when you’re making normal humans with any variety or interest.  Fortunately, The Gambler has enough gimmicks to keep him interesting, and I came up with a fun HF.

I also started working on the old war comic classic, the Haunted Tank!  That’s right; after previewing the art for this formidable fighting machine in the last journal, its now actually playable, though I’ll probably keep tweaking it.

As I went, my list of new characters to add continued to grow on me, as it always does, and I cast my net wider. I designed and added a number of JSA villains, but I also ended up adding some Firestorm foes and some members of the Suicide Squad that I had previously missed, taking advantage of some really lovely new skins/skopes by FR member Laughing Paradox.

In this batch of characters I ended up adding:

  • Abra Kadabra
  • Baron Blitzkrieg
  • Captain Comet
  • The Enchantress
  • The Fiddler
  • The Gambler
  • The Icicle
  • Javelin
  • Killer Frost
  • The Mist
  • The Muse
  • Nemesis
  • Plastique
  • Shade the Changing Man
  • Slipknot

After I had finished my designing and testing, it was time to add the characters into the mod itself. There are a number of ways to do this. My favorite has always been a special Rumble Room (the game’s sandbox mode) gametype that adds included characters to the games .dats, or data files. However, in my current Windows 10 build, that gametype doesn’t work quite right, being super, ridiculously slow, so I went with my second favorite, which is Alex’s fantastic Herotool. It has a ‘send to dat’ feature that is very strong and at this point may well be better than using the in-game method.

Now, you might think that’s the end of the process, but it is really just the beginning. Now comes the hard work. First, I went through and wrote all the strings entries, which provide the ‘cleaned-up’ names of characters and powers, biographies, and mouse-over descriptions. This is a little detail I’ve always been very intentional about including in my mods, and it is rather painstaking work, going line-by line, thinking up (hopefully) clever descriptions and names for powers and taglinles. Honestly, it’s one of my least favorite parts of the process.

With that done, it’s time for customizations. FFX has given mod makers and players an incredible set of tools to customize their FF experience. It lets you do all kinds of things that the base game doesn’t. For example, The Enchantress can transform regular items in her environment in interesting ways, like transmutating a street light into a poisonous gas cloud, while Abra Kadabra can trap his enemies in a crystaline cage with its own hitpoints. Some of these FFX additions will work ‘out of the box’ but a lot of them require at least an extra step of customization or setup, especially some of the coolest ones. I’ve given several of these charaters FF1 style active defenses, meaning they’ve got forcefields that have a limited hitpoint pool and can actually be battered down, but that took a few extra steps and some editing of files.

Once all of that is done, then I go through and choose voicepacks appropriate for the characters, drawing on the massive library I’ve acquired over the years, which was hugely expanded by VPMAX, the community voice pack…pack. Those final touches done, it’s time to re-brand all of the new characters with the FFX Control Center, which helps the game identify and understand them, and then it is time to test them out!

Hopefully, everything works right!

In this case, things went relatively smoothly, and I was on to other matters.

As is always the case, I was working on several things at a time, just as I remembered something or as a thought grabbed me. In my various modding meanderings, I also happened to solve a mystery that was partially responsible for me abandoning my Aquaman campaign way back when! I had a lot of big plans for that storyline, and they involved trying things I had never tried before, like adding new objects and maps into the mod. I had a mission planned that would use a huge freighter as a battle scene, and I even managed to track down a mesh for a freighter that I could use. I tried everything I could think of to get that mesh to show up properly in the game, but I never got it to work. However, my recent exprience with the map issues for my JLA campaign showed me the answer. Instead of trying to add the boat as an object, I just added it directly to the map. That still took some doing, but I eventually figured it out, and I now have a way to tell stories I’ve been wanting to tell for years and years!

And that is all the news from the DCUG at the moment! The roster grows, and things proceed apace. Please check back again soon and see what else is in store. Look for some information about Or_Wolvie’s new campaigns soon!

DCUG Developer’s Journal #3

Welcome back Freedom Fans!  Today’s journal covers some more testing, but it also has a teaser for something that is just starting to come together!

I have been working on testing the final expansion JLA mission (other than the JSA conclusion missions), #17.  This features the conclusion of the Injustice Gang storyline, with the League ambushing the Gang in their headquarters, much to their surprise!  I drew heavily on the excellent JL:TAS two-parter, “Injustice for All” for inspiration for this story.  Like the second episode of that arc, we begin with Batman captured and with the League rushing to his rescue.  However, Luthor has an ace up his sleeve, and the villains have backup in the form of the deadly dangerous Amazo!

I thought hard about putting Amazo into his own arc also based on JL, but I figured that I needed to concentrate my storytelling in this campaign in order to get the most bang for my buck because of how much time and effort it takes to create a single mission.  I can plot out endless stories, but there are only so many hours in the day to actually make them.  Thus, I have a less than optimal setup, but I think it makes for a nicely dramatic mission.

Anyway, because of my stacking the deck against my players, I decided to give them a way out in case they found Amazo too much to handle in addition to the other villains.  Using a setup I’ve used often before for turrets and other defenses, I gave Amazo a “kill switch” of sorts.  I created Amazo with a custom encounter, giving him a custom name so I can deal with him between encounters, but I also created a switch in that encounter, which, when flipped, triggers a CS that kills Amazo (bob).  To give the players a hint, I put in a time-delay CS to tip them off.  Check it out here:

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

Encounter: Meanbot1
Type: Custom
Actions: switches exist, villains fight heroes
Villains: amazo named bob
Secondary Objective: “Disable Luthor’s new weapon” for 2500 prestige
Switches: ff_science_equipment
Marker: warehouse2
Next: None

Start Cutscene:
Wait for 240 seconds
Hero says, “Look! If we can get to Luthor’s equipment, we might be able to disable the android!”
Red Arrow on warehouse2_object1

All Switches Turned Off Cutscene:
Camera on bob
Play effect effect_electricalburst at bob
bob says, “Nooo! I had only begun…to live…!”
bob is killed
Play music music_05_fort_ft

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

The mission itself was, once again, a bit of a mess at first, but fortunately, it was mostly an easy fix.  I had mixed my metaphors again in the main CS where the heroes confront the villains, using ‘real’ names (black_manta, cheetah, etc) instead of the substitution names I had given those characters so I could manipulate them between encounters (wet, cat, etc).  That kept the CS from playing.  You see, I had split the villains into two encounters, with Luthor in one and the rest of the Gang in another.  I did this because I had to get clever to work around Luthor’s Energy Shield interrogation bug, which I described in the first journal entry.  I had a devil of a time coming up with a workaround.

The simple thing would be to just use a Cutscene encounter with a new Lex after the defeat of the first, but this would mean you wouldn’t have to defeat the entire team to win.  I tried using that strategy, but starting the CS with a “Starts When” condition, triggered once the other encounters are finished, but those are always temperamental.  It didn’t work, so I tried a LOT of other things before settling on an unorthodox solution.

I made the final encounter a custom one, with conditions to turn off Lex’s AI and the “Allies Want to Chat” condition, meaning he’s interrogatable, without having to be defeated first.  This means that you won’t be able to talk to Lex until there are no enemies near by.  It’s not a perfect solution, but it gets us much closer.  Now, chances are, players will finish off everyone else before trying to talk to Lex.  Unfortunately, the Chat encounters have never really worked, but I got around this too.  I made the CS the End Cutscene for the encounter, so even though a Chat CS won’t work, as soon as the players click on Lex, the End CS plays, which has the same function.  And, viola, we’ve got a functional mission that even has some neat features.

With those intermediary missions finished, I’m on to the new JSA missions!

First, however, I haven’t just been working on testing.  No, I’ve been hard at work updating and tweaking other parts of the DCUG as well, and with the help of our riduclously talented and awesome community, I have a few new additions to show off.

There are a ton of really fantastic meshes, skins, and skopes out there for my favorite hero, Aquaman.  However, as you might imagine, I’m a tad picky about him, seeing as he is my favorite.  So, with the help of the community, and especially Detourne_me, I got an all-star team of mesh, skope, skin, and keys to create my ideal Aquaman for FF.  I also tweaked his powers and abilities, and he’s now more awesome than ever.  I even changed up his aquatic telepathy to use the ‘doot-doot-doot’ sound effect from the classic cartoon!



This awesome Aquaman deserved equally awesome villains, so asked Deanjo2000 to customize some new versions of Black Manta and Ocean Master.  The results are just plain stunning!  Dean really did an exceptional job on both, but his Orm is especially great because he was able to take my vague, unhelpful requests, and turn them into a really nice version of the New 52 look for the character that also incorporates some classic elements as well.



And finally, Detourne_me came through once more, providing me with something I expected to be quite tough, and doing it in record time as well!  Feast your eyes on a classic piece of DC war-comic history….the Haunted Tank!

These are only the beginning, too!  I’ve got several more skopes/skins from Dean and from others that I’m going to be using to update and expand the mod in the days to come.  I’ll post some teases for such updates in these journals from time to time!

DCUG Developer’s Journal #2

Hoo-boy, things have certainly not gone more smoothly since my first journal entry.  This campaign has given me even more troubles.  I encountered a whole set of problems I’d never seen before and just about gave up hope for the finale of the whole darn arc I’m working on.  In the process, I learned a whole lot about maps and objects that I never knew, though I still couldn’t solve my problems.  The good news is that this story has a happy ending, even if it was really in doubt there for a while.

So, when last I left you, I had just finished up mission #14 and had it basically working, so I got started on testing #15.  As with the previous mission, I had already written, scripted, and mapped this one, so testing was all that was left.  It proved to be just as temperamental as its predecessor, but the script problems were magnified by a map problem.  In this mission, the gathered heroes from #14, Green Arrow, Green Lantern, Flash, and Superman, with Batman as an ally, had to rescue the remaining Leaguers, who were once again scattered across different diskworlds.

Fortunately, I had learned from the previous problems, and I anticipated some of the issues in this mission.  I started all of the encounters off at once to avoid the non-completing encounter bug.  Still, I had problems with the custom encounters for MM and GL.  WW’s encounter worked pretty well, but I discovered that I hadn’t created a animportrait (talking head) entry for the Amazons that provided her opponents.  Interestingly, sometimes a missing head.nif or entry will crash the game, sometimes it will just show a dialog balloon with a blank space.  I’m not sure what causes the different reactions.

This instance only resulted in the latter, thankfully.  I was able to fix MM’s encounter by doing the same thing I had one with Flash, using two different encounters with two different MMs, to get both the rescue and the alliance.  This one provided an extra challenge, though, as with so many more characters in play, it isn’t as easy to make the substitution and teleportation as seamless and unnoticeable.  Complicating the matter further, the encounter in question is a ‘Rescue Fire,’ which means the diskworld is sort of a hot place, and my players aren’t going to want to hang around there!  I’ll have teleport my new Jonn to the old one and hope for the best.  Here’s the pertinent script.

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

Encounter: Burn1
Type: Rescue Fire
Allies: martian_man named jonn
Marker: desert5
Primary Objective: “Save the Martian Manhunter from his fiery prison” for 1000 prestige
Next: If All Congregated: Burn4
Next: If None Congregated: Final2

Ally Congregates Cutscene:
Camera on jonn
jonn says, “Thank you my friends, once again, I owe you my life. I would not have lasted long in this fiery world. these flame creatures seem to be everywhere, and the ground burns constantly.”
flash says, “Don’t worry about it, J’onn, that’s what we do. Now let’s get out of here!”
green_arrow says, “Right, just one more little lost lamb and we’ll have the whole set. Maybe then I can go home!”
Fade for 1 seconds

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

Encounter: Burn4
Type: Custom
Actions: allies become controllable, allies fight villains, allies follow heroes, allies remain after encounter ends
Allies: martian_man named bob
Marker: bottom2
Next: None

Alert Cutscene:
bob teleports to jonn
jonn teleports to bottom1
jonn is killed
jonn is destroyed
Unfade for 1 seconds

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

It was here that I really ran into problems, the first of many in this batch of testing, unfortunately.  The GL encounter was only partially working, but the real problem was that my heroes teleported onto the center of the map…and then couldn’t get off of it!  They teleported into the middle of a number of turrets, which were on the edges of the disk, and the team literally could not move to them or reach the Lantern to free him.  There was some type of issue with this particular diskworld that made its edges impassable.  I tried tweaking it in Nifksope, but no luck.  I really don’t know enough about meshes OR maps to figure this out.

So, I had to adjust my story, throwing out that entire encounter or reworking it to fit somewhere else.  I chose the latter, moving his encounter to the final disk, a Timemaster-flavored world, and I switched up the plot slightly.  I’m fairly happy with the results, but it gave me a bad moment or two.

Of course, that was nothing compared to what happened when I went on to #16.  You see, that problem I had with the outskirts of that one diskworld, in the final Timemaster map I was using for the grand showdown with the Key, the ENTIRE map was impassable.  My heroes couldn’t go anywhere, and if I teleported them around with console commands, they would slowly slide back to where they came from.

Once again, I examined the terrain.nif, but I couldn’t make heads or tails of what I was seeing.  I posted on FR, and fortunately, the ever-awesome Detourne_me came to my rescue.  He didn’t know how to solve the problem, but he got me looking in the right directions.  He pointed out that the actual play area of the map was a giant game object, not part of the map itself.  I checked the object attributes of the “cog_massive”, digging through FFEdit’s manual to make sure that it had all the necessary attributes, but no luck.  It’s worth mentioning that there are explanations for each of the mysteries (to me at least) template attributes in the manual.  If you’re ever tying to figure them out, you can check objattributes for a complete listing.

(One of the stages of my frantic attempts to save the map made the cog disappear entirely!)

I checked the terrain itself, which DM had suggested might be the culprit.  Its bottom surface, far below the giant spinning cog, was composed of two levels, and each had an “AREA_UNPASSABLE” label.  DM posited that this might cause problems to anything over such an area, so I tried renaming them.  Progress!  Unfortunately, this only got me one step closer.  Now my characters could move…on the very bottom level of the map, as they would fall through the cog any time I teleported them up there.  I fought and fought with this thing before I hit on a solution.  I finally just copied the cog object directly onto the terrain.nif.  It took a few tries, but I got it right, and I finally had a workable map!  Now I only had to get the script working!

Fortunately, despite the fact that the big finale encounter only partially functioned, it was a very easy fix.  It features a showdown with the Key, where he is invulnerable until you destroy an object.  The CSes weren’t playing, and the object wasn’t showing up.  Turns out, I had misspelled the object name (d’oh!0 and mixed my metaphors, so to speak, in naming the Key.  You see, FF doesn’t like it when you refer to a character in two different ways.  You can use generic terms (like Villain1) OR specific names, like the_key, but you CANNOT use both, or it will choke.  So, easy fixes, and now the mission is playing quite nicely.

That wraps up this journal entry.  Please let me know if this is interesting to y’all, and if there is anything you’d like to hear more/less about, or if you’d like me to illustrate other parts of the process.

DCUG Developer’s Journal #1

Okay, let’s try this out.  There will be some spoilers for the campaign stories, so read at your own peril.

So, while traveling this summer, I had a really helpful email correspondence with Unkoman, who helped me plot several new campaigns and expansions for existing ones.  The centerpiece of my DCUG 2.0 update/expansion is a finished/polished JLA campaign that also provides a significant expansion in the form of half a dozen new missions featuring Green Arrow’s recruitment to the team, the first encounters with the Injustice Gang, and the first battles with the Key.  I created a really fun but, of course, overly ambitious outline.  I wrote it all up, added new materials to the mod, set up the maps, and got it all ready to test weeks ago.  Since then I’ve been very busy, and of course, only able to test and troubleshoot occasionally.  Of course, my attempts to get fancy have led to tons of bugs and lots of frustration.  I had a little time recently and got back to it.

I’ve been working on level 14 of the JLA campaign, where Green Arrow is jumping from pocket universe to pocket universe to rescue the JLA who have been scattered through the multiverse by the Key.  I’m using the ‘disk worlds’ maps from the finale of  :ff:, which makes for a really cool level.  Unfortunately, the maps have some issues.  More unfortunately, my scripts had issues!  I think every single encounter had bugs, and I eventually had to create workarounds for certain parts of it.

The mission was designed with GA encountering four heroes, Batman, Flash, Aquaman, and Superman, each imprisoned on their own diskworld, which was a threat specifically for them.  GA could teleport between them, recruiting each hero as he rescued them.  First I discovered that the individual encounters were not ending properly, meaning the mission never progressed past the first one.  This seems to be a result of using custom encounters that had an ally join your team.

I fixed that by just starting all the encounters at once.  Then, inexplicably, the Flash would somehow join your team twice, meaning there was no room for poor Aquaman….again.  I had to split that up into two encounters, one where you rescue Flash, one where that Flash is destroyed and a different one joins the team.  After I finally solved that I discovered that the diskworld he is on has pathing issues.

Here’s a truncated version of my scripting work-around.  You’ll notice that I name the two Flashes different so the game doesn’t get confused, and I wait to tidy up my extra Flash until we reach the second encounter, that way his being wiped out of existence, Anti-Monitor style, won’t screw up that first encounter.  By fading the camera between encounters, hopefully my players won’t even notice the substitution.:

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

Encounter: Chill1
Type: Rescue Frozen
Allies: flash named bob
Villains: shurale named harry
Minions: shurale, snow_man, snow_man, snow_man, snow_man
Marker: snow1
Primary Objective: “Free Flash from his frozen prison” for 1000 prestige
Next: If All allies freed: Chill2
Next: If No allies freed: Final2

End Cutscene:
Fade for 1 seconds
bob teleports to bottom1

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

Encounter: Chill2
Type: Custom
Actions: allies become controllable, allies fight villains, allies follow heroes, allies remain after encounter ends
Allies: flash named jim
Marker: snow2
Next: None

Alert Cutscene:
jim teleports to green_arrow
bob is killed
bob is destroyed
Unfade for 1 seconds

#————–

I’ve got an idea about that, but I haven’t tried it yet.  Finally, Aquaman’s wasn’t properly rescueable in his custom encounter, so I had to change it up too.  I’ve finally got this mission mostly sorted out…and now I face another one in mission 15, where you save the rest of the team.  I honestly don’t know that I’ve ever had a mission with so many problems per-capita!

Let this be a lesson to you, future modders: don’t get fancy!

The good news is I’m still making progress, and the campaign is coming together well.  I’m also really happy with a lot of how I’ve designed these missions and the base scenes.  I know SO much more about modding these days than I did when I made the DCUG in the first place, and it’s nice to be able to bring a little higher production value to the stories I’m telling.  I’m still often limited by EZScript and the available maps, but I’ve been able to find some fun ways to change things up.  I hope y’all will agree with me when you get a chance to play these missions!

I also just got a small pile of new and updated skins/skopes from Deanjo2000, and they look fantastic!

Finally, I posted an add for a map maker on ModDB.  Since it’s just an unpaid position working on a decade old game, chances are nothing will come of it, but it would be really fantastic if I could get some help with map creation.  That could open up so many possibilities and free up an incredible amount of time for me.  So, cross your fingers, gang!

Completed script:

Story: 14jla

#
# New JLA mission pitting the team agains the Key
#
Starting Encounters: Knight1, Chill1, Red1, Dry1, Dry2, Dry3
#———————————-

Encounter: Knight1
Type: Custom
Actions: allies become controllable, allies fight villains, allies follow heroes, allies remain after encounter ends
Villains: duplicate_male1, duplicate_fem1, duplicate_male1, duplicate_fem1, duplicate_male1, duplicate_fem1, duplicate_male1, duplicate_fem1
Minions: duplicate_male1, duplicate_fem1
Allies: batman
Marker: city1
Primary Objective: “Help Batman defeat the strange civilians” for 1000 prestige
Next: If Ally Survives: None
Next: If Ally Lost: Final2

Alert Cutscene:
Set Lighting to Night
Cinematic camera on green_arrow
Unfade for 2 seconds
Play music music_pandemonium
green_arrow says, “Well…this doesn’t look that bad. Looks a bit like home, actually…though it’s strangely quiet…”
Cinematic camera on batman
batman says, “Green Arrow? How in the world did you get here?”
green_arrow says, “Hiya Bats, I just caught a lift through…”
batman says, “Nevermind! There’s no time! Watch out! There’s something wrong with the people of this world!”
green_arrow says, “What do you mean…?”
Camera on Minion1
Minion1 says, “Hsssss…fresh meat! kill them! rend their flesh!”
batman says, “I think you get the picture. It’s the Key’s idea of a joke. I have dedicated my life to protecting the people of my city…so he sent me to a world where they’re out for my blood..though it seems any will do.”
green_arrow says, “But how…?”
batman says, “Later! Now, just concentrate on survival!”

Ally Lost Cutscene:
green_arrow says, “Nooo!”

End Cutscene:
batman is revived
Cinematic camera on green_arrow
green_arrow turns to batman
batman moves to green_arrow
batman says, “Best as I can tell, this world suffered some type of plague or contamination, and its inhabitants seem to be mad. we should keep our eyes open for more infected civilians.”
batman says, “so, how did you end up here?”
green_arrow says, “You’re welcome….”
batman says, “Yes. thank you.”
green_arrow says, “For saving your….?”
batman says, “don’t push it.”
green_arrow says, “Fine. I had just teleported to the Watchtower when the Key grabbed all of you. I followed him through his portal before it closed. I found myself in a crazy place, glowing, under a neon sky…”
green_arrow says, “there were a bunch of other portals. I crossed my fingers and jumped through, found myself here.”
batman says, “Hmm…disappointing. I hoped you’d have some way to get back.”
green_arrow moves to spot1
green_arrow says, “Yeah, I didn’t really think this through…unfortunatley, these things don’t come with instruction manuals.”
batman turns to spot1
batman plays animation ranged
batman says, “Wait! The portal…it’s open again!”
green_arrow says, “How? Did you do something?”
batman says, “No…I wonder…the Key talked about absorbing dimensional energies in his travels…it’s possible that you absorbed enough as you jumped between worlds to activate his gateways.”
green_arrow says, “Well, there’s only one way to find out. You coming?”
batman says, “It would be tempting fate to say ‘anywhere is better than here,’ but I suppose I’ll take my chances.”

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

Encounter: Chill1
Type: Rescue Frozen
Allies: flash named bob
Villains: shurale named harry
Minions: shurale, snow_man, snow_man, snow_man, snow_man
Marker: snow1
Primary Objective: “Free Flash from his frozen prison” for 1000 prestige
Next: If All allies freed: Chill2
Next: If No allies freed: Final2

Start Cutscene:
Fade for 1 seconds
Set Lighting to Day
Camera on snow1
Unfade for 1 seconds
batman says, “It looks like this world is frozen over. some second ice age, or perhaps nuclear winter.”
green_arrow says, “Brrr! You’re telling me. I wish I’d have packed my thermal costume…”
Camera on bob
green_arrow says, “Look! It’s the Flash, frozen like a TV dinner! and we thought we were cold…”
Camera on harry
batman says, “And it looks like he’s not alone. We’d better free him, but tread carefully.”
harry says, “Raarraggghhhh!”
green_arrow says, “A little late for that!”

End Cutscene:
Cinematic camera on bob
batman moves to bob
green_arrow moves to bob
bob says, “thththththannnnks….gggguys…this entire world…is so cold…even I couldn’t…keep my molecules moving.”
batman says, “we must have been protected by residual dimensional energy. hopefully there’s still enough left to get out of here.”
green_arrow says, “No kidding. I snow as much as the next guy, but this place over does it!”
bob says, “whhhwhhwhat’s going on?”
batman says, “Explanations can wait. We need to find the rest of the League. Let’s hope our next stop is warmer.”
Fade for 1 seconds
bob teleports to bottom1

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

Encounter: Chill2
Type: Custom
Actions: allies become controllable, allies fight villains, allies follow heroes, allies remain after encounter ends
Allies: flash named jim
Marker: snow2
Next: None

Alert Cutscene:
jim teleports to green_arrow
bob is killed
bob is destroyed
Unfade for 1 seconds

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

Encounter: Chill3
Type: Fight
Villains: shurale named harry
Minions: shurale, snow_man, snow_man, snow_man, snow_man
Marker: snow1
Next: None

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

Encounter: Dry1
Type: Custom
Actions: allies become controllable, allies fight villains, allies remain after encounter ends, allies can be freed, allies move when freed, allies in cages, allies do not move, allies thank heroes
Villains: fire_elemental, fire_elemental, fire_elemental, fire_elemental
Minions: fire_elemental1
Allies: aquaman_classic
Marker: desert1
Primary Objective: “Rescue Aquaman from the burning desert” for 1000 prestige
Next: If Ally Survives: None
Next: If Ally Lost: Final2

Start Cutscene:
Camera on desert1
green_arrow says, “Some kind of desert world…well, at least it’s warmer.”
batman says, “very warm. we’d better be careful. we could easily dehydrate here, and there’s no water in sight.”
jim says, “dry or not, I’ll take this over that frozen…”
Camera on aquaman_classic
jim says, “Hey, there’s Aquaman! It looks like there’s something wrong with him…”
green_arrow says, “hopefully it’s not whatever was wrong with those folks on the first world…”
batman says, “no, don’t you see? he’s an amphibian. this place is killing him! we’ve got to get him out of here, quick.”
Camera on Villain1
jim says, “Ohh yeah? I wonder what they’ll have to say about that…”
green_arrow says, “what the heck are they?”
jim says, “They look like some kind of…living flame…sort of the opposite of the things on the snow world.”
green_arrow says, “well, they don’t look any more friendly!”

Ally Thanks Hero Cutscene:
Camera on aquaman_classic
aquaman_classic says, “th…thank you all…I wouldn’t have…lasted much longer…”
jim says, “we’ll find you a nice ocean as soon as we can, aqua-buddy. can you make it?”
aquaman_classic says, “Yes…I’ll be alright, once we get out of this heat…”
green_arrow says, “Then it’s onward and upward!”
jim says, “do you realize what this place means, guys? these different versions of earth…this is the multiverse that physicists have theorized about for years!”
jim says, “scientists have posited that there are infinite variations to our universe, each in its own dimension, and each differing in key ways from our own. it looks liek they were right!”
batman says, “Yes, but unfortunately that multiverse is currently trying to kill us.”
green_arrow says, “Hey, you wonder if there are alternate versions of us out there anywhere?”

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

Encounter: Dry2
Type: Destroy Object
Villains: fire_elemental
Objects: ro_generator
Primary Objective: “Sabotage the automated factory” for 1000 prestige
Marker: desert2
Next: None

Start Cutscene:
batman says, “These fire beings seem to be coming from that portal…maybe we can destabalize if we hit it hard enough…”
Red Arrow on desert2

End Cutscene:
jim says, “That’s done it!”

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

Encounter: Dry3
Type: Hunt
Villains: fire_elemental
Marker: desert3
Starts When: Dry2 not at End
Next: Dry4

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

Encounter: Dry4
Type: Wait
Minimum Time: 30
Maximum Time: 35
Next: Dry5

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

Encounter: Dry5
Type: Hunt
Villains: fire_elemental
Marker: desert4
Starts When: Dry2 not at End
Next: Dry3

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

Encounter: Red1
Type: Rescue Caged
Villains: darkman_blue, darkman_blue, darkman_blue, darkman_purple, darkman_blue, darkman_blue, darkman_blue, darkman_purple, darkman_blue, darkman_blue, darkman_blue, darkman_purple
Minions: darkman_blue, darkman_blue, darkman_blue, darkman_purple
Allies: superman
Marker: ruin1
Primary Objective: “Save Superman from the ruined world” for 1000 prestige
Next: If Ally Survives: Final1
Next: If Ally Lost: Final2

Start Cutscene:
Fade for 1 seconds
Camera on ruin1
Set Lighting to red alert
Unfade for 1 seconds
green_arrow says, “Whoa, this place has seen better days. It looks worse than Gotham.”
green_arrow turns to batman
green_arrow says, “Err…sorry Bats.”
batman says, “It looks like this world has suffered some type of catastrophe…and look…the light.”
jim says, “Red…is that the natural sun color of this world, or is it linked to whatever happened here.”
batman says, “No way to tell…but if this place is under a red sun….I can guess who the Key imprisoned here.”
aquaman_classic says, “Superman…but where…”
Camera on superman
jim says, “there he is!”
green_arrow says, “Well, the good news is, this place looks dead. Hopefully we don’t have to worry about any unfriendly natives.”
Camera on Minion
Minion says, “Outsiders! Maybe they have food! Maybe they WILL be food! Get them!”
jim says, “Arrow! Don’t you know better? You NEVER tempt fate like that!”

Ally Thanks Hero Cutscene:
Camera on superman
superman says, “Thanks, guys…I’ve been robbed of my powers under this red sun. I’ve been staying just ahead of these poor creatures. they’ve been hunting me since I arrived.”
superman says, “It looks like there was a nuclear war here…and the survivors were changed…mutated…it’s not a pretty sight…but the worst part is…all I could think about was…I wasn’t there to stop it.”
superman says, “We’ve got to get home. I won’t let the same thing happen to our world.”
superman says, “Now, someone tell me, what in the name of Krypton happened to us?”
batman says, “I’ll explain, but first, we still have a few Leaguers to find.”

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

Encounter: Final1
Type: Cutscene
Next: Win

Start Cutscene:
Play Transition

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

Encounter: Final2
Type: Cutscene
Next: Lose

Start Cutscene:
Play Transition

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

 

Back in the DCUG!

Historyofthedcu

Greetings Freedom Fans and Internet travelers!  This is an announcement of a current project that is near and dear to my heart: The DCUG (The DC Universe According to Grey)

I’ve always wanted to return to my first and favorite mod and tell more stories, fix it up, and polish the whole thing up.  That’s what I’m currently slaving away on.  I’ve got a TON of work to do and almost certainly unrealistic plans for its development, but I am plugging away at it.  Time is a very rare commodity for me at the moment, as I’m finishing my PhD, dealing with a fair amount of general craziness, and searching for jobs, but I still manage to put a bit of work into this monster from time to time.  There’s not even a tentative release date yet, but I will say that I’ve already written and designed a major expansion for the JLA/JSA campaign, including a conclusion to the unfinished JSA crossover.  I’m in the midst of testing that at the moment, and after that…well, I’ve got a lot of ideas and made extensive notes while traveling this summer.

This post is an announcement and a notice.  The links for the current, unfinished build of the DCUG will come down sometime soon.  I don’t know how long it will take me to finish this update/expansion, but I hope it will be worth the wait and will be a much nicer package, inside and out.

I’m also going to post every once in a while to keep anyone interested apprised of my progress.  I’ll post ‘developer’s journals’ from time to time, talking about what I’m doing, offering general commentary on the project, and probably mostly just griping about bugs!  Feel free to ask questions and offer suggestions.  Interest from the community is one of the things that keeps me going!  Now, back to work!

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.