YesNoOk
avatar

Diary of the creation of a P.o.t.S character Part 4: Dynamic Introductions (Read 2768 times)

Started by Ziltoid, September 06, 2020, 06:07:43 pm
Share this topic:
Diary of the creation of a P.o.t.S character Part 4: Dynamic Introductions
New #1  September 06, 2020, 06:07:43 pm
  • **
  • Indeed
Previous parts:

Part 1: Basic Movements

Part 2: Run, Dash, Evade, Power Charge, Zero Counter, Parry

Part 3: Custom Combo, Recovery, Guard

Next parts:

Part 5: Constants, Win animations, Taunts

Part 6: Universal Helpers


Part 4: Lose and Intro animations


Greetings! Finally, mild breezes are refreshing the weather, clouds are covering the hot summer sun, gentle rains are gifting me with their relaxing sounds, and autumn scents are filling the air. But if summer is gone and done, why there are still mosquitoes in my room? Every single night I'm awaken by one of those little buggers. I was thinking about leaving a cup of my blood outside my window as an unholy offering, so the little suckers take the stinking blood from there and leave me just sleep in peace.


Today, I'll tackle the configuration files and the Initialize states. Which, if you are anything like me, are probably the first things you edit in a character. But before that I have a couple of other things to do. Let's get to work.


LOSE/DRAW STATES
This will be fast and not very hard. Insert obvious sexual joke here.

Here, we're just setting up the animation that will play when the character loses by time over. Since Evil Ryu is more of a sore loser than Ryu, we have two different animations.

Spoiler, click to toggle visibilty

Since Evil Ryu's lose animation has him kneeling, I'll be putting a dust explod and sound. Speaking of animations:

Spoiler, click to toggle visibilty

Now the draw. It just takes back to the lose state, so the animations will be the same. "A draw is another kind of a loss" - someone, probably.

Spoiler, click to toggle visibilty

And now the Continue? state, which consists in a dizzy animation, followed by a kinda confused animation or whatever you may see fit. Old Ryu's StateDef 5500 didn't trigger the dizzy animation, guess this is also an update.

Spoiler, click to toggle visibilty

Here are the animations we need:

Spoiler, click to toggle visibilty

INITIALIZE
Someone puts the initialize state (StateDef 5900) right after the 5500, on the System.st file.

But since it can be useful for customization purposes, other creators put the 5900 state on another file (Config.txt), so it can be readily accessed to customize things without having to dig deeply into the files. Said customizations can include: the choice of a certain mode (Ryu and Evil Ryu, Terry and Classic Terry etc), the access of certain moves, custom spark effects (especially on Infinite/DW styled), and so forth. This is done thanks to triggers that can be activated/inactivated manually by just changing a value.

Example: let's say I want to put here the trigger for the mode (which, coincidentally enough, I do). Below, I can change the value on var(1) to 2 if I want to use Evil Ryu.

Code:
[State 5900, Mode Detection]
type = VarSet
trigger1 = 1
var(1) = 1
ignoreHitPause = 1

Worth mentioning that this can be a manually inputted number, as well as a condition. Most notably, P.o.t.S's characters use the palette selection system to activate the trigger.

Code:
[State 5900, Mode Detection]
type = VarSet
trigger1 = 1
var(1) = ifElse(PalNo >= 7, 2, 1)
ignoreHitPause = 1

This value means that, if the palettes from 7 to 12 are chosen, the var(1) value will be 2 and we'll have Evil Ryu, and all others will result in regular Ryu. This is not a method I'm a fan of, I prefer to have separate slots for separate modes (and merge the slots with mugenhook), but that's beside the point.

As far as the modes go, there's another method that results in different character slots for the modes without having two copies of the exact same character folder. This is done by having multiple Config files. I'll talk about it in the .def file section, later on.

Let's get back to the Config.txt. Or rather, let's make one for Ryu.

Spoiler, click to toggle visibilty

And that's it. Again, this is not really necessary and can go straight on the System.st. So, what are we looking at?

The first one is the palette selector. Basically, it remaps the palette based on the PalNo selection, which is as normal as it gets. It is not the only way to deal with the palette selection: Jmorphman's Chun-Li has a complex but awesome palette system that enables a shift between colors in-game. But since I don't need to implement fancy visual effect, I prefer this classic method.

