Introducing Jester.

Thread in 'Discussion' started by JoshuaD, 1 Apr 2008.

  1. JoshuaD

    JoshuaD Unregistered

    Download Jester Now.


    As some of you may remember, I've been working on a tetraminos game on and off for a while now. Here's a new version that I'm very excited about. I've fixed most of the bugs/feature requests from the last thread, and at everyone's request I came up with a name. It came to me not less than 10 minutes ago, and it's the first name I've come up with in 2 years that I actually like. I think it might stick. [​IMG]

    This version is definitely still rough around the edges. The graphics are all stand ins and there's currently only a TGM-Style scoring system available. Some SRS style configuration should be coming along shortly, that's next on my list.


    I'm hoping that we'll be seeing more development. I had about a 6 month dry spell where I didn't touch this code at all. It's only been about 2-3 weeks of casual work since the last version, I've just been lazy. [​IMG]

    I'm putting it up here so you guys can again give general input and so you can play test the TGM1 emulation and let me know if it's up to snuff. If (when) anything's different from classic TGM1, please let me know. I still have never played the original game; I'm going entirely from the information available here at tetrisconcept.


    Enjoy! Let me know what you think.




    P.S. This is my time schedule for the game:


    v0.8 - Close/Perfect Emulation of TGM1-3, SRS, and a few others (make requests)

    v0.8.5 - XML based configurations everywhere.

    V0.9 - Net Play!!!!!

    v1.0 - A general make over. New Skin, new Sounds, simpler configuration screens. Also, behind the scenes I want to get my code nice and clean before I call it v1.0. Probably a dedicated website as well.
     
  2. Thank you for your game Josh. I don't have much time to look at it now, but I have noticed that in ARS you switched the colors of L and J.


    Do you plan to add preset game modes?
     
  3. JoshuaD

    JoshuaD Unregistered

    I just realized this really looks like an april fools joke, with the name and date and all. It's not! It's a new version of the one I posted on this thread. Just an unfortunate coincidence. [​IMG]
     
  4. JoshuaD

    JoshuaD Unregistered

    Oops! Thanks.


    Definitely. I hope to be able to emulate any version of tetris out there and any game mode those ones contain. You'll also be able to mix and match settings so you could play a TGM style level rush with SRS style rotations and DTET blocks, but with limited floor kicks and no wall kicks. The idea is the maximum level of configurability while still being able to have near exact emulations of the big versions out there.


    The only thing I'm not going to implement at this point is fancy blocks. It's not difficult to implement in the future, but it's further than I want to go in version 1. Net play is getting closer, and that's very important to me to get done.
     
  5. jujube

    jujube Unregistered

    this is better than Hatris [​IMG]
     
  6. The alternative CCW button is kinda useless right now since you can't slam the first CCW button quickly followed by the alternative to make a double rotation like in the TGM series.
     
  7. Edo

    Edo a.k.a. FSY

    I had a quick go on Jester earlier today, and it's looking good so far.


    [​IMG]

    I only played one game, but as you can see, it was a fairly long one, so I had ample opportunity to test out some key aspects in detail:


    The basic rotation seems totally accurate. I also set up some pretty esoteric wall-kick situations, and all the kicks worked as expected, so good job on that!


    The gravity needs a bit of attention. Although it's harder to examine at lower speeds because of the "smooth gravity", I can tell for sure that the 20G isn't quite right; I often found my pieces undesirably sliding over holes that they shouldn't. In true 20G, pieces instantly fall to the lowest point possible. I say "fall", but there is no actual falling; the pieces just "appear" at their lowest point, there is never even a single frame where the pieces are suspended in mid-air.


    Here's an example of true 20G.

    DAS is fully charged during ARE. These are 3 consecutive frames:


    [​IMG]

    Notice that the piece actually spawns touching the stack (the lowest possible point). Also, when the piece slides off, there is no intermediate "falling" frame; it appears at the very bottom instantly, and despite having fully charged DAS and almost the entire height of the field to fall, the piece will get stuck in the hole.


    Okay, that should give you something to work on for now. When I get a bit more time, I'll check the scoring, and if possible the timings. Good luck with everything JoshuaD, I look forward to seeing your next release!
     
  8. Zaphod77

    Zaphod77 Resident Misinformer

    here's the proper algorithm for processing movement, rotation, and gravity, per frame.


    1) if piece is spawning, process initial hold, if game has it.

    2) if piece is spawning, process initial rotation.

    3) if piece is to be spawned, spawn piece.

    4) if piece just spawned, apply gravity. If gravity is 1g or greater, then the piece will drop that many lines before you can move it.

    5) process rotation

    6) process movement

    7) process gravity.


    Note that this assumes that movement never goes faster than 1g.


    If auto shift speed ever gets faster then 1g, the routine must be modified. If the shift speed is greater then gravity, then the piece will skip over the hole. otherwise the piece will fall in EVERY TIME.
     
  9. JoshuaD

    JoshuaD Unregistered

    edo: Thanks for the feedback, it's invaluable.


    I think this one should be an easy fix. Wanna give this a shot?


    Go into the game directory, and into "rules". open up "TGM Strict.xml" with notepad or whatever text editor you'd like. Change "<persistantShifts>true</persistantShifts>" to "<persistantShifts>false</persistantShifts>".


    That should do the trick. If not let me know, I'll have to change the order things happen in.


    P.S. If you want to jump straight to 20G at the first level, change "increment" to 320 and "framesPerInc" to 1. To make the level longer, change "tgmLevels" to something like 100.
     
  10. Edo

    Edo a.k.a. FSY

    I'm sorry to say that this doesn't have the desired effect; the pieces are still jumping over holes that they shouldn't.
     
  11. JoshuaD

    JoshuaD Unregistered

    So in 20G, this frame never exists?


    [​IMG]

    What about at lower gravities? Does it always process the first frame of gravity before allowing any input? Even at gravities <1G?
     
  12. JoshuaD

    JoshuaD Unregistered


    Yea, this looks to be the same algorithm edo is describing. I can definitely run it that way if that's the norm.


    I'll put up a version later tonight with these changes all in place.


    Thanks for the info guys.


    I just wrote a quick and dirty frame-stepper for the game. I'll include it if you guys would like to be able to step a frame at a time through the game to make sure things are right.


    -Josh
     
  13. jujube

    jujube Unregistered

    that's correct. in a sense, the piece should spawn on top of your stack.
     
  14. Zaphod77

    Zaphod77 Resident Misinformer

    That frame only exists at less than 1g.


    at 1g, it will spawn 1 line down


    at 2g it will spawn 2 down.


    at gravity less then 1g, you can get in a shift before the piece falls any lines.


    That's why people like to stack high in TGM at 400-500. With a high stack, 5g is effectively 20g.


    Since no tgm series game has an auto shift rate of greater than 1g, my simiplified version of the algorithm is accurate for any tgm based recreation.


    But if you put in auto shift rates of greater than 1g, that screws everything up. Then you need to check the intermediate frames, and when shift rate is greater then gravity, allow the skip, and otherwise, stop motion at the hole and make the piece drop.


    Personally i'd not allow the auto shift to ever go above 1g, so there are no intermediate motion frames to ever check.


    Needless to say, don't allow auto shift to EVER go above 10G, as that will break 20G.


    If you wish to clone other games, they may have different rules abut 20G play.


    Most notably, the slow auto-shift of Tetris DS means that you cannot do a auto-synchro in tetris ds. You MUST hit sideways and rotate on the same frame. In fact, even if you do, it still may proccess gravity before movement, which disallows all synchros.


    Testing with other games is required to try and clone them.
     
  15. jujube

    jujube Unregistered

    well, not necessarily. i modified lockjaw so that shifting is instant with 20G. if you press right, the piece attempts (1, 0). if that passes, it tests (0,-1) repeatedly until that fails, then it tries (1, 0) again. wherever (1, 0) fails the piece stops, and it's drawn in that location. this could be altered so that a piece can only shift one column per frame, or however fast you want it to shift, as long as the piece falls as far as it can every time it shifts one column.


    edit: and to make a kick like this work, just process rotation before movement:

    fumen
     
  16. JoshuaD

    JoshuaD Unregistered

    Jester V0.7.6


    I believe I addressed all of the problems brought up here. If I missed something let me know.


    I added a frame-by-frame stepper. Use F2 to turn it on and off, and F1 to step forward a frame.


    Let me know how things are looking. I'm currently working on getting the land sound to fire the frame it lands, not the frame after. It should be an easy fix.


    Enjoy.
     
  17. jujube

    jujube Unregistered

    even though i haven't made it to a high enough level to reach 20G [​IMG] (i'm a little out of practice with TGM rotation) the pieces still seem to be jumping over holes that they shouldn't. i'm dying at that point in the game where it's almost 20G, and the pieces will correctly DAS over small obstacles near the wall as they do in TGM near-20G, but the behavior after a piece lands in Jester feels a tad off. i can't tell if shifting is too fast, or gravity isn't working properly after a piece lands, or what it is exactly.


    sorry i can't tell you whether or not 20G feels right [​IMG]
     
  18. tepples

    tepples Lockjaw developer

    In one school of thought, this frame exists at some point, but:
    1. This frame is not displayed.
    2. Shifting is not possible during this frame.
    3. Up to one 90 degree rotation (without wall kick) is possible.
    What they're trying to tell you is line 2.
     
  19. Well your TLS (that ghost piece at the bottom) is kinda 20G.

    When the piece spawns, it will not do any wall kicking, and simply test itself rotated with IRS to see if it is "game over" (overlapping stacked blocks). This is done at the spawn location. If not, then the gravity is applied if the gravity is higher or equal to 1G (1G is one block step per 60Hz frame).

    Note that a lot of stuff happens before the piece is drawn onto the playfield on that spawn frame. So what you see if you framestep TGM is that the piece appears at the bottom of the playfield in 20G, even though it has actually tested itself at the spawned location for game over, and then traveled 20 blocks checking for the stack to rest on. This frame is not playable since it is dedicated for spawning. The frame after that, the piece is playable.
     
  20. JoshuaD

    JoshuaD Unregistered


    If you'd like to jump straight to 20G just to test things out, go into the game directory and go into "rules", then edit "TGM - Strict.xml". In level 1 change "increment" to 320 and "framesPerInc" to 1. You should also probably change "persistantShifts" to false. That will only last for 30 blocks/line clears though, so you should change "tgmLevels" to something like 500 so you can really play around.
     

Share This Page