Printable Version of Topic

Click here to view this topic in its original format

Forums - Hard Drop - Tetris Community _ Tetris _ JSTris

Posted by: jezevec10 Dec 6 2014, 11:21 PM


http://jstris.jezevec10.com


Hi, real-time games made with html5 are pretty cool so I made my own online multiplayer puzzle block game using javascript and websockets. The game is pretty simple, but should be faster than other block games. Here are the key features of the game

Game features:
- fast puzzle block game core
- Super Rotation System
- 5 previews
- hold function
- lock delay
- ghost piece
- bag randomizer
- customizable controls and DAS, remembered
- Multiplayer:
- real-time fields of other players, target
- attack values should be same as TF, incl. combo table
- possible to block incoming garbage (E+ on TF)
- multiple game rooms, lobby
- private rooms (join via URL)
- room chat (pressing -Enter- key switches between chat/game focus)
- game results (wins counter, lines sent / received, time)
- sound notification when player joins (when waiting for someone)
- no time limit, no solid garbage

Comments or questions you may have:
There is a bug
The game has been made from scratch in my free time in last 2 weeks. I would call this as an alpha-release, because it fits the wikipedia definition: Alpha software can be unstable and could cause crashes.

Game doesn't work for me
- You need to use a browser that supports HTML5 and websocket protocol RFC6455 (all modern browsers support it).
- Server runs or port 9001, the strictest firewalls can block it
- I have no idea how many players can the game server handle, it might be down already

Game freezes / my lines are not sent
- Game has "afk protection" - if you stay some time on another browser tab it will trigger same event as when you top out (when you come back it will appear to be frozen).
- When you join the room with playing player/s your game will appear to be frozen, other players see you as topped out and you will start playing on the next round.

Posted by: perfectclear Dec 7 2014, 12:03 AM

first impression: cool stuff, would use for competitive play. Would like it if the game would grab keyboard focus if we click anywhere on the screen other than the chat.

Posted by: M_Bison Dec 7 2014, 12:29 AM

I like this a lot Thumbs Up.png

Thank you smile.gif

- Jono

Posted by: jezevec10 Dec 8 2014, 05:37 PM

QUOTE(perfectclear @ Dec 7 2014, 01:03 AM) *
grab keyboard focus if we click anywhere on the screen other than the chat
It should grab keyboard focus when you click on the background, it still has some flaws though (not working for some areas)

I also changed the site to dark theme because the bright background can be pretty agressive for the player's eyes, its possible to change it back in the settings

Posted by: ManOfMiracles Dec 8 2014, 06:25 PM

Do you currently have a to-do list?

So far it's great and better than tf in terms of lag and better than some other clients in terms of accessibility. It's obviously not polished and could use some features, but it has really good potential.

Posted by: StS Dec 8 2014, 10:46 PM

This is great! Grin.png

Posted by: yotipo91 Dec 10 2014, 09:51 AM

Fun smile.gif

Posted by: farter Dec 11 2014, 08:44 AM

finally it comes. great.
faster soft drop please (

graphics gets somehow glitchy near the top? (to be confirmed)

Posted by: farter Dec 11 2014, 02:10 PM

QUOTE(piotrek_s @ Dec 11 2014, 10:03 PM) *

I am really stuck with name "PC!". Please open a pop-up question when setting a name.


QUOTE
Welcome, farter!
Please wait for the next round
NoNamed579 joined the room.
PC!: IAUZWENH I CAN'T CHANGE NAME I'M STUCK!
NoNamed580 joined the room.
farter: wa
PC!: can someone change my name to piotrek's?
NoNamed581 joined the room.
farter: seems... no
NoNamed582 joined the room.
farter: so hello mr.pc
PC!: This should be called "TWT" "The Worst Tetris" because user can likely be stuck with bad name.
lol: lol
NoNamed583 joined the room.
NoNamed584 joined the room.
lol: hi pc
PC!: t7y i am very bad at this game!

Posted by: perfectclear Dec 11 2014, 11:36 PM

there is a way to clear all data by typing something in the chat (clears your name too) but i forgot what it was. Im sure the creator will post here about it Sticking Out Tongue.png

Posted by: jezevec10 Dec 12 2014, 08:06 PM

QUOTE(ManOfMiracles @ Dec 8 2014, 07:25 PM) *
Do you currently have a to-do list?
Currently not, if you have any ideas post it here.

QUOTE(piotrek_s @ Dec 11 2014, 03:03 PM) *
I am really stuck with name "PC!". Please open a pop-up question when setting a name.
You can delete your browser cookies manually, or simply type /clearCookies in the chat to clear all the game settings

Posted by: Sisu Dec 13 2014, 09:33 PM

Attached Image

https://play.google.com/store/apps/details?id=com.fishstix.gameboard

artist.png

Posted by: sikanla Jun 18 2016, 03:16 PM

hi this is pretty great!


bug report: the game considers me as inactive when i am playing, i am on chrome with lenovo yoga 2
game name: Sikanla

Posted by: sikanla Jun 21 2016, 08:52 PM

hi it's me again

My bad Lips are Sealed.png ! the game works fine!

About the game:
It's pretty fun, I like it a lot, it runs perfectly on my laptop.
The bots are full of life, i am having a grudge with slow Bot
I also appreciate the way settings work.



I wish you could restart the game with the enter key

I am very interested in how you achieved to code this game? how much time did you exactly spend doing this ? did you have some resources to help you or did you start from scratch? and also if i am not indiscreet is coding your daily job? in html5 ?

now what's next? do you have a vision ?

thank you anyway for some great work Heart.png





Posted by: XaeL Jun 22 2016, 12:01 AM

QUOTE(sikanla @ Jun 21 2016, 08:52 PM) *

hi it's me again

My bad Lips are Sealed.png ! the game works fine!

About the game:
It's pretty fun, I like it a lot, it runs perfectly on my laptop.
The bots are full of life, i am having a grudge with slow Bot
I also appreciate the way settings work.



I wish you could restart the game with the enter key

I am very interested in how you achieved to code this game? how much time did you exactly spend doing this ? did you have some resources to help you or did you start from scratch? and also if i am not indiscreet is coding your daily job? in html5 ?

now what's next? do you have a vision ?

thank you anyway for some great work Heart.png


+1 for keyboard control for restarting game.

Posted by: jkwon23 Jun 22 2016, 06:27 AM

QUOTE(XaeL @ Jun 21 2016, 05:01 PM) *

+1 for keyboard control for restarting game.

F2

Posted by: XaeL Jun 23 2016, 01:08 AM

QUOTE(jkwon23 @ Jun 22 2016, 06:27 AM) *

QUOTE(XaeL @ Jun 21 2016, 05:01 PM) *

+1 for keyboard control for restarting game.

F2

Thanks!

Posted by: Danieru Jun 23 2016, 09:55 PM

Yes I agree, I veto for a keyboard button for restart or auto restart.

Posted by: Danieru Jun 26 2016, 12:23 AM

QUOTE(Danieru @ Jun 23 2016, 09:55 PM) *

Yes I agree, I veto for a keyboard button for restart or auto restart.


I would love if you added a 40Lines mode Grin.png jezevec...

Posted by: jezevec10 Jul 5 2016, 07:54 PM

QUOTE(Danieru @ Jun 26 2016, 02:23 AM) *

I would love if you added a 40Lines mode Grin.png jezevec...

Hi, I've added a 40L mode as you requested.

I made it as a practice mode so you can play it while waiting for the next round (but your game will be interrupted when a new round starts, so play fast!) or in a spectator mode (command /spec). If you just want to play 40L you can make a private room and it won't bother you when someone joins. Use F4 key for restarting the game. Times of completed games are saved with your game name.

Very simple leader-board is available here: http://jstris.jezevec10.com/sprint.

Posted by: Danieru Jul 5 2016, 08:28 PM

QUOTE(jezevec10 @ Jul 5 2016, 07:54 PM) *

QUOTE(Danieru @ Jun 26 2016, 02:23 AM) *

I would love if you added a 40Lines mode Grin.png jezevec...

Hi, I've added a 40L mode as you requested.

I made it as a practice mode so you can play it while waiting for the next round (but your game will be interrupted when a new round starts, so play fast!) or in a spectator mode (command /spec). If you just want to play 40L you can make a private room and it won't bother you when someone joins. Use F4 key for restarting the game. Times of completed games are saved with your game name.

Very simple leader-board is available here: http://jstris.jezevec10.com/sprint.


Thank you Jezevec, much appreciated!

Posted by: GenesisChan Jul 13 2016, 03:08 AM

Have you ever thought about adding bot in private room? Like TOP
I had been playing in JSTris for past few days and found that the bot is really fun to play and train with (preparation for TTO IV maybe?)
That's all I have for the feedback Grin.png

Posted by: jkwon23 Jul 26 2016, 02:40 AM

Suggestion:
Forbid copy names.
Example: I saw two Real_Blocks in the same room. ^^

Posted by: VladtheImpala Jul 30 2016, 08:15 AM

I really like your client. I've mostly switched from nullpo to it.

But one thing has been bothering me lately. It seems like when you start it puts you at a random place within a bag, rather than the start of the bag, so essentially all openings are less reliable (at least based on the first few pieces). I don't think it used to do this, so was this intentional? I don't really like it.

Also, could you make the start new 40L game key customizable?

Either way, I really enjoy your client.

Posted by: jezevec10 Jul 30 2016, 11:04 PM

QUOTE(GenesisChan @ Jul 13 2016, 05:08 AM) *

Have you ever thought about adding bot in private room? Like TOP

Hi, right now our bots aren't optimized enough for the server to handle more of them at once. I've experimented with this and setting high speed of one bot slows the other bot because the server is too busy with running the fast bot.
However it would be possible to run the bot in your browser, which wouldn't matter in 1v1, maybe an idea for the future.

QUOTE(jkwon23 @ Jul 26 2016, 04:40 AM) *

Suggestion:
Forbid copy names.
Example: I saw two Real_Blocks in the same room. ^^

Names of the bots can be blocked for players to avoid confusion, but duplicate names of players are hard to filter out.

QUOTE(VladtheImpala @ Jul 30 2016, 10:15 AM) *

But one thing has been bothering me lately. It seems like when you start it puts you at a random place within a bag, rather than the start of the bag, so essentially all openings are less reliable (at least based on the first few pieces). I don't think it used to do this, so was this intentional? I don't really like it.

I just uploaded a new version that should be fixing this bug. The beginning of the queue sometimes wasn't generated using a refreshed bag.

The update also fixes the Out of focus bug - you don't have to click directly on the playfield, but anywhere on the background to focus the game.

QUOTE(VladtheImpala @ Jul 30 2016, 10:15 AM) *

Also, could you make the start new 40L game key customizable?

Thats a good idea, I'll add it in the next update.

Posted by: jkwon23 Nov 13 2016, 08:18 AM

Suggestion: Adjust screen size. The playfield and pieces are too big for me.

Posted by: z2sam Nov 13 2016, 11:46 AM

Suggestion: Add options for sprints, like you have 40 lines now, but I wish a 100 lines too, maybe 10L, 20L, 1000L, 10000L would be cool too.
And it would be cool if we could get replay of sprint records.

Posted by: jezevec10 Nov 13 2016, 08:25 PM

QUOTE(jkwon23 @ Nov 13 2016, 09:18 AM) *

Suggestion: Adjust screen size. The playfield and pieces are too big for me.

You can use Ctrl and + / Ctrl and - / Ctrl and mousewheel in most browsers to adjust the screen size.

QUOTE(z2sam @ Nov 13 2016, 12:46 PM) *

Suggestion: Add options for sprints, like you have 40 lines now, but I wish a 100 lines too, maybe 10L, 20L, 1000L, 10000L would be cool too.
And it would be cool if we could get replay of sprint records.

I like the idea of multiple sprint modes, will add them when I get some time.

I'd like to add replays as well, the last replaying system was only frame based which wasn't good, it should probably be done by saving keystrokes and their timings so the game can be replayed accurately.

Posted by: Danieru Nov 13 2016, 09:56 PM

Suggestion: To add a Challenges page like from Cultris: II has, with leaderboards similar to the already used page on JSTris.
Thanks,
Dan

Posted by: Master Nov 17 2016, 06:55 PM

suggestion add more skins Grin.png

Posted by: PabloNex Nov 17 2016, 08:11 PM

Suggestion: add tetris battle and tetris friends sounds effects. Also a battle 2 player with bombs and 5 ko would be very cool. Also I want to just say thanks for creating jstris, my favourite tetris for sprint Grin.png

Posted by: jezevec10 Nov 17 2016, 11:01 PM

Update: sprint games will save a replay
Sample replay (click Load at the bottom): http://jstris.jezevec10.com/replay/7964
Replays of the latest sprints: http://jstris.jezevec10.com/sprint?type=4

Posted by: BestN00b Nov 18 2016, 03:13 PM

hey jez, I found a bug. My sprint reset key is 'r'. When I'm in sprint mode, and I'm typing in the chat, pressing r while typing still resets the sprint.

Posted by: PabloNex Nov 29 2016, 02:40 PM

Suggestion: Add ultra 2 mins
Thanks!

Posted by: jezevec10 Feb 12 2017, 11:23 PM

Update: Here is what's new:


Posted by: crzy242 Feb 13 2017, 02:17 PM

Thanks jez! The update looks awesome. Hooray for accounts Grin.png

Posted by: Danieru Feb 13 2017, 02:22 PM

Thank you Jez for this awesome update!

I was thinking you could add more skins please Grin.pngD

Posted by: PabloNex Feb 13 2017, 04:01 PM

Nice update!

Posted by: Okey_Dokey Feb 13 2017, 11:22 PM

2 1/2 suggestions

1. You use the same garbage table and consistency as Tetris Friends but you haven't line clear delay and extended garbage cancelation period (drop active piece fast enough -> garbage isn't inserted immediately) which makes combos and downstack even more powerful than it is already in TF. I suggest adding a small chance that the garbage hole switches during an attack, so that the garbage of Tetrises and T-Spins is not as clean. Example: normally a Tetris sends 4 lines of garbage with the hole in the same column. With let's say a 20% chance that the hole switches after each line, it will have 0.6 column switches in average. If you like the normal garbage system more, then you can still make a single room called "Messy Room" with that suggested system.

