Infinitris.io is back (kind of)

I’ve moved the application to a new server and the website is back up and running at infinitris.io. I haven’t made any major changes yet but some ideas are beginning to form. I’ve decided to do a detailed analysis this time and will report my findings here (hopefully in a shorter period of time than between now and my last update…)

If you’re interested in other things I’m working on, check out my personal website, rolz.nz.

Infinitris.io Temporarily Shut down

Why? I’ve been doing a lot of thinking about Infinitris and realised it’s not really a multiplayer game. Yes, you join the same grid but there’s not really any reason to interact with others most of the time, and it seems like most people would rather play the game alone. This goes completely against my reason for creating Infinitris in the first place. I’m not going to abandon the game. I still think it has a lot of potential, it’s just up to me to figure out what it needs to become great.

– rolznz

1.2.2.6 Patches

Over the last couple weeks I’ve been focusing on a bunch of minor improvements to issues raised while Infinitris.io was featured on iogames.space. There’s still a few to do:

  • Warnings when the grid is about to increase / decrease in size.
  • Still a possibility of placing your block in the wrong place if a line is cleared at the same time.

New features coming soon: Display settings, Combos, new game mode(s), improved lobby chat (+ access lobby chat while in a room).

Changelog:

[X] When gems cover each cell within a hole, the hole is automatically filled.
[X] Fixed grid not displaying properly on non-100% browser zooms.
[X] Fixed player not returning from “AFK” when they press a key.
[X] When the grid expands, each cell in the rightmost column is replicated rather than empty cells being used.
[X] AFK state for each player is now sent to players on join.
[X] When a player is actively typing, their AFK timeout is now reset.
[X] Camera shake intensity now decreases based on distance – no more grid-wide shaking when someone makes a mistake screens away.
[X] Cells stolen are now shown in the player statistics box.

-rolznz

1.2.2.5 Patches

Over the last day Infinitris.io has been featured on http://iogames.space. Both public rooms have been full for a large proportion of the time – 21 users playing together at the same time. Jumping ingame has been pretty hectic and I’ve uncovered a lot of things to work on, for example the fact that despite everyone in the Atlas room was working together they barely managed to clear any lines before the grid fully reset (without AL and I continually filling their gaps).

Still, since my last feature 4 months ago, I’ve noticed a huge improvement in reception. In the last 24 hours I’ve received 115 signups – an increase in 37% in a single day (315 to 430 registered users)!

I attribute this to:

  • Vastly improved user interface / look and feel.
  • Improved polish of ingame effects (line clears, cell steals, mistakes etc) – everything is much smoother.
  • User progress and achievements – something to give players purpose.
  • Improved rotation mechanics – you can now rotate off of walls and slip into gaps.
  • Improved AFK detection – no more zombie blocks that stay on the floor until a player is kicked for being AFK. Players who have become inactive are visually different so people know why a block is just slowly falling.
  • Understandable mistake detection – no longer guessing whether or not your block can fit in a certain place.
  • No grid desyncs.

So far so good on my resolution to not wait months between releases and convince everyone the game is dead – in the last week I’ve released 5 patches. It’s a lot easier to work like this and more motivating as well. No need to retest the entire application end-to-end, isolated check-ins which are easy to investigate when something goes wrong.

1.2.2 -> 1.2.2.5:

New Features:
[X] Added Gems
[X] – Gems will be randomly generated in holes of less than or equal to 8 cells.
[X] – Gems give extra points and ensure block placement does not cause a mistake no matter where the block is placed.
[X] – Gems are destroyed by sunlight

