keyboard-racing.com
Not a member yet? Register!

What is this all about?

This is an exciting online competition in speed typing!

It's a game that can help you to learn a lot of new information and amazing facts. You can practise free in fast typing and have much fun with your friends and relatives.

It's so easy, so cheerful and so useful!

project news

  • 16 Nov


    While working on the new version of Keyboard Racing website I totally forgot about the current one… Shame of me! And what happened? Right! The current website became like an old house. The roof with holes, downspout is detached and overgrown garden. By translating to the technical language: broken login with Facebook or Google, non-parsable content for search-robots, bad makeup for tablets and mobile phones: YESYESYES, you actually can play with mobile phone ;)

    Google said: At some point of time I got an email from Google, like “Hey body! Do you see? Your customers trust you, you have your traffic grows! And yeah, your site is sh..t, but I also trust you, Google said.”

    I realised, that I must spend some time to fix all this small issues and make my old house clean and neat! Because I love this project and I hope you love it too.

    Fix it!: So I spent my time to restore what were broken: Single sign-on page: Google and Facebook, I had a long negotiation between me and Google/Facebook, because now they require huuuuuge amount of checks and validations. They want to be sure that they can trust me and you can trust me. Now you can ;) I proved it :)

    Also (I don’t know why) I updated my design and made it responsible! (still do not know why ¯\_(ツ)_/¯    

    Finally, I can continue working on the new project and I hope I will launch it as MVP very soon! Cross the fingers :)

    BTW: These poster images are my “hobby project” created in Blender. If you want a source - ping me and will present it to you

  • 23 Jun

    Ah… I wrote a previous post about a new Key-Race backend for the project, but never mentioned the technologies…. :)

    I though a lot about what to choose, like you have 100 suits but need to pick up one. In the modern world all the programming languages can offer huge amount of features, cool stuff and bonuses. Most of them have concurrency and parallelism out of the box.

    You can choose C - you will get super performant application, but a headache when creating even a simple features. You can choose “modern” NodeJS - but no multithreading* (you can have it buy paying extra cost of complexity).

    So I just threw the dice ;) And in the final battle of Go vs Java the winner is…… GO :)

    Of course it’s a joke, but yeah, I chose Golang as good combination of performance and complexity.

  • 23 Jun

    The quieter you become, the more you are able to hear.

    This motto I took from Kali linux and this motto perfectly describes the “silent” part of the project: The Backend.

    For the past two weeks no visible changes, but I did a first step to add a real player communication. Today I would like to talk about one complex part - namely “Communication”.

    In the Key-Race project each client will have permanent Socket connection and all the communication will be build on top of message exchanging. The problem with this approach is - chaos and anarchy. You need to control the message sequence, need to track message delivery, you need to react on specific unexpected messages…

    In order to structure these issues and solve them we must use a special Data Protocol.

    So say welcome to the KR message protocol and PDU (Protocol Data Unit)

    This protocol is based on the message structure, that looks like this:

    id: int64 (message id, requires for tracking)
    action: string (controller/action/result)
    body: any (any data to be parsed by controller)

    Probably it looks quite complex, but it’s not :) For example, here is the getting player data “dialog”:

    Client -> Server
    {“id”: 123, “action”: “player/info”, “body”: {“player_id”: “12”}}

    Server -> Client
    {“id”: 123, “action”: “player/info/ok”, “body”: {“player_id”: “12”, “name”: “alexions”, “rank”: “racer”}}

    Some benefits and details:
    1) By using the message ID we don’t care about any messages in between (in the socket channel we can get 1000 message before we get our). We can just await the message with ID 123

    2) By using **result** (ok or error) we can simplify result parsing. For example we can reply with “player/info/error” and {“error”: “Player not found”}

    3)  We do not need to take care about “body” structure. The initial sender knows how to parse the response and server, by using “controller/action” combination knows how to parse the body.

    So this Protocol should work perfectly (will see soon :) )
    I hope I will deploy the first backend version soon and you will get a change to compete with your friends and real racers!

    Cheers and stay safe!

Read our Blog >> 

Top 10 racers

Finish your game and you will be first!

  • Game with personal parameters
 

Simple mode Simple race — A game with no limits. Type as you can.
No mistakes mode No mistakes! — You can do only one typing mistake, if more - game is over. (points x 2)
No mistakes mode Marathon — It is a hard typing test. You will type a text for 5 minutes. (points x 3)

Open game — any player can join to this game.
Game with friends — this game won't be displayed in the general list, only your friends can join it by direct link.
Single game — nobody can join to this game, it's only for you.


Only the registered users can change these settings

 - 

You can beat them all! Make a bet and go to the track. In this mode you will be able to gain much more points if you beat other racers. Only the winner collect all the bets.