Actually, it should be quite impossible to 'lock in thin air' in my game. See, I have each block checking for a downward collision of any piece of the block at every frame. It also checks for a downward collision just before it locks into place. It resets the stick timer every time there is no downward collision.
Do you really, REALLY think I would report a bug, if I didn't see it with my own eyes? If I wasn't able to repeat it? This happens in your game! You want proof? Check out how the t piece locks here:
http://www.youtube.com/watch?v=wTOYow6LUwo Like I said it doesn't happen every time. You can even see in the video that I tried to make it happen a few times and failed. Heck I even failed once, and succeeded with the same block. But when your game does something you as the creator cannot explain (as you said, it SHOULD be quite impossible. But it isn't!) that is a BUG!
Here's my guess as to why it happens. (Don't get too upset if I'm wrong, it's a guess) You said you check to see if any blocks are under the falling block before you make it stick. What's important is WHEN you do this. Right now it seems like your code is checking for blocks under the falling block BEFORE you check for movement.
Frame start
...
stick timer is 0.
block is touching stack.
there is a block underneath it.
block locks.
movement is checked. Block is moved to the left or right.
...
That's the best guess I can make solely by observing, and I could be wrong on this, but I'm just trying to help you get started fixing this.
I chose to do it cell by cell rather than pixel by pixel because that's the way I saw as the most efficient way of doing things with my code. As such, it is necessary to have a stick timer, for if you don't, then you'll stick instantly.
When you say you do it cell by cell do you mean code wise, or graphics wise? Considering your blocks fall at a rate slower than one cell per frame, I think impossible for it to be cell by cell. Whatever you have that's timing when the blocks fall down is what I represented with the block on the right. Say you have a timer that counts down from X to 0, and when it reaches 0 the block moves down. X becomes a lower number when the speed increases, so it takes less time for it to move down. If you do something similar to this, that's doing it "pixel wise". If I'm wrong here, I'm genuinely curious how you did it and would love to see some source code. PM me. I don't even need all of it. Just the part the controls your block gravity. It'd be interesting to look at it.
As I said before, I made a gif based on how your game SEEMS to behave. I would not claim to know exactly how it works. HOWEVER even if you are doing things cell by cell (which to me means the blocks can't fall slower than 1 cell a frame) code wise, You still don't need a stick timer. (or lock delay) Here's a different way to do it if you do it cell by cell which should eliminate the glitch when properly implemented: There is one block in between the falling block and the stack. It falls down one. Like in the first gif I posted and as I explained before, it wouldn't make any sense for it to lock, as it would be like the block fell two cells down instead of one. Rather than starting a lock delay at this point, let the block fall down once more into the stack, detect this, and kick it up a space before the user sees it in the stack. At this point you can either lock it. (like NES and game boy Tetris games do) or start lock delay if that's what you really want. Lock delay does NOT start when the block touches the stack. It's a bad design choice, because again it's like the block fell down two cells when it's done like this.
I'm getting very irritated with people judging my game based on other tetris games.
How could you make a Tetris game and not expect to be compared to other Tetris games? If I make a platformer I expect to be compared to other platformers, even if they are NOTHING like my game.
My goal was never to copy another tetris game but instead to make a tetris game that behaves in the way I like a tetris game to behave. I like it as it is. I like how blocks slide. I like how blocks fall. I like everything about it.
I respect your goal not to copy all Tetris mechanics from any one game. There have been some GREAT games made this way. But that fact that you like everything about your game does not change my opinion of it. That's the whole point of a review. To state how
I feel about your game. How
SoulAnger feels about your game.
Reviews are only constructive criticism to say what we liked about your game, and why we liked other games better or worse. You are free to ignore any suggestions we make. Honestly, I'm only trying to help you make the game better. Would I have spent time making those gifs (which yes, I actually did make myself frame by frame) if I wasn't? I could've just told you you're wrong. I don't care that you don't want new Tetris mechanics. I LIKE the NES and Game Boy Tetris. But I'm not as big a fan of your game. If you don't care about that EITHER that's fine. I'm trying to help with WHATEVER your goal is with your Tetris game. And I'm trying to let you know about different ways to implement and think about Tetris. If you want to ignore everything I say as you already like your game, that's cool too. But I know a fair amount about Tetris and I'm just trying to get a feel for what you're trying to accomplish, and help you reach that goal, or at least fix the bugs. PM me if you want my help or have Tetris questions, or at least take responses to this post to my own review topic.
I apologize again soulanger. If I get another response here, I will take it to PM.
Edit: soulanger Yes I play NDS_TGM. It's my main Tetris game. I alluded to it in my review when I said I play a game where the blocks fall 20 cells in one frame. I could play 20G ALL DAY, and I'm getting pretty good at Shirase. I can survive indefinitely at 20G's 0 level. (You can set a constant speed in the training mode) If you want to know some stuff about Tetris, check out that wiki. Read about SRS and TGM rotation at least. That will let you know the different between Tetris DS and NDS_TGM. Beside the rotation system, I also LOVE TGM's randomizer. Tetris DS' "random" is a joke. I also play lockjaw which lets you customize ALL the options, like rotation system lock delay. You can choose how long the delays are, whether or not you can hold a piece, whether or not there are floor kicks, what hard drop does. It's only worth it if you know about Tetris and what all the options do though. But there IS a wiki for that.