Bug Fixes / Improvements:
[X] Fixed ingame chat not going to bottom on open.
[X] Fixed high scores list not scrolling.
[X] Fixed chat loaded from database not showing star for premium players.
[X] Fixed newly-filled lines not being cleared when the grid shrinks.
[X] Fixed ability to rotate block immediately after it has been locked in.
[X] Decreased block placement time by 50% if the block has stomped.
[X] Fixed block touching ground not being moved down in the escape game mode when more rows are added to the grid.
[X] Fixed phase shift not causing delay before placement / another phase shift.
[X] Decreased line clear fade time by 50%.
[X] Decreased escape game mode row increase for line clears – now 1:1 ratio.
[X] Player highscore is now saved when exiting a room (not just on a mistake).
[X] Improved chat count positioning in lobby chat button for 1-3 digit numbers.
[X] Rooms can now have custom initial grid column/row counts.
[X] Added room: Erymanthus. 32 additional columns and 4 additional rows per player (registered only).
[X] Improved readablity of the chatbox – more opaque background.
[X] Ingame chat text with an unreadably-dark colour is now brightened.
[X] Improved block placement time – timeouts are keyed by block position and rotation. Different timeouts for stomping, phase shifting and basic placement.
[X] Improved block rotation: now rotation is attempted in all directions for the number of rows/columns in the block (can rotate off walls, into gaps etc).
[X] Fixed player blocks frozen on ground when they switch tabs until they are kicked for AFK – now their blocks will be removed and respawn at the top.
[X] AFK players now have (AFK) on their name and their blocks are displayed at 50% opacity.

– rolznz

1.2.2 Released – New game mode, user stats / experience, premium accounts and more!

Whew! finally I got to place I felt ready to release the next version of Infinitris.io. A large number of improvements have gone into gameplay, UI and rendering, networking and user accounts. I’ve also prioritised player retention through adding an extra 20 achievements and a user experience/statistics system which challenges the player to improve. Guests can also receive experience and gain achievements, which gives them more of a reason to sign up – hopefully I’ll see a few more coming through. A lot of groundwork has been laid for future releases

Happy to say that there are no longer any desyncs!

Video:

Yet again I’ve fallen into the vicious cycle of forgoing weekly releases to add multiple new features and complete a large amount of rework that I could have easily done in small regular chunks. I haven’t been feeding Infinitris and as a result the activity has severely dropped. Time to get back to releasing small improvements each and every week!

Full changelog

New Features:

  • New landing page interface.
  • Added player stats and experience system (Create an account to save your progress!).
  • New game mode: Escape.
  • Added lobby chat – chat with registered players.
  • 20 new achievements.
  • Guests can now gain achievements, experience, and change their block colours and patterns.
  • Premium accounts are now available for purchase.

