UPSB v3
Tricks & Combos / [topic][1.26.2] Combo Transformation
-
Date: Wed, Jan 6 2010 00:33:20
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.
Some examples:
Here are some trivial 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:CODEX' = 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:CODEX = 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 progession 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:CODEX' = {}
For each trick t in X:
if t has any modifier 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:CODEX' = {}
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.
Here are some not-so-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:CODECompute 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:CODEX' = 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. -
Date: Wed, Jan 6 2010 00:48:14QUOTENote 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.
In what sense? Combo generation only has one thing in common with combo transformation, that being that there's an output. It doesn't go through transformation or analysis, nor does it have an input ...
Unless you say that a combo is just a sequence of continuously transformed combos, in that each subsequent trick is determined based on the ending position of the previous.
EDIT: Example, saying "For each trick x(n) ##-yz, let trick x(n+1) have fingerslots yz-##" where # is irrelevant constant.
In any case, this seems like it would be really useful for someone trying to improve on that oh-so-intangible aspect that is "style." For example, they generate a combo as they typically would, but then run it through filters such as spam removers, fingerslot balancers, rhythm fixers, etc in order to tweak it to be ideal.
Though really this seems to be a complication of the idea that every combo should ideally be well thought-out and looked over before perfected/filmed. If everyone just wrote down their combos and looked at them to find weak points before actually filming them, this would be inherent I think. -
Date: Wed, Jan 6 2010 01:02:09QUOTE (strat1227 @ Jan 5 2010, 07:48 PM) <{POST_SNAPBACK}>In what sense? Combo generation only has one thing in common with combo transformation, that being that there's an output. It doesn't go through transformation or analysis, nor does it have an input ...
transformation can be a misnomer, think of it like a function.
normally functions are always given an input and they produce an output
but some functions have no input. for example 1() is a trivial function which has no input, and produces the number 1. Usually, meaningful functions with empty input are non-deterministic. They give a different output each time you invoke them.
Therefore, combo generation can thought of a function with no input which is non-deterministic and produces a combo of its own. Essentially it is a special case of transformation where the input is null.