<?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: Anom Chakravorty (he/him)</title>
    <description>The latest articles on DEV Community by Anom Chakravorty (he/him) (@anomic30).</description>
    <link>https://dev.to/anomic30</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F741375%2F90b63b81-c5fd-4cb5-a60f-6aff8403de12.png</url>
      <title>DEV Community: Anom Chakravorty (he/him)</title>
      <link>https://dev.to/anomic30</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/anomic30"/>
    <language>en</language>
    <item>
      <title>Retro themed snake game with live highscore board!</title>
      <dc:creator>Anom Chakravorty (he/him)</dc:creator>
      <pubDate>Thu, 28 Apr 2022 14:19:33 +0000</pubDate>
      <link>https://dev.to/anomic30/retro-themed-snake-game-with-live-highscore-board-2lei</link>
      <guid>https://dev.to/anomic30/retro-themed-snake-game-with-live-highscore-board-2lei</guid>
      <description>&lt;h3&gt;
  
  
  Overview of My Submission
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Snake Arcade&lt;/strong&gt; is a retro themed snake game with a live highscore board. &lt;br&gt;
I took this inspiration from the popular Nokia snake game which I used to play in my dad's mobile back when I was a kid. I had so much fun playing it. Moreover my friends used to brag about their scores but there's was no scoreboard to track them. And that's why I decided to build one with a highscore board 🤠. &lt;br&gt;
To make it more fun and challenging I have added a little &lt;strong&gt;twist&lt;/strong&gt;. Whenever the golden fruit appears, you get 50 points more but there's a 20% chance that your score will be reduced by 50 points 😜. So are you willing to take the challenge? Compete with your friends and top the leaderboard!&lt;/p&gt;

&lt;p&gt;Play now: &lt;a href="https://snake-arcade-bck7y.ondigitalocean.app/" rel="noopener noreferrer"&gt;Snake Arcade&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Submission Category:
&lt;/h3&gt;

&lt;p&gt;Wacky Wildcards&lt;/p&gt;
&lt;h3&gt;
  
  
  Link to Code:
