For throws, though, I made it choose between random di, hard DI left, or hard DI right.
I'm trying to make sure I understand this right. It first makes a random choice between random, hard left, and hard right. So it has a 1/3 chance to be a random input, which in turn has roughly a 1/10 chance of being cardinal. Is that more or less right?
And if the "random" joystick value used is not a normally possible input to achieve that the game reads, it just doesn't DI at all (I think...).
Isn't that how the game normally handles it? Such as DI'ing in the opposite direction results in no DI? I'm not sure of the details myself either. In general though, one of the vectors will likely yield some sort of DI I would imagine, it'd just be very weak? Honestly my understanding is clearly lacking here.
I know that the stop DI'ing problem existed in the earlier versions, but this should have been fixed if you have the newest one.
Ah, sweet. I really need to update then. Is it the one linked on the main page or have you been posting small updates within the thread? (Sorry for the n00b question here)
-------------------------------
Would it be possible to change the DI to more like what I mentioned though? I don't think it's important to have every single DI option if you cover a solid range of "viable" DI, which is more of what you would expect from an opponent to pick from.
Since I have no idea of how to do ASM yet, I'll just do some basic pseudo code to get communicate something more ideal:
Read Trajectory Input on first frame
Determine viable input range*
Narrow down DI choices**
Randomly select from the most relevant angles as the DI
Input the selected DI on the next frame
* - I'm thinking this can be accomplished by taking the trajectory and subtract 90 degrees to get one value, and add 90 to the other one.
** -
There are 18 inputs that are the most important to cover. These include the 4 cardinal directions, the 4 diagonals, the 8 angles that exist at +17.1 degrees and -17.1 degrees from the cardinals,
and the minimum and maximum degrees in your range (aka the exact perpendicular angles). If you only have it randomly select from these values within the previous range then you would yield the most important/relevant DI angles. If I was coding this in C# it'd be easy to determine these, but I have no idea how to do this within the framework of ASM as I doubt you can create a set of constants and the like. I'm not even sure this is possible.
EDIT: How awesome would it be if we somehow had melee's source code?
EDIT 2: I realised having the min/max angles of the range were also important angles to consider. I've bolded the changed section so that you can easily see the edit if you have already read it before this change was made.