Brackeys Game Jam 2026.2 · Trust No One

Shuddap

A three-player social-deduction card game based on Bullshit, where talking becomes part of the rules.

Role
Gameplay Programmer · Game Designer · Systems / Dialogue Implementation
Team
3 people
Engine
Unity / C# · Python Prototype
Time
1 week
Result
Voting in progress

My Work

AI & Systems Design

I designed Bruce and Sal's decision model, personality weights, trust, public-information reasoning, strategic lying, manipulation, memory, and longer-term social behaviors around asking, passing, and calling Shuddap.

Gameplay Programming

I prototyped and simulated the game in Python, then built the final Unity implementation around one game state, reproducible AI decisions, card rules, turn flow, and presentation events.

Character & Presentation

I wrote and implemented contextual dialogue, character reactions, camera focus, card presentation, lighting, UI feedback, and adaptive music so the AI's internal decisions read as two distinct people at the table.

Strategic Social AI

Lying should be a strategy, not a probability.

Conversation had to change the actual game. I did not want a random “honesty chance” or one suspicion threshold. The AI first judges how believable a claim is, then decides whether asking, passing, or calling Shuddap is the best move for that character.

Every decision uses only information that an opponent could actually know: their hand, the current claim, public card counts, table talk, remembered reveals, and public outcomes. Hidden cards resolve a reveal, but Bruce and Sal cannot read them while choosing a move.

Both characters share the same decision system. Five personality weights and a few situational behaviors push it in different directions, so Bruce can be reckless without being random and Sal can be calculating without simply knowing the right answer.

Bruce

The Instigator

Pushes the pace, accepts more personal risk, and spends credibility for immediate advantage.

Calculation0.45
Boldness0.90
Tempo0.90
Manipulation0.60
Reputation0.40
  • Catch-Up Aggression Falls behind → bluffs bigger and takes more direct risks.
  • Cooldown Gets caught repeatedly → temporarily backs off.
  • Retaliation Remembers pressure and pushes back against the player who caused it.

Sal

The Manipulator

Protects credibility, plays a longer game, and prefers making somebody else take the dangerous call.

Calculation0.95
Boldness0.30
Tempo0.40
Manipulation0.90
Reputation0.90
  • High-Pile Manipulation Large pile → probes and misleads instead of taking the call himself.
  • Protect the Lead Close to winning → becomes more conservative about risky calls.
  • Repair Credibility Gets exposed lying → temporarily gives more useful truthful information.

AI Balancing

The smartest AI was not the most fun.

The difficult part was not making Bruce and Sal better at the game. It was making them smart enough to follow, flawed enough to exploit, and consistent enough that the player could learn their personalities. Their mistakes had to feel like character, not a hole in the logic.

A perfectly rational opponent worked against the social game I wanted. Bruce needed room to overcommit and burn credibility; Sal needed to feel calculated without becoming an opponent who always knew the right answer.

I treated recognizable behavior as the real balance target. The player should be able to notice that Bruce is getting desperate, expect Sal to protect a lead, bait either of them into the wrong decision, and understand afterward why the AI chose the move it did.

Simulation & Tuning

Once the target behavior was clear, I needed a faster way to see whether tuning changes were actually preserving it.

Python simulation output tracking Bruce and Sal's bluffing, Shuddap calls, manipulation attempts, strategy activations, trust, and other social behavior across 100 simulated games
100-game tuning batch from the Python prototype.

Manually finishing every test game in Unity was too slow, so I built a Python simulation that could run 100 complete games for each tuning pass. It tracked wins and losses, bluffing, Shuddap decisions, manipulation attempts, strategy activations, trust, and how the relationships shifted across a match.

I could adjust the weights, run another batch, and see whether Bruce was becoming too cautious or Sal too direct. The simulation exposed broad patterns; hands-on games then checked unusual decisions, conversation edge cases, and whether those patterns were actually readable and fun.

Character & Dialogue

A correct AI decision was not enough. They had to feel real.

Bruce and Sal already behaved differently internally, but generic reactions made those decisions feel mechanical. I wrote for situations their systems could actually create: exposed lies, manipulation, remembered cards, damaged trust, retaliation, and character-specific mistakes.

Many reactions are assembled from smaller authored sentence functions instead of one fixed line. A response can combine [Wait], [Accuse], and [Call]; three variants of each produce 27 combinations with the same gameplay meaning.

