Among AI : A battle between popular AI models and you on among us styled game banner

Among AI : A battle between popular AI models and you on among us styled game

17 devlogs
70h 50m 2s

Among Ai is a battlefield to test how well models can lie, deceive and manipulate , showing you the other face of the Ai models.The game was Built using the powerful Phaser gaming framework , from the scratch up to render 2D graphics on top of rea…

Among Ai is a battlefield to test how well models can lie, deceive and manipulate , showing you the other face of the Ai models.The game was Built using the powerful Phaser gaming framework , from the scratch up to render 2D graphics on top of reactJS and then added with the latest local LLM models such as gemma,ollama,qwen 2.5 and others to create a perfect brain on the backend to make the actions and strategies and lies.

This project uses AI

I used gemini for research purposes only, specifically on how to bridge reactjs with phaser library. but i never vibe coded , No code, documentation, or assets of any kind are AI generated.

Demo Repository

Loading README...

2025cs0291

Ship log #16 The AI is Finally Plotting Against You

(shipping + devlog = shiplog)

Minor Updates:

Less Clipping, More Walking:

  • We significantly tightened up the movement logic. Bots no longer aggressively cut corners
  • Decreased the global movement speed slightly.

The Fixes:

  • Fixed a bug where sometimes ghost would speak in the chat
  • Fixed a crash related to the sabotage lighting system
  • Impostors can no longer infinitely stalk a player by running directly into a wall while staring at them. (cas that’s dum)

Quality of Life:

  • Added a tutorial pop-up system to explain the basics for noobs (including me)

Major Update:

Built the next terminator(but less evil):

  • The Impostor AI is officially lethal. It no longer stands around waiting for the stars to align.
  • The Hunt is On: Impostors will actively select targets, use commandBotFollow() to stalk them, and wait for the perfect moment. (tiger style kungfu)
  • The Getaway: If an Impostor secures a kill, they will immediately scan for the nearest vent and dive into it to escape the scene. (cowards style kungfu)
  • Fake it till you make it: When Impostors aren’t actively hunting, they will pathfind to random task locations, stand there…awkwardly (this would sometimes make the impostors sus on them)

The Chat Upgrades:

  • We upgraded the local LLM stack to utilize the 1-1.5B parameter class models (StableLM, Gemma, Qwen, Llama). The previous models were generating too much garbage output.

STAY TUNED FOR!!:

  • Interactive Task Mini-Games (Swiping ID cards, connecting wires).
  • Cinematic Victory and Defeat screens.
  • Polishing the desktop installer for final release.

IF YOU HAVE READ TILL THIS THANK YOU FOR STAYING AND SUPPORTING WITH THIS BEAUTIFUL JOURNEY

Attachment
0
2025cs0291

Devlog #15 They make jokes worse than ME!!


Minor Updates:

Sus Meter:

  • Create an internal memory object Memory() for each dummy instead of going with a traditional Db for making it optimized and fast
  • This memory stores all the information , (more that of the previous memory module),from major events such as sabotage to small events such as presence near a body

Let’s Talk:

  • Chat bar is moved from Static to Dynamic.
  • Now the Chats are stored to be feed to the AI

Major Update:

Added Crewmate feature

  • Made them run away from the one with high susmeter and stick with the ones with low sus meter, this time added industry standard raycasting + A* alogarithm + Radar pinging + Personal zone overlapping hybrid technique to find the best place to go to rather than going to some random place and getting stuck on the walls.

I make better joke than a 1B parametered AI:

  • Gave ability for ai to talk in rounds
  • they started to make jokes in one such random session (screenshots are attached)
  • installed 4 extremely light weight <1GB models for testing and prototyping they are as follows:
  1. smollm
  2. llama
  3. tinyllama
  4. qwen2.5
  • Connected them all with a character and let them chat for a while

STAY TUNNED FOR!!:

  • Letting AI create STATEGIES to win effectively
  • Giving users to select their own AI models
Attachment
Attachment
0
2025cs0291

Devlog #14 They FOUND me ! Now i am ejected 🪦


I am not a Ghost

  • Removed ghost feature due to bugs, will add them later
  • Rather than that decided to split the remaining work of the dead among others

Tasks master:

  • Previously the tasks were there but had no clear use to them
  • So added a central TaskManager is handles the tasks and checks if all
  • It has a simple yet reliable asthetics

democracy🦅🦅🦅:

  • Gave equal voting rights to all
  • THEN THEY DECIDED TO VOTE ME OUT!!!!

STAY TUNNED FOR!!:

  • Giving all the power and information to ai 🪦😈🪦
  • Creating a sus meter
Attachment
Attachment
0
2025cs0291