Bug Fixes / Improvements:

  • Consistent mistake detection – mistake means no lines cleared + any blocked cell that had a path to more than 7 cells now has a path to less than 4 cells.
  • Fixed grid lines not covering entire grid when game is scaled down on smaller screens.
  • Fixed grid cell reset animation scaling for all screen sizes.
  • Added profanity check for nicknames and username registration.
  • premium stars are now shown on high scores of registered players.
  • game now continues to run when not focused.
  • increased time before player is kicked for being AFK.
  • increased the number of columns per player in the tetromino and pentomino rooms.
  • fixed potential server crash when updating block after grid size changed.
  • fixed all-time high score list not having a scroll bar.
  • added block set icons in the room select rather than long room names to describe the block set.
  • nickname field is set back to “Guest” when logging out.
  • added phase shifting tip when game starts after controls are shown.
  • fixed highscore not being saved and player cells not being reset if player makes a mistake by hitting the roof.
  • when a chunk of the grid is reset, only the top half of the chunk of the grid is reset.
  • when a player plays poorly and resets the grid, all of the player’s cells are removed except for the bottom four rows.
  • Fixed chat window not scrolling to bottom when it is opened.
  • Block fall rate slows down when typing a chat message.
  • Improved line clear and assimilation effects.
  • Fixed chance of block being placed in midair if lines are cleared just before the block is placed, usually causing the player to make a mistake.
  • Fixed up/down movement in spectator mode.
  • Added ” (Spectating)” next to spectators on the scoreboard.
  • Fixed being kicked for AFK after leaving spectator mode.
  • Added smooth grid width expansion and contraction: only one column will be added/removed and only if no players’ blocks are in the area.
  • Fixed possibility of unfillable gaps being created when the grid shrinks/expands or a single player’s cells are reset for poor play.
  • Fixed possibility of floating cells existing after the grid shrinks/expands or a single player’s cells are reset for poor play.
  • Fixed block patterns jumping when grid resizes.
  • Added difficulty ratings to rooms.
  • Improved scoring algorithm for block placement.
  • – increased points for phase shifting and filling impossible cells.
  • – points given are based on distance from the roof and how many empty neighbours exist after the block is placed.
  • – if a player reach less than -10 points, your block is killed and all cells placed by the player are removed.
  • Filling impossible cells goes to the player who placed the block rather than to no player.
  • Removed ‘-‘ sign from scoreboard. (Negative means something now).
  • 3 new premium patterns made by Zorg!
  • Fixed potential of grid getting out of sync on client side when a player’s cells are fully reset.
  • Fixed always phase shifting even after letting go of the down key when using alternate controls (WSAD or numpad)
  • Fixed block spawning and instantly moving to the second row of the grid.
  • All blocks are now spawned rotated as horizontally as possible to take up less rows on the grid when they spawn.
  • Fixed grid width not being based on only players who aren’t spectating.
  • Fixed variety of situations that can cause grid desyncs.
  • Improved minimap:
  • – Minimap now shows your cells in a brighter colour.
  • – Added arrow above your player on the minimap so it’s easier to know where you are.
  • Fixed room select dropdown not being selectable in some areas.
  • Fixed room select dropdown not having difference in appearance when hovering over unselected rooms.
  • Registered-only rooms are always sorted to the bottom if the client is not logged in.
  • Blocks that have dropped or phase shifted now move down when lines below them are cleared.
  • Blocks will no longer be placed in wrong location when a line is cleared between the time the client sends the block and the server receives it.
  • Added cracks that appear on player’s block when their score is negative.
  • Negative score displays a cross through the player’s name on the scoreboard.
  • Added camera shake when player’s score is decreased below zero.
  • Improved ingame block colour rendering – more closely matches the block preview in the menu.
  • Re-added support for rooms that grow vertically.
  • Grid height changes occurs at 1 row per second rather than instantly.
  • Fixed chance of WSAD controls adding text to chat even when the chat box is closed.
  • Fixed cell stealing algorithm – now any cell wrapped in a full border will be assimilated. Cells with a path to the roof will never be assimilated.
  • Landing page makeover
  • – No more “Page 2”. All features accessible through buttons on the top bar.
  • – Improved about page.
  • – Styled contact, login, register form.
  • – Improved registered box.
  • – Added shadowing on scoreboard, high scores and ingame / lobby chat text – easier to read for all colours.
  • – Simplified and resized buttons to match level of importance.
  • – Added pulsing start button to attract attention.
  • – New scrollbars that fit the Infinitris theme better (Webkit only).
  • – Added tooltips for all important buttons / inputs on the main page.
  • – Added youtube button, removed contact button (now in about page).
  • New room names to fit with the mountain / snow theme.
  • Added close button on the ingame chat box
  • Moved fullscreen button to left corner when ingame so it doesn’t sit on top of the scoreboard

– rolznz

 

1.2.1 Released – Bugfixes and Highscores!

On Wednesday morning I woke up and checked the player count on Infinitris on my phone (It’s somewhat become a ritual recently). 20 players online! I jumped on my PC and joined in, only to discover what an absolute mess of a state the server was in. The server was crashing every 5-10 minutes. Switching rooms would cause the game client to go out of sync and all sorts of strange things to happen. Hardly anyone knew how to play, and the grid was so clogged with towers and bridges of cells that it was impossible to play properly even if you knew how.

This week I’ve been working hard to fix the worst of these issues, and released a number of patches (1.2.0a-1.2.0f). I’m glad to announce that the server is now stable and easily handling the current load.

Screenshot from 2017-06-18 23:40:28

To deal with the grid overpopulation issues I’ve introduced player caps for each room, and created some extra rooms for more variation. Currently there’s four rooms available:

  1. Trivium: A standard tetromino block set with a cap of 14 players. This is currently the main room.
  2. Labyrinth: A pentomino (5 cell) block set with a cap of 7 players. This one is pretty difficult even for registered players, but I think it has a lot of potential once I tweak it a bit and people learn more about the advanced features of Infinitris.
  3. Chronicle: Another tetromino block set, but limited to registered players only, minimising the number of players who join and don’t know what they’re doing.
  4. Elementary: A tromino (3 cell) block set. Now this one surprised me – It only contains two block types and should be ridiculously easy. But the new players are seeming to enjoy it, and actually clear some lines.