2. Your client is pretty fast. As seen in Cultris II and TOP, fast clients attract fast players. And fast players scare off slower players because they stand no chance in a direct duel (you will barely find anyone playing at 100 BPM in C2 because they just get slaughtered by the 150 BPM guys). As a result, fast clients will have a pretty small user base. I suggest making a single room called "Slow Room" which limits the softdrop speed and maximum autorepeat rate (something like shift the piece by one column every 33 or 50 miliseconds).

3. I think you could orientate yourself by Cultris 2's layout. For example C2 has a lobby where people from different rooms can chat with each other (e.g. good for quickfire tournaments, also message of the day) and it has some options for the room creators (enable/disable autojoin, autostart rounds).

Posted by: DEElightful21 Feb 14 2017, 10:59 AM

Cool update Heart.png Heart.png Heart.png

Posted by: Okey_Dokey Feb 26 2017, 11:26 AM

Regarding the Cheese room: Does it work as intended? If you are alone in the room and press restart, then you end up with an empty field. So you have to leave the room and rejoin, if you want to play again. Also, it's a little too much lines (18 lines, field is 20 rows high). If a game starts, your first piece autolocks within 2 seconds. So if you are unprepared or your field is out of focus, then you can top out right at the start. I suggest to make Cheese available in other rooms like Sprint (maybe press F5 key). I mean some kind of refillable Cheese where you can choose between a goal of 20, 40 and 100 downstacked lines. I once made http://harddrop.com/forums/index.php?showtopic=5949 with a Cheese mode that worked as following: The maximum number of garbage lines in your playfield is 9. Everytime you don't clear a line with a piece placement and there are less than 9 garbage lines in your field, then one garbage line is inserted. The mode also makes sure that there are at least 3 garbage lines in your field (except in the end when you've almost finished the race).



Posted by: Blink Mar 25 2017, 10:32 PM

Feature requests that would help with organizing the next HDO on this game:

Some enforce options when creating a room to ensure all players in the tournament are on the same settings:

Enable/disable 180 spins.
Enforce DAS on players
Enforce amount of piece previews
Enforce soft drop speed
Configure garbage hole change rate

Posted by: VladtheImpala Mar 26 2017, 04:23 PM

QUOTE(Blink @ Mar 25 2017, 10:32 PM) *

Feature requests that would help with organizing the next HDO on this game:

Some enforce options when creating a room to ensure all players in the tournament are on the same settings:

Enable/disable 180 spins.
Enforce DAS on players
Enforce amount of piece previews
Enforce soft drop speed
Configure garbage hole change rate



I think enforcing previews and garbage hole change rate is fine, the rest are somewhat questionable, especially DAS. I think people customize that enough that you wouldn't want to standardize it, unless you want to make everyone play slower, which I don't personally like much as an idea.

Posted by: Blink Mar 26 2017, 06:41 PM

QUOTE(VladtheImpala @ Mar 26 2017, 09:23 AM) *

QUOTE(Blink @ Mar 25 2017, 10:32 PM) *

Feature requests that would help with organizing the next HDO on this game:

Some enforce options when creating a room to ensure all players in the tournament are on the same settings:

Enable/disable 180 spins.
Enforce DAS on players
Enforce amount of piece previews
Enforce soft drop speed
Configure garbage hole change rate


I think enforcing previews and garbage hole change rate is fine, the rest are somewhat questionable, especially DAS. I think people customize that enough that you wouldn't want to standardize it, unless you want to make everyone play slower, which I don't personally like much as an idea.


These settings would only be enforced in rooms where the creator specifically turned them on. Any rooms without it wouldn't be affected. It's just another setting that tournament organizers could use to customize the rules of their tournament.

I believe it would make Jstris powerful in the sense that there would now be the ability to run a tournament simulating TDS, Tetris Splash, Puyo Tetris, etc. including their DAS/line clear delay where it wouldn't be possible before on any other platform. The balance of the original game settings would remain intact.

Forgot to add: Configure line clear delay. Garbage blocking enabled/disabled.

Posted by: Ave May 6 2017, 07:39 AM

hey jez, I really REALLY don't think this is supposed to happen.
https://i.imgur.com/QFCGXAo.png
http://jstris.jezevec10.com/replay/31659
this is not the first time this happens by the way. it happened a few times before too, though I didn't finish those sprints.

Posted by: Danieru May 6 2017, 09:38 AM

QUOTE(Ave @ May 6 2017, 07:39 AM) *

hey jez, I really REALLY don't think this is supposed to happen.
https://i.imgur.com/QFCGXAo.png

http://jstris.jezevec10.com/replay/31659
this is not the first time this happens by the way. it happened a few times before too, though I didn't finish those sprints.


Hey how is your internet stability, it happened to me with some other bugs relating to calculation and even pieces when I placed them down in a run, they appeared to be all over the place and teleporting / holding when I hard dropped because of my internet at the time.

Posted by: Ave May 6 2017, 08:34 PM

QUOTE(Danieru @ May 6 2017, 09:38 AM) *
Hey how is your internet stability, it happened to me with some other bugs relating to calculation and even pieces when I placed them down in a run, they appeared to be all over the place and teleporting / holding when I hard dropped because of my internet at the time.
should be good enough, I haven't had any problems with it recently

Posted by: jezevec10 Jun 20 2017, 08:36 PM

Updated:

Fixes:

Posted by: VladtheImpala Jun 22 2017, 12:50 AM

Why does the bot suck now? I understand I can just make it faster, but it seems significantly less skilled for its speed than it was before the update.

Posted by: jezevec10 Jun 22 2017, 12:47 PM

QUOTE(VladtheImpala @ Jun 22 2017, 02:50 AM) *

Why does the bot suck now? I understand I can just make it faster, but it seems significantly less skilled for its speed than it was before the update.

Internal implementation of the bots hasn't changed, they can't be less skilled. Only possible reasons they can seem less skilled are:
Bots had wrong combo attack table (shifted by 1 to the left), 2 consecutive line clears were sending 1 combo line, but the standard combo table for players sends 1 line after 3 consecutive clears (0 attack on 2). Because this is corrected, they will send less lines, but it will be fair. Not yet sure if seemingly strong bots are better than bots using boosted attack table, maybe I can change it back if you want.

When you're in a bot room type /config and check value of Messiness currently set in your room. If the value is more than 0%, garbage holes for everyone including bots are split apart with this probability and it makes it harder to downstack. Most of the bots are not pros at downstacking and this makes them topout faster. You can turn it off by typing /set messiness 0 in the chat. Maybe this should be disabled in the bot room as for someone who doesn't know about this option it can be very confusing why the incoming garbage always looks like cheese.

Posted by: VladtheImpala Jun 22 2017, 09:13 PM

So you're saying that the bot sends half as much garbage just because of a simple shift in the combo table?

Posted by: Okey_Dokey Jun 24 2017, 03:17 PM

That's been a huge update Thumbs Up.png

If you play 10L cheese in practice mode now, it starts with 9 lines and later refills 1 line. I recommend to add an exception there and start with 10 lines instead of 9. I've never tried it myself but I think the downstack speed is better perceptible in Cheese, if garbage lines are differently colored from time to time. For example you could use a different shade of grey (darker or lighter) for every 5th or 10th garbage line, whereas the very last line would be of that color.

I've got also a very hard to implement but beneficial suggestion: fully automated daily quickfire tournaments.

Multris once had those as some kind of single elimination tournaments. Players could register for the tournament and chat in the tournament lobby. Once, the tournament started, players were sent to their tables (rooms), 3 to 4 players per each table (sporadically also 2). Each round lasted 6 minutes. The best 2 players of each table qualified for the next round (resp. 1 if just 2 players). The eliminated players could still spectate the still running tables. Depending on how well players performed, they received some points for a monthly ranking.

The following video shows such a tournament (https://youtu.be/jGIXbkW8txU another but shorter example). In the first round, there are 3 tables. The first round ends 6:15 in the video. The recording player is eliminated but decides to spectate the remaining matches. In the second round there are 2 tables. It ends 12:35 in the video. And the third round (only 1 table) decides the podium of the tournament.



You could hold these tournaments every 20 hours (so starting at the same time of the day after 5 days). Instead of Single Elimination you could use some kind of Swiss System, meaning that players collect points over the tournament and they are paired with other players who have a similar amount of points. I think around 4 players per room is optimal. 2 players is problematic because one player could get slaughtered by the other one or one player could quit leaving the other one alone.

I suggest to let people play multiple games per table until 6 minutes or so have passed. Each player starts with 0 points on the table (note the points I am speaking of now are differently from the points for Swiss System); players receive points for each played game (if n players: n points for winner, n-1 points for second place and so on, 1 point for last place). There should be hurry up garbage after 2 minutes or so, making sure that multiple games are played indeed. And after the 6 minutes have passed, the last game is immediately shortened by hurry up garbage. If 2 players have the same amount of points after the last game, the one performing worse in the last game is ranked better (because the last game is probably shorter). BTW hurry up lines could have garbage holes instead of being solid lines.

As mentioned earlier, such automated tourrnaments are very hard to implement. If you really want to improve your client, you should focus on other things first. For example the things Blink has mentioned. Or another option to slow down the game besides lineclear delay (I think limiting autorepeat rate would be the right way to do it). Maybe also show the other players' hold piece and next piece queue. You could also introduce a "classic" room simulating the behaviour of old multiplayer Tetris games, using a mean randomizer (e.g. the http://harddrop.com/forums/index.php?showtopic=7795&st=15&p=90084&#entry90084), 1 or 2 previews, no hold, no combos and relatively messy garbage (maybe hole change rate only, no change per attack garbage at all).

Posted by: noonuus Jun 24 2017, 08:10 PM

I would like to suggest an invisible block skin.

Posted by: jezevec10 Jul 2 2017, 11:02 PM

Update:


Posted by: gigo Jul 3 2017, 04:08 PM

Look and feel will be vital if you want to reach the less hardcore playerbase on tetrisfriends etc

Some suggestions:

- Make the skin "solid color (no skin)" the default skin(the default one looks kind of blurry to me)
- Make a skin which mimics the tetrisfriends default skin
-In the game summary, display sent lines, blocked lines, recieved lines and apm for each player(maybe even customizable fields)
- Some text is blurry(like the "xth place, wait until the rounds end" textblock). This might be caused by HTML5 and not be because of you
- Option to display certain spins when you achieve a bonus(like tspin double, triple) + sound
- Option to display the current combo your last line sent
- More stats(optionable) under the game screen:
- how many lines your last action sent(would love this, I'm always wondering for example how much lines a tetris sends on combo #3 vs a single t spin after a double t spin)
- blocked lines
- Stats for average apm in live mode,with daily/weekly/monthly/all time filters
- More easily changeable settings for the bot, and options to add more bots


And do you need/want development assistance?

Posted by: Blitz Jul 8 2017, 10:07 AM

I have a suggestion for the cheese room. Show blocks placed and pps statistics instead of lines received and lines sent.

Posted by: Corrosive Jul 10 2017, 02:45 PM

Very impressed with this, so smooth and fast. Big fan.

Posted by: idodgebull3ts Jul 12 2017, 04:55 AM

Any chance you could add KPT to sprint?

Posted by: mahnameseddoi Jul 16 2017, 12:07 PM

QUOTE(jezevec10 @ Jul 2 2017, 11:02 PM) *

Update:
  • New replay file format
    This is mainly an internal change, but it is the largest one. I've created a high entropy replay format which is about 2 times smaller (uncompressed) in size than the previous one compressed. Compression doesn't really make a big difference as it is a binary format where no bits are wasted.
    Some game actions are also represented differently so this should fix the problem with replay desync on a soft drop.
    Because this format took me long time to create, I wanted to use it more, so all multiplayer games are now also recorded. You can view the live replays by clicking Show more details after the game ends and selecting a replay for a player. If you miss it you can always use /last command to show details of the last game. Live replays can also be accessed via a user's profile.
    Note: not planning to store live replays forever, old replays will probably be automatically deleted after some time, will add an option for registered users to add a replay to favourites which will opt-out the replay from auto-delete.
  • Invisible block skin
    Suggested by noonuus in the post above. Was very easy to implement, so I added it. Replays will keep the invisibility. To see a replay with visible blocks, you can force replay skin with adding ?forceSkin=0 in the replay url (0 can be replaced with a skin id in order appearing in the game settings).
  • Special sound on finesse fault
    Might be useful for finesse practice. (Not sure if I found the best sound for this, if you have a better one, let me know)
  • Garbage delay customizable
    The cancellation delay from the last update can be customized per room with this command: /set garbageDelay 0-500
  • Cheese race leaderboard can be sorted by the least blocks used
  • Improvement chart can be displayed also for other game modes, not only line race


For the invisible replay, the ?forceSkin=0 doesn't work. Well at least not when I tried it. It would be really nice if you could make it work so I can actually see my mistakes and errors. Thanks smile.gif Awesome update by the way. This site just keeps getting better and better!

Posted by: Corrosive Jul 17 2017, 07:13 PM

If it's not too much trouble please add a Reset Counter button at some point

Posted by: jezevec10 Jul 17 2017, 08:30 PM

Updated:


Posted by: Antifate Jul 17 2017, 08:39 PM

Jez you're a legend. You're carrying the tetris community rn.

Is there anyway people can support you?

Posted by: mahnameseddoi Jul 17 2017, 08:48 PM

Very nice but seeing the invisible replay still seems to be broken. If you need a replay to test with, here you go: https://jstris.jezevec10.com/replay/60686

Posted by: jezevec10 Jul 17 2017, 08:52 PM

QUOTE(Antifate @ Jul 17 2017, 10:39 PM) *

Jez you're a legend. You're carrying the tetris community rn.

Is there anyway people can support you?

Under the chat box in the game there is a donate button, which helps me cover the server costs. List of the project supporters is in the About section (link next to the left).

QUOTE(mahnameseddoi @ Jul 17 2017, 10:48 PM) *

Very nice but seeing the invisible replay still seems to be broken.


That's strange, when I visit this invisible replay with the param it shows with visible blocks:
https://jstris.jezevec10.com/replay/59686?forceSkin=1
The update has been done recently, maybe your browser has cached the old scripts. Have you tried Ctrl+F5 to force refresh?

Posted by: Corrosive Jul 17 2017, 09:02 PM

Add more main rooms for when the traffic increases on this game

Posted by: mahnameseddoi Jul 17 2017, 11:49 PM

My sincere apologies jez. You are correct. I didn't clear my cache. After I cleared my cache, it worked. Thank you smile.gif

Posted by: Corrosive Jul 18 2017, 05:55 PM

Keep up the good work

Posted by: Swarley Jul 20 2017, 08:08 PM

I love this game and the work you've put into it. To me, it's the best thing to have happened to Tetris since Belzebub. However, when it comes to 1v1, I find it less than ideal for the same reason I don't like to 1v1 in Tetrisfriends. What I really liked about TOJ, that Nullpomino, Cultris and Misamino also does. Is that when you're playing 1v1, the two playing fields are side by side, and equal in size, causing the 1v1 to feel personal and much more exciting. In Jstris and Tetrisfriends, your opponent's screen is unnecessarily small and tucked away. The biggest issue I have with this is that I find myself having to sneak glances during soft drops, or slow down to pay attention to my opponents field, as opposed to having them side by side so I could keep up with both at the same time.

I also wish the interface was more organized. It appears quite cluttered with some buttons at the top, some at the bottom of your screen(that if clicked open up more buttons above the chat), some to the right of your screen, and some at the bottom right. Confused.png
All these buttons everywhere, yet key functions like naming yourself, spectating, and adjusting the bot all requires you to type commands in the chat.
There's a button on the blue line at the top that says Play, that then present you with your options when you click it. I think that's a great and practical way to do it, but it eliminates the need for those same buttons to be in the middle of the screen. Next to that button there's two buttons that I assumed were even more ways to perform the same functions, but it turns out they were leaderboards. Why not have a Leaderboard button with a little list when clicked, like you did with the aforementioned Play button?

Keep up the great work!

All in all I love the game, and the things that I have commented on are far from essential.

Posted by: Corrosive Jul 21 2017, 02:30 PM

It would be badass if you could somehow let us be able to create our own arrangement of blocks/artwork that appears when we die. This was a feature on Blocktrix/Tetrifast. I imagine this would be a pain in the ass for you to program into the game but its little things like this that would make the game dope and encourage more people to register an account rather than playing as guests.

http://i.imgur.com/VTKQxIW.png


http://i.imgur.com/zL2QnFG.png

Posted by: VladtheImpala Jul 25 2017, 12:10 AM

Can we get the option to mute a user in chat? I wouldn't normally ask for this, but there's this one guy...

Posted by: Blitz Jul 25 2017, 11:02 AM

QUOTE(Corrosive @ Jul 21 2017, 02:30 PM) *

It would be badass if you could somehow let us be able to create our own arrangement of blocks/artwork that appears when we die.


I like that idea.
IPB Image
What if, in practice mode there was a button for "Save artwork" and that is how these game over artworks are created?
It would be more challenging than a "draw what you want" kind of thing but it would also be more rewarding when you're able to make something cool.
I also guess this approach would require less programming work than other alternatives because there is no need to create a new system for drawing art here.

Posted by: jezevec10 Jul 28 2017, 09:32 PM

Updated:


Posted by: farter Jul 30 2017, 05:22 AM

QUOTE(jezevec10 @ Jul 18 2017, 04:30 AM) *

Updated:
  • Fixed the low bot efficiency problem.
    Since the update about 3 weeks ago, the bots weren't receiving the correct queue information. This bug appeared when the bots got the same randomizer as players. I initially though it is caused by the combo table fix, but in reality the bot communication protocol wasn't implemented according to specifications. Also after discussion with Real we discovered that Real_Block was not sending correct B2B bonuses (had lower attack) - this has been also corrected.
  • MisaMino was not MisaMino!
    About a year ago when I was adding MisaMino, I used dllai directory from the https://github.com/misakamm/MisaMino. It turns out that the bot contained in this directory is not MisaMino, but so called Baka bot (Japanese word for fool,idiot) which is there probably just to demonstrate capability of the MisaMino game to load DLL bots. The MisaMino everyone knows is actually contained in the graphical game in the tetris_ai directory.
    So this bot has been renamed to Fool bot and it can be activated using /changeBot fool.
  • Added the real MisaMino
    I took some time to retrieve the genuine MisaMino from the tetris_ai game so it could be used like other bots. I made the command line version of MisaMino (and Baka bot) available here:
    https://github.com/jezevec10/MisaMinoBot
    Now jstris has the genuine MisaMino (/changeBot misamino). It is possible to change level with /bot level 10 and style /bot style 5 (explaining table of styles in the link above). These commands work only for MisaMino. Now this is the only bot in jstris taking incoming attack into consideration when deciding its moves.
  • Finesse and KPT in replayer
    At the bottom of the replay page there is a More stats link, which reveals Finesse and KPP as an additional stats under the game field. (Or visit the replayer with ?moreStats=1 parameter.)
  • Fixed some bugs
    Like the issue reported by mahnameseddoi above (with ?forceSkin=0 on invisible replays), some invalid links to replays, inaccurate red bar in live replays, replay time skip hold disappearing and others..


whoa i didn't even notice that before.. and as i remember the baka is not that weak but also not that strong as who i played against as misamino on jstris???

and btw now misamino is running 4w mode but looks very likely to die because of being not aware of incoming garbage.. it actually has simulation of unknown garbage, just need to discard the result and restart calling the routine with "incoming garbage" argument when the garbage buffer receives new garbage. is it currently implemented by jstris backend? or it may be other bug?
because if this is implemented correctly, misamino is still hard even at half of my speed... Crazy.png

Posted by: pwn_by_numbers Jul 30 2017, 08:08 AM

jezevec, would it be possible for you to add some of the KOS modes? Realistically I just want a good all-spins mode, and I think KOS's exclusive+ mode is the best implementation of that out there. But it would also be super fun to have a real-time air mode or any of the other weirder modes from KOS.

edit:

Btw, any intentions of open sourcing this?

Oh and any intention of adding a piece count in the stats box (or at least in more stats?) It's frustrating trying to play for least blocks in cheese mode and not knowing how well you did without sifting through leaderboards.

Posted by: Okey_Dokey Jul 31 2017, 07:35 PM

QUOTE(jezevec10 @ Jul 28 2017, 09:32 PM) *
[*] Garbage messiness settings accepting negative values

Basically, most garbage systems can be implemented with 2 parameters:
1. hole change rate between 2 attacks (e.g. TF = 100%, TOP = 90%, PPT = 90%)
2. hole change rate within an attack (e.g. TF = 0%, TOP = 0%, PPT = ~27%).
In your current system, one of the 2 variables is always 0% or 100%. There are some games where both parameters are set to the same value (I think Tetris DS, Tetris Party Deluxe, Tetris Axis) - you can't simulate such garbage with the current system.

QUOTE(jezevec10 @ Jul 28 2017, 09:32 PM) *
The reason why I added this is when garbage distribution is set to divide, normally only a cheese is received.

It should be harder to play sitting duck with "divide" (block all incoming attacks) but I see a problem here. Because the "divide" garbage is more messy with more people around, the first players will die relatively quickly and it becomes more likely that's usually the same people who top out first. On the other hand, if there are just 2 players left, garbage will become pretty clean and it can take some time until the winner is decided. Meanwhile, all the other players have to wait. So, I don't think the "divide" system is that great unless you dynamically adjust the messiness of the garbage depending on how many players are left in the game (e.g. 2 players -> messiness = 0, 3 players -> messiness = -20, 4+ players messiness = -50).

QUOTE(jezevec10 @ Jul 28 2017, 09:32 PM) *
[*] Option to set number of piece previews when creating a new room

Thanks! Is there also a way to play the singleplayer modes with less previews? In a room with a low amount of previews, you could also move the previews down a little (closer to the bottom of the matrix), e.g. move hold and next piece queue down by 1 row if 2 previews and down by 2 rows if 1 preview.

QUOTE(jezevec10 @ Jul 28 2017, 09:32 PM) *
[*] Option to select a randomizer when creating a new room
Currently available are: 7-bag,14-bag,classic and OneBlock (yes, this one is very strange as it randomly picks one piece and then never gives anything else).

Thanks! I would like to see another randomizer with meanness somewhere between classic (memoryless) and 14-bag. In that randomizer, a piece shape could appear at any time but at the same time it should reduce chances of floods (receiving the same shape multiple times in a row or in a short time frame) and maybe also droughts (waiting very long for a certain shape). I think, the recursive weight system in http://harddrop.com/forums/index.php?showtopic=7795&st=15&p=90084&#entry90084 is an easy to implement but well working system that reduces floods. To reduce droughts one could count when the shapes appeared for the last time and add a temporary bonus to a shape that didn't appear for a long time (e.g. +1% if 15 to 19 drought, +2% if 20-24 drought, +4% if 25-29 drought, + 8% if 30+ drought). I once implemented such a randomizer ("Olaf" in my Nullpo League Mod, or see the function nextolaf() in this https://pastebin.com/Nxh3aBRh); it's unnecessarily complicated but delivers good results in my opinion.

Other room option I would like to see:
And I think with so many room options, it's good to define around 5 standard room types (one of them could behave like Tetris Friends, another like TOP). If the room creator chooses one of these standard types, all the other variables (including line sent and combo table) will be set to the corresponding values. In the list of rooms, the type of each room is also displayed. If the room creator didn't choose a standard room, then it will say either "custom" or "guideline" (if 7-bag, 3+ previews, hold enabled).

Posted by: pwn_by_numbers Aug 1 2017, 09:15 AM

QUOTE(Okey_Dokey @ Jul 31 2017, 07:35 PM) *

Other room option I would like to see:
  • disable hold
  • disable back-to-back: for example implemented as a further number in the line sent table. No addional line sent for B2Bs if set to 0. +1 line sent if set to 1. Maybe Tetris Battle system if set to 2 (+1 sent for TSS &TSM, +2 for TSD & Tetris, +3 for TST)
  • change garbage blocking system. I think it should be 3 options here:
    • garbage canceling with garbage blocking (like in TF; clearing lines reduces the amount of incoming lines and garbage isn't inserted until the end of a combo)
    • garbage canceling without garbage blocking (like in TB or PPT, clearing lines reduces the amount of incoming lines; all remaining lines are inserted immediately)
    • no garbage canceling (clearing lines will sent lines over to the opponent even if there are incoming lines)
And I think with so many room options, it's good to define around 5 standard room types (one of them could behave like Tetris Friends, another like TOP). If the room creator chooses one of these standard types, all the other variables (including line sent and combo table) will be set to the corresponding values. In the list of rooms, the type of each room is also displayed. If the room creator didn't choose a standard room, then it will say either "custom" or "guideline" (if 7-bag, 3+ previews, hold enabled).


I think a nice and easy way to handle these suggestions plus my all-spins suggestion would be to just let users set the garbage table. To disable B2B just set "tspin" and "b2b tspin" to the same value. Modes without all-spins would just have those spins set to 0.

In general if an option is available it'd be nice to be able to set it. You can always hide the complexity under something like "advanced options" if you're worried about the settings page being too intimidating.

Posted by: BestN00b Aug 3 2017, 11:22 PM

I met a mobile user on JSTris today, and he complained that there is no soft drop control (or at least he could not find one). Other than that, he said JSTris was quite could aside from the fact that the matrix kept getting deselected.

He says, "unlocked from the matrix. And then it takes a second to get the right zoom back"

Posted by: k_rakko Aug 5 2017, 10:28 AM

question:

I can't do some of t-spin using rotate 180 https://harddrop.com/wiki/List_of_twists#Twists_with_T_.28or_T-Spin.29.
Is it in a specification? or BUG?


Thank you for making such a great game! (^^)

Posted by: BestN00b Aug 10 2017, 01:28 AM

oh, can you also make a volume bar to control the volume of the sounds from from JSTris? It would give the option to make the sounds a lot less sharp and let me listen to music at the same time.

Basically, let people listen to music with tetris sounds as the background

Posted by: ZeroT Aug 10 2017, 02:21 PM

QUOTE(k_rakko @ Aug 5 2017, 10:28 AM) *

question:

I can't do some of t-spin using rotate 180 https://harddrop.com/wiki/List_of_twists#Twists_with_T_.28or_T-Spin.29.
Is it in a specification? or BUG?


Thank you for making such a great game! (^^)


Sorry it took so long for a response. This is a good question. The simple answer is that over the years since nullpomino has been released, it has been generally determined that most 180 spins like http://tinyurl.com/y9eo3acn that utilize kicks are a little extreme. So much like in https://kingofstackers.com/, JSTris uses natural 180 rotations.

Things like this were possible in nullpomino


But, you will have to settle for spins like this in JSTris.


This is a general balance decision.

Maybe we will get an allspin mode eventually. That could be fun.

Posted by: VladtheImpala Aug 14 2017, 01:57 AM

I'm not really sure if it's that people said 180 kicks were bad so much as it hasn't generally come up. how many clients even have 180 rotate?


Jez, I think there's a replay bug where it thinks I'm dead when I'm not. I tried to rewatch a really close game I had where I survived after being at row 20, but in the replay it killed me at second 120, despite it being a 160 second long replay.

Also, I really really want to see that 2v2 gamemode at some point (the one where you share a matrix with someone else and trade off placing pieces in it.) I think there's a lot of interesting potential in this idea, and I recall you saying it wouldn't be too hard to implement when you talked about it earlier (maybe I'm misremembering though).

Overall, awesome job with the client, I'll probably be donating to you for server fees or something at some point.

Posted by: jezevec10 Aug 15 2017, 07:13 PM

QUOTE(farter @ Jul 30 2017, 07:22 AM) *

and btw now misamino is running 4w mode but looks very likely to die because of being not aware of incoming garbage.. it actually has simulation of unknown garbage, just need to discard the result and restart calling the routine with "incoming garbage" argument when the garbage buffer receives new garbage. is it currently implemented by jstris backend? or it may be other bug?
because if this is implemented correctly, misamino is still hard even at half of my speed... Crazy.png


Yes I also noticed MisaMino sometimes topouts itself when stacking for 4wide, not sure why. It is implemented correctly by the backend, but there might be a bug in the modified cli version of MisaMino here: https://github.com/jezevec10/MisaMinoBot

QUOTE(pwn_by_numbers @ Jul 30 2017, 10:08 AM) *

jezevec, would it be possible for you to add some of the KOS modes? Realistically I just want a good all-spins mode, and I think KOS's exclusive+ mode is the best implementation of that out there. But it would also be super fun to have a real-time air mode or any of the other weirder modes from KOS.


I don't know much about how different modes in KOS work. In my opinion amount of time spent implementing KOS modes is not justified by the amount of players that would actually used them frequently.

I am considering adding a 180 spin wallkiks as an option for custom rooms though.

QUOTE(pwn_by_numbers @ Jul 30 2017, 10:08 AM) *

Oh and any intention of adding a piece count in the stats box (or at least in more stats?) It's frustrating trying to play for least blocks in cheese mode and not knowing how well you did without sifting through leaderboards.


In practice modes I've added this instead of the APM stat under the field.

QUOTE(Okey_Dokey @ Jul 31 2017, 09:35 PM) *

So, I don't think the "divide" system is that great unless you dynamically adjust the messiness of the garbage depending on how many players are left in the game (e.g. 2 players -> messiness = 0, 3 players -> messiness = -20, 4+ players messiness = -50).


Interesting idea, maybe I will try this sometime.

QUOTE(Okey_Dokey @ Jul 31 2017, 09:35 PM) *

Thanks! Is there also a way to play the singleplayer modes with less previews?


Unfortunately number of previews currently only applies to the custom rooms. I'm probably not going to create an option to set it also for practice modes as I also guess it wouldn't be used a lot.

QUOTE(Okey_Dokey @ Jul 31 2017, 09:35 PM) *

Thanks! I would like to see another randomizer with meanness somewhere between classic (memoryless) and 14-bag.
In that randomizer, a piece shape could appear at any time but at the same time it should reduce chances of floods (receiving the same shape multiple times in a row or in a short time frame) and maybe also droughts (waiting very long for a certain shape). I think, the recursive weight system in http://harddrop.com/forums/index.php?showtopic=7795&st=15&p=90084&#entry90084 is an easy to implement but well working system that reduces floods. To reduce droughts one could count when the shapes appeared for the last time and add a temporary bonus to a shape that didn't appear for a long time (e.g. +1% if 15 to 19 drought, +2% if 20-24 drought, +4% if 25-29 drought, + 8% if 30+ drought). I once implemented such a randomizer ("Olaf" in my Nullpo League Mod, or see the function nextolaf() in this https://pastebin.com/Nxh3aBRh); it's unnecessarily complicated but delivers good results in my opinion.


Currently I don't plan to add any more randomizers, as for me those are enough, but if you want to add your randomizer (which seems very complex btw), I can add it if you'll provide it as a javascript function/module.

QUOTE(Okey_Dokey @ Jul 31 2017, 09:35 PM) *
  • disable hold
  • disable back-to-back: for example implemented as a further number in the line sent table. No addional line sent for B2Bs if set to 0. +1 line sent if set to 1. Maybe Tetris Battle system if set to 2 (+1 sent for TSS &TSM, +2 for TSD & Tetris, +3 for TST)
  • change garbage blocking system. I think it should be 3 options here:
    • garbage canceling with garbage blocking (like in TF; clearing lines reduces the amount of incoming lines and garbage isn't inserted until the end of a combo)
    • garbage canceling without garbage blocking (like in TB or PPT, clearing lines reduces the amount of incoming lines; all remaining lines are inserted immediately)
    • no garbage canceling (clearing lines will sent lines over to the opponent even if there are incoming lines)
And I think with so many room options, it's good to define around 5 standard room types (one of them could behave like Tetris Friends, another like TOP). If the room creator chooses one of these standard types, all the other variables (including line sent and combo table) will be set to the corresponding values. In the list of rooms, the type of each room is also displayed. If the room creator didn't choose a standard room, then it will say either "custom" or "guideline" (if 7-bag, 3+ previews, hold enabled).


Disable hold has been added. Some of the other options may be added in the future. But some of them are very advanced, we don't necesserily need to have customizable everything that can be possibly customized in multiplayer games.

QUOTE(pwn_by_numbers @ Aug 1 2017, 11:15 AM) *

I think a nice and easy way to handle these suggestions plus my all-spins suggestion would be to just let users set the garbage table. To disable B2B just set "tspin" and "b2b tspin" to the same value. Modes without all-spins would just have those spins set to 0.

In general if an option is available it'd be nice to be able to set it. You can always hide the complexity under something like "advanced options" if you're worried about the settings page being too intimidating.


You can customize the attack table and combo table if you click Advanced when creating the room. B2B bonus is not yet in there though.

QUOTE(BestN00b @ Aug 4 2017, 01:22 AM) *

I met a mobile user on JSTris today, and he complained that there is no soft drop control (or at least he could not find one).
Other than that, he said JSTris was quite could aside from the fact that the matrix kept getting deselected.
He says, "unlocked from the matrix. And then it takes a second to get the right zoom back"


There is no soft-drop control there because I haven't find an easy to implement gesture that could be used to accomplish this. I already had it implemented as a long press, but it didn't perform well as it was impossible to soft drop and move at one time.

I think I've corrected the deselection problem now by expanding the area where touch controls are sensed. Previously it was only the playfield, which could have been quite small.

QUOTE(VladtheImpala @ Aug 14 2017, 03:57 AM) *

Jez, I think there's a replay bug where it thinks I'm dead when I'm not. I tried to rewatch a really close game I had where I survived after being at row 20, but in the replay it killed me at second 120, despite it being a 160 second long replay.
Also, I really really want to see that 2v2 gamemode at some point (the one where you share a matrix with someone else and trade off placing pieces in it.) I think there's a lot of interesting potential in this idea, and I recall you saying it wouldn't be too hard to implement when you talked about it earlier (maybe I'm misremembering though).


I think I've seen this replay problem before, but haven't found time to search what is the problem. It could still help if you could provide a link to that replay, you can edit your post.

The 2v2 mode would be interesting, I remember it, but it could still take me a lot of time, so maybe in one of the upcoming updates.

Posted by: eevor Aug 15 2017, 09:15 PM

Changing the settings is broken for me today.

When I open the settings and change the controls, clicking save and close does nothing, and controls aren't changed.

Chrome on chromebook, in incognito. Worked like a charm in the previous week.
EDIT: in non-incognito seems to work.

Posted by: jezevec10 Aug 15 2017, 09:17 PM

Updated:


Posted by: VladtheImpala Aug 17 2017, 04:39 AM

Could you implement an option (maybe make it default, because I think it's better than the alternative personally) for hurryup garbage to only be up to like 15 lines, and then it stops. I think hurryup has a place in big rooms, but I don't like when games end with 2 people just stalling. Maybe you could make the line it ends at customizable.

Posted by: DarkERocker Aug 17 2017, 02:48 PM

Hello Jezevec10 and all Tetris fans !

First of all, I really like the work you've done on Jstris, thanks for creating a game to merge the community together.
I'd like to request some additional options in the sound department and another mode.


I'd gladly help with the french translation if you need a hand.
Greetings from France ! smile.gif

Posted by: Okey_Dokey Aug 17 2017, 08:50 PM

Small bug: When jumping from the main room to a HDO tournament match room, the score wasn't reset (kept number of wins). This happened before the last update, so might be fixed already.

QUOTE(jezevec10 @ Aug 15 2017, 07:13 PM) *
I don't know much about how different modes in KOS work. In my opinion amount of time spent implementing KOS modes is not justified by the amount of players that would actually used them frequently.

Speaking of King of Stackers, it would be nice if you could play turn based multiplayer in very distant future. I mean a live mode where 2 players make piece placements by turns (1 piece instead of a whole bag). Copy paste of an old comment of mine:

Both players have a timebank (like in AI blockbattle). They start with 10 seconds. For each placement, 5 seconds are added to the timebank but timebank can never hold more than 30 seconds. Both players make placements simultaneously and at any given time both players have made the same number of moves. When a player has finished the move, but the opponent hasn't yet, the clock stops ticking down and the player has to wait/idle until the opponent has finished, too. Not sure if the players should be able to see each others active piece (that would probably disadvantage the player who finalizes the move first).

QUOTE(jezevec10 @ Aug 15 2017, 07:13 PM) *
I am considering adding a 180 spin wallkiks as an option for custom rooms though.

Please consider also to disable 180 rotations completely under the same room option. Some players dislike 180 and feel disadvantaged playing against others using 180. Regarding the no-kick-180 rotation: one could make it only work if either clockwise or counterclockwise rotation work. On the other hand, one could also make no-kick-180 rotation a little more powerful by adding those two 180 finesse kicks: a) check right-kick if rotated from East to West rotation state, b) check left-kick if rotated from West to East rotation state. Those 2 kicks are not abusable and are just there so that you can always 180 rotate a L,J,T piece when it touches the left or right wall (should only really matter for vertical spawning directions which of course is not the case in Jstris).


QUOTE(jezevec10 @ Aug 15 2017, 07:13 PM) *
Disable hold has been added. Some of the other options may be added in the future. But some of them are very advanced, we don't necesserily need to have customizable everything that can be possibly customized in multiplayer games.

I plan to hold classic styled Quickfire tournaments (small tournaments that are finished within an hour with around 10 participants) twice a month on Jstris, and things like another randomizer, no garbage canceling, a second garbage consistency variable and disabling back-to-back bonus would help me to come up with rules that I would consider good. Slowing down gameplay would be also nice (limiting ARR and maybe also DAS and softdrop; the faster the client the bigger the the skill gap which is not good for 1 vs 1 in my opinion). Of course, classic styled Quickfires are only possible, if participants could pick the quickfire rule easily in a few clicks (currently participants would have to change too many room options). On a long run, a lobby chat would be also nice (like in Cultris 2, currrently Discord is the only option for Quickfire communication).

QUOTE(jezevec10 @ Aug 15 2017, 07:13 PM) *
Currently I don't plan to add any more randomizers, as for me those are enough, but if you want to add your randomizer (which seems very complex btw), I can add it if you'll provide it as a javascript function/module.

Sorry, don't know JavaScript. https://pastebin.com/SYwq3KcZ a more simplified version of the Olaf/Demementia randomizer (in Java; the whole implemention can be found in the nextolaf() function expect for the initialization; you would need globally defined history[] and drought[] arrays). This version also contains the randomizer that updates the piece chances recursively (nextrecursive(); you would need a globally defined chance[]/probability array; I was wrong last time: it doesn't need further measures to reduce chances of droughts; so very easy to implement, however the result is not as classic as I would like it to be).


CODE
    // pretty close to memoyless randomizer, uses weights to reduce chances of droughts and floods
    public int nextolaf()
    {
        // uses global arrays history[] and drought[]
        // history tells which piece kinds you got most recently, history[0] is the most recent piece
        // drought tells you when you got each piece kind for the last time,
        // drought[0] is how long you have to wait for the piece shape with the ID 0
        
        // flood reduction constants
        final int base = 160; // the weight for each piece kind before floods and droughts are considered
        final int[] reduction = { 70, 30, 14, 6 }; // subtracted from base for the 4 most recent pieces
        // drought reduction constants
        final int threshold = 7; // increase probability of a shape if drought is at least this long
        final float factor = 1.4f;
        final float potence = 1.5f;

        int[] weight = new int[numpieces];
        for ( int i = 0; i < numpieces; i++ )
            weight[i] = base;

        // flood reduction
        for ( int j = 0; j < reduction.length; j++ )
            weight[history[j]] -= reduction[j];

        // drought reduction
        for ( int i = 0; i < numpieces; i++ )
            if ( drought[i] > threshold )
                weight[i] += (int) ( factor * Math.pow( drought[i] - threshold, potence ) );

        // dealing a piece shape
        int total = 0;
        for ( int i = 0; i < numpieces; i++ )
            total += weight[i];
        int rand = r.nextInt( total );
        int piece; // piece shape IDs are numerated from 0 to numpieces-1
        for ( piece = 0; piece < numpieces; piece++ )
            if ( rand < weight[piece] )
                break; // choose the current shape as next piece
            else
                rand -= weight[piece];

        // update history and drought
        for ( int j = history.length - 1; j > 0; j-- )
            history[j] = history[j - 1];
        history[0] = piece;
        for ( int i = 0; i < numpieces; i++ )
            drought[i] += 1;
        drought[piece] = 0;

        return piece;
    }

    // recursively updated randomizer, sum of chances are 1
    public int nextrecursive()
    {
        final double multiplier = 0.5f; // must be between 0 and 1, memoryless = 1

        // dealing a piece shape
        double rand = r.nextDouble();
        int piece; // piece shape IDs are numerated from 0 to numpieces-1
        for ( piece = 0; piece < numpieces; piece++ )
            if ( rand < chance[piece] )
                break; // choose the current shape as next piece
            else
                rand -= chance[piece];

        // recursively update piece chances
        double increasement = chance[piece] * ( 1 - multiplier ) / ( numpieces - 1 );
        for ( int i = 0; i < numpieces; i++ )
            if ( i == piece )
                chance[i] *= multiplier;
            else
                chance[i] += increasement;

        return piece;
    }


Posted by: Okey_Dokey Aug 20 2017, 06:21 AM

Saw 2 replays which probably broke because the stack was pushed towards the spawning area.
https://jstris.jezevec10.com/replay/1v1/C8GHB9
https://jstris.jezevec10.com/replay/1v1/SJH23E

Posted by: pwn_by_numbers Aug 20 2017, 08:26 AM

QUOTE(jezevec10 @ Aug 15 2017, 07:13 PM) *

I don't know much about how different modes in KOS work. In my opinion amount of time spent implementing KOS modes is not justified by the amount of players that would actually used them frequently.

I am considering adding a 180 spin wallkiks as an option for custom rooms though.


Really all I want is some sort of all-spins mode. I think there is interest for that (ZeroT also seemed interested earlier in the thread). I was suggesting KOS's garbage table as IMO the most balanced implementation of all-spins, but really as long as you add an option to adjust the garbage table for spins other than just T spins it's already implemented.

(KOS also has a thing where garbage sent from combo + spins doesn't stack (it takes the higher number instead of adding them), I think this should be a fairly simple setting to add depending on how you implemented things, but it isn't strictly necessary for a fun allspins mode.)

QUOTE

QUOTE(pwn_by_numbers @ Jul 30 2017, 10:08 AM) *

Oh and any intention of adding a piece count in the stats box (or at least in more stats?) It's frustrating trying to play for least blocks in cheese mode and not knowing how well you did without sifting through leaderboards.


In practice modes I've added this instead of the APM stat under the field.


Thanks so much. Thumbs Up.png

QUOTE

we don't necesserily need to have customizable everything that can be possibly customized in multiplayer games.


While I agree that you shouldn't have to add settings just for customization's sake, if there's a variable in the code that could be changed, why not make a setting available? Eg. an option to change out the wall-kick table would just change your wall-kick variable.

I think this sort of thing is needed to make Jstris a true Nullpomino replacement. (Not sure if that is your goal or not.) It also neatly solves suggestions like "implement X from KOS" because you can just tell users to adjust X setting themselves.

QUOTE
There is no soft-drop control there because I haven't find an easy to implement gesture that could be used to accomplish this.


What about pressing/holding on the bottom half of the field (or below the field)? I found it very intuitive to tap on the left and right to rotate pieces, but I typically do this on the top of the field so I'm not obscuring my view of the bottom, so changing how tapping the bottom works shouldn't be too limiting.

Posted by: jezevec10 Aug 20 2017, 12:01 PM

QUOTE(Okey_Dokey @ Aug 20 2017, 08:21 AM) *

Saw 2 replays which probably broke because the stack was pushed towards the spawning area.
https://jstris.jezevec10.com/replay/1v1/C8GHB9
https://jstris.jezevec10.com/replay/1v1/SJH23E

Good you noticed this, now it should be fixed.


QUOTE(Okey_Dokey @ Aug 17 2017, 10:50 PM) *

On the other hand, one could also make no-kick-180 rotation a little more powerful by adding those two 180 finesse kicks: a) check right-kick if rotated from East to West rotation state, b) check left-kick if rotated from West to East rotation state. Those 2 kicks are not abusable and are just there so that you can always 180 rotate a L,J,T piece when it touches the left or right wall (should only really matter for vertical spawning directions which of course is not the case in Jstris).

I though about this before, right now there are only all 0's in the 180 wallkick table and it blocks these basic 180 rotations. It probably isn't limited just to W<->E rotations but also N<->S, which is probably more limiting to players used to 180 rotations. When a stack is high and L,J,T piece spawns in 20th line of the field, 180 rotation wouldn't work.


Posted by: BestN00b Aug 23 2017, 12:35 AM

JSTRis bug:

Under settings: Game Settings: Grid.

Whenever I try to change the grid to full, for example, it gets reset to standard whenever refresh the page, or when I go onto JSTris in a new tab, even after clicking save settings and close.

Posted by: Corrosive Aug 23 2017, 07:38 PM

When you get this accomplished below I'll donate $100

QUOTE(Corrosive @ Jul 21 2017, 02:30 PM) *

It would be badass if you could somehow let us be able to create our own arrangement of blocks/artwork that appears when we die. This was a feature on Blocktrix/Tetrifast. I imagine this would be a pain in the ass for you to program into the game but its little things like this that would make the game dope and encourage more people to register an account rather than playing as guests.

http://i.imgur.com/VTKQxIW.png



http://i.imgur.com/zL2QnFG.png


Posted by: Danieru Aug 23 2017, 11:16 PM

I like that you mentioned that Corrosive :) I'm with the idea.


Request: Can you add other Rotation Systems? E.g. "TGM Rotation, TetriNet Rotation System, Vertical Rotation, Nintendo Rotation. There could also be Rotation specific rooms that allow that specified Rotation System to be used, it could also be awesome to play Cheese Race differently in a mindset that one of these Rotation Systems demand.

IPB Image

Posted by: cubixcreature Aug 24 2017, 08:39 AM

I am also a big fan of JStris and am happy to see the player base increase with the new HDO tourney. maybe someone/peeps will starts jstris tourney series here soon... Wink.png

Since the new update, i've noticed the old url redirects to the Irish version of jstris. is there a way to change the language? I don't read irish.

thanks!

Posted by: cubixcreature Aug 24 2017, 08:57 AM

QUOTE(cubixcreature @ Aug 24 2017, 02:39 AM) *

I am also a big fan of JStris and am happy to see the player base increase with the new HDO tourney. maybe someone/peeps will starts jstris tourney series here soon... Wink.png

Since the new update, i've noticed the old url redirects to the Irish version of jstris. is there a way to change the language? I don't read irish.

thanks!



I just figured out the language switch, yay!

Posted by: eevor Aug 27 2017, 09:59 PM

Small bug report - leaderboard rankings aren't sorting correctly, they seem to sort times with 2 decimal digits always above times with 3 decimal digits (e.g. 35.81 < 35.112).

Posted by: jezevec10 Aug 29 2017, 03:06 PM

Updated:


Posted by: BestN00b Aug 29 2017, 04:09 PM

the grid bug is still there. it still resets back to the standard default grid.

Posted by: Corrosive Aug 29 2017, 07:55 PM

the standard grid is the best anyway

good update

Posted by: mahnameseddoi Aug 29 2017, 08:12 PM

Wow jez, you really outdid yourself here. I've had the pleasure of watching Jstris grow right before my own eyes. I still remember the simple, fun little game it was when I first came across it last winter. At the time, it was convenient and fun for me, and there were almost no players in the bot room when I would play. Now its become hugely popular and a tetris client better than any other.

I love how professional and streamlined the website is. Not only is it the fastest tetris website out there, it has an unbelievable amount of statistics that are invaluable for beginner and advanced players alike. Thank you jez. From the bottom of my heart. It's been a rough year for me and I don't know where I would be without Jstris.

Posted by: Blink Aug 30 2017, 09:46 PM

Feature request in 1v1 rooms as spectator:

We can see each player's next pieces

Posted by: k_rakko Sep 1 2017, 01:06 PM

Hi jez, I have two small bug report.

1, False start bug.
I uploaded video to show the bug http://harddrop.com/videos/id_1602/. To reproduce this,
Step 1: Click "sprint" and wait 0.5 seconds.
Step 2: Click "Newgame" and enjoy game. You can stack while 'Ready Go' as you can see in the video.
To use this bug, you can start multiplayer game a little faster than others.

2, Size of playfield.
Blocks over 21st row disappear. Playfield used in jstris seems to be 10x21. But guideline says that Playfield is 1040, where rows above 20 are hidden or obstructed by the field frame to trick the player into thinking it's 1020. (I fetched this from http://harddrop.com/wiki/Tetris_Guideline.) This may be problem when player use 4-wide with "center techniques"http://harddrop.com/wiki/Combo_Setups.

Posted by: jezevec10 Sep 2 2017, 02:10 PM

QUOTE(k_rakko @ Sep 1 2017, 03:06 PM) *

1, False start bug.
I uploaded video to show the bug http://harddrop.com/videos/id_1602/. To reproduce this,
Step 1: Click "sprint" and wait 0.5 seconds.
Step 2: Click "Newgame" and enjoy game. You can stack while 'Ready Go' as you can see in the video.
To use this bug, you can start multiplayer game a little faster than others.

This is now corrected, good you noticed it smile.gif

QUOTE(k_rakko @ Sep 1 2017, 03:06 PM) *

2, Size of playfield.
Blocks over 21st row disappear. Playfield used in jstris seems to be 10x21. But guideline says that Playfield is 1040, where rows above 20 are hidden or obstructed by the field frame to trick the player into thinking it's 1020. (I fetched this from http://harddrop.com/wiki/Tetris_Guideline.) This may be problem when player use 4-wide with "center techniques"http://harddrop.com/wiki/Combo_Setups.

This client does not adhere to all of the guideline rules in the mentioned topic, this is one of the differences. Preventing center 4-wide from being too powerful strategy is the main reason why this is not planned to be changed. Center 4-wide can still be used, players just need to build it quickly enough, otherwise they have to decide whether to accept the incoming lines, sacrifice some of the stack but let the top to be nicely flat or start the combo as soon as they see the attack to block them.

Posted by: k_rakko Sep 3 2017, 02:17 AM

QUOTE(jezevec10 @ Sep 2 2017, 02:10 PM) *
This is now corrected, good you noticed it smile.gif

This client does not adhere to all of the guideline rules in the mentioned topic, this is one of the differences. Preventing center 4-wide from being too powerful strategy is the main reason why this is not planned to be changed. Center 4-wide can still be used, players just need to build it quickly enough, otherwise they have to decide whether to accept the incoming lines, sacrifice some of the stack but let the top to be nicely flat or start the combo as soon as they see the attack to block them.


Thank you for your quick response! (^^)
I agree with you. To tell the truth, I was planing to suggest that because of center 4-wide.
...I'll delete the video because that wastes storage.

Posted by: VladtheImpala Sep 4 2017, 04:23 PM

I think the bot seriously glitches out when it plays hurryup garbage. At least what the bot displays becomes really strange.

Posted by: jezevec10 Sep 6 2017, 09:25 PM

Updated:


Posted by: Donorgyll Sep 7 2017, 05:44 AM

After the update I'm having a bug where every time I reload my Sound Effects get reset from Yotipo SE to NullpoMino SE.

Posted by: jezevec10 Sep 8 2017, 07:35 PM

QUOTE(VladtheImpala @ Sep 4 2017, 06:23 PM) *

I think the bot seriously glitches out when it plays hurryup garbage. At least what the bot displays becomes really strange.

This happens only to MisaMino and Fool bot, which weren't originally created for the AIgames bot communication protocol, but later modified to work with it. Real_block and jez_block won't have this issue.
Because MisaMino and Fool don't interpret the solid garbage blocks correctly, they just clear it internally as it were normal blocks.

Right now it is not my priority to fix this because I have limited time, but anyone can help by implementing block id 2 as solid garbage for these modified bots at https://github.com/jezevec10/MisaMinoBot

QUOTE(Donorgyll @ Sep 7 2017, 07:44 AM) *

After the update I'm having a bug where every time I reload my Sound Effects get reset from Yotipo SE to NullpoMino SE.

True, I forgot about this option and it wasn't being saved Frown.png . Now it will work, thanks

Posted by: VladtheImpala Sep 14 2017, 03:14 AM

Will sprint replays not be removed? I think that's what your update says, but I want to make sure.

Posted by: jezevec10 Sep 15 2017, 08:20 PM

Updated:

Afterword:
In the last 3 months I was able to do 8 new versions - 1.23 to 1.30 now. The update frequency will now decrease as I'll have less free time. If you liked any of the changes made this year, you can make a donation so we can fund the server expenses, the info is https://jstris.jezevec10.com/about. Thanks to everyone who has already helped.
Finally, here are the results of the feature idea popularity survey (total 66 submissions)
https://i.imgur.com/xdVXjUn.png
https://i.imgur.com/XjjUjFu.png
5 out of these 8 ideas are now implemented (to some extent).

QUOTE(VladtheImpala @ Sep 14 2017, 05:14 AM) *
Will sprint replays not be removed? I think that's what your update says, but I want to make sure.
Replays from practice modes played on registered account won't be removed. As soon as the sprint replay count starts approaching the server limits, replays of guest accounts will start being removed, which will add a lot of time to find a solution how to preserve all replays. Removal of any replay can be avoided by adding it into favourites.

Posted by: Danieru Sep 15 2017, 09:34 PM

Thanks, Jez!

Posted by: XaeL Sep 16 2017, 02:15 AM

Jez would it be possible to do a bigger Lines remaining gui in 40L? I struggle to know when to stop upstacking in 40L.

Maybe here...

https://i.imgur.com/TLPyx4O.png



Posted by: Aluce Sep 16 2017, 10:46 AM

I struggle with the same thing sometimes. Although, having the font change colour (to yellow at 20 lines and to red at 10 lines, or something like that) would work miracles as well.

In any case, I am in love! This is the best thing since Nullpo and sliced bread!

Posted by: Okey_Dokey Sep 16 2017, 10:21 PM

QUOTE(jezevec10 @ Sep 15 2017, 08:20 PM) *
Updated:[*] In-game lobby chat[list]
...

Thanks! Can you also make garbage messiness available in room presets / creation (garbageDelay would be another candidate although I doubt anyone will use a value different from 500 ms). For all kind of rules I wanted to create, I would use a garbage messiness bigger than 0. It would be also nice, if a user could delete one's own rules.

Very minor bug: If you go to create room, select a preset other than Default, then cancel (or play for a while) and go to room creation once again, then the game shows you the description of the last used preset, although Default is selected.

Posted by: jezevec10 Sep 19 2017, 03:47 PM

QUOTE(Okey_Dokey @ Sep 17 2017, 12:21 AM) *

Thanks! Can you also make garbage messiness available in room presets / creation (garbageDelay would be another candidate although I doubt anyone will use a value different from 500 ms). For all kind of rules I wanted to create, I would use a garbage messiness bigger than 0. It would be also nice, if a user could delete one's own rules.

Very minor bug: If you go to create room, select a preset other than Default, then cancel (or play for a while) and go to room creation once again, then the game shows you the description of the last used preset, although Default is selected.

I've added messiness and garbageDelay to advanced settings so it saves to the presets. I've made some optional properties available that won't save when using the Save button in the room settings, but they can still be used by manually editing the JSON data of the preset:

numPlayers - integer, defines max. room capacity (for tournament presets it's probably best to enforce 2)
gameMode - integer, 0=standard,1=cheese,2=team
isPrivate - boolean, should the rooms made under this preset be private or public
roomName - string, if this is set, it replaces the room name that user filled, so probably not good

Posted by: caffeine Sep 20 2017, 02:32 PM

Thanks for all the work. I know you said you're slowing down development for now, so I don't expect you to get to this anytime soon if at all. I normally play with sound off. When I load a replay, it has sound, it can be loud and jarring. I was wondering if it might be possible to mirror a user's settings for the replay he/she is watching.

Posted by: Okey_Dokey Oct 1 2017, 09:48 AM

I noticed that a combo bonus is still applied for Perfect Clears. I don't know how Tetris Friends handles this but I find it weird that in Jstris a Tetris-PC sends 2 less lines than a Single-Double-Single-PC (Double sends 1 line, 2-combo sends 1 line).

Here comes my last real suggestion: more singleplayer modes.

The leaderboard and replay function make Jstris a good place for singleplayer, too. I had played some classic-styled Ultra on Multris majorly because it showed a weekly and monthly leaderboard.

First currently missing kind of mode is Ultra. I mustn't say much about it. 2 minutes should be enough. Maybe a second Ultra challenge with steady garbage insertion (e.g. a garbage line every 5 seconds or every 10 pieces) or a score race mode (game finishes after you reach e.g. 100,000 points; if MicroBlizz + Jstris really gets accepted for AGDQ, then another speedrunnable mode could be good).

Second currently missing kind of mode is Marathon. Marathon-like modes were the most popular modes throughout the history of Tetris but SRS made them not worth playing. Things I dislike about modern Marathon:


As said in point 1, I think lock delay needs another implementation for Marathon, giving more time when a piece spawns. Here's the system I would prefer:
  1. Each piece starts with a timebank which is roughly twice as big as the usual lockdelay value.
  2. If a piece touches the ground and tries to make another gravity step (without lockdelay), the game begins to subtract time from the timebank until the piece is moved or rotated to a place where it doesn't touch the ground.
  3. Certain actions (e.g. moves and rotations for move-reset) increase the timebank to the usual lockdelay value (no effect if timebank was bigger than lockdelay value).
  4. A piece locks once the timebank reaches 0.

Depending on which actions increase the timebank in step 3, we differ between:
Here's how I would implement a Marathon depending on which reset system is used:

move-reset: Forget about the timebank thing I talked about. Just make it easy beatable (game stops once level ~15 is cleared so that you avoid the awkwardness of SRS) and use a goal system like in Tetris Friends (a Tetris subtracts 8 from goal, a Triple 5, a Double 3, a Single 1). The only really important change is how leaderboards work: Games are sorted firstly by highest level reached (that's maxlevel+1 if maxlevel is beaten), and secondly by the time passed when the highest level was reached. So the goal is to beat this Marathon as fast as possible and not with a score as high as possible. I would suggest that the last but one level is the first level with 20g and that lock delay is decreased in the last level. I also suggest to use a 50% longer lock delay when a piece spawns.

step-reset: I suggest that this Marathon already starts in 20g which simplifies the time-bank system: Time is subtracted from the timebank in every instant/moment in which the piece is active. Levels don't change the gravity, instead they change how much time there is originally in the timebank and to which value timebank is increased, once a piece is moved or rotated to a slope (that means when a piece doesn't touch the ground after movement or rotation, in which case the timebank is increased and the piece is pulled down to the ground again). Also, it's importantly that the game doesn't use Instant DAS (this means infinite autoshift rate, otherwise the piece could overcome wells or the piece would instantly teleport to a well or to the wall). Secondly, upward kicks must be deactivated. You also need to check "alternative rotations" like explained in the thread http://harddrop.com/forums/index.php?showtopic=7832 or pieces usually won't rotate (without upward kicks).

entry-reset: I suggest a system similar to classic Tetris: Level increases every 10 cleared lines (or 20 to 40 cleared lines in later levels), leaderboard is sorted by score. Pieces never fall faster than ~12 miliseconds per row. The initial time bank is about 5 times bigger than the time per gravity step. Upward kicks should be deactivated. "Alternative rotations" are not needed, as you will have enough time to rotate pieces before they hit the ground. Also works for Instant DAS. I had implemented such a system in my http://harddrop.com/forums/index.php?showtopic=5949. The entry-reset is there to give more time for spins and to allow to survive a little higher in the matrix. To survive even higher in the matrix, one could make the piece stay at spawn for a short time (like in SNES Tetris: wait some miliseconds before the piece begins to fall) whereas this time could be also made a bit longer if the last piece locked higher in the matrix (like in NES Tetris).

Posted by: eevor Oct 15 2017, 10:51 AM

Small feature/UI request - could we maybe have a choice of the position of the remaining line count in Sprint? I can't get used to this right- position, and believe the under- like in Nullpo is much more visible during sprinting.

Posted by: SmartS101 Oct 17 2017, 05:07 AM

I just want to start by thanking you for all the work you've done. But for the past week I've been experiencing an error where after ~30s any piece I drop that would send lines (double, triple, tetris, t-spin, or combo) it will clear the lines on my screen, but not move on to the next piece or count the lines as cleared in sprint or as lines sent in survival/live. Usually 5-10s later the "you lost connection" error pops up and it won't save replays so I can't show you what I mean. It happens across both my personal laptop and my work computer. I've tested it on Chrome that has an adblocker installed but disabled and on FireFox where I don't bother with add-ons/extensions on both computers. It happens in both regular and private/incognito modes. I was mostly wondering if this is a known issue, or if it's just something funky with my security/firewall settings.

Posted by: L2R Oct 17 2017, 09:53 AM

Can you change the fast restart button in jstris? cant see the option.

Posted by: caffeine Oct 17 2017, 02:45 PM

Settings > plus sign [+] button

Posted by: SmartS101 Oct 17 2017, 10:33 PM

QUOTE(L2R @ Oct 17 2017, 09:53 AM) *

Can you change the fast restart button in jstris? cant see the option.



Settings --> + --> There's a Game Reset field.

Posted by: L2R Oct 18 2017, 06:29 PM

QUOTE(SmartS101 @ Oct 17 2017, 10:33 PM) *

QUOTE(L2R @ Oct 17 2017, 09:53 AM) *

Can you change the fast restart button in jstris? cant see the option.



Settings --> + --> There's a Game Reset field.


I changed it to space and nothing happens when I press though, not sure why

Posted by: Okey_Dokey Oct 20 2017, 04:59 PM

Just a quick repost of what I saw in the https://discord.gg/RcNFCZC. There are userscript managers for browsers, e.g. Tampermonkey extension for Chrome or Greesemonkey extension for Firefox. With those userscript managers you can change the appearance of Jstris, e.g. using a block skin of your choice or adding a background image.

The following script adds a Puyo Puyo background image and uses Puyo Puyo Tetris blockskin:

CODE
// ==UserScript==
// @name         Jstris Mods
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       You
// @match        https://*.jstris.jezevec10.com/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';
    window.addEventListener('load', function(){
        //Jstris Custom Background Image
        document.head.getElementsByTagName("style")[0].innerHTML="";
        document.body.style.backgroundImage="url('https://media.discordapp.net/attachments/
            360554528556449795/361706190406680576/d29d4205-1f9e-4c85-8a5b-3f573e55b5f4.png')";
        document.body.style.backgroundSize="100%";
        document.getElementById("app").style.backgroundColor="rgba(0, 0, 0, 0.8)";
        document.getElementById("app").style.height="1000px";

        //Jstris Block Skin Change
        loadSkin("https://i.imgur.com/G6WbXoD.png",32);
    });
})();


The following script moves the previews down by 48 pixels and reduces the preview queue to 2 pieces (I use that for Sprint):

CODE
(function() {
    'use strict';
    window.addEventListener('load', function(){
        document.getElementById("rstage").style.marginTop="48px";
        document.getElementById("queueCanvas").height="160";
        document.getElementById("sprintInfo").style.marginTop="120px";
        loadSkin("https://i.imgur.com/G6WbXoD.png",32);
    });
})();

Posted by: cubixcreature Nov 18 2017, 05:59 AM

When you switch from Spectator mode to Play mode, the chat room history is erased. Can you remove that feature? it'd be cool to keep the conversation of the room still visible.

Posted by: AmurCZ Dec 4 2017, 10:38 AM

Hi, i have problem with Jstris. I hope someone can help me here.

I can not run any of the games on Jstris. I always show this window "connection lost"

http://www.imagehosting.cz/images/chaba.png


Thanks for help and sorry for my english.

Posted by: jezevec10 Dec 4 2017, 11:28 PM

QUOTE(AmurCZ @ Dec 4 2017, 11:38 AM) *

Hi, i have problem with Jstris. I hope someone can help me here.

I can not run any of the games on Jstris. I always show this window "connection lost"


Hello,
today the jstris server was unavailable for several hours, it's possible you were trying to connect during that time. It should work now.

For latest availability information and problem reporting you can join Jstris Discord server:
https://discord.gg/RcNFCZC

Posted by: ultimamax Apr 11 2018, 06:24 AM

I have an idea for a feature. There could be a "finesse coach" mode where you're repeatedly made to place a block in a specific random place and orientation without finesse faults. (the orientation and position could be indicated by a ghost piece) I think this has a lot of potential as a finesse training tool - as of right now I'm trying to clean up my finesse and I seem to have run into a wall using the "reset on finesse fault" feature.

Considering all the game code is available I am considering writing this myself smile.gif Let me know your thoughts

Posted by: XaeL Apr 12 2018, 01:43 AM

QUOTE(ultimamax @ Apr 11 2018, 06:24 AM) *

I have an idea for a feature. There could be a "finesse coach" mode where you're repeatedly made to place a block in a specific random place and orientation without finesse faults. (the orientation and position could be indicated by a ghost piece) I think this has a lot of potential as a finesse training tool - as of right now I'm trying to clean up my finesse and I seem to have run into a wall using the "reset on finesse fault" feature.

Considering all the game code is available I am considering writing this myself smile.gif Let me know your thoughts


I highly suggest that you instead write a big-bang clone from Puyo Puyo Tetris, where any faults result in a restart.

https://www.youtube.com/watch?v=Ucu15FHT8hI&t=18s

You could do more complex maps too.

Posted by: jezevec10 May 24 2018, 10:55 PM

Updated:


Posted by: zzymyn Jun 29 2018, 12:41 AM

Is there any way of changing the spawning rotation of the blocks (spawn T facing downwards for example)?

Posted by: XaeL Jul 1 2018, 01:03 AM

QUOTE(zzymyn @ Jun 29 2018, 12:41 AM) *

Is there any way of changing the spawning rotation of the blocks (spawn T facing downwards for example)?


Not currently. Only standard SRS orientation/kicks are supported.

Are you looking for a different rotation/kick table also?
It's definitely a bit of work (replay support for custom block orientation, potential netcode changes depending on how clients sync playfields/pieces), so i doubt it would be implemented soon
(disclosure: i am not the developer, just giving my perspective)

Posted by: zzymyn Jul 3 2018, 02:01 AM

QUOTE(XaeL @ Jul 1 2018, 01:03 AM) *

QUOTE(zzymyn @ Jun 29 2018, 12:41 AM) *

Is there any way of changing the spawning rotation of the blocks (spawn T facing downwards for example)?


Not currently. Only standard SRS orientation/kicks are supported.

Are you looking for a different rotation/kick table also?
It's definitely a bit of work (replay support for custom block orientation, potential netcode changes depending on how clients sync playfields/pieces), so i doubt it would be implemented soon
(disclosure: i am not the developer, just giving my perspective)


Fair enough, yeah sounds like it could be a big change especially with the replays and netcode. Guess I'll just have to train myself with these orientations.

Posted by: jezevec10 Jul 20 2018, 08:21 PM

Updated:

IPB Image



Known bugs (expected to be fixed during the next week):
- Occasional desync of all the fields (as spectator) (https://i.imgur.com/sGABfax.png)
- Player placed 1st has a flashing "1st" overlay.
- Opponent's screen sometimes tops out but the player still plays. (thanks Namcheela for testing)

Posted by: zzymyn Jul 27 2018, 01:34 PM

Something weird just happened when I was playing 40L sprint, the game ended after only 2 lines?? https://jstris.jezevec10.com/replay/730333 That score should be deleted :O

Posted by: errata Aug 8 2018, 07:41 AM

Hey, jezevec10

Great work on on the site! I'm curious about the replay format. I've looked around a bit and I can't seem to find anything about it. Is it documented somewhere?

Posted by: jezevec10 Aug 9 2018, 12:10 PM

QUOTE(errata @ Aug 8 2018, 09:41 AM) *

Hey, jezevec10

Great work on on the site! I'm curious about the replay format. I've looked around a bit and I can't seem to find anything about it. Is it documented somewhere?

It is a custom format for jstris and currently has no documentation available. It mainly consists of a list of timestamps and actions that happened at that time. This list is encoded in a bitstream where timestamp is 12bits long and action code 4bits long. The timestamp overflows every ~4seconds, but there is always at least one action in this time span. This stream is prepended with json metadata and everything is compressed using lz-string. The piece sequence is restored from the PRNG seed, the algorithm used is called Alea.

Let me know if you need more detailed description. This is just a short overview of how the format works.

Posted by: errata Aug 10 2018, 04:13 AM

QUOTE(jezevec10 @ Aug 9 2018, 12:10 PM) *

Let me know if you need more detailed description. This is just a short overview of how the format works.

Thank you for what you've given me so far, I can probably reverse the format now but if you have any more help to give I'd appreciate it. I can unpack the json ok but I don't understand it all.
CODE

{
  "c":{
    "v":3,
    "softDropId":4,
    "gameStart":1533871560737,
    "gameEnd":1533871632731,
    "seed":"byhaug",
    "m":1,
    "bs":2,
    "se":1,
    "das":83
  },
  "d":"ADMS..."
}


v is the replay version, das, seed, gameStart and gameEnd are self explanatory but the rest I'm unclear on? When I coerce the d data into an int16 array by ASCII value that seems to produce something that has 16 bit wide fields but I don't understand the data inside them. There seem to be too many zeroes? I end up getting 6-7 bits worth of data every 16bit wide field and the rest is zeroes. Any help you're willing to give will be appreciated.

I'm trying to build a replay analyzer fwiw.

Posted by: k_rakko Aug 10 2018, 09:05 AM

QUOTE(errata @ Aug 10 2018, 04:13 AM) *


v is the replay version, das, seed, gameStart and gameEnd are self explanatory but the rest I'm unclear on? When I coerce the d data into an int16 array by ASCII value that seems to produce something that has 16 bit wide fields but I don't understand the data inside them. There seem to be too many zeroes? I end up getting 6-7 bits worth of data every 16bit wide field and the rest is zeroes. Any help you're willing to give will be appreciated.

I'm trying to build a replay analyzer fwiw.


"d" is a BASE64 encoded binary data. You can use online converter at https://cryptii.com/base64-to-binary (base64 to binary). Note that "/" is escaped in json so replace "\/" with "/" before you use converter.

Basically, replay data is saved in following format.
timestamp (12 bits long) + action code (4 bits) +next timestamp + action code + timestamp ......

You can read time stamp to use this.
0.016 * (first 8 bit) + 0.001 * (following 4 bits)

You can use this table to decode action code.
{MOVE_LEFT:0,MOVE_RIGHT:1,DAS_LEFT:2,DAS_RIGHT:3,ROTATE_LEFT:4,ROTATE_RIGHT:5,RO
TATE_180:6,HARD_DROP:7,SOFT_DROP_BEGIN_END:8,GRAVITY_STEP:9,HOLD_BLOCK:10,GARBAG
E_ADD:11,SGARBAGE_ADD:12,REDBAR_SET:13,ARR_MOVE:14,AUX:15}


For example, to decode https://ja.jstris.jezevec10.com/replay/640128, you can get binary data start at 00000111 1000 0111 00001110 11100111 ....

This means 0111 = code 7:HARD_DROP at
00000111 * 0.016 + 1000 *0.001 = 7*0.016 + 8*0.001 = 0.120 sec
and another hard drop at
14 *0.016 + 14 * 0.001 = 0.238 sec.

In addition, it is a little difficult to decode action code 11:GARBAGE_ADD. You can find additional data after action code.(5 bits of number of garbage line and 4 bits of position of hole.)

It is too hard for me to teach you how to decode data after 0.016*256 sec. Just use magic number 4.094 sec.

Good luck.
I am praying for your success with you project.



Posted by: errata Aug 11 2018, 08:30 AM

QUOTE(k_rakko @ Aug 10 2018, 09:05 AM) *

"d" is a BASE64 encoded binary data.


Ahahah oh my god, this is why you don't program late at night. I thought it was base64 but for some reason i couldn't get window.atob() to work last night. Turns out I had truncated the last letter off the end of the string. This is very helpful, I'm now able to comfortably extract everything I need for 40 line replays. Thanks!

CODE

{time: 0.120, moveID: 7, move: "HARD_DROP"}
{time: 0.238, moveID: 7, move: "HARD_DROP"}
{time: 0.277, moveID: 0, move: "MOVE_LEFT"}
{time: 0.350, moveID: 2, move: "DAS_LEFT"}
{time: 0.405, moveID: 7, move: "HARD_DROP"}
...


I guess the only thing I'm missing is how to get alea to return the right values. I think I can work it out from the website source. Thanks so much for the help guys!

Posted by: jezevec10 Aug 12 2018, 10:20 AM

QUOTE(errata @ Aug 10 2018, 06:13 AM) *

v is the replay version, das, seed, gameStart and gameEnd are self explanatory but the rest I'm unclear on?
QUOTE(errata @ Aug 11 2018, 10:30 AM) *

I guess the only thing I'm missing is how to get alea to return the right values. I think I can work it out from the website source. Thanks so much for the help guys!

I've created a simplified version of the block randomizer which shows how to use alea to obtain the block queue.
CODE

var blockRNG=alea(seed);                 // seed the randomizer
var bag=["I","O","T","L","J","S","Z"];   // block indices
function getBlock(){
  var index = Math.floor(blockRNG() * bag.length);     // random index in the current bag
  var rand = bag.splice(index,1)[0];                   // get the block and remove from the current bag
  if(bag.length === 0)bag = freshBag.slice(0);         // refreshes the bag to the original state (above)
  return rand;
}

The block queue is constructed by subsequent calls of getBlock(). Note that for all practice modes, if the queue starts with s/z the starting block switches its position with either 2nd or 3rd block in the queue (whichever will first avoid s/z being the first block).

Posted by: jezevec10 Aug 16 2018, 08:55 PM

Updated:


Posted by: PuyoUltimate Aug 17 2018, 03:53 AM

This game is awesome now for some reason i play jtetris way more than Tetris Friends

Posted by: Okey_Dokey Aug 17 2018, 06:44 AM

Looks good Thumbs Up.png

I like that you get that message on red background when you play too fast in the speed limit rooms. I think the game should ignore all your inputs during the first 0.5 seconds of that message - or at least the hold inputs. If you try to hold the next piece, you end up with the wrong piece after a failed harddrop attempt. You could also add a speedometer in speed limit rooms. I mean just a Pieces Per Minute number (rounded down to next integer) on the position/location where you see the remaining lines (and time) in Sprint (and Ultra respectively). That number could become red, if you are above the limit, and orange, if you're near it.

I think 1.5 pieces per second is a little too less for the default speed limit room. Most players will go above it from time to time (note it's max speed and not average speed). I suggest increasing the limit a litte (e.g. 1.7 pps) or adding a AutoRepeatRate limit to that room, too.

Just for the sake of naming consistency I have to point out that you use "blocks", "blocks per piece" and "pieces per second" in the leaderboard statistics. So one time you use block and the other time you use piece for the same thing. Not that PPP (points per piece) would be a better abbreviation.

I like the scoring list in the replays. I guess this also simplified debugging the Ultra mode. I think 3000 points per Perfect Clear is a little too much. For comparison, older official games often didn't reward PCs in Ultra (and Marathon) and newer official games will hand out 2000 points at maximum (depending on the amount of lines you clear). In official games, T-Spin Triples are the most effective way to play Ultra and that's 2400*4/3 = 3200 points per 4 lines (without drop points). If you clear 4 lines with a Perfect Clear, you'll usually get another 600 points from Singles, Doubles and combos - and around 100 more drop points because you stack lower. So I would say, 2600 2700 points per Perfect Clear would be appropriate - that's slighty more effective than TSTs (3200 - 600 = 2600). Also note that there are some 14 lines T-Spin loops that end in a Perfect Clear.

Anyway, I think it would be a good idea to have a second Ultra mode where you receive 1 garbage line every 10 pieces. This would stop people from using looping techniques. Such a garbage Ultra mode could also last a little longer, 3 minutes perhaps.

Haven't checked it but the last time I played multiplayer, the expanded room statistics for the last round disappeared when a new round started (or I wasn't fast enough to click that button and the statistics were already gone). There must be a better way. I like to check the speed of my opponents - I think that's more important than the number of lines sent / received you see in the basic statistics.

Posted by: XaeL Aug 20 2018, 12:12 AM

QUOTE(Okey_Dokey @ Aug 17 2018, 06:44 AM) *

Haven't checked it but the last time I played multiplayer, the expanded room statistics for the last round disappeared when a new round started (or I wasn't fast enough to click that button and the statistics were already gone). There must be a better way. I like to check the speed of my opponents - I think that's more important than the number of lines sent / received you see in the basic statistics.


I think one of these could be a solution:
1) detailed stats for previous game was displayed below chat
2) detailed stats for current game shown live
3) countdown timer for next game, minimum 5 seconds.

