Toggle menu
468
645
87
4.5K
Fen Spinner Wiki
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

Zombo's Combo Transformation Method

From Fen Spinner Wiki

In 2012, Zombo described a theoretical method[1] he had developed to create derivative combos from an existing input combo and a chosen transformation to apply to it. The method was named Combo Transformation. The original text was hosted on the UPSB Wiki, which has since shut down.

However, it can be retrieved via archives[2], and the text has been included here for completeness.

Original Text

Originally written by Zombo

Introduction

Combo transformation is the process of taking the breakdown of combo(s), applying an transformation to it and obtain new combo(s).

The idea is that if the input is proven to exhibit certain properties, then the transformed combo(s) are proven to exhibit some other properties, guaranteed by the transformation.

The transformation process is as follow:

INPUT → (ANALYSIS → TRANSFORMATION) [iterative] → OUTPUT

The input is the original combo(s) to be transformed. Some transformations have some requirements which the combo(s) must fulfill. For instance, a transformation may require that the input is a 2p1h combo.

Note that the input could be multiple combos and may require some additional argument. These depend on the input parameters of the transformation used.

The input combo then goes through an (optional) analysis phase. This analysis may be required to collect data about input necessary for the transformation. For instance, an analysis could collect fingerslots used in the original combo such that the transformation generate a combo which will not use any of those fingerslots.

The transformation is the actual process of constructing the output based on the analysis performed and the input. The most simple this is done is by taking constructing the output one trick at a time in a linear progression.

Note that the process of analysis and transformation can be iterative. In other words, a complete transformation may require that the transformed output be fed to the analysis as new input and could therefore take several passes before the final product is known.

The output is typically a single combo, but could potentially be a list of combos.

Note that combo generation, which is defined as generating a new combo from scratch, can thought of a transformation with no input. Combo generation is in fact a special case of combo transformation.

Easy examples

Mirroring

This transformation creates a mirror effect by augmenting a 1P1H combo into 2P2H.

Input: A 1P1H combo X

Analysis: None

Transformation:

Let A and B be two pens,
X' = synchronous(X{A},(map(X,')){B}),
where synchronous(C, C') means that C and C' must be performed synchronously,
map(C,M) means that every trick in C will be modified by M
and C{P} means C will be spun by pen P. 

These are local definitions only applicable to the transformation.

Output: X' is a combo which uses 2 pens. Each pen performs the same combo at exactly the same time on two different hands. If we imagine that there is a mirror at the center of both hands, then we can see that both pens will always be equidistant from the mirror at any time, generating the mirror effect.

Slot progression combo

This transformation generates a random combo which follows a certain slot progression. One example usage is to generate combos from serial slot progressions, as defined here.

Input: A slot progression S, which will act as a queue.

Analysis: None

Transformation:

X = empty combo {}
While S contains at least 2 slots:
Take a pair of slots (s, t) from the top of S,
Append to X a random trick using (s, t),
Put t back on top of S.

Output: A combo X which will follow the slot progression S.

Trick modifier reduction

This transformation will generate a simpler combo from the original combo by stripping away any modifiers.

Input: Any combo X

Analysis: None

Transformation:

X' = {}
For each trick t in X:
if t has any modifiers except Reverse, strip them
append t to X'

Output: A combo X' which is simpler because it only uses base tricks. Example: fingerless TAs become TA, Twisted Sonic becomes Sonic, Inverse Sonic becomes Sonic, etc.

Continuous trick reduction

This transformation will remove repeated consecutive instances of tricks, providing a simpler, streamlined combo.

Input: Any combo X

Analysis: None

Transformation:

X' = {}
For each trick t in X:
if the last trick in X' is equal to t: skip
else: append to X'
Where strong equality is used: two tricks are equal if they have the same name AND the same slots.

Output: A combo X' void of any continuous tricks.

Note that you can create larger transformations by combining smaller ones. For instance, a super-duper simplification transformation can chain a trick modifier reduction followed a continuous trick reduction to not only remove continuous tricks, but also tricks that were once different due to modifiers also.

Non-trivial examples

Combo difficulty flattener

Input: Any combo X, some relative min threshold t, some relative max threshold T

Analysis: Difficulty assessment of X, called G. This analysis finds sequences of tricks of various levels of difficulty. It could be used to generate a difficulty graph, which shows the progression of difficulty within a combo. This kind of analysis in its own right would be very useful in determining compelling combo structures. Intuition dictates that the difficulty tends to rise up at the end of a combo, hence the term "finisher".

Transformation:

Compute the average difficulty D.
Find valleys of low difficulty (below D-t) and peaks of high difficulty (above D+T) in G.
Use an auxiliary function to mix and match tricks in those sequences to form a new combo X'.

Iteration: X' must be reprocessed in order to make sure the combo is not even in difficulty.

Output: A combo X' where the difficulty level is mostly constant throughout. Research would have to be done to determine what properties a "flat" combo would have.

Fit to rhythm

One hypothesis is that some combos are built in a patterned fashion: sequences of "fast", small tricks such as sonic variants are separated by flashier and slower elements that either have high spin, air or direction change, body use, etc. The goal of this transformation is to make those sequences equal in rotations to introduce a rhythmic element to the combo.

Input: Any combo X. For maximum potency, the combo should follow the general pattern described above. Plus, the number of desired rotations which we call the "bar".

Analysis: Rhythmic sequences finder. The analysis finds sequences that can be made rhythmic by looking at succession of smaller fast tricks interspersed with flashier, slower elements. Generates a list of sequences S.

Transformation:

X' = clone(X)
For each sequence s in S:
s' = fitToSize(s, bar)
replace(s, s', X')
where the function fitToSize(s, B) returns s',
which is a modification of s to have b rotations,
and replace(s, s', X') replaces s by s' in X'.

Output: A combo X' which has rhythmic sequences following the bar.

Here are some examples of transformations I've come up. I'm sure more will be found as we do more investigation in the field.

See also

References