The other two are the VarRangeSets, which are needed to make the VarSets work (I'm not sure if their function goes beyond that). Then we have any VarSets we may want to add (I left there a blank one for future purposes). At the end, we're sent back to the System.st file on state 5901, where the intros are (or you can just put the codes for the intros here right after the VarSets, and replace 5901 with 0 on the End ChangeState, either way is fine).

The next part will be long and, if you're not interested in how intros are made, boring.

INTROS
Back on the System.st with you. We're giving intros to Ryu, as they are in Jmorphman's most recent patch to date.

Old Ryu had the numbers assigned for the intros all over the place, so I'm reassigning the normal intros to more standard values (190-199), whenever I can. The special intros will be rearranged as 6800-6809 (I'm taking example from Jmorphman's Ken here), with the exception of the one vs Ken. Other than that, the following will mostly be a copypasting of pre-prepared stuff.

One thing about the intros themselves I wanna discuss about before diving in. We can group them in two types: normal animations, and interactive intros.
Normal type intros consist on just an action the character performs by itself, and although they can be complex, they will be performed regardless of the opponent's own action (which may or may not be a special intro). All normal intros and some special intros below belong to this type.
Interactive intros are a bit more tricky, as a compatible opponent that perform the action with them is needed. The worst that can happen if you trigger one of these intros with an incompatible character is a broken-looking intro. Of course, nothing game breaking. But we don't want that, so it's important to be as precise as possible in the triggers and specify the exact character we want to perform this intro with. Authornames and possible variations need to be specified too, as you'll see below.

Things get even more complicated here, since Ryu has two of these interactive intros with the same character (Jmorphman's Ken normal version, and Evil Ryu). Here, we also need to "synchronize" the intro with the opponent's intro, to ensure that the opponent doesn't perform the other one. That's why I won't be changing the number assigned to the states of these intros, or I'll mess up the synchronization system.

The StateDef 5901 will dictate how the different intros will be triggered (game mode, opponent, Ryu's own mode, random values, etc).

Spoiler, click to toggle visibilty

I'd really love to put the value for the regular intros as something standard such as "190 + (Random % 3)", but the 192 state is occupied by one of Ken's, and I can't relocate that unless I want to make a patch for Ken. Jmorphman would probably brutally murder me for this, and rightly so. So yeah, I'll keep the awkward ifElse system but I'll relocate the intros.

Rambles aside, here's the first two normal intros for regular Ryu, which are pretty straightforward. They were respectively 352 and 353, other than changing the numbers I won't be editing them.

Spoiler, click to toggle visibilty

A longer version of the next one was also used as the intro against Violent Ken, by using a complicated system of animelem redirects. I want to simplify things and make it a separate (albeit much similar) intro. As such, I'll be getting rid of the redirects.

Spoiler, click to toggle visibilty

Next are the two intros against Ken. Here, the redirects are needed because the triggers in the StateDef 5901 do not specify the Enemy, var(40).

Spoiler, click to toggle visibilty

And here's the third normal intro, formerly known as 355, which is noteworthy for having the bag Explod that stays during the whole match. Which is not a type of detail often seen, unfortunately. I'd like a Blue Mary intro where she arrives in a motorcycle and it stays on stage, Real Bout style, for example.

Spoiler, click to toggle visibilty

The two Evil Ryu normal intros, formerly known as 356 and 354. I'll be saving the 195 and 196 spots for the taunts, and these intros will be now 197 and 198.

Spoiler, click to toggle visibilty

In the 199 spot I'll put the Sagat / Gouken / simul-with-Ken one.

Spoiler, click to toggle visibilty

What follows is a whole bunch of special intros, including some new stuff from the recent patch included in the Ken beta. I'll be porting these as they are, I'll just change the numbers and other small details.

(Note: from now on there's no point in adding reference images, the sprites are pretty much always the same).
Last Edit: September 12, 2020, 07:37:40 pm by Ziltoid
Re: Diary of the creation of a P.o.t.S character Part 4: Dynamic Introductions
New #2  September 06, 2020, 06:09:27 pm
  • **
  • Indeed
(...continue from previous post)

Spoiler, click to toggle visibilty

That was a LOT. Now, for concluding with the intros, the turns one. Finally, I'll be doing some actual conversion again.

This is a bit different from the others since the character, by default (and by "default" I mean "common agreement") jumps in from off screen and does an animation, usually one of his intros, after landing. The code is divided in two parts: the jump-in, which is universal, and the actual intro, which is never too much fancy. A landing dust explod and sound is always present.

Spoiler, click to toggle visibilty

Here's the new intro animations, one for each mode. They're pretty much the same as normal intros, with some landing sprites added in at the beginning.

Spoiler, click to toggle visibilty


And that's it for this time. I wanted to also do the win poses, but honestly this section has me burned out a bit. Would have probably been more fun if I was actually making some intros, instead of just porting and editing them.

Until next time, and thanks for reading! As always, any kind of correction and contribution is deeply appreciated.


Previous parts:

Part 1: Basic Movements

Part 2: Run, Dash, Evade, Power Charge, Zero Counter, Parry

Part 3: Custom Combo, Recovery, Guard

Next parts:

Part 5: Constants, Win animations, Taunts

Part 6: Universal Helpers

Last Edit: September 12, 2020, 07:37:53 pm by Ziltoid