#discuss


Posted by: Lucho Aug 21 2018, 03:00 AM

QUOTE(XaeL @ Aug 19 2018, 08:12 PM) *


3) countdown timer for next game, minimum 5 seconds.

#discuss

I agree with this, I feel like it will encourage people to talk a bit more.

And how about adding a little colour and shapes to the site ? Maybe that keeps the newcomers around smile.gif

Posted by: Okey_Dokey Aug 28 2018, 06:42 AM

Yeah, it would be a good idea to make the "new game" button stop working in the first 3 or 5 seconds after a game has ended (button is greyed out and counts down, game end = when 2nd place tops out).

This post is not a suggestion. I just wanted to link a few Ultra replays where players use different strategies. The PPB stat makes finding interesting replays easy. You can also find all Ultra replays by a user by editing the name in the following https://jstris.jezevec10.com/ultra?display=5&user=THICKBUT. First number is the final score, second number is pieces per block rounded down to next integer.


Posted by: jezevec10 Sep 7 2018, 08:31 PM

Updated:


This is the final large update of this summer, if you liked any of the changes made this year, you can make a donation so the game server can keep running - https://jstris.jezevec10.com/about.

Posted by: Goofball Sep 9 2018, 06:02 PM

Not a bug by any means, but a request:
Could there be an option to customize the positioning of the visual layout at all?

