<?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: Kshitij Gawankar</title>
    <description>The latest articles on DEV Community by Kshitij Gawankar (@kshitij_gawankar_4ac27c99).</description>
    <link>https://dev.to/kshitij_gawankar_4ac27c99</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%2F3270020%2F728417c5-25d1-4d3e-9736-d9118c595b90.png</url>
      <title>DEV Community: Kshitij Gawankar</title>
      <link>https://dev.to/kshitij_gawankar_4ac27c99</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kshitij_gawankar_4ac27c99"/>
    <language>en</language>
    <item>
      <title>🎬 Building a Movie Recommendation System with Neo4j + Node.js</title>
      <dc:creator>Kshitij Gawankar</dc:creator>
      <pubDate>Mon, 18 Aug 2025 06:26:33 +0000</pubDate>
      <link>https://dev.to/kshitij_gawankar_4ac27c99/building-a-movie-recommendation-system-with-neo4j-nodejs-1plk</link>
      <guid>https://dev.to/kshitij_gawankar_4ac27c99/building-a-movie-recommendation-system-with-neo4j-nodejs-1plk</guid>
      <description>&lt;p&gt;&lt;strong&gt;👋 Introduction&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Ever wondered how Netflix or Marvel fans get “because you watched this…” suggestions? In this blog, I’ll walk you through building a real-world Movie Recommendation System using Neo4j (graph database) and Node.js.&lt;/p&gt;

&lt;p&gt;Unlike traditional SQL databases, Neo4j shines when you want to store relationships (like “User → Likes → Movie”). That’s why it’s perfect for recommendations.&lt;/p&gt;

&lt;p&gt;We’ll build a mini Netflix-style engine that knows which movies you like and suggests others you might enjoy.&lt;br&gt;
🛠️ Tech Stack&lt;/p&gt;

&lt;p&gt;Neo4j → Graph database to store movies, users, and relationships.&lt;/p&gt;

&lt;p&gt;Node.js → Server-side runtime to interact with Neo4j.&lt;/p&gt;

