blog master mode

I'm now selfhosting email

by osk at 2020/02/03 (Mon) 12:43:33 am

Hi! Up to now, my email provider has always been ProtonMail. However, for some projects I need a mailserver, so I decided to set one up. Please do not contact me on my old ProtonMail account (@pm.me), but use my new email:

me [AT] osk [DOT] sh

Thank you!

TETR.IO is now in INFDEV!

by osk at 2020/02/01 (Sat) 12:01:16 am (last edited at 2020/02/01 (Sat) 12:02:32 am)

TETR.IO INFDEV

TETR.IO has reached the INFDEV development stage! This means that I am now giving out access to test it on a wider scale to select people. This to allow more and more diverse people to play it and give their feedback on TETR.IO, without opening it fully to the public yet (and having to worry about making a bad first impression).

Want to try out TETR.IO? Contact me with your IP and why you would like to try out TETR.IO, and I'll add you to the whitelist!


PROGRESS UPDATE
  • Planned for later Planned for later: this won't be available until after release. But, it is something I hope to do.
  • Development has not yet started Development has not yet started: this is planned, but work on the feature has not yet started.
  • Development has started Development has started: this feature has its framework set up and is being worked on.
  • Development underway Development underway: this feature is starting to become reality and has minor functionality ready to implement.
  • Development nearing completion Development nearing completion: most of this feature is implemented, but it is not yet ready for release.
  • Rough version complete Rough version complete: this feature is fully implemented, but may be overhauled - it's ready for an alpha release, but should be polished more.
  • Fully complete Fully complete: this feature is fully implemented and polished!

3. Multiplayer Lobbies Development nearing completionRough version complete

The feature to join a room by URL has been implemented (it makes short URLs like https://tetr.io/#7YhaIs6), completing the feature!

4. Quick Play Development has startedRough version complete

Quick Play has been implemented - join Quick Play and the room will automatically start an infinite loop of games as long as at least 2 people are in Quick Play!

9. Chat with players Development has startedDevelopment nearing completion

Chat is nearly complete, but a swear word filter has yet to be implemented, and a few hotkeys may still be swapped around.

16. TETRA CHANNEL Development underwayRough version complete

All basic functionality of TETRA CHANNEL has been implemented. Stuff like MAPS and a list of players may be added later, but is not on the roadmap for Alpha (see the TETR.IO 44-Fact-Frenzy page for more info).

17. Personal Best Development has startedFully complete

TETRA CHANNEL now happily saves your top 10 plays in all categories.

18. Global records Development underwayFully complete

Likewise, TETRA CHANNEL now happily saves the top 1000 plays in all categories (note: the client only displays 100, but the standalone site will display all 1000).

19. Replays saved and can be watched Development nearing completionRough version complete

All plays are saved at least temporarily, and a nice replay link can be shared!

20. Custom game options Development underwayRough version complete

The CUSTOM GAME mode has been implemented, and already allows for lots of experimentation most other games don't provide. However, I hope to add more options to it in the future.

21. Profile w/ personal best displayed Development has not yet startedDevelopment nearing completion

TETR.IO displays nice badges of a user's scores when you click them. I hope to still add some extra info, like join date, before Alpha. More info could potentially go to the TETRA CHANNEL site.

41. Music by Hurt Record Development underwayRough version complete

I believe to have added most music I want to, but I can always add more when I find a purpose for it.

42. Controller support Planned for laterRough version complete

Its implementation is rather basic, but I decided to add it already. Only the in-game controls work with controller (all else must still be done w/ mouse), but it's better than nothing (hence it does not get the polished icon).


Still to be done before Alpha...

  • Development underway 5. Custom Multiplayer Rules
  • Development nearing completion 9. Chat with players
  • Development nearing completion 21. Profile w/ personal best displayed
  • Development nearing completion 22. Simple accounts system w/o hassle
  • Development nearing completion 39. Dazzling graphics
  • Development has started 40. Custom wallpapers

Thank you for reading. If you're planning on becoming a tester, have fun!

There's now a view count next to blog posts.

by osk at 2019/12/27 (Fri) 1:17:01 pm


I should really cool it with this crystallize effect.

It might impact the server negatively, so let's see how well it works, right? It's only triggered when you view a post's own page, not the homepage.

Even less useful: PeakGadget

by osk at 2019/12/27 (Fri) 1:16:07 am

This time, to address a bug I face in my antiquated Windows 7 install where the sidebar gadgets would stop being "topmost" (above all other windows) and get hidden. It's a stupidly simple program, but hey - can add it to my portfolio, right?

If you happen to be impacted by this bug as well, the program can be retrieved (and its source seen) over here.

WindowSmasher: "simple" window management

by osk at 2019/12/20 (Fri) 11:51:19 pm

My right monitor always does something weird when I turn it on - it throws all my windows out of whack. I needed a way to put them back into place easily. Tools like Fancy Zones exist, but I wanted to make something different, so I whipped up WindowSmasher. It's a small tool that allows you to define up to 10 presets to sort your windows into. Its code isn't the greatest, but I open-sourced it as well.

Get it now!


I also open-sourced Kurumi for your viewing pleasure. Its code isn't any better, but you know. You can get it here.

TETR.IO Forty-Four Fact Frenzy!

by osk at 2019/12/17 (Tue) 9:18:55 pm (last edited at 2019/12/17 (Tue) 9:31:21 pm)

TETR.IO 44-FACT FRENZY

It's been too long since I reported on TETR.IO. Therefore, with the TETR.IO FORTY-FOUR FACT FRENZY (don't take the name too seriously) I hope to shed some light on what I have been working on, what you can expect, and how far I am in its development.