Devlog #13: I CANT HIDE !! (PLS HELP ME…)


They report me if i vented☠️

  • The visualZone that we previously seen was implied only to the player , now i extended it to the AI models too
  • With that power they constantly keep survialance over the viewable region of their (not everywhere)
  • This gives AI 2 powers that humans have:
  1. Reporting (on seeing a dead body)
  2. Calling Emergency meet (on seeing someone vent)

UPNEXT ON AMONG AI devlogs:

  • they now want the ability to kill others
  • Finally the winning & lossing logic
Attachment
0
2025cs0291

Devlog #12: THEY CAN RUN NOW ☠️☠️☠️!!

(this is the end hold your breath and count to ten…)

AIs started not run but chase me ☠️

  • Similar to how the AIs trace to any location using the A* algorithm , made them follow a person.
  • But the issue is you cant just calculate for 60 times per second!! (since it runs on 60fps)
  • Hence provided it with a simple cooldown timer
  • Also changed how the easyStar finds the path by increasing the tile count and disabling corner cutting

UPNEXT ON AMONG AI devlogs:

  • Make them do tasks (and eventually take your job away from you😈)
  • Make them kill & sabotage (i wonder can this model be implimented on real life😅)
Attachment
0
2025cs0291

Devlog #11: WALKING IS OUR RIGHT!!


AIs want to walk also ☠️

  • so made a module commandTowalk (ig) to make it walk to any location that they want around the map
  • So used the classic A* algorithm to make them find the best possible path , by subtracting the grids with walks/unwalkable objects
  • Even then they tried to go through the walks since that seemed optimal path for some reason , so i had to literally rename each location into sub-names such that there is no obstacles inside it
  • But also they should’nt violate the previously made memory method to store the location

UPNEXT ON AMONG AI devlogs:

  • make ai do the jobs (not yours) , ie the tasks on the ship to completelt act like an crewmate and actually help the team (unlike me who just goes to hackathon for eacting 😅)
Attachment
0
2025cs0291

Devlog #10: Let me steal your data (dont worry only game data 😅)


Let’s start from your movements

  • Provided the AI agents with a visualZone and it observes the people inside it
  • But my problem was that it sees at 60fps hence to solve that i implimented 2 things

Shifting: Added Shift() operator to check and shift whenever there are too many datas in the local data strucuture itself

Individual CoolDown time: if a person is seen within the recent 5 seconds it will wait before logging that data in , like that one friend who checks the fridge often like food is gonna spawn

Others Activity observation

  • we also measure (For how much time someone stays at a task) and what he did and where
  • is there any dead body or someone vented recently
Attachment
0
2025cs0291

Devlog #9 I AM GONNA START BACK , BACKEND (sht that’s a bad joke)


Highlighted Frontend features:

  • Engine & Environment: React-Phaser Shell configured, Map/Camera bound, Sprite Animations sliced, Custom Arrow Cursor applied, and 3 Bot Players spawned.
  • Atmosphere & UI: Fog/Darkness lighting engine, Mini-map tracking, Dynamic Role-based Icons, and SFX Sync .
  • Crewmate Mechanics: Proximity detection for Tasks/Emergency, interactive Task Pop-ups (Puzzles, and mini games), and Report sequences (placeOnCircle table reset + Chat UI).
  • Impostor Mechanics: Kill Zone targeting, Venting (Animation + Teleport), Cooldown Timers, and Sabotage (20-second Blackout + 20% Task Reset penalty)

STAY TUNNED FOR!!:

.- ai agents to control all the buttons

  • GIve AI agents all the data to create startegies
  • Let them Chat and lie (finally the evil ai)
Attachment
0
2025cs0291

Devlog #8: Only Noobs (definitely not me) will Vent & sabotage in Among AI


The “Killing Spot” Handshake

  • The Logic: When an Imposter interacts with a vent, the engine identifies a destination (a “killing spot”).
  • The Sequence: The player triggers a vent animation, the physics body is temporarily “shielded” to prevent movement glitches, and the character is teleported to the target coordinates.

The “Animation Shield” (State Machine)

  • I builded a state of art animation by downloading it from internet 😅

  • The Fix:

  • This was a headache for me,Honestly: This flag acts as a Logical Shield, preventing the update() loop from forcing the player back into a “Walking” frame while the “Venting” atlas is active. This resolved the Texture frame not found errors that occur when the engine tries to find a walking frame in a vent texture.

Sabotage: Dark-dark fruit

  • The Mechanism: When triggered, the BitmapMask Lighting Engine is overwritten. The light radius shrinks to a claustrophobic minimum, and the alpha is dropped to intensify the darkness.
    for 10 seconds

