Howdy folks, and welcome to another DCUG Developer’s Diary. I’m writing at a sad time, as today the Freedom Force community is mourning the loss of one of the very best of us, my good friend Daglob, who recently lost his long battle with cancer. I hope to be able to write him a fitting tribute sometime soon, but I’m not really up to it at the moment. Yet, he would want the show to go on, and I think he’d appreciate being celebrated with the creation of more FF content, as our community was very important to him. In any case, please know that this project, and all of my projects from now on, will be dedicated to our fallen friends, Cyber Burn and Daglob, Mike and Bill, two good, generous men who I was privileged to know and call friends. I know that’s a heavy note on which to start talking about a video game, but I hope you’ll forgive me being a bit personal and sentimental and will also join me in praying for their families and friends who are missing them today.
In terms of the mod, I’ve got some some cool things to share with y’all today, so let’s chat about some of our absent friends’ favorite subjects: heroes, daring deeds, and Freedom Force, the game that delivers the best of both.
It has been a productive few weeks, though not as productive as I’d have liked. I’ve finished the next two Aquaman missions, both of which gave me more than a little trouble. In fact, the second one gave me such fits and frustrated me so much that I took a few days off and played Crusader Kings II, so I could be frustrated by a different game! Still, I managed to solve the problems…eventually! I’ll tell y’all all about the process, as well as finally talking a bit about my Green Lantern re-work and possible campaign.
Part 1: Rigging for Trouble
This stage of the project began, as did my troubles, with me returning to my old nemesis…the oil rig map! If you’ve been following this feature, you may remember me talking about this blasted map a few posts ago. I had gotten a hold of an object that would serve as my oil platform, thanks to Daglob (who was always willing to help out), but I couldn’t figure out how to make the object work as terrain in the game. I added a set of these objects directly to the map .nif, and they showed up just fine….but characters would fall right through them to the “floor” of the map! I tried approximately a zillion different fixes, and I finally settled on adding super-sized versions of the pier object from the first game to the map, and hiding them right below the surface of the “rig.” This actually worked, though it created some slight pathing issues. So, problem solved, right?
Well, not so fast! When I started actually trying to decorate the map for the mission that I’d had planned for ages and ages, I made an unpleasant discovery: while the pier sections kept my characters from falling through the oil rig, they made the map an absolute pain to work on! You see, in the map editor, you select an object whenever you click on it, even if you can’t see it. So, every time I tried to move a prop or worse, arrange a marker, I’d have to be excruciatingly careful, lest I accidentally yank my ‘subfloor’ pieces out of position, and then I’d have to try to line them back up and sink them back below the surface of the rig, which is a difficult process to do accurately. To make matters worse, somewhere along the line, this “subfloor” system stopped working! I have no idea why this happened, but it might have had something to do with there being other objects on top of it and the combination “confusing” the game’s engine.
Finally, I got fed up and decided to try to find another solution. Once again, I tried a zillion different ideas before finally landing on something that is so obvious, I can’t believe it took me this long to come up with it! The map already has pieces that the game recognizes as “floors,” right? So, why not just copy those onto the rig’s surface? It’s a nice, simple, square shape, and the “floor” pieces of the map are squares as well, so that should work. And since we’re not trying to keep the space under the rig playable in this mission, the two-story problem isn’t really an issue. So, I started copying the actual pieces of the flat map terrain and pasting them into the scene root. Then I maneuvered them up onto the surface of the rig, and once I had the whole thing covered, I dropped them just below the top, rendering the rig itself as navigable terrain as far as the game was concerned! The concept was sound, and it worked like a charm…mostly.
As I was working on this, I re-discovered a quirk of Nifskope that I had previously encountered but forgotten. When you look at the interface, you can see multiple entries for a given mesh piece, usually a top level name and a sub category called “Editable Mesh.” You can manipulate the piece using both entries, but if you don’t use the “Editable Mesh” bit, the results can be weird. When using the top level, I’ve had edits work fine, but I’ve also had them not show up at all or display strangely. In this case, I forgot to use the “Editable Mesh” entry for my edits, and I built the whole map…only for the pieces to show up all out of position because of this eccentricity. So, when I went back and started over again, manipulating the pieces from the proper entry, everything worked fine, and voila, I had a workable map that wouldn’t drive me crazy in the editing!
Now I just had to decorate it, which is not my favorite part of the process because I’m just not that visually creative. And I’m still not 100% happy with the results. However, the community once again chipped in to help me out, and while I was struggling against a lack of proper art assets for what I wanted, RandomDays found me a nice oil derrick object and a helipad, which he imported for me. I think they add a lot to the random conglomeration of game objects I had been using as my decor. After the decoration was finished, I had a map, and all I needed was a script!
Drilling for Danger
The scripting of this mission had a few bumps, but it wasn’t too bad. I wasn’t trying anything too terribly fancy, as the story was fairly simple and straight-forward. This mission saw our finally finished oil rig besieged by fire trolls (with gorgeous new skins by AA and Deanjo2000), and our heroes having to fight them off while also looking for an explanation for their attack. I decided to go for simple and reliable in my mission design, just using basic encounter types, like Save Civilian and Examine, but I mixed this up a bit by simply having some of the encounters overlap. The heroes will be fighting a set of villains and saving civilians in one location, but there is also a clue for them to examine there, spawned by a different encounter. This allowed me to play around with the order of progression, so that defeating the enemies might trigger more bad guys spawning, but the story wouldn’t actually progress until you had found certain clues. My biggest obstacle turned out to be just space and blocking on the map. Even though I made the rig pretty big, taking up most of the space of the map itself, there still just wasn’t that much room to spread things out, but after working with the layout a bit, I think I managed to end up with a mission that didn’t feel too cramped or overwhelming (though I suppose that’s for the testers to say, when we get there!).
A minor obstacle I encountered was trouble with some of my props. I’m having the Aquatic Aces, who are weak to fire, fight a bunch of monsters who are all about fire, and since I’m not a sadist, I wanted to help my players out with this rather difficult situation. So, I added the ability for the players to turn on a “fire suppression system”, which consisted of cold-ray firing turrets that spawned around the map to help you out. That is all built on a simple encounter system that I’ve been using for years, but I ran into an unexpected problem: namely, the nice, tech-looking control panel object from the Freedom Fortress that I wanted to be the controls for the system didn’t spawn in the mission.
Instead, the medlab bed did, which looked quite odd! I had encountered another of those strange eccentricities of Freedom Force, where a single object template sometimes stands in for a whole host of objects. I assume this was done to simplify matters in game design, lumping a bunch of objects together that were different visually, but identical in terms of gameplay. The same is true of many of the building objects. They will have a single template entry, and then in their directory, a number of different meshes. This allows you to use whichever you want in map design, as you can pick the one you want when you go to its entry in the visual editor itself, but it also means that you can’t specify which one you want through scripting or in the editor menus. Fortunately, this is a simple issue to fix, as you can just copy the template entry and point it to the specific one you want. And with that issue solved, I had a completed mission that brought Aquaman back to the surface for a bit of derring-do and an encounter with some old foes from his very first issue! I’ve had the idea for this mission ever since I saw the JLU episode “Ultimatum,” where a similar scene plays out in the opening act. I always thought that would make a great set-piece for an Aquaman campaign, and although it hasn’t turned out exactly as I’d like, I’m reasonably happy with it.
Part 2: The Big Easy, DC Universe Edition
I had always planned for mission #6 to take place in New Venice, one of those classic DC Universe ersatz-urban centers, like Gotham or Metropolis, a fictional town that had shown up in Aquaman adventures over the years. In the comics, at least the early ones, this was a normal American coastal town that had been flooded, turning it into a New World version of the Italian tourist mecca (a change accepted by its populace with an ease and equanimity only possible in fiction). I had originally toyed with actually creating a whole new map, replacing the street texture of a city map with water and things like that.
However, I realized that, while that would probably look reasonably good, and I could even add boats and swimming civilians to complete the illusion, it would, ultimately, be just that, an illusion. While I could make such a map look okay, it wouldn’t really work properly in terms of gameplay. There was no way for me to have the streets be playable space in depth, as canals should be, and there was also no way for me to properly switch Aquaman from swimming to walking as he moved between different parts of the environment. It would have been a really cool setting if I could have made it work, but it just wasn’t meant to be. So, instead, I decided to use an existing map that had a coastal theme, the Liberty Bay map, which had a big sea-wall and dock.
But there was one problem. When I went to write the mission, I remembered that I had already used that map for Coast City in my JLA campaign! Oh no! So, back to the drawing board again. I started thinking about what type of city a “New Venice” might be. If Metropolis was like New York, what would kind of real-world city would make sense as a setting for Aquaman? I finally settled on using a location from my old stomping grounds, the Gulf Coast, and I decided to model New Venice on New Orleans. The name even works! What if the early settlers in Louisiana were Italian and not French?
Well, now I had a concept, but what I didn’t have was a map. So, looking to save myself time and effort, as I always am in mapping, I looked through Alex’s indispensable FF Atlas to try to find an existing map to use as a base. I settled on one of the Berlin maps, which had a nice multi-level elevation, which is admittedly, very unlike the pancake-flat Gulf Coast, but which gave me the idea to create a partially-flooded map, which I thought would look pretty cool. That gave me a base, and the European-style architecture could work okay for a New Orleans pastiche, if not perfectly, but the dark, grim map didn’t really capture the bright and colorful setting of the Big Easy, so I set to work on tweaking it.
First, I edited the actual terrain nif, changing the dark Berlin grass for the brighter, tropical-style grass from the Cuban maps, and making a few other changes. Then I removed all of the German signage and added some more Southern-style street decor. But that still didn’t do the trick. So, I sought out some help to create some New Orleans-inspired textures for the Berlin buildings. I didn’t want to try to gather up all the textures for the map in a custom directory, so I created new building objects and pointed them to copies of the buildings that I skoped to use new textures. Super Powered Yank came to my rescue again by creating those textures, but he also went above and beyond, volunteering to make some DC-centric signage to replace all of the German propaganda, and he came up with a whole set of general and character-specific signs and billboards that added a ton of atmosphere to this map and to the mod as a whole!
The new, colorful buildings and signs helped a lot, but I was looking through the game assets, trying to find something that I could use to supplement the Berlin buildings, something closer to the classic French-inspired architecture of New Orleans, and I came across some of the houses from the Cuban maps, which had these nice little balconies with iron railings. They were very distressed and looked super beat up, but with Tomato’s help, I got a more respectable looking version, used the “Hue and Saturation” tool in GIMP to create a few different colorful versions, and I finally had the makings of an interesting looking city that could work as my New Venice!
Uncooperative Urban Renewal
For my finishing touches, I added a big water object to the lowest level of the map, adding it directly to the terrain nif so that the cursor wouldn’t react to it in-game, and then I decorated and set the map up for use. Then I just had to write the mission and get it working. I had a pretty straightforward plan. I wanted my big monster, Chemo, to move through the city destroying buildings. That should be simple, right? Wrong. This mission drove me nuts! I thought I had it all figured out from the beginning when I realized that the brilliant creator of EZScript, M25, was even more brilliant than I had realized; he had designed the object-centered encounters to work with more than just one object. So, I just used a “Guard Object” encounter and specified a range of buildings that I set to spawn throughout the city. I made sure they were positioned where I wanted by actually placing them on the map, then converting the buildings to markers and naming them for the encounter, “no_object1, no_obect2,” etc. I thought I was good to go, but when I tested the mission, Chemo smashed the first set of buildings which were all next to where he started, but then he just stood around, drained of all motivation and direction. It turns out that he was too far away from his second objective, and a LOT of experimentation with different setups just couldn’t solve that problem.
So, I had what I thought was a clever idea. I’ll just break the encounter into sections. I’ll spawn placeholder buildings with a CS at the beginning of the mission, and then as each encounter ends, I’ll fade the camera, destroy the next building, and teleport Chemo. Then, as the next encounter starts, it will spawn the building into the right space, and its Alert CS will unfade the camera. That should have worked fine, right? Well, I thought so too, but boy I was wrong! It turns out that the “destroy” command just doesn’t work on buildings, no matter what you do. I’m guessing it’s because buildings are designed to collapse in stages, the only objects like that in the game. So, was I out of luck? Was I going to have to radically redesign the mission I’d already written, settle for something much smaller-scale? I wasn’t sure, and this is when I walked away for a few days.
But, a couple of days later, I had an idea that just might work. I thought, if it’s the fact that these are building objects that is giving me fits, why not simply copy them and make them into Generic object types for my placeholders? I tried it, and everything worked like a charm! Finally, Chemo could smash his way through the city to his heart’s content, moving the action nicely through the map and ensuring that he doesn’t just get stuck in one spot. I have to admit, I’m fairly pleased with myself for figuring this out. Poor Lady Grey had to listen to me talk through the plan as I was working it out, and I imagine she’s even happier than I am that I’m done with this mission!
Part 3: Let’s Ride!
So, in addition to my two new missions, I also had some base scenes to create, and while there wasn’t nearly as much backstory, world-building, and exposition to get through in this section, I wanted to do a little something to keep developing our Aquatic Aces and their environs. I just used one of CK’s excellent underwater maps for my setting, but I was able to do something a little special with it too. There’s a visual I’ve wanted in my Aquaman campaign for years, one associated with the classic version of the character, and I was pretty sure I was never going to be able to do it. Yet, thanks to RandomDays and Tomato, this little dream is coming true, which is just plain neat. Now, keep in mind, these images are still an alpha version, still needing skoping and only having placeholder skins.
You see, for decades, a common visual for Aquaman and the Aqua-Family was them riding through the seas on giant seahorses. It’s a charming and fun presentation of the character and his fantastical setting. The old 60s Aquaman cartoon, which is very much a product of its time, but which I love despite its silliness and poor animation, helped to cement this in the zeitgeist as a visual commonplace for the Sea King. Obviously, this presents all kinds of problems for FF, but RandomDays managed to import a really nice, fanatasy-themed seahorse mount, and Tomato is at work creating some great skins for the specific sea-steeds of the members of the Aqua-Family. This is a minor detail, something that won’t add to gameplay, as I don’t have access to proper animations to make these versions playable, but it’s a wonderful and atmospheric addition to the Aquaman campaign.
Part 4: In Brightest Day
One of my big goals for DCUG 2.0 is to expand the roster and add in a lot of characters that I didn’t get to before, but just as important is an updating and reworking of my existing cast. I was working on the latter when I started reworking my existing Green Lanterns to make them more unique and interesting, and that spilled over into me adding in a ton of new Lanterns, including a lot of the classic alien Lanterns, each customized and having unique builds in several key ways! While the Lanterns all had similar power sets, because they are all using the same equipment, I figured the way they used that equipment would be different, both in terms of tactics and in terms of imagery. So, while every Lantern had some basic powers, they also had at least one unique power, and even their similar powers often had unique visuals, as they would use different images for their constructs. This led me to dive down the rabbit hole of FX, and Cyber Burn came to my rescue several times throughout this process, my good right arm, as always.
One of the touches that I was most pleased with was giving each and every Lantern a distinct weapon they could summon with their ring, drawn from a weapon pack that Cyber had imported and ‘Lantern-ized’ for me. Hal, who strikes me as a baseball fan, summons a baseball bat, while Guy, who is more rough and tumble, gets a spiked club. Kilowog gets his trademark hammer, and so-on. It adds a bit more personality to characters that would otherwise be pretty similar in game.
I also gave every Lantern the ability to summon custom constructs as minions. Hal summons jets, John Stewart summons Marines, and Kyle Rayner summons giant robots, while my alien GLs each get their own thematic summons as well! This took me scouring the archives for suitable meshes and having Cyber, Daglob, and others whip me up some green versions of their skins, and I even made a few myself as I began to haltingly explore some of the tools in GIMP. Interestingly, the lessons I learned while working on this part of the project months and months ago would eventually help me in my mapping work for the Aquaman campaign.
Alright folks, that does it for today’s post. I hope that y’all found this intersting and useful. We’re heading out of town for a week and change on our usual summer trip to see family, but I’ll be back home and back to work on the DCUG soon. In my next post I’ll talk a bit more about how the Green Lantern campaign got started, as well as about the troubles that may spell its end! I’m also going to try to finish the final map and mission of the JLA/JSA crossover, so stay tuned!