As for development, every item has an indicator of its development status. I will reuse those indicators in later updates as well to show the evolution of the project. Here they all are:

  • Planned for later Planned for later: this won't be available until after release. But, it is something I hope to do.
  • Development has not yet started Development has not yet started: this is planned, but work on the feature has not yet started.
  • Development has started Development has started: this feature has its framework set up and is being worked on.
  • Development underway Development underway: this feature is starting to become reality and has minor functionality ready to implement.
  • Development nearing completion Development nearing completion: most of this feature is implemented, but it is not yet ready for release.
  • Rough version complete Rough version complete: this feature is fully implemented, but may be overhauled - it's ready for an alpha release, but should be polished more.
  • Fully complete Fully complete: this feature is fully implemented and polished!

If you find anything you want to give your opinion on, the comments are here for you. Anything here is still up for debate! Thank you for taking the time to read through them. Without further ado, forty-four facts about TETR.IO, coming your way!


Multiplayer

1. Unlimited players Rough version complete

In TETR.IO, you'll be able to play with as many players as you please! Not 99, not 6, but the exact size you want! (I've been able to get stable 60FPS with 500 test players, but don't know how much the server and client can take in real situations yet. There's no hard limits though!)

2. Elimination Mode Rough version complete

The standard multiplayer mode will be ELIMINATION! Be the last man standing by knocking out all other players!

3. Multiplayer Lobbies Development nearing completion

Normal multiplayer will take place in lobbies of any size! A registered player makes a public or private room, and gives others a short link to join the fun! Public lobbies can be easily joined from the room listing!

4. Quick Play Development has started

Don't want to mess about with rooms and just get to playing? QUICK PLAY will throw you in a big room with all sorts of players of all sorts of skill levels! (Later, this may be expanded so players can find others of their skill more easily.)

5. Custom Multiplayer Rules Development underway

Play by your rules! Hold or no Hold? Super-fast or beginner-friendly? You define the rules of a multiplayer lobby!

6. Multiple Rounds Fully complete

Play as many rounds per game as you want by changing from KNOCKOUT (first to 1) to another score target!

7. Spiced up Garbage Rough version complete

TETR.IO changes the Garbage table. It weakens boring single-line combos like the Four-wide and instead adds a smart multiplier onto the table! Finish off a combo with a powerful move and destroy your opponent!

8. Smart anti-cheat Fully complete

TETR.IO's codebase is shared perfectly between client and server, so the server can check precisely what a potential cheater may be doing - one discrepancy and you're out!

9. Chat with players Development has started

Talk with other players before starting a game, or bathe in salt after a heated match with optional chat! (May be changed. By default, a swear word filter will be applied.)

10. Planned for later: Competitive matchmaking Planned for later