Context-Aware Input: The “Universal Spacebar”

One of the biggest UX improvements is the Dynamic Button Switching.

  • The Problem: Having separate keys for Use, Vent, and Sabotage feels cluttered.
  • The Solution: I implemented Input Overloading. The engine now constantly calculates which interactable is closest to the player , for people like me this makes me feel like i know a lot
Attachment
0
2025cs0291

Devlog #7: DOMAIN EXPANSION: New Zones & Tasks


The “Hula Hoop” Reach System

  • Kill Zone (200px): A wider radius for the Impostor’s high-stakes actions.
  • Interact Zone (150px): An invisible “hula hoop” that acts as the player’s reach.

By tracking these zones to the player’s coordinates in the update() loop, the game now possesses “Spatial Intelligence.” The USE button only wakes up when the interaction bubble intersects with the Tiled-harvested Task Groups.

Frame-Perfect UI Sync

  1. Reset: currentTask is cleared to null every frame.
  2. Physics: Overlaps are checked, potentially populating currentTask.
  3. Visuals: The UI reads the final verdict and updates the button’s alpha and interactivity.
    This ensures the player never experiences “input lag” when standing on a task.

Added Some kid’s Tasks

  1. Byte Animal detection
  2. Tic tac Too
  3. File Download
  4. Stone Paper Scissor (hard version :) )
  5. A small terminal
Attachment
Attachment
Attachment
Attachment
Attachment
Attachment
0
2025cs0291

Devlog #6: Meeting System & React Bridge

Meetings

  • Added emergency meeeting room using reactjs but triggered it with Phaser engine (it is interesting trust me :) )

The Hybrid UI (React + Framer Motion)

  • I used Framer Motion for spring-based animations & pop-ups

The Global Bridge (Data Contract)

  • Established a Data Contract where Phaser “scrapes” the game world—collecting player IDs, colors, and life statuses—and pipes them through a global window.triggerMeeting bridge. This allows React to render dynamic SVGs that perfectly match the WebGL shader colors in the game.

Optimisation

  • paused the game and reduced the game while meeting is going on
  • used Svg for dynamically changing color and save load
Attachment
Attachment
Attachment
0
2025cs0291

Devlog #5: Buttons & UI

hover & press tweens

  • Normal hover animations are not effective hence use tweens along with curves to ease it

Kill Zone(The Big Milestone)

  • this was the most challenging part since first i tried to calculate all the shortestDistance between all the characters and those had shortestDistance<150will be selected as targets
  • Then now after going through the phaser.js docs i came to realise i could create a much more efficient with the help of Zone property provided by the Phaser.js

The UI Bug

  • The in UI hovering & active and active states introduced a lot of problem
  • I finally resolved all of them with the help data manager feature provided by the phaser and created game objects buttons with Data property to create active state
Attachment
0
2025cs0291

Devlog #4: Engine Foundations, Advanced Shaders & UI

Atmosphere & Navigation

  • Dynamic Minimap: Created an anchored UI container featuring a scaled-down map and a green tracking dot that calculates mathematical ratios to follow the player in real-time.
  • Fog of War / Darkness: simulated a localized flashlight effect in pitch-black rooms.

Custom GPU Shaders (The Big Milestone)

  • Dummy Bot: Implemented a physics group of “Dummy”
  • WebGL RGB Masking: Bypassed standard tinting by writing a custom GLSL GPU Shader (RGBMaskPipeline). The shader reads a pure Red/Blue/Green base asset and mathematically replaces those channels with custom Hex colors at the pixel level.
  • Data-Driven Architecture: Refactored the shader implementation into a separate, DRY file (RGBShader.ts). Utilized Phaser’s Data Manager (setData/getData) to attach unique color preset “backpacks” to individual sprites, preventing shared-memory bugs.
  • UI Setted up the Base for the basic UI
Attachment
0
2025cs0291

Devlog #2 - Creation of maps & character assets

Updates:

  • tried creating assets from various platforms including multiple pixel maker , but fortunately found a repo with all the among us assets and sprites
  • Added them to the game and allowed some basic movement

Features:

  • movement

Future:

  • Make the map and the background complete first
Attachment
0
2025cs0291

Devlog #1 when the imposter is sus

WHAT IS AMONG AI?

Among AI : A game built from scratch to test popular AI model’s lying ability

Built using the powerful Phaser gaming engine , from the scratch up to render 2D graphics on top of reactJS and then added with the latest local LLM models such as gemma,ollama,gpt-4.1 and others to create a perfect pair on the backend to make the actions and strategies.

Phase 1:

  • Gathered all the stack and started coding
  • Complete basic movements on the map
  • create one character
Attachment
0