farteryhr / tetr.js

Tetris clone in HTML5 and JavaScript
MIT License
49 stars 28 forks source link

Add support for tetrio's SRS+ #7

Open Ethan-Lowell opened 1 year ago

Ethan-Lowell commented 1 year ago

tetrio's srs+ is similar to the standard srs, but with more consistent counterclockwise spins and a standardized 180 kicktable.

farteryhr commented 1 year ago

it's a good issue, down to the 90 spins of I. it's also what i've been always considering, on how to rearrange the kick table to satisfy most properties all JLZTS have, namely reversibility, mirror symmetry and same-kick loop. tetr.io's SRS+ obtains mirror symmetry but loses the other two. in a word, neither current tetrio's and TGM3's I 90 kicks satisfies me.

about 180 rotation, i've copied nullpomino's powerful 180 kick table in the current "Super" implementation, and i'd like to just have the most flexible one in a series rather than taking steps back unless it's valuable to keep (as loved by me) (flexible features doesn't trouble you if you don't use it). sadly i don't like tetrio's 180 kicks being relatively weak (neither nullpomino's SRSWithMild180Kick).

also see "Arika*" where i chose to implement something like ACE-ARS and it counts as covering from SegaRS to TGM3ARS, bot the most flexible variant is chosen. and for most old obscure rotation systems originally without wallkick, a default DTET-ish kicks is applied to them, including NES nintendo version. i don't quite like making useless restrictions on rotation system (just in tetr.js, maybe yes when i later want to do a tetris project with even more history-preserving purpose than nullpomino).

but yes, back to the SRS case, maybe some time (days or years) later i'll add separate "Super*", with optimized I 90 kicks in my mind, maybe also SZ stuck-by-corner case fixed, and possibly even more enhanced (or overall better with a little trade-off) 180 kicks (unfortunately it can't have strict mirror symmetry). in fact Techmino TRS has made tweaks to all these mentioned and more, despite still being hard to notice even as a long time SRS player.

btw, try my XRS of T-EX (which is even not yet added into tetr.js, only available on farter.cn index page as swf and you also need to download a standalone flash player in order to load it), it's an example of my attempt to achieve "asymmetric but comfortable that you hardly notice it (as long as you rotate in the correct direction)".

let's leave this open and make me move faster instead of just typing here(((

edit: my current draft about I 90deg rotations: image