When we're ready for it and have a strong userbase, we hope to be able to test your true skill in a one-on-one environment! Play as many duels as you can imagine with people of your skill, and rank up as you gain skill!

11. Planned for later: Tournament mode Planned for later

When we're ready for it, we can create a tournament mode where you can play a big array of games together with your friends to find your true CHAMPION!

12. Planned for later: Race mode Planned for later

Aside from ELIMINATION mode, we hope to also add a RACE mode where you can see who can reach a certain target faster!

13. Planned for later: Spectate in-progress matches Planned for later

When our code is ready for it, we hope to allow you to spectate games that are already in progress!


Singleplayer

14. 40L mode Fully complete

Clear forty lines as fast as you can imagine to reach the leaderboards! A true test of your speed an insight!

15. BLITZ mode Fully complete

Rack up as many points as you can within TWO MINUTES! Do cool tricks, get All Clears and bring your best game to reach higher levels and gain more points!

16. TETRA CHANNEL Development underway

See how you stack up against the world in TETRA CHANNEL, the hub for records, leaderboards and all sorts of other content!

17. Personal Best Development has started

TETRA CHANNEL will store your best plays and allow you to see how you fare!

18. Global records Development underway

But, TETRA CHANNEL will also store the world's best records! Play well, and you'll be rewarded a spot on the TETRA CHANNEL LEADERBOARD!

19. Replays saved and can be watched Development nearing completion

All records on TETRA CHANNEL are verifiable and have full replays available! See where you can improve, and see how others achieve their scores!

20. Custom game options Development underway

Choose your own game by adding custom game options! Ever wanted to play a 1000-line game at maximum gravity? You can now!

21. Profile w/ personal best displayed Development has not yet started

Rep your skill right on your profile! Your personal bests and, if applicable, global rankings will be displayed on your profile!

22. Simple accounts system w/o hassle Development nearing completion

Joining TETR.IO is easy - just send in a username, password and optional email, and you're ready to enter the game! (If you don't specify an email, we can't reset your password!) Want to join a friend's room or just play for fun? A username is all you need for a temporary anonymous account!

23. Planned for later: TETRA CHANNEL website Planned for later

When it's ready, we hope to unveil a website where you can quickly see detailed stats on players, scores and the such, far more detailed than the in-game views!

24. Planned for later: MARATHON Planned for later

After some testing, we should be able to get a MARATHON mode up, where you get to 150 lines with as many points as possible! (Or perhaps, something a bit more different?)

25. Planned for later: EXP Planned for later

Progress as you play with a simple experience system!

26. Planned for later: Maps Planned for later

When we're ready, create and play on MAPS! Create a map, and try to clear it as fast as you can!

27. Planned for later: FEVER mode Planned for later

Those MAPS can also be used to create a FEVER MODE! Clear as many simple maps as fast as you can, and gain extra points if you can get a higher combo than the map intended!

28. Planned for later: TUTORIAL mode Planned for later

We hope to get this in pretty fast for those not used to modern stackers - the TUTORIAL MODE will breeze you through the game, from learning the controls to more intricate pro moves, to mastering the rules of online play!


Engine

29. Powerful JavaScript engine Rough version complete

TETR.IO runs on the fastest, most advanced JavaScript stacker engine! It's custom made for the job, and shared between server and client for super-fast anti-cheat!

30. Runs in all modern browsers Rough version complete

TETR.IO is engineered to run in all modern browsers! Currently tested browsers are Firefox 56 and up, and Chrome 67 and up! I will make sure to test other browsers and see how much support I can create! The graphics can be turned down so the game runs on as many devices as possible!

31. Rebindable keyboard controls Fully complete

By default, TETR.IO supports the standard arrow key controls, and a more optimized WASD control set. But, if you like neither of them, you can set up your own controls!

32. GPU-accelerated with Pixi.JS Rough version complete

TETR.IO looks splendid with GPU-accelerated graphics in the browsers that support it, using the WebGL library Pixi.JS!

33. SRS rotation Fully complete

TETR.IO will use the time-tested Super Rotation System to make many pro moves possible! There's a lot of reading material and tutorials on how it works already, and the pros already know it, so it's the best choice for the deal!

34. Zero Delay Fully complete