In my case, I'd REALLY love to be able to have a different positioning of the piece previews, as the way I visually process things has the default layout driving me absolutely batty since I can't keep proper track of the topmost piece preview while remaining focused on my field, and consequently needless mistakes are made, or I have to slow down a great deal.

Perhaps even something as simple as this?:
Attached Image

It would improve my quality of JStris life IMMENSELY!


Also, is there anywhere that has a comprehensive list of the game commands?

Posted by: Okey_Dokey Sep 9 2018, 06:48 PM

QUOTE(Goofball @ Sep 9 2018, 06:02 PM) *
Could there be an option to customize the positioning of the visual layout at all?

This is actually possible with a TamperMonkey (Chrome) / GreaseMonkey (Firefox) script:

CODE
// ==UserScript==
// @name         Jstris Mods
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       You
// @match        https://*.jezevec10.com/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';
    window.addEventListener('load', function(){

        // Jstris Custom Background Image
//        document.head.getElementsByTagName("style")[0].innerHTML="";
//        document.body.style.backgroundImage="url('https://media.discordapp.net/attachments/
            360554528556449795/361706190406680576/d29d4205-1f9e-4c85-8a5b-3f573e55b5f4.png')";
//        document.body.style.backgroundSize="100%";
//        document.getElementById("app").style.backgroundColor="rgba(0, 0, 0, 0.8)";
//        document.getElementById("app").style.height="1000px";

        // Jstris Next Piece Queue Change
        document.getElementById("rstage").style.marginTop="96px"; // 48,72,96
        document.getElementById("holdCanvas").style.marginTop="96px"; // 48,72,96
        document.getElementById("queueCanvas").height="160";
        document.getElementById("sprintInfo").style.marginTop="136px";

        // Jstris Block Skin Change
        loadSkin("https://i.imgur.com/G6WbXoD.png",32);
//        loadGhostSkin("https://i.imgur.com/OvH7LA4.png",36);
    });
})();

