Connect With Me
Stay updated on my latest adventures and travel stories! Follow me on YouTube, Instagram, and my Facebook for exciting content and travel tips.
Rally Carioca can send play statistics, only if you are 18 or over and you say yes. The game does not ask in Brazil. Here is every kind of data, with made-up examples, and why we want it.
Rally Carioca is made by Niels, one person. To fix and balance the game, it helps to see how it is really played. So the game can send play statistics: which phone you play on, which matches you play and how they end, where people stop, and whether sharing and the light mode work.
One card for each moment in the game. Every example is made up. Open “See exactly what is sent” to read a message exactly as the phone sends it.
Every message carries the same six items: a random message id, your code, a running number, the time on your phone’s clock with its time zone (for example -03:00), which play session it belongs to, and the game version. Our server adds the time the message arrived.
What we get: Your phone model and Android version, the language you picked, your level, coins, badges (achievements) and unlocked worlds, your screen’s refresh rate and the light mode setting. If the phone could not send for a very long time and had to throw messages away, a count of how many.
Example A Galaxy A06 on Android 14, the game in Portuguese, level 7, 120 coins, 3 badges, 2 worlds open and a 90 Hz screen.
Why: To see which phones the game is really played on, so we can make it run well on them, and to see how far players get.
Made-up example messages, exactly as the phone sends them:
{
"event_id": "65fa1b59-4486-4d4b-9ee0-785be7dfde56",
"device_code": "K7P2-QX9M",
"seq": 412,
"event": "session_start",
"time_phone": "2026-11-20T19:02:11-03:00",
"session_no": 17,
"app_version": "1.0.0 (5)",
"device_model": "samsung SM-A065M",
"android_version": 14,
"language": "pt",
"level": 7,
"coins": 120,
"worlds_open": 2,
"badges": 3,
"dropped_events": 0,
"light_level": "full",
"light_setting": "auto",
"screen_hz": 90
}
What we get: When a match starts: the match number (the session and the match’s number in it, for example 17-3), the mode (ladder, boss, daily challenge, two players or tournament), the world, the opponent’s name (the game’s own characters), your paddle, how many points the match is played to, whether it is a single game or best of 3 or 5 and, in the daily challenge, the name of that day’s twist. When it ends: the same match number, win, loss or quit, the score, how long it took, your longest rally, power-ups used, your worst deficit, coins and XP earned, your level, and how many seconds passed before the first point. In two-player games and tournaments the opponent is left empty: we never get names you typed.
Example You play Tia Lurdes in Copacabana and lose 6–11 after 2 minutes 38 seconds, with a longest rally of 12.
Why: To see which opponents are too hard or too easy, where players give up, and how soon the first point comes, so the game feels fair.
Made-up example messages, exactly as the phone sends them:
{
"event_id": "03e1d0cc-93dc-4741-80c9-93a4e4ea782f",
"device_code": "K7P2-QX9M",
"seq": 424,
"event": "match_start",
"time_phone": "2026-11-20T19:09:20-03:00",
"session_no": 17,
"app_version": "1.0.0 (5)",
"match_id": "17-3",
"mode": "ladder",
"world": "copacabana",
"opponent": "Tia Lurdes",
"paddle": "Surfboard",
"points_to_win": 11,
"best_of": 1,
"daily_twist": ""
}
{
"event_id": "48b77467-7e71-44b9-90ba-c97aa577e77c",
"device_code": "K7P2-QX9M",
"seq": 425,
"event": "match_end",
"time_phone": "2026-11-20T19:11:58-03:00",
"session_no": 17,
"app_version": "1.0.0 (5)",
"match_id": "17-3",
"result": "loss",
"score_me": 6,
"score_them": 11,
"seconds": 158,
"longest_rally": 12,
"power_ups": 1,
"worst_deficit": 5,
"coins_earned": 12,
"xp_earned": 30,
"level_after": 7,
"first_point_seconds": 4
}
What we get: When the game goes to the background or is closed: how long it was open, how long you spent in matches, how many matches you finished, and the average frame rate. If that happens in the middle of a match, we also get the match number, the score at that moment and how long the match had run.
Example You close the game after 14 minutes 30 seconds, with 3 matches finished and an average of 52 frames per second, and you leave one match at 3–5 after a minute.
Why: To see where players stop and why: a match that is too hard, or a game that runs badly. Then we can make those moments better.
Made-up example messages, exactly as the phone sends them:
{
"event_id": "4f3bc356-668d-4bb1-814a-022fd55efcd4",
"device_code": "K7P2-QX9M",
"seq": 427,
"event": "match_left",
"time_phone": "2026-11-20T19:16:41-03:00",
"session_no": 17,
"app_version": "1.0.0 (5)",
"match_id": "17-4",
"score_me": 3,
"score_them": 5,
"seconds": 61
}
{
"event_id": "5cce7386-f6ab-460a-ac9f-45699939c173",
"device_code": "K7P2-QX9M",
"seq": 428,
"event": "session_end",
"time_phone": "2026-11-20T19:16:41-03:00",
"session_no": 17,
"app_version": "1.0.0 (5)",
"seconds_open": 870,
"seconds_in_matches": 658,
"matches": 3,
"avg_fps": 52
}
What we get: That the share list opened and how many videos and pictures it offered. Whether making a video worked (ready, failed or cancelled), how many seconds it took to make and, if it failed, why. Which post you opened your phone’s share menu for, and where in the game. And which app you picked, from a short list: Instagram, WhatsApp, TikTok, Facebook, YouTube, Telegram, X, Kwai or “other”. The game works out the app on your phone and sends only that short word, never the app’s real name. We never get the picture, the video or your caption, and we do not know if you posted.
Example A Best rally video took 14 seconds to make and is ready, the share list shows 1 video and 3 pictures, and you share the video to Instagram.
Why: Sharing is how the game spreads, and making videos is hard for cheap phones. This shows what works and on which phones it fails.
Made-up example messages, exactly as the phone sends them:
{
"event_id": "1297a64b-9493-453e-a547-c88e81ed00ef",
"device_code": "K7P2-QX9M",
"seq": 419,
"event": "video_made",
"time_phone": "2026-11-20T19:06:44-03:00",
"session_no": 17,
"app_version": "1.0.0 (5)",
"kind": "best_rally",
"result": "ready",
"seconds": 14,
"failure": ""
}
{
"event_id": "e54d3c79-6981-40e6-bb35-2c0b9a6f0365",
"device_code": "K7P2-QX9M",
"seq": 420,
"event": "share_list",
"time_phone": "2026-11-20T19:06:50-03:00",
"session_no": 17,
"app_version": "1.0.0 (5)",
"videos": 1,
"pictures": 3
}
{
"event_id": "5ddbbb7c-1336-47a6-8d55-548436704bca",
"device_code": "K7P2-QX9M",
"seq": 421,
"event": "share_menu",
"time_phone": "2026-11-20T19:07:03-03:00",
"session_no": 17,
"app_version": "1.0.0 (5)",
"place": "after_match",
"kind": "best_rally"
}
{
"event_id": "73b2bfce-e0a3-4439-b8dc-ec1f95d7e7d7",
"device_code": "K7P2-QX9M",
"seq": 422,
"event": "share_app",
"time_phone": "2026-11-20T19:07:09-03:00",
"session_no": 17,
"app_version": "1.0.0 (5)",
"kind": "best_rally",
"app": "instagram"
}
What we get: Whether you watched the intro video to the end, skipped it or it could not play, and for how many seconds. For each first-time tip (moving, mines, coins), how long it stayed on screen. Together with the time of your first matches, this shows how soon you start playing and score your first point.
Example You skip the intro after 7 seconds, and the first tip, “move”, is on screen for 3 seconds.
Why: To make the first minutes clear and quick, so new players do not give up before the fun starts.
Made-up example messages, exactly as the phone sends them:
{
"event_id": "1946171f-744d-4952-a286-94b827804c66",
"device_code": "K7P2-QX9M",
"seq": 1,
"event": "intro",
"time_phone": "2026-11-14T18:41:07-03:00",
"session_no": 1,
"app_version": "1.0.0 (5)",
"seconds_watched": 7,
"how": "skipped"
}
{
"event_id": "74549a46-0946-4ed7-926c-a6ce8e7e3077",
"device_code": "K7P2-QX9M",
"seq": 4,
"event": "tip",
"time_phone": "2026-11-14T18:41:58-03:00",
"session_no": 1,
"app_version": "1.0.0 (5)",
"tip": "move",
"seconds_shown": 3
}
What we get: Slow phones can get a lighter picture (Light or Lightest) so the game runs smoothly. Each time the level changes we get the new level, whether the game did it by itself or you chose it in Settings, and for an automatic step the frame rate the game measured. When you open the game we also get the level and setting in use (see “Opening the game”).
Example The game measures 41 frames per second and switches to Light by itself.
Why: To see how many phones need the light mode and whether it helps, so slow phones stay playable.
Made-up example messages, exactly as the phone sends them:
{
"event_id": "57e4238b-b9e4-4241-a90a-6bf0988bd330",
"device_code": "K7P2-QX9M",
"seq": 423,
"event": "light_mode",
"time_phone": "2026-11-20T19:08:36-03:00",
"session_no": 17,
"app_version": "1.0.0 (5)",
"level": "light",
"reason": "auto",
"fps": 41
}
What we get: A short message each time you reach a new level (which one), earn a badge (which one), unlock a world (which one), buy a paddle (which one, and its price), finish a party tournament (how many players and rounds, never their names) or open a menu: Settings, Profile, Ranking, Badges or Players.
Example You reach level 7, earn the badge rally_10, unlock Ipanema, buy the Coconut paddle for 100 coins, finish a four-player tournament and open the Ranking.
Why: To see how fast players progress, which rewards and paddles they care about, and which parts of the game they never find.
Made-up example messages, exactly as the phone sends them:
{
"event_id": "968dcd8a-9184-4d9f-a48d-640496b05d29",
"device_code": "K7P2-QX9M",
"seq": 371,
"event": "level_up",
"time_phone": "2026-11-19T20:14:02-03:00",
"session_no": 16,
"app_version": "1.0.0 (5)",
"level": 7
}
{
"event_id": "91a6176e-fbd9-4263-944e-2d8251d1441b",
"device_code": "K7P2-QX9M",
"seq": 372,
"event": "badge",
"time_phone": "2026-11-19T20:14:50-03:00",
"session_no": 16,
"app_version": "1.0.0 (5)",
"badge": "rally_10"
}
{
"event_id": "53de5ef8-9e99-47ea-b5f2-50a8e1d1ca04",
"device_code": "K7P2-QX9M",
"seq": 373,
"event": "world_unlocked",
"time_phone": "2026-11-19T20:31:17-03:00",
"session_no": 16,
"app_version": "1.0.0 (5)",
"world": "ipanema"
}
{
"event_id": "4699cd06-f94d-4f7f-a288-1023bc7642d5",
"device_code": "K7P2-QX9M",
"seq": 374,
"event": "paddle_bought",
"time_phone": "2026-11-19T20:33:40-03:00",
"session_no": 16,
"app_version": "1.0.0 (5)",
"paddle": "Coconut",
"price": 100
}
{
"event_id": "5e6ca5a5-d318-41f5-9d48-1e36c236b070",
"device_code": "K7P2-QX9M",
"seq": 375,
"event": "tournament_end",
"time_phone": "2026-11-19T20:52:09-03:00",
"session_no": 16,
"app_version": "1.0.0 (5)",
"players": 4,
"rounds": 2
}
{
"event_id": "bc7776a4-ee5e-4706-98f8-34af203020f9",
"device_code": "K7P2-QX9M",
"seq": 376,
"event": "screen",
"time_phone": "2026-11-19T20:53:12-03:00",
"session_no": 16,
"app_version": "1.0.0 (5)",
"name": "ranking"
}
No message carries any of this:
IP addresses: our statistics code does not save them. As with any website, the host’s web server keeps ordinary request logs for a short time; we do not use those logs for the statistics.
Where: the messages travel over an encrypted connection (HTTPS) to our own server at niels.dk, hosted by DreamHost in the USA. The game sends nothing to Google Analytics, Firebase or any other analytics company. We share the data with nobody and never use it for ads.
This website: niels.dk counts its own visits with Google Analytics. That is separate from the game and has nothing to do with the game’s statistics.
How long: we keep the detailed messages for 14 months after they were recorded, then delete them. Only monthly totals with no codes stay (for example, how many phones played in a month and how many matches were played against each opponent). That way we can compare a month with the same month a year earlier.
O Rally Carioca pode enviar estatísticas de jogo, só se você tiver 18 anos ou mais e disser sim. No Brasil o jogo não pergunta. Aqui está cada tipo de dado, com exemplos inventados, e por que queremos saber.
O Rally Carioca é feito pelo Niels, uma pessoa só. Para corrigir e equilibrar o jogo, ajuda ver como ele é jogado de verdade. Por isso o jogo pode enviar estatísticas de jogo: em que celular você joga, quais partidas você joga e como elas terminam, onde as pessoas param e se o compartilhamento e o modo leve funcionam.
Um cartão para cada momento do jogo. Todos os exemplos são inventados. Abra “Ver exatamente o que é enviado” para ler uma mensagem exatamente como o celular a envia.
Toda mensagem leva as mesmas seis coisas: um id aleatório da mensagem, o seu código, um número de ordem, a hora do relógio do seu celular com o fuso horário (por exemplo -03:00), a qual sessão de jogo ela pertence e a versão do jogo. O nosso servidor acrescenta a hora em que a mensagem chegou.
O que recebemos: O modelo e a versão do Android do seu celular, o idioma que você escolheu, o seu nível, suas moedas, conquistas e mundos liberados, a taxa de atualização da tela e a configuração do modo leve. Se o celular ficou tanto tempo sem conseguir enviar que precisou descartar mensagens, também vai um número dizendo quantas.
Exemplo Um Galaxy A06 com Android 14, o jogo em português, nível 7, 120 moedas, 3 conquistas, 2 mundos abertos e tela de 90 Hz.
Por quê: Para ver em quais celulares o jogo é jogado de verdade, e assim fazê-lo rodar bem neles, e para ver até onde os jogadores chegam.
Mensagens de exemplo inventadas, exatamente como o celular as envia:
{
"event_id": "65fa1b59-4486-4d4b-9ee0-785be7dfde56",
"device_code": "K7P2-QX9M",
"seq": 412,
"event": "session_start",
"time_phone": "2026-11-20T19:02:11-03:00",
"session_no": 17,
"app_version": "1.0.0 (5)",
"device_model": "samsung SM-A065M",
"android_version": 14,
"language": "pt",
"level": 7,
"coins": 120,
"worlds_open": 2,
"badges": 3,
"dropped_events": 0,
"light_level": "full",
"light_setting": "auto",
"screen_hz": 90
}
O que recebemos: Quando a partida começa: o número da partida (a sessão e o número da partida nela, por exemplo 17-3), o modo (escada de adversários, chefe, desafio do dia, dois jogadores ou torneio), o mundo, o nome do adversário (os personagens do próprio jogo), a sua raquete, até quantos pontos se joga, se é um jogo só ou melhor de 3 ou de 5 e, no desafio do dia, o nome da variação do dia. Quando termina: o mesmo número da partida, vitória, derrota ou desistência, o placar, quanto tempo durou, a sua sequência mais longa, os power-ups usados, a sua maior desvantagem, moedas e XP ganhos, o seu nível e quantos segundos se passaram até o primeiro ponto. Em partidas de dois jogadores e em torneios o adversário fica vazio: nunca recebemos nomes que você digitou.
Exemplo Você joga contra Tia Lurdes em Copacabana e perde por 6–11 depois de 2 minutos e 38 segundos, com uma sequência mais longa de 12 toques.
Por quê: Para ver quais adversários são difíceis ou fáceis demais, onde os jogadores desistem e em quanto tempo sai o primeiro ponto, para o jogo ficar justo.
Mensagens de exemplo inventadas, exatamente como o celular as envia:
{
"event_id": "03e1d0cc-93dc-4741-80c9-93a4e4ea782f",
"device_code": "K7P2-QX9M",
"seq": 424,
"event": "match_start",
"time_phone": "2026-11-20T19:09:20-03:00",
"session_no": 17,
"app_version": "1.0.0 (5)",
"match_id": "17-3",
"mode": "ladder",
"world": "copacabana",
"opponent": "Tia Lurdes",
"paddle": "Surfboard",
"points_to_win": 11,
"best_of": 1,
"daily_twist": ""
}
{
"event_id": "48b77467-7e71-44b9-90ba-c97aa577e77c",
"device_code": "K7P2-QX9M",
"seq": 425,
"event": "match_end",
"time_phone": "2026-11-20T19:11:58-03:00",
"session_no": 17,
"app_version": "1.0.0 (5)",
"match_id": "17-3",
"result": "loss",
"score_me": 6,
"score_them": 11,
"seconds": 158,
"longest_rally": 12,
"power_ups": 1,
"worst_deficit": 5,
"coins_earned": 12,
"xp_earned": 30,
"level_after": 7,
"first_point_seconds": 4
}
O que recebemos: Quando o jogo vai para segundo plano ou é fechado: por quanto tempo ficou aberto, quanto tempo você passou em partidas, quantas partidas terminou e a taxa média de quadros. Se isso acontece no meio de uma partida, também recebemos o número da partida, o placar naquele momento e há quanto tempo a partida estava rolando.
Exemplo Você fecha o jogo depois de 14 minutos e 30 segundos, com 3 partidas terminadas e uma média de 52 quadros por segundo, e sai de uma partida quando está 3–5, depois de um minuto.
Por quê: Para ver onde os jogadores param e por quê: uma partida difícil demais ou um jogo que roda mal. Assim podemos melhorar esses momentos.
Mensagens de exemplo inventadas, exatamente como o celular as envia:
{
"event_id": "4f3bc356-668d-4bb1-814a-022fd55efcd4",
"device_code": "K7P2-QX9M",
"seq": 427,
"event": "match_left",
"time_phone": "2026-11-20T19:16:41-03:00",
"session_no": 17,
"app_version": "1.0.0 (5)",
"match_id": "17-4",
"score_me": 3,
"score_them": 5,
"seconds": 61
}
{
"event_id": "5cce7386-f6ab-460a-ac9f-45699939c173",
"device_code": "K7P2-QX9M",
"seq": 428,
"event": "session_end",
"time_phone": "2026-11-20T19:16:41-03:00",
"session_no": 17,
"app_version": "1.0.0 (5)",
"seconds_open": 870,
"seconds_in_matches": 658,
"matches": 3,
"avg_fps": 52
}
O que recebemos: Que a lista de compartilhamento foi aberta e quantos vídeos e imagens ela oferecia. Se deu certo criar um vídeo (pronto, falhou ou cancelado), quantos segundos levou para fazer e, se falhou, por quê. Para qual publicação você abriu o menu de compartilhamento do celular, e de onde no jogo. E qual app você escolheu, de uma lista curta: Instagram, WhatsApp, TikTok, Facebook, YouTube, Telegram, X, Kwai ou “outro”. O jogo descobre o app no seu celular e envia só essa palavra curta, nunca o nome verdadeiro do app. Nunca recebemos a imagem, o vídeo nem a sua legenda, e não sabemos se você publicou.
Exemplo Um vídeo da Melhor sequência levou 14 segundos para ser feito e está pronto, a lista de compartilhamento mostra 1 vídeo e 3 imagens, e você compartilha o vídeo no Instagram.
Por quê: Compartilhar é como o jogo se espalha, e fazer vídeos é difícil em celulares simples. Isso mostra o que funciona e em quais celulares falha.
Mensagens de exemplo inventadas, exatamente como o celular as envia:
{
"event_id": "1297a64b-9493-453e-a547-c88e81ed00ef",
"device_code": "K7P2-QX9M",
"seq": 419,
"event": "video_made",
"time_phone": "2026-11-20T19:06:44-03:00",
"session_no": 17,
"app_version": "1.0.0 (5)",
"kind": "best_rally",
"result": "ready",
"seconds": 14,
"failure": ""
}
{
"event_id": "e54d3c79-6981-40e6-bb35-2c0b9a6f0365",
"device_code": "K7P2-QX9M",
"seq": 420,
"event": "share_list",
"time_phone": "2026-11-20T19:06:50-03:00",
"session_no": 17,
"app_version": "1.0.0 (5)",
"videos": 1,
"pictures": 3
}
{
"event_id": "5ddbbb7c-1336-47a6-8d55-548436704bca",
"device_code": "K7P2-QX9M",
"seq": 421,
"event": "share_menu",
"time_phone": "2026-11-20T19:07:03-03:00",
"session_no": 17,
"app_version": "1.0.0 (5)",
"place": "after_match",
"kind": "best_rally"
}
{
"event_id": "73b2bfce-e0a3-4439-b8dc-ec1f95d7e7d7",
"device_code": "K7P2-QX9M",
"seq": 422,
"event": "share_app",
"time_phone": "2026-11-20T19:07:09-03:00",
"session_no": 17,
"app_version": "1.0.0 (5)",
"kind": "best_rally",
"app": "instagram"
}
O que recebemos: Se você assistiu ao vídeo de abertura até o fim, pulou ou ele não conseguiu rodar, e por quantos segundos. Para cada dica de primeira vez (mover, minas, moedas), por quanto tempo ela ficou na tela. Junto com a hora das suas primeiras partidas, isso mostra em quanto tempo você começa a jogar e faz o primeiro ponto.
Exemplo Você pula a abertura depois de 7 segundos, e a primeira dica, “mover”, fica 3 segundos na tela.
Por quê: Para deixar os primeiros minutos claros e rápidos, para que quem está começando não desista antes de a diversão começar.
Mensagens de exemplo inventadas, exatamente como o celular as envia:
{
"event_id": "1946171f-744d-4952-a286-94b827804c66",
"device_code": "K7P2-QX9M",
"seq": 1,
"event": "intro",
"time_phone": "2026-11-14T18:41:07-03:00",
"session_no": 1,
"app_version": "1.0.0 (5)",
"seconds_watched": 7,
"how": "skipped"
}
{
"event_id": "74549a46-0946-4ed7-926c-a6ce8e7e3077",
"device_code": "K7P2-QX9M",
"seq": 4,
"event": "tip",
"time_phone": "2026-11-14T18:41:58-03:00",
"session_no": 1,
"app_version": "1.0.0 (5)",
"tip": "move",
"seconds_shown": 3
}
O que recebemos: Celulares lentos podem ganhar uma imagem mais leve (Leve ou Mais leve) para o jogo rodar com fluidez. A cada mudança de nível recebemos o novo nível, se o próprio jogo fez a mudança ou você escolheu em Ajustes e, quando foi automática, a taxa de quadros que o jogo mediu. Ao abrir o jogo também recebemos o nível e a configuração em uso (veja “Ao abrir o jogo”).
Exemplo O jogo mede 41 quadros por segundo e passa sozinho para o nível Leve.
Por quê: Para ver quantos celulares precisam do modo leve e se ele ajuda, para que celulares lentos continuem jogáveis.
Mensagens de exemplo inventadas, exatamente como o celular as envia:
{
"event_id": "57e4238b-b9e4-4241-a90a-6bf0988bd330",
"device_code": "K7P2-QX9M",
"seq": 423,
"event": "light_mode",
"time_phone": "2026-11-20T19:08:36-03:00",
"session_no": 17,
"app_version": "1.0.0 (5)",
"level": "light",
"reason": "auto",
"fps": 41
}
O que recebemos: Uma mensagem curta cada vez que você sobe de nível (qual), ganha uma conquista (qual), libera um mundo (qual), compra uma raquete (qual, e o preço), termina um torneio de festa (quantos jogadores e rodadas, nunca os nomes) ou abre um menu: Ajustes, Perfil, Ranking, Conquistas ou Jogadores.
Exemplo Você chega ao nível 7, ganha a conquista rally_10, libera Ipanema, compra a raquete Coconut por 100 moedas, termina um torneio de quatro jogadores e abre o Ranking.
Por quê: Para ver com que rapidez os jogadores progridem, que recompensas e raquetes importam para eles e que partes do jogo eles nunca encontram.
Mensagens de exemplo inventadas, exatamente como o celular as envia:
{
"event_id": "968dcd8a-9184-4d9f-a48d-640496b05d29",
"device_code": "K7P2-QX9M",
"seq": 371,
"event": "level_up",
"time_phone": "2026-11-19T20:14:02-03:00",
"session_no": 16,
"app_version": "1.0.0 (5)",
"level": 7
}
{
"event_id": "91a6176e-fbd9-4263-944e-2d8251d1441b",
"device_code": "K7P2-QX9M",
"seq": 372,
"event": "badge",
"time_phone": "2026-11-19T20:14:50-03:00",
"session_no": 16,
"app_version": "1.0.0 (5)",
"badge": "rally_10"
}
{
"event_id": "53de5ef8-9e99-47ea-b5f2-50a8e1d1ca04",
"device_code": "K7P2-QX9M",
"seq": 373,
"event": "world_unlocked",
"time_phone": "2026-11-19T20:31:17-03:00",
"session_no": 16,
"app_version": "1.0.0 (5)",
"world": "ipanema"
}
{
"event_id": "4699cd06-f94d-4f7f-a288-1023bc7642d5",
"device_code": "K7P2-QX9M",
"seq": 374,
"event": "paddle_bought",
"time_phone": "2026-11-19T20:33:40-03:00",
"session_no": 16,
"app_version": "1.0.0 (5)",
"paddle": "Coconut",
"price": 100
}
{
"event_id": "5e6ca5a5-d318-41f5-9d48-1e36c236b070",
"device_code": "K7P2-QX9M",
"seq": 375,
"event": "tournament_end",
"time_phone": "2026-11-19T20:52:09-03:00",
"session_no": 16,
"app_version": "1.0.0 (5)",
"players": 4,
"rounds": 2
}
{
"event_id": "bc7776a4-ee5e-4706-98f8-34af203020f9",
"device_code": "K7P2-QX9M",
"seq": 376,
"event": "screen",
"time_phone": "2026-11-19T20:53:12-03:00",
"session_no": 16,
"app_version": "1.0.0 (5)",
"name": "ranking"
}
Nenhuma mensagem leva nada disto:
Endereços IP: o nosso código de estatísticas não os guarda. Como em qualquer site, o servidor da hospedagem mantém por pouco tempo registros comuns dos acessos; nós não usamos esses registros para as estatísticas.
Para onde: as mensagens viajam por uma conexão criptografada (HTTPS) até o nosso próprio servidor em niels.dk, hospedado pela DreamHost nos EUA. O jogo não envia nada ao Google Analytics, ao Firebase nem a nenhuma outra empresa de análise. Não compartilhamos os dados com ninguém e nunca os usamos para publicidade.
Este site: o niels.dk conta as próprias visitas com o Google Analytics. Isso é separado do jogo e não tem nada a ver com as estatísticas do jogo.
Por quanto tempo: guardamos as mensagens detalhadas por 14 meses depois de registradas e depois as apagamos. Ficam só totais mensais, sem nenhum código (por exemplo, quantos celulares jogaram num mês e quantas partidas foram jogadas contra cada adversário). Assim podemos comparar um mês com o mesmo mês do ano anterior.
Rally Carioca kan sende spilstatistik, men kun hvis du er 18 år eller derover og siger ja. I Brasilien spørger spillet ikke. Her er alle slags data med opdigtede eksempler og begrundelsen for, at vi vil have dem.
Rally Carioca er lavet af Niels, en enkelt person. For at rette og balancere spillet hjælper det at se, hvordan det rent faktisk bliver spillet. Derfor kan spillet sende spilstatistik: hvilken telefon du spiller på, hvilke kampe du spiller, og hvordan de ender, hvor folk stopper, og om deling og den lette grafik virker.
Ét kort for hvert øjeblik i spillet. Alle eksempler er opdigtede. Åbn “Se præcis, hvad der sendes” for at læse en besked præcis sådan, som telefonen sender den.
Hver besked har de samme seks ting med: et tilfældigt besked-id, din kode, et løbenummer, klokkeslættet på din telefon med tidszonen (for eksempel -03:00), hvilken spilsession den hører til, og spilversionen. Vores server lægger selv til, hvornår beskeden kom frem.
Det får vi: Din telefonmodel og Androidversion, det sprog du har valgt, dit niveau, dine mønter, præstationer og oplåste verdener, skærmens opdateringshastighed og indstillingen for den lette grafik. Hvis telefonen ikke har kunnet sende i meget lang tid og har måttet kassere beskeder, kommer der også et tal for, hvor mange.
Eksempel En Galaxy A06 med Android 14, spillet på portugisisk, niveau 7, 120 mønter, 3 præstationer, 2 åbne verdener og en skærm på 90 Hz.
Hvorfor: For at se, hvilke telefoner spillet rent faktisk bliver spillet på, så vi kan få det til at køre godt på dem, og for at se, hvor langt spillerne når.
Opdigtede eksempelbeskeder, præcis som telefonen sender dem:
{
"event_id": "65fa1b59-4486-4d4b-9ee0-785be7dfde56",
"device_code": "K7P2-QX9M",
"seq": 412,
"event": "session_start",
"time_phone": "2026-11-20T19:02:11-03:00",
"session_no": 17,
"app_version": "1.0.0 (5)",
"device_model": "samsung SM-A065M",
"android_version": 14,
"language": "pt",
"level": 7,
"coins": 120,
"worlds_open": 2,
"badges": 3,
"dropped_events": 0,
"light_level": "full",
"light_setting": "auto",
"screen_hz": 90
}
Det får vi: Når en kamp starter: kampnummeret (sessionen og kampens nummer i den, for eksempel 17-3), spiltypen (rangstigen, boss, dagens udfordring, to spillere eller turnering), verdenen, modstanderens navn (spillets egne figurer), din bat, hvor mange point der spilles til, om det er ét sæt eller bedst af 3 eller 5 og, i dagens udfordring, navnet på dagens twist. Når den slutter: det samme kampnummer, sejr, nederlag eller opgivet, stillingen, hvor længe den varede, din længste duel, brugte power-ups, dit største underskud, optjente mønter og XP, dit niveau og hvor mange sekunder der gik, før det første point faldt. I spil med to spillere og i turneringer er modstanderen tom: vi får aldrig navne, du selv har skrevet.
Eksempel Du spiller mod Tia Lurdes på Copacabana og taber 6–11 efter 2 minutter og 38 sekunder, med en længste duel på 12.
Hvorfor: For at se, hvilke modstandere der er for svære eller for nemme, hvor spillerne giver op, og hvor hurtigt det første point kommer, så spillet føles fair.
Opdigtede eksempelbeskeder, præcis som telefonen sender dem:
{
"event_id": "03e1d0cc-93dc-4741-80c9-93a4e4ea782f",
"device_code": "K7P2-QX9M",
"seq": 424,
"event": "match_start",
"time_phone": "2026-11-20T19:09:20-03:00",
"session_no": 17,
"app_version": "1.0.0 (5)",
"match_id": "17-3",
"mode": "ladder",
"world": "copacabana",
"opponent": "Tia Lurdes",
"paddle": "Surfboard",
"points_to_win": 11,
"best_of": 1,
"daily_twist": ""
}
{
"event_id": "48b77467-7e71-44b9-90ba-c97aa577e77c",
"device_code": "K7P2-QX9M",
"seq": 425,
"event": "match_end",
"time_phone": "2026-11-20T19:11:58-03:00",
"session_no": 17,
"app_version": "1.0.0 (5)",
"match_id": "17-3",
"result": "loss",
"score_me": 6,
"score_them": 11,
"seconds": 158,
"longest_rally": 12,
"power_ups": 1,
"worst_deficit": 5,
"coins_earned": 12,
"xp_earned": 30,
"level_after": 7,
"first_point_seconds": 4
}
Det får vi: Når spillet går i baggrunden eller lukkes: hvor længe det var åbent, hvor længe du var i kampe, hvor mange kampe du nåede at spille færdig, og den gennemsnitlige billedhastighed. Sker det midt i en kamp, får vi også kampnummeret, stillingen i det øjeblik og hvor længe kampen havde varet.
Eksempel Du lukker spillet efter 14 minutter og 30 sekunder, med 3 færdige kampe og i gennemsnit 52 billeder i sekundet, og forlader en kamp ved stillingen 3–5 efter et minut.
Hvorfor: For at se, hvor spillerne stopper, og hvorfor: en kamp, der er for svær, eller et spil, der kører dårligt. Så kan vi gøre de øjeblikke bedre.
Opdigtede eksempelbeskeder, præcis som telefonen sender dem:
{
"event_id": "4f3bc356-668d-4bb1-814a-022fd55efcd4",
"device_code": "K7P2-QX9M",
"seq": 427,
"event": "match_left",
"time_phone": "2026-11-20T19:16:41-03:00",
"session_no": 17,
"app_version": "1.0.0 (5)",
"match_id": "17-4",
"score_me": 3,
"score_them": 5,
"seconds": 61
}
{
"event_id": "5cce7386-f6ab-460a-ac9f-45699939c173",
"device_code": "K7P2-QX9M",
"seq": 428,
"event": "session_end",
"time_phone": "2026-11-20T19:16:41-03:00",
"session_no": 17,
"app_version": "1.0.0 (5)",
"seconds_open": 870,
"seconds_in_matches": 658,
"matches": 3,
"avg_fps": 52
}
Det får vi: At delelisten blev åbnet, og hvor mange videoer og billeder den tilbød. Om det lykkedes at lave en video (færdig, mislykkedes eller annulleret), hvor mange sekunder det tog at lave, og hvorfor det mislykkedes. Hvilket opslag du åbnede telefonens delemenu for, og hvor i spillet. Og hvilken app du valgte, fra en kort liste: Instagram, WhatsApp, TikTok, Facebook, YouTube, Telegram, X, Kwai eller “andet”. Spillet finder selv ud af appen på din telefon og sender kun det korte ord, aldrig appens rigtige navn. Vi får aldrig selve billedet, videoen eller din tekst, og vi ved ikke, om du lagde det op.
Eksempel En video med Bedste duel tog 14 sekunder at lave og er færdig, delelisten viser 1 video og 3 billeder, og du deler videoen på Instagram.
Hvorfor: Spillet spreder sig, når folk deler det, og videoer er svære at lave på billige telefoner. Det viser, hvad der virker, og på hvilke telefoner det fejler.
Opdigtede eksempelbeskeder, præcis som telefonen sender dem:
{
"event_id": "1297a64b-9493-453e-a547-c88e81ed00ef",
"device_code": "K7P2-QX9M",
"seq": 419,
"event": "video_made",
"time_phone": "2026-11-20T19:06:44-03:00",
"session_no": 17,
"app_version": "1.0.0 (5)",
"kind": "best_rally",
"result": "ready",
"seconds": 14,
"failure": ""
}
{
"event_id": "e54d3c79-6981-40e6-bb35-2c0b9a6f0365",
"device_code": "K7P2-QX9M",
"seq": 420,
"event": "share_list",
"time_phone": "2026-11-20T19:06:50-03:00",
"session_no": 17,
"app_version": "1.0.0 (5)",
"videos": 1,
"pictures": 3
}
{
"event_id": "5ddbbb7c-1336-47a6-8d55-548436704bca",
"device_code": "K7P2-QX9M",
"seq": 421,
"event": "share_menu",
"time_phone": "2026-11-20T19:07:03-03:00",
"session_no": 17,
"app_version": "1.0.0 (5)",
"place": "after_match",
"kind": "best_rally"
}
{
"event_id": "73b2bfce-e0a3-4439-b8dc-ec1f95d7e7d7",
"device_code": "K7P2-QX9M",
"seq": 422,
"event": "share_app",
"time_phone": "2026-11-20T19:07:09-03:00",
"session_no": 17,
"app_version": "1.0.0 (5)",
"kind": "best_rally",
"app": "instagram"
}
Det får vi: Om du så introvideoen til ende, sprang den over, eller den ikke kunne afspilles, og i hvor mange sekunder. For hvert tip, der vises første gang (bevægelse, miner, mønter), hvor længe det stod på skærmen. Sammen med klokkeslættet for dine første kampe viser det, hvor hurtigt du går i gang med at spille og scorer dit første point.
Eksempel Du springer introen over efter 7 sekunder, og det første tip, “bevægelse”, vises i 3 sekunder.
Hvorfor: For at gøre de første minutter tydelige og hurtige, så nye spillere ikke giver op, før det sjove begynder.
Opdigtede eksempelbeskeder, præcis som telefonen sender dem:
{
"event_id": "1946171f-744d-4952-a286-94b827804c66",
"device_code": "K7P2-QX9M",
"seq": 1,
"event": "intro",
"time_phone": "2026-11-14T18:41:07-03:00",
"session_no": 1,
"app_version": "1.0.0 (5)",
"seconds_watched": 7,
"how": "skipped"
}
{
"event_id": "74549a46-0946-4ed7-926c-a6ce8e7e3077",
"device_code": "K7P2-QX9M",
"seq": 4,
"event": "tip",
"time_phone": "2026-11-14T18:41:58-03:00",
"session_no": 1,
"app_version": "1.0.0 (5)",
"tip": "move",
"seconds_shown": 3
}
Det får vi: Langsomme telefoner kan få et lettere billede (i tre trin: fuld, let og letteste), så spillet kører jævnt. Hver gang trinnet skifter, får vi det nye trin, om spillet selv gjorde det, eller du valgte det under Indstillinger, og ved et automatisk skift den billedhastighed, spillet målte. Når du åbner spillet, får vi også det trin og den indstilling, der er i brug (se “Når du åbner spillet”).
Eksempel Spillet måler 41 billeder i sekundet og skifter selv til trinnet “let”.
Hvorfor: For at se, hvor mange telefoner der har brug for den lette grafik, og om den hjælper, så langsomme telefoner stadig kan spilles.
Opdigtede eksempelbeskeder, præcis som telefonen sender dem:
{
"event_id": "57e4238b-b9e4-4241-a90a-6bf0988bd330",
"device_code": "K7P2-QX9M",
"seq": 423,
"event": "light_mode",
"time_phone": "2026-11-20T19:08:36-03:00",
"session_no": 17,
"app_version": "1.0.0 (5)",
"level": "light",
"reason": "auto",
"fps": 41
}
Det får vi: En kort besked, hver gang du når et nyt niveau (hvilket), får en præstation (hvilken), låser en verden op (hvilken), køber en bat (hvilken, og prisen), afslutter en festturnering (hvor mange spillere og runder, aldrig deres navne) eller åbner en menu: Indstillinger, Profil, Rangliste, Præstationer eller Spillere.
Eksempel Du når niveau 7, får præstationen rally_10, låser Ipanema op, køber batten Coconut for 100 mønter, afslutter en turnering med fire spillere og åbner ranglisten.
Hvorfor: For at se, hvor hurtigt spillerne kommer videre, hvilke belønninger og bats de går op i, og hvilke dele af spillet de aldrig finder.
Opdigtede eksempelbeskeder, præcis som telefonen sender dem:
{
"event_id": "968dcd8a-9184-4d9f-a48d-640496b05d29",
"device_code": "K7P2-QX9M",
"seq": 371,
"event": "level_up",
"time_phone": "2026-11-19T20:14:02-03:00",
"session_no": 16,
"app_version": "1.0.0 (5)",
"level": 7
}
{
"event_id": "91a6176e-fbd9-4263-944e-2d8251d1441b",
"device_code": "K7P2-QX9M",
"seq": 372,
"event": "badge",
"time_phone": "2026-11-19T20:14:50-03:00",
"session_no": 16,
"app_version": "1.0.0 (5)",
"badge": "rally_10"
}
{
"event_id": "53de5ef8-9e99-47ea-b5f2-50a8e1d1ca04",
"device_code": "K7P2-QX9M",
"seq": 373,
"event": "world_unlocked",
"time_phone": "2026-11-19T20:31:17-03:00",
"session_no": 16,
"app_version": "1.0.0 (5)",
"world": "ipanema"
}
{
"event_id": "4699cd06-f94d-4f7f-a288-1023bc7642d5",
"device_code": "K7P2-QX9M",
"seq": 374,
"event": "paddle_bought",
"time_phone": "2026-11-19T20:33:40-03:00",
"session_no": 16,
"app_version": "1.0.0 (5)",
"paddle": "Coconut",
"price": 100
}
{
"event_id": "5e6ca5a5-d318-41f5-9d48-1e36c236b070",
"device_code": "K7P2-QX9M",
"seq": 375,
"event": "tournament_end",
"time_phone": "2026-11-19T20:52:09-03:00",
"session_no": 16,
"app_version": "1.0.0 (5)",
"players": 4,
"rounds": 2
}
{
"event_id": "bc7776a4-ee5e-4706-98f8-34af203020f9",
"device_code": "K7P2-QX9M",
"seq": 376,
"event": "screen",
"time_phone": "2026-11-19T20:53:12-03:00",
"session_no": 16,
"app_version": "1.0.0 (5)",
"name": "ranking"
}
Ingen besked indeholder noget af dette:
IP-adresser: vores statistikkode gemmer dem ikke. Som ved ethvert websted fører hostingfirmaets webserver almindelige logs over forespørgsler i kort tid; vi bruger ikke de logs til statistikken.
Hvor: beskederne sendes over en krypteret forbindelse (HTTPS) til vores egen server på niels.dk, som hostes af DreamHost i USA. Spillet sender intet til Google Analytics, Firebase eller andre analysefirmaer. Vi deler ikke data med nogen og bruger dem aldrig til reklamer.
Dette websted: niels.dk tæller sine egne besøg med Google Analytics. Det er adskilt fra spillet og har intet at gøre med spillets statistik.
Hvor længe: vi gemmer de detaljerede beskeder i 14 måneder efter, at de er registreret, og sletter dem derefter. Kun månedstotaler uden koder bliver tilbage (for eksempel hvor mange telefoner der spillede i en måned, og hvor mange kampe der blev spillet mod hver modstander). Så kan vi sammenligne en måned med den samme måned et år før.
Stay updated on my latest adventures and travel stories! Follow me on YouTube, Instagram, and my Facebook for exciting content and travel tips.