Live data from Hacker News

Show HN: Ghost Pro Racing 3D Async Multiplayer Arcade Racing in HTML5

gamesnacks.com

11–15 of 15 posts

Re: Show HN: Ghost Pro Racing 3D Async Multiplayer Arcade Racing in HTML5

#11

Earlier quoted context omitted.

I have to double check, but I think you can still play without creating a profile if you just close the popup and skip it. However, after completing a race, the game will prompt you again to create a profile in order to save your time.

For the first time in years I'm complaining that it's too hard to notice that I can create a profile. :)

Yeah, I think right now the game only asks players to create a profile when they share a challenge link with a friend for a 1vs1 race.

We wanted the racing experience to feel as frictionless as possible, but I agree that for new users it can be unclear that creating a profile is even an option.

From what I understand, Gamesnacks is targeting the game primarily at their existing player base, so they expect most players to already have a profile (since it’s the same one shared across all their games). Still, I think this game has the potential to attract new users to their platform, so making the profile creation option easier to discover would be a good idea.

Thanks for your feedback!

Re: Show HN: Ghost Pro Racing 3D Async Multiplayer Arcade Racing in HTML5

#12

Earlier quoted context omitted.

I guess ypu are picking 7 random users. Is it possible to pick 1000 and then automatically cherrypick 7 of them? Does the API save all the races or only the best of each player?

The API saves all races, now just your best one Yes, selecting 1000 and then cherry-picking would be a great idea in theory, but ghost data is quite heavy (around 300–400 KB per ghost). We are already compressing it as much as possible: saving only about 10 frames per second and interpolating the rest, reducing decimals to a minimum, and storing rotation only on the Y axis. We also keep only the ghosts of cars that c…

Have you tried compression?

For example instead of storing, x1, x2, x3, x4, x5, you can store x1, x2-x1, x3-x2, x4-x3, x5-x4 Using few decimals it may compress better with the standard algorithms.

Assuming almost constant speed, you may guess x3 from x2 and x1 and x3=~ 2*x2-x1, so instead of x3, x4, ... you store x3-2\x2+x1, x4-2\x3+x2, and compress it.

For a car, I'd assume constant acceleration and if I didn't make a mistake, x4=~ 3x3-3x2+x1, so you store x4-3x3+x2-x1 and compress the sequence.

Re: Show HN: Ghost Pro Racing 3D Async Multiplayer Arcade Racing in HTML5

#13

Earlier quoted context omitted.

The API saves all races, now just your best one Yes, selecting 1000 and then cherry-picking would be a great idea in theory, but ghost data is quite heavy (around 300–400 KB per ghost). We are already compressing it as much as possible: saving only about 10 frames per second and interpolating the rest, reducing decimals to a minimum, and storing rotation only on the Y axis. We also keep only the ghosts of cars that c…

Have you tried compression? For example instead of storing, x1, x2, x3, x4, x5, you can store x1, x2-x1, x3-x2, x4-x3, x5-x4 Using few decimals it may compress better with the standard algorithms. Assuming almost constant speed, you may guess x3 from x2 and x1 and x3=~ 2*x2-x1, so instead of x3, x4, ... you store x3-2\x2+x1, x4-2\x3+x2, and compress it. For a car, I'd assume constant acceleration and if I didn't make…

Hey, thank you so much! I’ll share this information with my programmer, maybe with this we can further reduce the ghost file size and bring in more samples to make the selection better match your skill level.

In any case, the ideal solution would be if the API allowed us to send the player’s average time as a parameter, so we could fetch opponents at a similar skill level, that would greatly improve the gameplay experience. I’ll mention it again to the backend team, and if we’re lucky, maybe they can prioritize that feature.

Cheers, and thanks again!

Re: Show HN: Ghost Pro Racing 3D Async Multiplayer Arcade Racing in HTML5

#14

Earlier quoted context omitted.

Have you tried compression? For example instead of storing, x1, x2, x3, x4, x5, you can store x1, x2-x1, x3-x2, x4-x3, x5-x4 Using few decimals it may compress better with the standard algorithms. Assuming almost constant speed, you may guess x3 from x2 and x1 and x3=~ 2*x2-x1, so instead of x3, x4, ... you store x3-2\x2+x1, x4-2\x3+x2, and compress it. For a car, I'd assume constant acceleration and if I didn't make…

Hey, thank you so much! I’ll share this information with my programmer, maybe with this we can further reduce the ghost file size and bring in more samples to make the selection better match your skill level. In any case, the ideal solution would be if the API allowed us to send the player’s average time as a parameter, so we could fetch opponents at a similar skill level, that would greatly improve the gameplay expe…

Too late to edit. I forgot a 3 in

x4-3*x3+x2-x1 --> x4-3*x3+3*x2-x1

Good luck with the project.

PS: Usually tweaking the parameters to select the opponents/ghost and make the game fun (that is what is important) is hard. (More cars? Less cars? Use the last time of the player? Use the average time of the player?) So after you solve the problem, a post-mortem may be an interesting blog post to summit here.

PS2: another typo in my first comment: defectively -> effectively

Re: Show HN: Ghost Pro Racing 3D Async Multiplayer Arcade Racing in HTML5

#15

Earlier quoted context omitted.

Hey, thank you so much! I’ll share this information with my programmer, maybe with this we can further reduce the ghost file size and bring in more samples to make the selection better match your skill level. In any case, the ideal solution would be if the API allowed us to send the player’s average time as a parameter, so we could fetch opponents at a similar skill level, that would greatly improve the gameplay expe…

Too late to edit. I forgot a 3 in x4-3*x3+x2-x1 --> x4-3*x3+3*x2-x1 Good luck with the project. PS: Usually tweaking the parameters to select the opponents/ghost and make the game fun (that is what is important) is hard. (More cars? Less cars? Use the last time of the player? Use the average time of the player?) So after you solve the problem, a post-mortem may be an interesting blog post to summit here. PS2: another…

In the future, we plan to reuse the engine and everything we’ve learned from this project to create a new game, this time hosting the backend ourselves to have greater control over the matchmaking.

Right now, we’re limited by what the Gamesnacks API allows us to do, which makes it difficult to fine-tune certain aspects.

Even with those limitations, it’s great to see players enjoying the game. The leaderboard is highly competitive, and I keep seeing the same players battling for the top spot, shaving off just a few milliseconds each day.

I love how accessible HTML5 games are, but I’d also love to see our next racing game running on the Steam Deck. maybe we’ll build a Unity wrapper and release it ad-free on Steam for a few bucks.

Post reply on HN