[ QUOTE ]
[ QUOTE ]
Q: What is power customization?
[/ QUOTE ]
A: Good quesiton, depends on who you ask. Power Customization could mean:
<ul type="square"> [*]Being able to change the hue or color of your power's FX[*]Being able to change the way your FX look[*]Being able to change what your power actually does. Ie, more damage but less accuracy.[*]Being able to modify or add secondary effects to your power. Adding Fire damage to your broadswords[*]Being able to change the appearance of henchmen or pets[*]Being able to change your appearance while form shifted from powers such as Granite Armor.[*]Being able to change the animations related to your power[*]Being able to change the sound related to your power[*]Being able to change the name of your power[*]Any or all of the above.[/list]
When we talk about power customization, we're generally talking about the first couple of items...being able to change your power's FX in some way.
[ QUOTE ]
Q: What's so damn hard about power customization?
[/ QUOTE ]
A: The pipeline from power to effects just wasn't designed to be flexible. The powers designer creates a power def. This def defines all of the things associated with a power. What it's called, how much endurance it costs, whether it's a click, toggle, or auto power, its range, radius, etc. Power defs also contain a series of attributes such as doing this much smashing damage and this much energy damage. Power defs are softcoded, but they can't be changed on the fly or vary between one player and another. Power defs also call continuing FX on specific attributes. Ie, play the FX script for stone cages on the Hold attribute. So if the target is actually held, it plays the effect...otherwise it doesn't play anything. This is also softcoded as part of the power def and can't be change dynamically. Nothing related to power defs are stored on individual characters.
Power defs also point to another file called a PFX. This file contains a series of things that happen on events. The first half deals with animations. Play these animation bits when the power is activated. Play these when the power hits someone. This animation takes X amount of time before the damage should actually happen and takes Y amount of time before another power can be used (ie activation time). The 2nd part deals with the effects in a similar way. Play this FX script when the power activates. Play that FX script on hit. PFX scripts are also softcoded and can't be changed on the fly, yadda yadda yadda. These are also not stored on individual characters.
The FX scripts are a series of events and particle emitters. The color of particles are part of the particle scripts set as RGB values. Particles CAN inherit RGB values from the player, but they have to be attached directly to a costume node to do so. Also can't be changed on the fly, also not stored on characters.
So all of the things that determine what effects plays, when they play, where they play, and what color they are are all softcoded. They're in one location, shared by all players with the same power, and can't be changed dynamically or stored individually on each player.
[ QUOTE ]
Q: So how come weapon customization works...what's the difference between it and power customization?
[/ QUOTE ]
A: Weapon models used to be called through the PFX scripts as an activation effects script. Every single PFX for every power in a weapon set calls the exact same activation effect. It's in fact one of the things the game uses to determine whether or not you already have your weapon out. What we did for weapons was we removed the weapon from the common activation effects in the PFX scripts and stuck it on the player as a costume piece. That gets us an always visible weapon that can be swapped out for other costume pieces (ie weapons), color tinted, etc. Unfortunately, we don't want the weapon always visible, so the next clever bit was we stuck it on the player as an animated entity. Weapons are essentially the same thing as wings, or the crab spiders backpack, or Black Scorpions tail. They have their own sequencer that says, Play this move when you get these animation bits'. Animated entities attached to the player models inherit those animation bits from the player model it's attached to. So when you use a power like Slash, the PFX says 'set these mode bits on the player'. The animated entity custom weapon sword inherits those mode bits and starts playing the move where it's visible. While the player is in weapon combat mode, the sword is also in weapon combat mode and is visible. When the player gets out of weapon combat mode and goes into regular combat mode or back into the ready state...the weapon model goes into its default ready mode (it only has 2 modes...weapon combat, and ready)...where it's flagged to not draw. Perfect. Customizable weapons for everyone.
That concept can't really work for anything else...not completely anyway. For everything else that's not a weapon, ever power points to a different PFX which all use different attack effects, activation effects, hit effects, etc. Each PFX in a non weapon powerset generally doesn't have a lot in common with any of the other power's PFXs. So we can't just take one thing out that's shared by everything and stick it on the player as a costume. There are some exceptions to that. We could do it for some things, like the spines that come out of your hands for Spines or the red(pink) pom-poms of Energy Melee...but that's about it.
Now, that whole concept can be extended to do a bit more. It should theoretically be possible to move all of the attack effects and activation effects from the various PFX in a powerset into the sequencer for a null costume 'weapon' for the other powersets. So for example, fire blast would get an invisible 'weapon' model as a costume piece. That costume piece is an animated entity and it inherits all of the anim bits from the player. So when it gets the bits to play the Flares animation, the sequencer move for the 'weapon' would play the attack/activation FX for Flares. This gets over most of the hurdles for power customization. It's attaching effects to a costume node so the effects can inherit the costume node's color...similar to how auras are color tint-able. And it should capable of playing any effects that happen on or from the player. Glowy energy melee hands, fireballs that you hurl, lasers that come out of your eyes...all that stuff.
What it can't do, is play effects on anyone else. The powers system determines if a power hits or not. There's no way for something on your player model to know that you've actually hit anything...no bits for it to inherit and trigger the right animation (hit anim bits play on the target)...no way to know where to put the FX if it could be triggered. Same thing with continuing effects. The power system keeps track of when the attributes are true or not, whether or not to play the continuing effect, what effects script to play, and what to play it on...you, the enemy, a bunch of enemies, your team...whatever. That information doesn't go to the player. So attack effects and activation effects...we could do similar to custom weapons. But hit effects and continuing effects, we can't.
Weapon customization did open up some avenues of exploration and got us thinking more outside the box, but ultimately we found that specific pathway to be a dead end. There's just no way to intercept hit or continuing effects, so every powerset would have some sort of disjointed half customized, half standard look. That's just not acceptable for us, so the only solution is to pursue some other avenue that can handle full customization of every effect associated with a power.
All of that, is stage one of power customization. Figuring out how to retool the system so it can actually work. That's the part that involves writing the new code and making the necessary changes to all of the player power defs and/or PFX to support it.
Stage 2 is a massive overhaul of every single effects script used by player powers that we're going to customize. Right now, the colors for the various effects are softcoded into the particle emitter scripts. Most of our particle emitters use grayscale textures that are tinted to an RGB value through the particle script. In order for a particle to inherit the tint from an outside source (currently only from a costume node it's attached to), it has to be set to red. So 255,0,0 as an RGB value means that particle is going to inherit 100% of the costume nodes RGB color. The more white a particle's RGB value is the less color it inherits. Most basic example of this would be the effects for Energy Blast powers. Those are all tinted various colors, from blue to white. All of those particle scripts would have to have their RGB values shifted to red instead...So there would be a pretty big chunk of work required to 1) tracking down, collating, and duplicating all of the FX and particles scripts currently used by powers 2) change all of the RGB values used by all of the particle scripts so that they can inherit the color from an outside source.
On top of that, we also have some particle scripts that use pre-colored particle textures. Dark Miasma is a good example of that. We also use geometry in some of our FX scripts, and most of them use some sort of pre-colored texture So things like the bubble for Force Fields, that teal blue-green is the color of the texture that's on that sphere. Those particles and FX geometry would have to have new grayscale textures made for them and then they would need to duped and set up to use color tinting.
Stage 2 isn't difficult work, it's just a ton of it. There are tens of thousands of FX and particle scripts that would need to be tracked down, duplicated, and modified.
Stage 3 is hooking all this up into some sort of system or UI to allow you guys as players to change your fireballs from red-orange to green. Most logical place for that is the costume editor, probably something similar to how you currently deal with auras or custom weapons. Other ideas involve special color enhancements that you can slot into powers, console commands that you could type in, options set in the graphics menu, etc. Those are all implementation ideas...probably the easiest step of the whole process.
Can it be done? Sure. Given enough time almost anything can be done. But is it more important to do than all of the various other things that can also be done in the same amount of time? That's the step where power customization as a feature has repeatedly fallen off the list and pushed back to the next issue. We still continue to discuss it, trying to figure out some way to do it in a way that won't require as much new code, or won't require so much time from an FX artist to make it happen.
[ QUOTE ]
Q: Why not make a version for each power that you can chose, and then assign a pre-colored FX script to those. Red Flares, Blue Flares, Green Flares, etc?
[/ QUOTE ]
A: Duplicating powers and PFX in that way makes it very difficult to maintain those powers. We did this for the prestige sprints and it certainly can work, but if we were to do that for every player power then that's a huge amount of duplicate data just to have the visuals changed. The likelihood of bugs related to powers would increase exponentially. Every time Castle would go in to fix a bug with Flares, he'd have to fix that bug for every 'color' version of Flares.
Its also a ton more work than being able to just take the current FX/particle scripts, dupe them one time, and set them to a common tint-able ready color. If we had to manually tint variants for every FX script then its a ridiculous amount of work.
It's also limiting the options for players. What if the shade of yellow we pick isn't the exact shade of yellow-orange, or yellow-green that you were really hoping for. Even sticking to Red, Orange, Yellow, Blue, Green, Violet, White, and Black would be duplicating the power defs for every player power 8 times. And would you guys really be happy with such a limited set of options?
So, its a ton more work for us, exponentially more upkeep problems for Castle, and less options for you guys. Not going to do this
even if it does work.
[ QUOTE ]
Q: Why not make enhancements that add color or change the color of your powers?
[/ QUOTE ]
A: Enhancements won't just magically make color tinting happen. Something like this is more of an implementation suggestion, or how a player might actually go about changing the color of their power effects after power effects can actually be changed.
[ QUOTE ]
Q: We get that it would take a long time to rebuild all of the powersets to be customizeable...but could new powersets be built so that they are customizeable from the start?
[/ QUOTE ]
A: New powersets could be easily be built specifically for color tinting, but we still currently lack the system to take advantage of that.
[ QUOTE ]
Q: What about the hammer from Stone Melee, or the swords for Ice Melee and Fire Melee? Could those be made into custom weapons too?
[/ QUOTE ]
A: Technically, yes...they could. Still, I think we'd prefer to hold off on these particular powers until we can deal with being able to customize the whole powerset. Otherwise we could paint ourselves into a corner by making the elemental weapons customizeable and then not being able to make the rest of the power FX customizeable because of that.
[/ QUOTE ]
tl;dr