<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: praywix</title>
    <description>The latest articles on DEV Community by praywix (@praywix).</description>
    <link>https://dev.to/praywix</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3993318%2F38092fba-a593-4d31-9f5b-63dedee49c5f.png</url>
      <title>DEV Community: praywix</title>
      <link>https://dev.to/praywix</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/praywix"/>
    <language>en</language>
    <item>
      <title>BeerPong Game</title>
      <dc:creator>praywix</dc:creator>
      <pubDate>Fri, 19 Jun 2026 23:18:56 +0000</pubDate>
      <link>https://dev.to/praywix/beerpong-game-2lp</link>
      <guid>https://dev.to/praywix/beerpong-game-2lp</guid>
      <description>&lt;p&gt;This is a submission for the June Solstice Game Jam&lt;/p&gt;

&lt;h2&gt;
  
  
  What I built
&lt;/h2&gt;

&lt;p&gt;So this is Solstice Pong — basically beer pong, but on your screen, with real stakes. Nine cups set up the normal pyramid way, sitting on a table lit up by a bonfire, stars out in the background. You drag back on the ball, let go, and if it lands in a cup, a button pops up that says "I drank it" so you can actually log the real shot.&lt;/p&gt;

&lt;p&gt;I wanted the solstice thing to actually mean something instead of just being a reskin, so as you clear cups off the table, there's a little sun indicator that goes from High to Dusk to Set. Clear the whole table and the sun's basically gone felt like a nice way to tie "longest day" into "the game is over."&lt;/p&gt;

&lt;p&gt;It's meant to just be a link you pull up at an actual party and play shot for shot. No login, no install, nothing.&lt;/p&gt;

&lt;p&gt;Play it here: &lt;a href="https://praywix.github.io/solstice-pong/" rel="noopener noreferrer"&gt;https://praywix.github.io/solstice-pong/&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Video demo
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://youtu.be/tykJwh4ojk0" rel="noopener noreferrer"&gt;https://youtu.be/tykJwh4ojk0&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;(In the video I show a miss, a make, the drink button popping up, and the Gemini caster calling a shot live that part's worth watching closely.)&lt;/p&gt;

&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;

&lt;p&gt;Repo's here: &lt;a href="https://github.com/praywix/solstice-pong" rel="noopener noreferrer"&gt;https://github.com/praywix/solstice-pong&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It's literally one HTML file. No build step, nothing to install, just open it.&lt;/p&gt;

&lt;h2&gt;
  
  
  How I built it
&lt;/h2&gt;

&lt;p&gt;The throwing physics are fake but they work. When you let go of the ball, the drag distance and direction set its velocity in x, y, and a "z" I made up to fake height. There's no real 3D happening — I just track a height value that goes up based on that z-velocity and falls back down under gravity, then subtract it from where the ball gets drawn. Looks like an arc, costs nothing.&lt;/p&gt;

&lt;p&gt;Honestly the part I spent the most time on wasn't the throwing logic, it was the throwing FEEL. First version had the ball sitting almost right at the bottom edge of the canvas, so there was barely any room to pull back — every throw ended up being this tiny, useless flick. Fixed it by moving the ball further from the edge, making the drag track your mouse/finger even outside the canvas, and lowering how far you need to pull back to get full power. None of that is complicated code, but it's the difference between the game being annoying and actually being fun.&lt;/p&gt;

&lt;p&gt;Everything you see — table, cups, lights, the bonfire glow, the stars — is just drawn with canvas shapes. No images, no sprites, which is part of why it loads instantly.&lt;/p&gt;

&lt;p&gt;Sound is the same idea — instead of loading audio files I just generate little beeps with WebAudio when you throw, hit, or miss. Keeps things light.&lt;/p&gt;

&lt;p&gt;The one part that actually took real effort was the Gemini integration. Every time you make or miss a shot, it sends the current game state — cups left, your streak, total shots — to gemini-2.0-flash and asks for a short, punchy announcer line. That replaces a scripted fallback line that shows up if you haven't added a key or if the call fails for some reason, so the game never just breaks if Gemini's unavailable. Your API key only ever stays in your own browser tab too.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prize category
&lt;/h2&gt;

&lt;p&gt;Going for Best Google AI Usage. The Gemini caster isn't just a gimmick sitting off to the side — it's calling every single shot live, using your actual streak and cup count to write a fresh line each time instead of picking from some canned list. You can see it doing this in real time in the demo video above.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>gamechallenge</category>
      <category>gamedev</category>
    </item>
    <item>
      <title>Let get started new beginning</title>
      <dc:creator>praywix</dc:creator>
      <pubDate>Fri, 19 Jun 2026 22:39:27 +0000</pubDate>
      <link>https://dev.to/praywix/let-get-started-new-beginning-23pa</link>
      <guid>https://dev.to/praywix/let-get-started-new-beginning-23pa</guid>
      <description>&lt;p&gt;Hi first time here&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