&lt;p&gt;neo4j-driver → Official driver to connect Node.js with Neo4j.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Github Repository:-&lt;/strong&gt;&lt;a href="https://github.com/Kshitij-0007/neo4j" rel="noopener noreferrer"&gt;https://github.com/Kshitij-0007/neo4j&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;📂 Project Setup&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Initialize Project&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;mkdir neo4j-movie-recommendation&lt;br&gt;
cd neo4j-movie-recommendation&lt;br&gt;
npm init -y&lt;br&gt;
npm install neo4j-driver dotenv&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Add .env File&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;NEO4J_URI=bolt://localhost:7687&lt;br&gt;
NEO4J_USER=neo4j&lt;br&gt;
NEO4J_PASSWORD=yourpassword&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;package.json Update&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;{&lt;br&gt;
  "name": "movie-recommendation",&lt;br&gt;
  "version": "1.0.0",&lt;br&gt;
  "description": "A movie recommendation system using Neo4j and Node.js",&lt;br&gt;
  "main": "index.js",&lt;br&gt;
  "type": "module",&lt;br&gt;
  "scripts": {&lt;br&gt;
    "start": "node index.js"&lt;br&gt;
  },&lt;br&gt;
  "dependencies": {&lt;br&gt;
    "neo4j-driver": "^5.15.0",&lt;br&gt;
    "dotenv": "^17.2.1"&lt;br&gt;
  }&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;🎥 Sample Data (Marvel + Netflix Movies)&lt;/p&gt;

&lt;p&gt;We’ll create some users and movies, then connect them with LIKES relationships.&lt;/p&gt;

&lt;p&gt;index.js&lt;/p&gt;

&lt;p&gt;import neo4j from "neo4j-driver";&lt;br&gt;
import dotenv from "dotenv";&lt;/p&gt;

&lt;p&gt;dotenv.config();&lt;/p&gt;

&lt;p&gt;const driver = neo4j.driver(&lt;br&gt;
  process.env.NEO4J_URI,&lt;br&gt;
  neo4j.auth.basic(process.env.NEO4J_USER, process.env.NEO4J_PASSWORD)&lt;br&gt;
);&lt;/p&gt;

&lt;p&gt;const session = driver.session();&lt;/p&gt;

&lt;p&gt;async function main() {&lt;br&gt;
  try {&lt;br&gt;
    // Clear existing DB&lt;br&gt;
    await session.run("MATCH (n) DETACH DELETE n");&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// Create Movies
await session.run(`
  CREATE (m1:Movie {title: "Avengers: Endgame", genre: "Action"})
  CREATE (m2:Movie {title: "Doctor Strange", genre: "Fantasy"})
  CREATE (m3:Movie {title: "The Witcher", genre: "Fantasy"})
  CREATE (m4:Movie {title: "Money Heist", genre: "Thriller"})
  CREATE (m5:Movie {title: "Stranger Things", genre: "Sci-Fi"})
  CREATE (m6:Movie {title: "Loki", genre: "Action"})
`);

// Create Users
await session.run(`
  CREATE (u1:User {name: "Arjun"})
  CREATE (u2:User {name: "Meera"})
  CREATE (u3:User {name: "Karan"})
`);

// Create Relationships
await session.run(`
  MATCH (u1:User {name: "Arjun"}), (m1:Movie {title: "Avengers: Endgame"})
  CREATE (u1)-[:LIKES]-&amp;gt;(m1);

  MATCH (u1:User {name: "Arjun"}), (m2:Movie {title: "Doctor Strange"})
  CREATE (u1)-[:LIKES]-&amp;gt;(m2);

  MATCH (u2:User {name: "Meera"}), (m3:Movie {title: "The Witcher"})
  CREATE (u2)-[:LIKES]-&amp;gt;(m3);

  MATCH (u2:User {name: "Meera"}), (m4:Movie {title: "Money Heist"})
  CREATE (u2)-[:LIKES]-&amp;gt;(m4);

  MATCH (u3:User {name: "Karan"}), (m5:Movie {title: "Stranger Things"})
  CREATE (u3)-[:LIKES]-&amp;gt;(m5);

  MATCH (u3:User {name: "Karan"}), (m6:Movie {title: "Loki"})
  CREATE (u3)-[:LIKES]-&amp;gt;(m6);
`);

console.log("✅ Database seeded with movies and users!");

// Recommendation Query
const result = await session.run(`
  MATCH (u:User {name: "Arjun"})-[:LIKES]-&amp;gt;(m:Movie)&amp;lt;-[:LIKES]-(other:User)-[:LIKES]-&amp;gt;(rec:Movie)
  WHERE u &amp;lt;&amp;gt; other AND NOT (u)-[:LIKES]-&amp;gt;(rec)
  RETURN DISTINCT rec.title AS recommendation
`);

console.log("🎯 Recommendations for Arjun:");
result.records.forEach(record =&amp;gt; {
  console.log("👉 " + record.get("recommendation"));
});
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;} catch (error) {&lt;br&gt;
    console.error("Error:", error);&lt;br&gt;
  } finally {&lt;br&gt;
    await session.close();&lt;br&gt;
    await driver.close();&lt;br&gt;
  }&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;main();&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🚀 Run the Project&lt;/strong&gt;&lt;br&gt;
npm start&lt;/p&gt;

&lt;p&gt;You’ll see something like:&lt;/p&gt;

&lt;p&gt;✅ Database seeded with movies and users!&lt;br&gt;
🎯 Recommendations for Arjun:&lt;br&gt;
👉 The Witcher&lt;br&gt;
👉 Money Heist&lt;br&gt;
👉 Stranger Things&lt;br&gt;
👉 Loki&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🧩 How It Works&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Users are connected to movies via LIKES relationships.&lt;/p&gt;

&lt;p&gt;The Cypher query finds other users with similar tastes.&lt;/p&gt;

&lt;p&gt;It returns movies they liked that Arjun hasn’t watched yet.&lt;/p&gt;

&lt;p&gt;This mimics a collaborative filtering recommendation system.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;📊 Visualizing the Graph&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Open the Neo4j Browser (&lt;a href="http://localhost:7474/" rel="noopener noreferrer"&gt;http://localhost:7474/&lt;/a&gt;) and run:&lt;/p&gt;

&lt;p&gt;MATCH (n) RETURN n&lt;/p&gt;

&lt;p&gt;You’ll see users and movies connected in a graph — like your own mini Netflix brain 🧠.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🎁 Next Steps&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Add more genres and ratings.&lt;/p&gt;

&lt;p&gt;Build a simple frontend to display recommendations.&lt;/p&gt;

&lt;p&gt;Expand dataset with real movie datasets (IMDb, TMDb).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🙌 Conclusion&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And there you have it — a Movie Recommendation System in less than 100 lines of code using Neo4j + Node.js.&lt;/p&gt;

&lt;p&gt;Graph databases make relationships first-class citizens, which makes recommendation engines super easy and natural.&lt;/p&gt;

&lt;p&gt;If you enjoyed this, drop a ❤️ on Dev.to, connect with me, and check out the GitHub repo.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>javascript</category>
      <category>neo4j</category>
      <category>database</category>
    </item>
    <item>
      <title>🧠 I Rebuilt Tetris with an AI Brain Using Amazon Q CLI – Neon Tetris</title>
      <dc:creator>Kshitij Gawankar</dc:creator>
      <pubDate>Thu, 19 Jun 2025 13:00:29 +0000</pubDate>
      <link>https://dev.to/kshitij_gawankar_4ac27c99/i-rebuilt-tetris-with-an-ai-brain-using-amazon-q-cli-neon-tetris-pjh</link>
      <guid>https://dev.to/kshitij_gawankar_4ac27c99/i-rebuilt-tetris-with-an-ai-brain-using-amazon-q-cli-neon-tetris-pjh</guid>
      <description>&lt;p&gt;Ever thought Tetris needed a glow-up?&lt;br&gt;&lt;br&gt;
I did — and thanks to &lt;strong&gt;Amazon Q Developer CLI&lt;/strong&gt;, I didn’t just build a Tetris clone... I built &lt;strong&gt;Neon Tetris&lt;/strong&gt;: an AI-enhanced, retro-themed version with brainpower, beauty, and a background track that hits you with nostalgia and chill.&lt;br&gt;&lt;br&gt;
&lt;a href="https://media2.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%2Fq6titumolqutgmsh9n92.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fq6titumolqutgmsh9n92.jpg" alt="Neon Tetris Screenshot" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is my submission for the &lt;strong&gt;#BuildGamesChallenge&lt;/strong&gt; using &lt;strong&gt;#AmazonQDevCLI&lt;/strong&gt; – a global event where developers reimagine classic games through the power of conversational AI.&lt;/p&gt;







&lt;h2&gt;
  
  
  🧩 Challenge Breakdown
&lt;/h2&gt;

&lt;h3&gt;
  
  
  🎯 Why I Chose Tetris
&lt;/h3&gt;

&lt;p&gt;Tetris is the OG puzzle game — timeless, addictive, and beautifully simple. But I wanted to bring it into 2025 with a twist: &lt;strong&gt;AI + glowing visuals + dynamic gameplay&lt;/strong&gt;. Tetris gave me the perfect base to explore real-time logic, visual feedback, and adaptive difficulty all in one project.&lt;/p&gt;




&lt;h3&gt;
  
  
  🛠️ Prompting Techniques I Discovered
&lt;/h3&gt;

&lt;p&gt;Instead of micro-managing each file or feature, I went high-level with prompts like:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Build a modular Tetris game with AI helper logic that uses heuristics to suggest optimal moves. Include ghost piece, theme switching, and dynamic difficulty based on player performance."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This let Q CLI do the heavy lifting. I followed up with focused prompts like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Add a performance tracker that monitors score and adjusts speed."&lt;/li&gt;
&lt;li&gt;"Create a theme switcher with Neon, Dark, and Retro themes."&lt;/li&gt;
&lt;li&gt;"Write a helper class that calculates best piece placement using heuristics."&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These small conversational tweaks saved HOURS of setup and rewrites.&lt;/p&gt;




&lt;h3&gt;
  
  
  🤖 How AI Handled Classic Game Dev Challenges
&lt;/h3&gt;

&lt;p&gt;Q CLI impressed me with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Clean module separation for game logic, AI, rendering, and input&lt;/li&gt;
&lt;li&gt;Automatically generated code that worked out of the box&lt;/li&gt;
&lt;li&gt;Clear comments and docstrings for most generated methods&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I rarely had to fight with the code — I was just refining it and adding polish.&lt;/p&gt;




&lt;h3&gt;
  
  
  🔁 Automation That Saved Me Time
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Project Structure Generation:&lt;/strong&gt; The full game skeleton (files + folders) was built in seconds
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Heuristic AI Logic:&lt;/strong&gt; It created a scoring system using classic Tetris metrics like holes, bumpiness, and height
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Control Mapping:&lt;/strong&gt; Auto-added standard controls + pause/restart/quit states
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Theme Manager:&lt;/strong&gt; I just said “switchable themes” and it wrote the class, handled key inputs, and applied different styles. Insane.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🎥 Gameplay Demo
&lt;/h2&gt;

&lt;p&gt;Check out the full video here! 🎮👇&lt;br&gt;&lt;br&gt;
📺 &lt;strong&gt;&lt;a href="https://youtu.be/yrqp9sC57PI" rel="noopener noreferrer"&gt;Watch on YouTube&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🎮 Why Tetris?
&lt;/h2&gt;

&lt;p&gt;Tetris is the ultimate retro puzzle game. It’s simple, fast, and satisfying. But what if it evolved with AI?&lt;/p&gt;

&lt;p&gt;With &lt;strong&gt;Neon Tetris&lt;/strong&gt;, I added:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🤖 AI that &lt;em&gt;suggests&lt;/em&gt; your next best move
&lt;/li&gt;
&lt;li&gt;🎭 Switchable themes (Neon, Dark, Retro)
&lt;/li&gt;
&lt;li&gt;📈 Dynamic difficulty based on player skill
&lt;/li&gt;
&lt;li&gt;👻 Ghost piece to preview hard drops
&lt;/li&gt;
&lt;li&gt;🎵 A peaceful Tetris piano + lullaby remix soundtrack
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Built using &lt;strong&gt;Amazon Q CLI&lt;/strong&gt;, this was about more than just coding — it was about &lt;em&gt;prompting&lt;/em&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  💬 Prompting the Game into Existence
&lt;/h2&gt;

&lt;p&gt;Here’s an example of what I told Q CLI:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Create a modular Tetris game with an AI Helper. The AI should recommend the best position for the current piece based on heuristics like aggregate height, complete lines, holes, and bumpiness. Add a ghost piece, dynamic difficulty, theme switching, and modular file structure.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Q CLI broke this down into a full project with:&lt;/p&gt;

&lt;p&gt;📁 main.py – Game loop &amp;amp; inputs&lt;br&gt;
📁 game.py, board.py, tetromino.py – Core Tetris mechanics&lt;br&gt;
📁 ai_helper.py – Heuristic-based AI recommendation engine&lt;br&gt;
📁 theme_manager.py – Multiple themes with switch key&lt;br&gt;
📁 performance_tracker.py – Player analytics for dynamic speed&lt;br&gt;
📁 renderer.py – Handles visuals, ghost piece, UI&lt;/p&gt;




&lt;h2&gt;
  
  
  🧠 The AI Helper Logic
&lt;/h2&gt;

&lt;p&gt;The AI evaluates every possible move using the following heuristics:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;📏 &lt;strong&gt;Aggregate Height&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;🕳️ &lt;strong&gt;Holes&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;📊 &lt;strong&gt;Bumpiness&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Completed Lines&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It then recommends the best move by showing a ghost piece, helping players improve their strategy.&lt;/p&gt;




&lt;h2&gt;
  
  
  🎛️ Controls
&lt;/h2&gt;

&lt;p&gt;⬅️➡️⬆️⬇️ Arrow Keys: Move &amp;amp; rotate&lt;br&gt;
🔳 Space: Hard drop&lt;br&gt;
🅰️ A: Toggle AI helper&lt;br&gt;
🔤 T: Change theme&lt;br&gt;
🔍 G: Toggle ghost piece&lt;br&gt;
⏸️ P: Pause&lt;br&gt;
🔄 R: Restart (on game over)&lt;br&gt;
❌ Q: Quit (on game over)&lt;/p&gt;




&lt;p&gt;🧵 Final Thoughts&lt;br&gt;
This challenge showed me that AI is no longer just a helper — it’s a real dev partner.&lt;br&gt;
Amazon Q CLI let me build something playable, clean, and smart — just by talking to it.&lt;/p&gt;

&lt;p&gt;Big thanks to the AWS Build Games Challenge team for making this possible.&lt;br&gt;
And if you're a dev who loves building games but hates boilerplate, Q CLI is your new best friend.&lt;/p&gt;

&lt;p&gt;🎮 Game on.&lt;/p&gt;

&lt;p&gt;#BuildGamesChallenge&lt;br&gt;
 #AmazonQDevCLI #GameDev&lt;br&gt;
 #Python #PyGame #AI&lt;br&gt;
 #RetroGaming #MadeWithAI&lt;/p&gt;

&lt;h2&gt;
  
  
  📦 Try It Yourself
&lt;/h2&gt;

&lt;p&gt;📁 &lt;strong&gt;GitHub Repository:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
👉 &lt;a href="https://github.com/Kshitij-0007/Neon_Tetris" rel="noopener noreferrer"&gt;https://github.com/Kshitij-0007/Neon_Tetris&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🧰 Requirements:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Python 3.6+&lt;/li&gt;
&lt;li&gt;Pygame 2.5.2+&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;⚡ Installation:&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
bash
git clone https://github.com/Kshitij-0007/Neon_Tetris
cd Neon_Tetris
pip install -r requirements.txt
python main.py


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>amazonqdevcli</category>
      <category>buildgameschallenge</category>
      <category>pygame</category>
      <category>tetris</category>
    </item>
    <item>
      <title>🥷 I Built a Procedural Ninja Stealth Game in Python – "Openstate" (with Amazon Q CLI)</title>
      <dc:creator>Kshitij Gawankar</dc:creator>
      <pubDate>Tue, 17 Jun 2025 09:49:56 +0000</pubDate>
      <link>https://dev.to/kshitij_gawankar_4ac27c99/i-built-a-procedural-ninja-stealth-game-in-python-openstate-with-amazon-q-cli-ffc</link>
      <guid>https://dev.to/kshitij_gawankar_4ac27c99/i-built-a-procedural-ninja-stealth-game-in-python-openstate-with-amazon-q-cli-ffc</guid>
      <description>&lt;p&gt;Ever wanted to sneak through a maze as a shadowy ninja, dodging guards, grabbing scrolls, and escaping undetected?&lt;br&gt;
That’s exactly what I built with Openstate — a 2D stealth platformer game using Python, Pygame, and scaffolding powered by Amazon Q CLI.&lt;/p&gt;

&lt;p&gt;Let me take you through how I made it, what makes it tick, and how you can play it or even build your own.&lt;/p&gt;

&lt;p&gt;🎮 What is Openstate?&lt;br&gt;
Openstate is a procedurally generated stealth game where you:&lt;/p&gt;

&lt;p&gt;Sneak past patrolling guards with line-of-sight vision&lt;/p&gt;

&lt;p&gt;Collect hidden scrolls across a maze&lt;/p&gt;

&lt;p&gt;Use shadows and bushes to hide&lt;/p&gt;

&lt;p&gt;Escape through the exit — all without being caught&lt;/p&gt;

&lt;p&gt;Each level gets harder, and every run is unique thanks to procedural generation.&lt;/p&gt;

&lt;p&gt;🎥 Gameplay Demo&lt;br&gt;
👉 Watch the full gameplay of Openstate here: &lt;a href="https://youtu.be/vvg_KIyrTkg" rel="noopener noreferrer"&gt;https://youtu.be/vvg_KIyrTkg&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🧠 Key Features&lt;br&gt;
🎯 Cone-of-vision AI: Guards detect you based on realistic field of vision&lt;/p&gt;

&lt;p&gt;🔁 Procedurally generated levels: New maze every time&lt;/p&gt;

&lt;p&gt;🌌 Dynamic guard speed: Increasing challenge each level&lt;/p&gt;

&lt;p&gt;📜 Scroll collection for stars&lt;/p&gt;

&lt;p&gt;🥷 Crouch, hide, and sneak to survive&lt;/p&gt;

&lt;p&gt;🌟 3-star rating system: Based on scrolls collected, exit reached, and stealth success&lt;/p&gt;

&lt;p&gt;🔁 Game over + restart system if caught&lt;/p&gt;

&lt;p&gt;🛠️ How It Was Built&lt;br&gt;
📁 Modular Architecture&lt;br&gt;
player.py: Movement, jumping, crouching, hiding&lt;/p&gt;

&lt;p&gt;guard.py: AI, patrol logic, detection&lt;/p&gt;

&lt;p&gt;level.py: Handles maze, scrolls, exit, guards&lt;/p&gt;

&lt;p&gt;maze_generator.py: DFS-based maze generation&lt;/p&gt;

&lt;p&gt;ui.py: Timer, star count, detection alerts&lt;/p&gt;

&lt;p&gt;💻 Powered by Amazon Q CLI&lt;br&gt;
Amazon Q CLI helped scaffold the basic architecture for this project — making it easier to organize the code and scale features over time.&lt;br&gt;
It was part of the "Build Games with Amazon Q CLI" challenge.&lt;/p&gt;

&lt;p&gt;🧪 Challenges Faced&lt;br&gt;
Tuning AI to be “dumb but fair” (nobody likes psychic guards)&lt;/p&gt;

&lt;p&gt;Ensuring maze generation always leads to an exit&lt;/p&gt;

&lt;p&gt;Getting animations and UI overlays working properly in Pygame&lt;/p&gt;

&lt;p&gt;🚀 Try the Game Yourself&lt;br&gt;
💻 Clone the Repo:&lt;br&gt;
bash&lt;br&gt;
Copy&lt;br&gt;
Edit&lt;br&gt;
git clone &lt;a href="https://github.com/Kshitij-0007/openstate" rel="noopener noreferrer"&gt;https://github.com/Kshitij-0007/openstate&lt;/a&gt;&lt;br&gt;
cd openstate&lt;br&gt;
pip install -r requirements.txt&lt;br&gt;
python main.py&lt;br&gt;
🔗 GitHub Repo: &lt;a href="https://github.com/Kshitij-0007/openstate" rel="noopener noreferrer"&gt;https://github.com/Kshitij-0007/openstate&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🧠 Lessons Learned&lt;br&gt;
Procedural generation adds replayability — but also debugging nightmares 😅&lt;/p&gt;

&lt;p&gt;Simple AI systems can feel very smart with just a cone of vision and patrols&lt;/p&gt;

&lt;p&gt;Amazon Q CLI can boost productivity and structure — especially for solo devs&lt;/p&gt;

&lt;p&gt;🛣️ What’s Next for Openstate?&lt;br&gt;
🔮 Smoke bombs to distract guards&lt;/p&gt;

&lt;p&gt;🧠 Smarter guard AI variations&lt;/p&gt;

&lt;p&gt;🧱 Level editor for custom mazes&lt;/p&gt;

&lt;p&gt;💾 Save/load progress&lt;/p&gt;

&lt;p&gt;🛍️ In-game power-ups like invisibility or speed boost&lt;/p&gt;

&lt;p&gt;🙌 Final Thoughts&lt;br&gt;
This was built as part of the Amazon Q CLI Game Jam, and I’m super proud of how it turned out. If you're from Amazon and reading this — this ninja humbly accepts T-shirt tributes 👕✨&lt;/p&gt;

&lt;p&gt;Thanks for reading, and go give it a try!&lt;br&gt;
Got feedback? Fork it? Want to collab? Let’s connect!&lt;/p&gt;

&lt;p&gt;🔧 Built With:&lt;br&gt;
Python 3.9&lt;/p&gt;

&lt;p&gt;Pygame&lt;/p&gt;

&lt;p&gt;Amazon Q CLI&lt;/p&gt;

&lt;p&gt;Canva (video editing)&lt;/p&gt;

&lt;p&gt;🕶️ Peace, scrolls, and silent footsteps.&lt;/p&gt;

&lt;h1&gt;
  
  
  python #pygame #gamedev #amazonqcli #opensource #devchallenge #stealthgame #indiedev #proceduralgeneration
&lt;/h1&gt;

&lt;p&gt;Let me know if you'd like a thumbnail image or a post for LinkedIn&lt;br&gt;
&lt;a href="https://media2.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%2Fz1dnwurjiamm85qawnwi.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fz1dnwurjiamm85qawnwi.jpg" alt="Image description" width="800" height="450"&gt;&lt;/a&gt; too. Let's get this ninja everywhere. 🥷💻💥&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