TETR.IO will let you unlock your true potential. No line clear delay, "are" spawn delays, or any other delays. Play as fast as you can for as high of a skill ceiling as you can imagine!

35. Adjustable DAS, ARR speeds Fully complete

Get comfortable and tune the controls exactly to what feels right to you. If you're precise enough, turn up ARR and DAS to move left to right faster!

36. T-Spin, B2B and All Clear recognition Fully complete

As expected of a modern stacker, TETR.IO will recognize and reward common skill moves like T-Spins, Back-To-Back clears and All Clears for extra points or garbage.

37. Guideline Formula Fully complete

It takes little effort to learn TETR.IO if you know another stacker. TETR.IO mostly follows the Guideline formula, with minor changes. Experienced players will feel right at home, while new players will have tons of tutorials already created by the awesome stacker community!

38. Higher piece spawn location Fully complete

One of the exceptions is that TETR.IO spawns tetrominoes up to 2 tiles higher than a Guideline game. This to make it harder to get stuck in the way the SRS rotation system works.

39. Dazzling graphics Development nearing completion

By utilizing your GPU and modern JavaScript, TETR.IO can bring amazing graphics to your retinas - from a swaying board, to particle effects, to an ambient background. Of course, if you or your computer don't like the effects, you can easily turn them off!

40. Custom wallpapers Development has started

Make TETR.IO yours by adding a custom wallpaper and many other forms of customization!

41. Music by Hurt Record Development underway

TETR.IO will feature awesome music created by the artists at HURT RECORD!

42. Planned for later: Controller support Planned for later

No matter what your preferred way to play is, we hope to be able to support it! While the alpha will start out with only keyboard support, we hope to add XInput controller support (and perhaps even Switch controller support depending on browser support) soon after!

43. Planned for later: Standalone client Planned for later

Since TETR.IO is all JavaScript, it should be possible to use as a desktop application as well! When I've got the time, I will definitely see what can be done in this regard, to make a nice standalone client work (and perhaps integrate with other platforms).

44. Planned for later: Mobile support Planned for later

Later on, I'd like to also add touchscreen controls for mobile support. That way, you can even play TETR.IO on the go!


Thank you very much for reading the forty-four facts I laid out. If there's anything you want to give your opinion on, please do so in the comments! I look forward to hearing your opinions! If you know someone else who might be interested, be sure to let them know!

Please look forward to TETR.IO!

Kurumi: sync time without the bullshit

by osk at 2019/11/19 (Tue) 1:31:51 am (last edited at 2019/11/19 (Tue) 1:32:27 am)

I run a Windows installation which has a very restrictive firewall. One of the things it blocks is Windows' NTP ("Network Time Protocol") service. This is the service that automatically synchronizes your system time to that of a specialized time server. If it's disabled, your clock will slowly desync over time, or, in my case, within a few days. My usual setup to deal with this is to just go to say, time.is and adjust the time manually. But, that requires effort, and after all, they say the best ideas arise out of laziness, right?

Jokes aside, I've created a tiny (66KB) tool that will synchronize your system clock for you, in case you don't want to use the built-in service. It's very simple and doesn't ask questions - just run it, and it'll tell you how badly out of sync you are, then offer to fix it. Hit "Fix" and all your problems will go away!

If you're interested, you can pick it up here.

If you find any bugs, this is the place to report them!

Welcome!

by osk at 2019/11/17 (Sun) 10:23:44 pm (last edited at 2019/11/18 (Mon) 1:32:22 am)

Here I will post project updates, sneak peeks, and whatever else is on my mind at the time. Don't expect super-frequent updates, but hey - there's something new every once in a while. Please note that this blog is personal space. Please respect that (and as such, my interests).

You can star posts and comments you enjoy as much as you like, a bit like how Flipnote Hatena and Medium work. There's no limit to how many stars you can give something, but please don't bot it (I will throw sharp glances at you).

You can also comment on posts, and on replies to those posts. Your name and color is randomized (bound to IP). There's no CAPTCHA or anything like that right now, so see it as a bit of an experiment. Be civil, okay? I reserve the right to delete anything for any reason. If it ends up being an issue, I can always add CAPTCHA later or turn off comments. As long as your IP does not change, you can delete your comments with the DEL button next to it.

Happy sightseeing!