I took out Retribution (A room that inserts garbage rows for the first player who joins) – I want to make a properly polished game mode for this one.

Apart from bugfixes and some gameplay improvements, I also introduced persistent high scores – daily high scores and all-time high scores. There’s now a greater purpose than just holding the highest points in your current room, and it’s also helped increase the number of registered players.

scoreboard-121 daily-highscores-121

A big thanks to Mike from iogames.space who approved my submission on his site. As a new game it’s currently being featured on the front page, and for the last week players have been streaming in. Over 90% of my traffic is currently coming from there, so once Infinitris drops off the front page the current activity is inevitably going to decrease. I’m taking full advantage of the activity levels though to do some thorough playtesting and re-assess the priority of items in my giant TODO list.

Some stats from the last week:

  • 19,000 hits to infinitris.io.
  • 220GB data transferred.
  • 110 registered and activated free accounts.

So, what’s next?

Infinitris Premium still cannot be purchased, and my server hosting costs are starting to rack up ($10 a day). If 10% of the registered players purchase the game at the current rate of new registrations, I should be able to cover those costs. It’s far from a profit, but this is only the beginning, and I’ve got to start somewhere.

Other than that I’ll be continually making small gameplay improvements, such as tweaking the grid reset algorithm, making grid size changes less disruptive and extra help for new players.

Anyway, here’s the 1.2 -> 1.2.1 changelog.

New Features:

  • daily high scores are now saved for registered players. Once you make a mistake, your score will be saved.
  • Added daily scoreboard on the landing page.
  • Added all time high scores below the landing page.
  • Added new block collection: Trominoes (3 cell set)
  • Added new rooms: Chronicle (registered only), Elementary (Tromino set).

Bug Fixes / Improvements:

  • Added extra keyboard control options:
    • added control key as rotate counter clockwise.
    • added new control scheme: wsad + q/e keys. Debug key is now “o”.
    • added new control scheme: numpad keys: 8/5/4/6 + 7/9.
    • added more rotate keys: z/x.
  • improved mistake detection. All blocked cells are now highlighted. If an impossible gap exists before a block is placed (e.g. there’s enough room for one block but not enough for two), then those blocked cells will be filled without the player making a mistake.
  • Fixed joining other rooms and still receiving packets from previous room causing the client to crash.
  • Phase shifting now shifts to the closest free space below your block, rather than the closest space to the ground.
  • fixed chance of player blocks existing and being placed in midair straight after reset.
  • Fixed ability to enter a long message and cover the grid / screen with text.
  • fixed registered player count in statistics.
  • fixed chat icon showing when loading.
  • new loading font.
  • fixed huge amount of server logging (log files on server too large to navigate easily).
  • fixed crashes not being reported in server logs.
  • added room player caps.
  • removed gallery section.
  • Fixed server crash when user tries to login/register etc with username that has characters that need to be escaped.
  • Enabled long term database backups in Azure.

This week I achieved a new record for the maximum players concurrently playing Infinitris at one time: 24.

24% of the way to my goal.

Logo Dropshadow_sqrolznz

Infinitris 1.2 Released!

Phew. It’s been five months since the last release. Looking back at version 1.1, Infinitris has completely transformed.

Over the past week activity on Infinitris has skyrocketed. The first time I logged in and played with 5 random players, I was completely mind blown. To think that something I’d made is starting to be enjoyed by players all across the world… I feel like I’m finally beginning to make my mark.

2017_06_10

As I said in previous entry, I attribute the decrease in players due to the fact that it was possible for one player to completely ruin the game for everyone else, by spamming their blocks up to reset the grid. This is now fixed. What parts of the grid gets reset is determined by the state of the grid and the player who caused the reset. I’ve also improved AFK detection and added a controls overlay for new players. So let’s see how the next few weeks go!

A few days ago, Infinitris was posted on the news section of Phaser.io, the official website for the game engine Infinitris uses. The post was by the creator of Phaser, Richard Davey himself. That’s pretty inspiring.

Infinitris is also popping up on a bunch of .io game sites, and I’m hoping that this is only going to continue.

Screenshot from 2017-06-11 17:41:28

Anyway, here’s the changelog.