Specific moments still get specific lines, and priority rules stop several technically correct reactions from firing at once. The goal was variety without making the game pause to explain every system underneath it.

[Wait] + [Accuse] + [Call]

[Wait]

“Hold up.”

“Wait!”

“Hm.”

[Accuse]

“I don't trust you, Bruce.”

“Bruce, you need to stop lying.”

“Bruce, this just can't be true.”

[Call]

“I'm going to call Shuddap.”

“I'm calling it.”

“Shuddap!”

3 × 3 × 3 = 27 possible sentences from this structure alone, such as: “Hold up. I don't trust you, Bruce. I'm going to call Shuddap.”

Other Systems

Supporting technical and presentation work.

These systems support the three stories above without needing full case-study sections of their own.

Audio Systems Adaptive Music
Change the score with the active player and how close someone is to winning.
Problem

A static track could not reflect whose turn was controlling the table or the growing pressure as someone approached zero cards.

Solution

Dirk Dammit and I designed an adaptive music system around synchronized character themes and shared percussion layers. The active player determines which character theme is forward in the mix, while card counts add intensity and switch to an about-to-win version near victory.

Why it matters

The soundtrack follows the same information the player is already reading at the table, so turns and late-game pressure feel different without stopping or restarting the music.

Game Feel / Feedback Shuddap Reveal & Consequence
Make the game's biggest decision land as one readable table event.
Problem

Calling Shuddap is the highest-risk action in the game. Simply flipping the cards and changing a number made the result feel smaller than the decision that caused it.

Solution

I tied the result into one presentation event: the cards reveal, the camera and lighting focus the confrontation, success/failure audio reflects the outcome, the loser takes the pile, and the dialogue reacts after the mechanical result is clear.

Why it matters

Cards, sound, lighting, camera, and dialogue all communicate the same result, so the player never has to decode which side actually won the exchange.

AI / Game Logic Keeping Public Information Consistent
Let the opponents catch impossible stories without reading hidden cards.
Problem

During testing, Bruce could say he held all four Aces immediately after another player claimed an Ace, then continue the conversation instead of reacting to the impossible total he had just created.

Solution

I added checks around the card counts shared at the table. Bruce no longer casually creates a self-proving contradiction; if a later statement pushes the public total over four, the characters can recognize the math and respond to it directly.

Why it matters

Conversation remains real game information. An impossible count can become a character moment — Sal can call out the math, Bruce can shrug it off — without either opponent needing access to hidden cards.

Result

Voting

still in progress

Shuddap was built in one week by a three-person team for Brackeys Game Jam 2026.2. Voting is still open, with 33 ratings so far, so the final placement and category rankings are not available yet.

Early feedback has centered on the parts I cared most about: distinct opponents, meaningful table talk and double-bluffing, and presentation that makes the table feel cohesive. Before the rankings are final, the useful signal is that the social layer is reading as gameplay rather than decoration.

Play Shuddap ↗

Team

Shuddap was a three-person jam game. Pro899 built the character and table art, Dirk Dammit created the audio, and I designed and implemented the game around that work.

Characters + Animation + Props + Card Art

Pro899 ↗

Pro created Bruce and Sal, their character animations, the furniture, and the card art that established the physical table and characters the game is built around.

Music + Audio

Dirk Dammit ↗

Dirk created the game's audio. We worked together on the adaptive music design, building it around whose turn is active and how close each player is to winning; I then implemented the synchronized theme and intensity system in Unity.

Programming + Game Design + Implementation

Harrison Alonso

I did all programming, game design, AI and dialogue systems, UI/camera/gameplay implementation, and the integration tying the team's art and audio into the final game. I also created the poster and game-page art.

Reflection

I started Shuddap because I wanted digital opponents who could participate in the table talk I had always added to the physical game. Building it taught me that good game AI is not about making every opponent as smart as possible. Bruce and Sal became more fun when their roles were designed around each other to create the experience I wanted: a messy, untrustworthy table where they argue, bait each other, lie to the player, and sometimes get tricked themselves. Letting Bruce make believable reckless choices and Sal manipulate situations was often better than giving either of them the optimal move. If an irrational decision fits the character and creates better drama for the player, it can be better AI than the “smart” decision.

Bruce and Sal sitting across the table during a game of Shuddap
Next Project Train Track Trouble →