Lines starting with // are commented out (not applied). rstage marginTop influences how far the preview queue is moved down. holdCanvas marginTop does the same thing with the hold piece. queueCanvas height influences how many pieces you see. sprintIngo marginTop influences the position of the info showing the remaining lines in sprint and the remaining time in Ultra. The script with the values above will make the game look like that (loadSkin loads a Puyo Puyo Tetris skin):

https://i.imgur.com/7RmMaJh.png

PS: the code with loading a background image only works sporadically for me when activated.

QUOTE(Goofball @ Sep 9 2018, 06:02 PM) *
Also, is there anywhere that has a comprehensive list of the game commands?

There's the /help command which should tell you what other commands exist.

Posted by: mahnameseddoi Sep 10 2018, 12:19 AM

jeez Okey_Dokey, you always have such a thoughtful, helpful response to everyone on here. You're an absolute gem in this community. How are you so knowledgeable and remain so steadfast with the replies, despite people not replying back so often? You're so underappreciated that I just want to tell you you're a great person and at least 1 person appreciates what you are doing.

Posted by: Goofball Sep 10 2018, 01:58 AM

QUOTE(Okey_Dokey @ Sep 9 2018, 06:48 PM) *

Loads of helpfulness


Thanks, Dokey!
Once again, you're the man!

