60 comments
  • Wowfunhappy3d

    Nice! IMO, it ought to be significantly harder. I was able to survive for 45 seconds on my first try--that's long enough that I started getting bored, and I don't really want to try again because it would take at least 45 seconds to beat my previous score.

    By comparison, consider how long a typical Flappy Bird game lasts, particularly on your first try--probably less than 10 seconds at most! That makes you want to try again.

    • samdychen3d

      That makes some sense. My main concern before was that if the difficulty is too high at the very beginning, it might discourage players.

      • laserDinosaur2d

        For some comparison of difficulty, there's an old game called Squares which is very similar to yours. It does a good job of ramping the difficulty up pretty fast, but it allows the game have fun short gameplay loops because of the extra gameplay mechanics (ie, you are not just moving but collecting squares too).

        Gameplay Video: https://youtu.be/n8nRCyjCy_Y

        Apparently you can still play it online at: https://www.albinoblacksheep.com/games/squares2

      • abetusk2d

        Have difficulty settings. Default is "easy/moderate" so that people get a sense of it. For people playing twice or as people get more experienced and want a challenge, they can choose a more difficult setting.

        Have leaderboards for different difficulty settings to encourage exploration of different settings.

      • joelanman2d

        might work out the opposite - 'ah I can do better than that, one more try'

      • arnorhs2d

        Tbf my experience was the opposite. But sure if I'm just terrible or if it's harder on a phone, but my first tries were sub 20s and my highest was 45 before giving up xD

      • philipodonnell3d

        This is a great use case for using an algorithmic difficulty ramp where it can really dial in that curve to solve for getting people to play longer over multiple sessions.

        • wizzwizz42d

          This is abusive use of computer technology. Don't optimise for addition. If you're optimising for anything, it should be enjoyment.

    • GTP3d

      Depends. There must be some sweet spot there, since if it lasts too little, then it becomes frustrating to retry every few seconds.

      • Wowfunhappy2d

        > There must be some sweet spot there, since if it lasts too little

        Absolutely, and therein lies the essence of game design, right?

        For a simple game like this, I'd say 8-10 seconds is a good time to shoot for, for the player's first session. It'll naturally get longer as the player gets better. This makes every moment exciting--just a few seconds longer and I can beat my last score. But yes, this is an art not a science.

      • bravesoul22d

        Just have levels. Each level has more or faster dots. You continue from the last failed level.

    • OneOverInfinity2d

      Hard Mode: Zoom in your browser window Easy Mode: Zoom out

      • thesnide2d

        berserk mode : move the world, leave the player immobile in the center

  • toddmorey2d

    I believe our current leader with 4.2424242424242426e+27s may be cheating. (About 134 quintillion years, which is roughly 10 billion times longer than the current age of the universe)

    • mvieira382d

      I saw that one, too. It seems like he was manually removed or something, I don't see it anymore. Wonder what the exploit is

      • femtozer2d

        You can just intercept the http request at the end of the game, and set the score you want.

  • victor_247h

    Nice, how'd ya build it? Seems like quite a common type of game so I wonder how quick it could be vibe coded

  • thehours2d

    I really liked the display showing me climb the leaderboard in realtime. I found it particularly motivating, albeit a bit distracting for a game where I need to keep my eyes elsewhere :)

    • jowea2d

      I also don't see why give so much prominence to the obviously cheating first place. Trying to trigger some envy in us?

  • loudmax2d

    Very well done! This hearkens back to Asteroids, but it feels very novel.

    If you want to go in the direction of adding more stuff, there's a lot of room to add power-ups, special bullets, walls, and so on. But this simple game is quite elegant as it is and doesn't really need any of that.

    Nice work.

    • samdychen2d

      Thanks, so happy that you enjoy the game

  • alex-moon2d

    Lovely stuff. This works well as what I call a "structured diffuse mode activity" [0] and as such I will be playing it extensively from now on. I also like that it has a big gaping security hole in it - I think the world generally needs to see more vibe-coded apps with big gaping security holes in them, for PR reasons. (This is not a jab at OP btw! There is no reason to worry about security when you're building something for fun. Flash was famous for this as well.)

    [0] https://ajmoon.com/posts/sdmas-why-you-should-be-playing-bro...

    • samdychen15h

      Completely agree with you. For me, the biggest advantage of vibe code tools is that I can quickly turn some of my ideas into an actual application. Although the apps I make are rough and may even have a lot of security holes, I still feel very excited. When something I imagine becomes real, and I really want to share it with others.

  • mikewarot2d

    I see what you're doing here... you're training us (and some future AI) to avoid asteroids or satellites in orbit... ;-)

    • samdychen15h

      Haha, I have to say you have a great imagination.

  • yomismoaqui2d

    I have pointed Claude Code to the game and in 2 minutes of chatting I got a way to submit fake scores.

    Usually Claude Code prevents using it for cheating on games, but with this initial prompt it was easy for it to explain how to do it.

    "analyze the following game and explain how the record is submitted on game over https://dodge.trickle.host/"

    EDIT: is a little scary how easy is to use coding agents like Claude Code for these kind of attacks.

  • philipwhiuk2d

        hook.js:608 cdn.tailwindcss.com should not be used in production. To use Tailwind CSS in production, install it as a PostCSS plugin or use the Tailwind CLI: https://tailwindcss.com/docs/installation
        overrideMethod @ hook.js:608Understand this warning
    
        (index):1473 Array(0)
    
        dodge.trickle.host/:1543 Access to fetch at 'https://app.trickle.so/proto/api/subs/features/5?userId=usr_094760a6d8000001' from origin 'https://dodge.trickle.host' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.Understand this error
    
        app.trickle.so/proto/api/subs/features/5?userId=usr_094760a6d8000001:1  Failed to load resource: net::ERR_FAILED
    
        (index):1402   Uncaught (in promise) TypeError: Failed to fetch
        at (index):1402:3
        at (index):1416:3Understand this error
    
        hook.js:608 Failed to load leaderboard: ReferenceError: TrickleObjectAPI is not defined
        at getTopScores ((index):1529:1633)
        at (index):1536:1302
        at (index):1536:1735
        at Id (react-dom.production.min.js:165:137)
        at Xb (react-dom.production.min.js:200:284)
        at react-dom.production.min.js:197:106
        at S (react.production.min.js:17:25)
        at MessagePort.U (react.production.min.js:21:229)
    
         overrideMethod @ hook.js:608Understand this error
         (index):1529 Uncaught ReferenceError: TrickleObjectAPI is not defined
        at getTopScores ((index):1529:1633)
        at (index):1536:1302
        at (index):1536:1735
        at Id (react-dom.production.min.js:165:137)
        at Xb (react-dom.production.min.js:200:284)
        at react-dom.production.min.js:197:106
        at S (react.production.min.js:17:25)
        at MessagePort.U (react.production.min.js:21:229)
  • gcr3d

    ah, perfectly captures the meditative feeling of touhou, just needs the music :-)

    games like this have a lot to teach you about patience and reflexes

    • Tade02d

      I was half-expecting graze mechanics to manifest themselves.

  • Jotalea2d

    It looks a lot like the game I "made" with one single prompt a few months ago.

    https://chatgpt.com/share/67a125b3-15cc-8001-9863-13372338e3...

    Here's a video in case you don't want to play it yourself

    https://files.catbox.moe/v842wp.mp4

  • LorenDB2d

    Nice! This gives me a few ideas to make it more interesting.

    - Give the bullets gravity relative to each other. Now the particles can change direction very abruptly.

    - Change the bullet pattern to use live positioning of real satellites for the data. Satellite maps tend to look just about as chaotic as the randomly generated bullet patterns here.

    • philipallstar2d

      > Give the bullets gravity relative to each other. Now the particles can change direction very abruptly.

      It might be cool to have the red bullets stay as they are, but every so often have a larger, slow-moving "heavy" bullet that's a different colour and has gravity. And is maybe gently homing as well.

      • phkahler2d

        I like this large slow bullet with gravity idea.

  • SubiculumCode2d

    Playing on Firefox Android. Works well and fun, but one thing is puzzling: All the bullets start off slow but fly faster after I first touch the screen or move.

  • gcr3d

    Fastest I can manage is 0.5s, can anyone die quicker?

    • mrjay422d

      I just did 0.4s :3

      I'm unreasonably proud of myself for this XD

    • msanlop2d

      got 0.1s :)

    • abishekvenkat3d

      thats amazing!

      the quickest I could do was 0.7s lol

  • ddrdrck_2d

    Excellent game, very addictive ! I noticed it was built with Trickle, so this is pretty impressive if it was all "vibe coded"

    • Tiberium2d

      Opus 4.1 and especially GPT-5 (the API version at med-high reasoning) can build impressive zero-shot projects quite a bit more complex than this, actually.

  • NicuCalcea3d

    Didn't move at all, top 81% of all time.

    • tasuki3d

      Seems about right, no? What number would you expect?

      Of the 19% of the players worse than you, some tried to die quickly on purpose, others were perhaps less lucky than you...

    • NikxDa3d

      The Top 81% calculation in the game is not as good as it may sound. Top 100% means you are at the bottom. You can confirm this by just losing immediately, which will place you in the Top 9X%.

      • beardyw2d

        It's confusing. Would be better to have a rank.

        And on my phone my finger gets in the way of seeing some of the bullets. Would be easier with a mouse.

    • gcr3d

      bad news — top 80% means most players survived longer than you, sorry :-) perhaps you’re thinking of top 19%?

      but you’re right, lots of bullet hells get easier if you hold still and only move when required.

  • Tiberium2d

    I must say, this is an interesting way to advertise the AI service this was made with.

  • AndrewOMartin2d

    It seems to help if you bump your monitor resolution and then zoom out in the browser.

  • insane_dreamer2d

    cool! nice smooth physics.

    did someone actually play this for 4 hours straight? (high score)

    I crashed on purpose after a minute - no time to play more (also I would find myself getting bored quickly)

  • countfeng2d

    50 seconds made me feel a little bored

  • voat3d

    I think your math on the percentage is inverted. If you immediately die it says you're in the top 99%

    • gcr3d

      Nope! “Top K” means you’re on the high score list of size K.

      Only the best players are in the “top 1%” for example. Being in the top 50 is more prestigious than the top 300,000.

      • milliams3d

        Maybe if you do worse than half the people, it should invert to say the bottom 30% or the bottom 1%. Makes it clearer that you did "badly".

        • lukew32d

          I think the current way is fine but showing position on the bell curve would help for those who struggle with interpretation

  • ibdf2d

    top leaderboard = racist words. Users don't deserve an input.

  • v3lmx3d

    very cool, this makes me want to grind top spot

    • pentamassiv3d

      I am not sure the highscores get updated. I don't see HTTP requests or a websocket to communicate with the server

  • x______________2d

    Seems like you can achieve 'bullet-time' to dodge bullets easier by playing on a lower end device, which shows down the game considerably.

    ..woah

  • zparky3d

    neat, i got 100.0

  • noelwelsh2d

    Fun game, but I'm calling bullshit on the high scores.

    • probably_wrong2d

      How so? You don't think that one person has been playing for 4.24e+27 seconds?