I changed the appearance of the L-block, but only for Rosti. For everyone else it'll look the same. As for your idea about pressing down to accelerate locking... isn't that what a hard drop is for? If you don't want to wait, just slam the piece. It's not like it'll fall any further. And I've put 200ms between the beginning of the ARE and the activation of the DAS. As long as you let go of the left or right key during those 200ms, there will be no accidental DAS. Fortunately, if you want to move the next piece, the 200ms doesn't seem to change much. This might affect gameplay, so try it out. New update.
Actually, I just had an idea. If you record the random seed along with user input, you should be able to calculate the score server-side. That would make faking a score prohibitively hard, and would also enable scoreboard replays. Click on the person who's in first place, and see the replay of how he got his score. It's like tetris youtube videos, without youtube! Oh and btw, good to see you didn't implement infinity!
It's mostly for speed. There's no sonic-drop, so if I want to slid under an overhang I have to use down. It them seems odd to press up once I've slid it under the overhang. It's almost the opposite of the movement on TAP where you press up to sonic drop then down to lock. I just think it'd be nice if down did something when the piece was in contact with the stack, and I don't think it would have any bad consequences.
ARS is pretty much opposite to SRS anyway. ARS: CCW-CW-CCW, sonic drop, locking soft drop, upside-down tetromino entry SRS: CW-CCW-CW, hard drop, non-locking soft drop, upside-up tetromino entry
Tetris DS: If the player presses Down after the tetromino has landed (and lock delay has started), the tetromino locks. So Down, land, Right, Down acts the same as Down, land, Right, Up.
Wait, how does this work? What does recording the random seed do to prevent someone from submitting a false score?
192840 Feels kidna good right now. The J and the L could do with a little tweak in their block images, though. When I get home, I'll try and show you want I mean...
Exactly. I was thinking to make it more like Tetris DS. The most useful would be if holding down simply reduced the lock delay to enough for two movements only.
I'm reluctant to implement that, only because doing so will sort of pass the timer code over the readability threshold. Also, giving a timed event variable speed during its timed delay (which this basically comes down to) would require using a very fast Timer, which tends to make the game choppier on slower computers.
I marked important parts you missed in my quote. If you record the keyboard input (and the seed), you can replay the game as it was played by the user, and calculate the score on the server. This still allows for cheating, as you can fabricate your own "recording" of a perfect game, but you would need to write a bot that plays a perfect game for you as the randomiser is still random, and writing such a bot takes considerably more effort than finding out where and how a score is submitted and faking a high number. And, as I mentioned in my previous post, this also allows other players to view the replay of a high score, which is added fun. This is how games like Heboris record their replays. Basically, a replay file is a collection of initial data (rotation rules, next piece rules, game mode, random seed), and then simply a recording of user input. Do you understand what I mean now?
*forehead smack* I get it! That's clever. It's probably even doable. After all, I plan to cache the keyboard inputs for other reasons. I'll need to look for another pseudorandom number generator, though, since the one built into ActionScript's Math object doesn't use seeds (heck if I know what it uses). EDIT: Got it. That was fast. It might be a challenge to write code that identifies fake saved games.
The recording system would be quite similar to this: http://www.gdward.plus.com/site/flash/tetris/ Which has been broken for the high scores, but it seems to be via a scoring bug or other hacking, and the false scores are easy to spot and remove.
I find it pretty annoying that when I pause the game for a minute to go to the bathroom, I come back and it says I lost and that I got a high score. ...and I also find it annoying that when there's a piece that would overlap an existing piece when it spawns, but I DAS it away from there before it spawns and place it all the way on the other side of the playfield, it counts as a topout.
Though it's annoying to lose when your piece overlaps when it spawns, regardless of DAS, having the game ignore that collision but not the other collisions that would govern the piece's motion when you DAS it is just a big mess. Besides, this is Tetris. If someone's trying to move a piece before it spawns and ends the game that is, if someone's expecting some level of control in such a game scenario, after letting their pieces stack so high then whatever they're playing, they've stepped outside of Tetris Proper. As for the pause thing, I'll get right on it. Sorry for being unresponsive, I've spent today cutting meaty chunks of code off the game's display class, so things are more modular and readable. Fun!
I wouldn't be annoyed at all if I didn't have the chance to move the piece in question out of the way. I think losing in that situation would be completely fair if I couldn't possibly move it at all and it just locked where it overlapped. Could you somehow make it so it can't move in this case? Also, I haven't tested it, but if you rotate a piece during ARE and in its initial orientation it would overlap, but not in the orientation you IRSed it into, would it be a topout? Now that would be unfair. What about if you use hold during ARE, and the piece that was put in the hold box would overlap, but the piece that you got out of the box (or the next if its your first use of hold) wouldn't? That would also be pretty unfair.
Well, that's the situation that I'm talking about. Say you have a board that is filled (all 22 rows) on the left half, and empty on the right half. You could fit practically any piece on the right half, if only you could spawn it there. The current DAS/IRS/IHS system doesn't actually spawn pieces anywhere but in the normal starting position. Once a new piece is placed there, it runs through the queue, which contains hold, shift and rotate commands, and then you lose the game if the piece is colliding with blocks in the well, in that order. (Well, it'll be in that order once I upload the latest version.) The rotate and shift commands do not move the piece to a position or orientation in which it overlaps blocks in the well. This means that in most cases when the new piece overlaps blocks in the well on entry, it is impossible to shift it out of the way, even with DAS, because a shift in either direction would still cause it to overlap. If you're lucky or talented, there can be ways to rotate the new piece so that it kicks off the blocks in the well and makes it to an empty space. And I think that this is how DAS, IHS and IRS are supposed to work. They aren't opportunities to change the location and orientation of the new piece when it spawns, they're meant to quickly change it after the spawn once gameplay resumes. As for rotations and holds, they work the way you hope for them to. Or they will. Once I upload it. And then I'll fix the pause thing.
Oh. Well, with the hold, it doesn't make a difference, I think, between the queue and IHS, since the queued commands that come before the IHS get discarded... as for IRS... I dunno, would it break anyone's heart if I just leave that stuff alone? If someone manages to eek out an obscure move that would be impossible with a correct implementation of IRS, good for them, they should pause the game and go out and get some fresh air. I think the pause thing is fixed, BTW. Try to reproduce the issue.