Posted by: sh2rval Dec 7 2018, 01:46 AM

Wanted to start playing tetris, so I was trying out all free PC tetris apps i could get my hands on. So far I like JSTris most. Simple and clear UI, crisp controls, not intrusive sounds, no bullshit ideology - it is perfect app, except that its completely not beginner friendly. Very little single player mods, surivival is completely brutal (increasing difficulty or preset difficulty levels would be nice), no iconic marathon (?!). All i can is to admire this client, since there is clearly no mode for me here Frown.png
Is source code closed? Are there any mods?

Posted by: Goofball Dec 20 2018, 08:03 PM

LOVE Jstris through and through.

I do have a small request though:

Could you please change it so that whenever a replay fails to save that it doesn't generate the error message in a pop up dialog box? Perhaps just an unobtrusive message shows up in the chat window instead or something?

When doing back to back runs on maps, sprints, or whatever it can be extremely infuriating to have started a new game, and suddenly have that error message straight up interrupt playing as it not only gets in the way, but also removes focus from the playing field.

Pretty please with a t piece on top?

Posted by: jezevec10 Feb 15 2019, 01:24 AM

Updated:


The previous version had several minor sub-versions (v1.34.1 - v1.34.6) that didn't have their own change log, therefore I'm listing the most notable changes:
Many of the implemented ideas were suggested by players in Jstris and Hard Drop community. For discussion & bug reports you can visit the https://discord.gg/RcNFCZC.
If you liked any of the changes you can https://jstris.jezevec10.com/about so the game server can keep running or be upgraded to decrease the lag.

Posted by: jezevec10 Jul 17 2019, 11:00 AM

Updated:


Posted by: Arcorann Jul 18 2019, 05:43 AM

QUOTE(jezevec10 @ Jul 17 2019, 11:00 AM) *

[*] More randomizers

Out of curiosity, what algorithm is being used for C2sim? (I had a conjecture for the algorithm a while ago that I'm almost certain is correct except for the exact numbers, but I was planning to do a little more research before posting it - which never happened.)
While I'm at it I'll also ask about the other randomisers you mentioned as well. And O-Spin.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)