&lt;/h3&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/anomic30" rel="noopener noreferrer"&gt;
        anomic30
      &lt;/a&gt; / &lt;a href="https://github.com/anomic30/Snake-arcade" rel="noopener noreferrer"&gt;
        Snake-arcade
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Retro themed snake game 🎮with live highscore board! ✨
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://user-images.githubusercontent.com/63467479/165770488-06adc70b-e1c2-4be4-b151-27f276143849.svg"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F63467479%2F165770488-06adc70b-e1c2-4be4-b151-27f276143849.svg" alt="Logo"&gt;&lt;/a&gt; Snake Arcade&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/f93e05694a6f01f2f6a37713a454a942442a5ff2b33083891096a6f7e57842f8/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f72656163742d2532333230323332612e7376673f7374796c653d666f722d7468652d6261646765266c6f676f3d7265616374266c6f676f436f6c6f723d253233363144414642"&gt;&lt;img src="https://camo.githubusercontent.com/f93e05694a6f01f2f6a37713a454a942442a5ff2b33083891096a6f7e57842f8/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f72656163742d2532333230323332612e7376673f7374796c653d666f722d7468652d6261646765266c6f676f3d7265616374266c6f676f436f6c6f723d253233363144414642" alt="React"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://user-images.githubusercontent.com/63467479/164336754-ffffb848-85ec-4229-a24f-36b1e0c294ca.svg"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F63467479%2F164336754-ffffb848-85ec-4229-a24f-36b1e0c294ca.svg" alt="Appwrite"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/84a6b9bad3a2f7e87f8cc51c703ae8b5a727d0a04c575011fe4f673d7fd9a167/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4469676974616c4f6365616e2d2532333031363766662e7376673f7374796c653d666f722d7468652d6261646765266c6f676f3d6469676974616c4f6365616e266c6f676f436f6c6f723d7768697465"&gt;&lt;img src="https://camo.githubusercontent.com/84a6b9bad3a2f7e87f8cc51c703ae8b5a727d0a04c575011fe4f673d7fd9a167/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4469676974616c4f6365616e2d2532333031363766662e7376673f7374796c653d666f722d7468652d6261646765266c6f676f3d6469676974616c4f6365616e266c6f676f436f6c6f723d7768697465" alt="DigitalOcean"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://user-images.githubusercontent.com/63467479/165599959-80f277b5-77c7-46b8-8e64-366011d6aa34.png"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F63467479%2F165599959-80f277b5-77c7-46b8-8e64-366011d6aa34.png" width="100%"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Snake arcade is a retro themed spinoff of the popular Nokia snake game. Play now and compete with your friends to top the high scoreboard!&lt;/p&gt;
&lt;p&gt;Link: &lt;a href="https://snake-arcade-bck7y.ondigitalocean.app/" rel="nofollow noopener noreferrer"&gt;https://snake-arcade-bck7y.ondigitalocean.app/&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;&lt;code&gt;npm start&lt;/code&gt;&lt;/h3&gt;
&lt;/div&gt;
&lt;p&gt;Runs the app in the development mode.&lt;br&gt;
Open &lt;a href="http://localhost:3000" rel="nofollow noopener noreferrer"&gt;http://localhost:3000&lt;/a&gt; to view it in your browser.&lt;/p&gt;
&lt;p&gt;The page will reload when you make changes.&lt;br&gt;
You may also see any lint errors in the console.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;&lt;code&gt;npm run build&lt;/code&gt;&lt;/h3&gt;
&lt;/div&gt;
&lt;p&gt;Builds the app for production to the &lt;code&gt;build&lt;/code&gt; folder.&lt;br&gt;
It correctly bundles React in production mode and optimizes the build for the best performance.&lt;/p&gt;
&lt;p&gt;The build is minified and the filenames include the hashes.&lt;br&gt;
Your app is ready to be deployed!&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Additional Info:&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;Snake Arcade uses Appwrite to store the score of every player in its database. The Appwrite instance is hosted at DigitalOcean.&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://user-images.githubusercontent.com/63467479/165616044-72aeee4f-a2f3-427a-aa2c-707c45e71d15.png"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F63467479%2F165616044-72aeee4f-a2f3-427a-aa2c-707c45e71d15.png" width="100%"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Disclaimer:&lt;/strong&gt; All the sound effects and music have being taken from &lt;a href="https://opengameart.org/" rel="nofollow noopener noreferrer"&gt;OpenGameArt.org&lt;/a&gt; which is a media repository intended for…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/anomic30/Snake-arcade" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h3&gt;
  
  
  Additional Info:
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Frontend:&lt;/strong&gt; React.js&lt;br&gt;
&lt;strong&gt;Backend:&lt;/strong&gt; Appwrite&lt;br&gt;
This is how the architecture of my Snake Arcade looks like. If you wonder how I designed this, I have used &lt;a href="https://www.figma.com/" rel="noopener noreferrer"&gt;Figma&lt;/a&gt; :)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fubzcx9lsdk1hdyykn8rs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fubzcx9lsdk1hdyykn8rs.png" alt="Workflow"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How I integrated Appwrite:&lt;/strong&gt;&lt;br&gt;
I have hosted the Appwrite instance on a &lt;strong&gt;DigitalOcean&lt;/strong&gt; droplet using their 'One-Click Droplet' in the DigitalOcean Marketplace. You can find the tutorial here: &lt;a href="https://dev.to/appwrite/announcing-appwrite-one-click-droplets-on-digitalocean-1hd8"&gt;https://dev.to/appwrite/announcing-appwrite-one-click-droplets-on-digitalocean-1hd8&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In order to build the highscore board, I have used the Appwrite's database to store the highscore of each players. The database schema looks like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9wkbow35ntic0olvwf0q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9wkbow35ntic0olvwf0q.png" alt="Database Schema"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Now, to query the top 10 highscores I have indexed the database based on the &lt;em&gt;userId&lt;/em&gt; to locate the required data without having to search through every document for result. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F17mp0bkbjg84x5atbc29.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F17mp0bkbjg84x5atbc29.png" alt="Database Index"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Finally I have installed the Appwrite SDK in my React app using their &lt;a href="https://www.npmjs.com/package/appwrite" rel="noopener noreferrer"&gt;npm&lt;/a&gt; package.&lt;/p&gt;

&lt;h3&gt;
  
  
  Demo video:
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1h3jymiti475odfsgylr.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1h3jymiti475odfsgylr.gif" alt="Snake Arcade Demo"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Thank you Dev &amp;amp; Appwrite!
&lt;/h3&gt;

&lt;p&gt;This is my first time using Appwrite. Its so simple and easy to learn that any beginners can use it in their project. I would recommend everyone to use &lt;strong&gt;Appwrite&lt;/strong&gt; 🚀. &lt;/p&gt;

&lt;h4&gt;
  
  
  Update 1:
&lt;/h4&gt;

&lt;p&gt;Just crossed 100 users. Thank you everyone 😀.&lt;/p&gt;

</description>
      <category>appwritehack</category>
      <category>appwrite</category>
      <category>hackathon</category>
      <category>react</category>
    </item>
  </channel>
</rss>