New Features:

  • Added mobile input. Controls: tap to rotate, swipe left/right/up to move. Swipe fast upward to drop block. Hold tap to phase shift.
  • Added support for multiple game rooms. Joining a room will add its ID to the address bar.
  • Added new mechanic: Steal another player’s cells by wrapping entirely around them.
  • Added user account system.
  • Added smooth camera.
  • Added smooth grid size interpolation.
  • Added block placement shadow.
  • Added achievements system. (Only a few achievements currently)
  • Added fullscreen button – works on PC and android.
  • Added ingame admin login to use admin commands (eg. /reset).
  • Added admin login command: /adminlog [password].
  • Added !spectate and !play commands.
  • Added AFK timer – player kicked to landing page after 60 seconds of inactivity.
  • Added disconnect timer – player kicked to landing page after 7 seconds without sending a keepalive packet. (EG. leaving the page but not disconnect from the web socket).
  • Added SSL for secure registration and login – (https://infinitris.io).
  • Added ability to join game room directly from URI (eg. https://infinitris.io?gameId=Trivium).
  • Added backend database and basic stats (number of registered / premium players, number of guests and registered players / users online, number of rooms).
  • Added about, news, trailer, gallery, scoreboard, chat, stats, and contact sections below the landing page.
  • Added camera shake on mistake.
  • Added quick start guide.

Theme Makeover:

  • New loading page.
  • New landing page with AI playing in the background.
  • New block colour palette.
  • Added block patterns.
  • Added mountains.
  • Added snow.
  • Added grid boundaries.
  • Added Infinitris favicon.
  • Added login, register, account, block pattern/colour menus.
  • New minimap.
  • New chat box.
  • Improved chat above player blocks.
  • New dynamic scoreboard.
  • New effects for clearing lines, making mistakes, stomping, cell stealing, grid reset, grid expansion.

Bug Fixes / Improvements:

  • Webpage no longer refreshes when failing to join a game.
  • Player’s blocks won’t be placed if the player hasn’t moved their block.
  • Better checks for disconnecting afk players.
  • When a player can’t spawn, instead of the entire grid being reset, what gets reset is based upon the state of the grid and the blocks of the player who caused the reset.
  • If a line is filled after the grid shrinks due to a player disconnect, the line is now removed and points distributed.
  • Added exit to lobby button to exit a game without having to refresh the page.
  • Browser back and forward buttons now allow you to exit and rejoin games based on browser history.
  • Replaced disconnect / failed to join room alert dialogs with less-envasive bootstrap dialog.
  • Fixed only being able to chat when you have a block.
  • Vertical wrap is only enabled if the screen height is smaller than the grid height.
  • Fixed player name location not always being positioned horizontally at the middle of their block.
  • Added azure logging so that crashes in production can be debugged.
  • Changed !reset command to /reset.
  • Added contact form.
  • Fixed possibility of block spawning wrapped around grid (looks terrible when grid is too small to wrap).
  • Fixed being able to join a server with the same name as someone joining at the same time.
  • Added serverside caching so that images aren’t re-downloaded each time Infinitris loads.
  • If a player makes a mistake, their cells are changed to “unknown” rather than being completely removed.
  • If a player causes the grid to reset, only that player’s score is reset rather than each players’.
  • Improved player score algorithm.
  • Added controls overlay for new players.

Armageddon

This weekend I presented infinitris.io at the Wellington Armageddon expo. It was an awesome chance to gain feedback and observe new players trying out Infinitris. Only a small percentage of the people who tried the game were really my “target market” – those who had enough interest and understanding to get past Tetris and try out some of the features Infinitris has to offer. But those 10% made everything worth it. We had a blast!

A special thanks to:

– Niamh for organising the Wellington Armageddon NZGDA booth
– CloudFire games for the extension cords
– Rob Hayes for the amazing poster and business card designs
– Jono – surface, router and networking advice
– Ricky – Ipad
– AL for the pre-expo test games

 

This slideshow requires JavaScript.

I realised how prevalent sore losers / attention seekers would attempt (and succeed) to ruin the game by playing blocks straight upward, causing multiple grid resets. I’m happy for people to troll eachother (My mechanics are certainly set up to allow it), but when one person is able to make everyone annoyed to the point they quit – that’s too far. I think this is the main reason why the activity on my game hit a wall and started dropping. I’ve received several ideas on how to fix this, and I’ll be implementing some of them as soon as I can.

– rolznz

Soldiering On

It’s been over two months since my last post. I thought I’d have Infinitris 1.2 out by now, and maybe it should have been. I’ve deliberately not made any updates to the official page since my last release, mainly because I’ve invested a lot of time (and a decent amount of money too) into this game now and I haven’t wanted to release anything half-baked, even if it does follow my original strategy of a minimum viable product.

Anyway, I’ve completely replaced Infinitris’ old look with Rob’s new design, from the ingame assets to the landing page and user interface. Registration and logging in are now possible from the landing page, and once logged in you can choose your block colour and pattern, and also unlock achievements. Player status (guest, logged in, premium) can now be distinguished by a players’ nickname above their block.

block-select

Infinitris is starting to feel a lot more polished and immersive. The shitty graphics are gone and the connecting of blocks to form patterns is pretty satisfying. The new scoreboard makes players want to reach the top (rather than just plain text statistics) and the ability to customise your appearance really gives players a sense of individuality.

ingame-1

There’s still a lot to be done, but I’ve decided it’s time to stop hiding and “kick it out” as my Russian friend likes to sometimes say.

I’ve signed up to showcase Infinitris at the Armageddon expo in my home city next month (June 3rd) as part of the NZGDA booth. This should be a good way to kick things off and gain some exposure, lots of playtesting, make a few contacts, etc.

This means I’ve got a bunch of things to do before then:

  • Add a “How to Play” guide that pops up for new players before they join a game. This is incredibly important because people find it hard to get past the basic mechanics of Tetris and realise that this might be something new. This isn’t Tetris! The aim of the guide is to explain the controls and mechanics in a quick, entertaining and easy-to-read way.
  • New UX – Apart from the camera shake when a player makes a mistake and the player drop effect, I need to redo everything else (clearing lines, phase shifting, grid reset, cell stealing, stomping, valid block placement, grid expansion).
  • Add a persistent scoreboard. I think this will help with player retention, especially while I’m trying to grow a player base.
  • Add a new cell stealing mechanic – wrapping another player’s cells with your own blocks will steal them. This came from playtesting the existing stomp mechanic – we discovered that adding more ways to sabotage and compete with other players is a great way to make the game more fun.
  • Add a basic lobby chat system. Players can chat with each other from the landing page and organise games.
  • Add the Paypal button to activate premium (It’s not an MVP until you can buy the game right?)

I doubt I’ll get all these done, but let’s see how far I can go. I now have a deadline, and I’ll be releasing Infinitris 1.2 before Armageddon no matter what state it’s in. Once 1.2 is released, I’ll go back to my original strategy of frequent updates on the release branch.

I’ve asked Rob to create a couple poster designs and a business card design so I have something to bring to the expo. I’m looking forward to seeing what he comes up with – I’m sure it’ll entice people to try out my game!

– Roland

Art Ahoy!

infinitris-assets-testing

Over the last few months I’ve been working closely with Rob Hayes on perfecting the Infinitris theme. It’s been a bumpy ride of daily emails with multiple revisions, conflicting opinions and compromises based on the resources I have available. I think he’s done an amazing job! Infinitris has truly transformed.

Here’s a few screenshots of our journey:

1-0-5p infinitris-initial-concept-2 infinitris-initial-concept-1 infinitris-initial-concept-3 infinitris-initial-concepts-2-paralax-effect-1 infinitris-initial-concepts-3-paralax-effect-5

infinitris-initial-concepts-3-paralax-effect-6 infinitris-initial-concepts-3-paralax-effect-6-without-gameplay infinitris-initial-concepts-3-paralax-effect-7-without-gameplay infinitris-initial-concepts-3-paralax-effect-7

infinitris-assets-testing infinitris-logo-icon-concept-1

main-menu-logo-with-text

Development-wise, I’ve been doing a lot of behind-the-scenes work:

  • SSL connection for infinitris.io
  • User registration, activation and login
  • Multiple room support
  • Mobile input
  • Paypal IPN listener for premium activation
  • Admin login
  • Spectator mode

Now that these are done, it’s time to get Rob’s assets ingame!

Infinitris 1.2 – Coming soon to a port near you.

– rolznz