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
#30 Overall / 2,251 entries

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.

Lying should be a strategy, not a probability.

Strategic Social AI

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.

The smartest AI was not the most fun.

AI Balancing

The hard part was making them wrong in believable ways. Bruce needed to overcommit sometimes, while Sal needed to feel calculating without always making the correct call.

I balanced Bruce and Sal around whether players could recognize their habits. A player should notice Bruce getting desperate, expect Sal to protect a lead, and use those patterns to bait them into bad calls.

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.

Their dialogue had to reflect the decision behind it.

Character & Dialogue

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. When several reactions fit, priority rules choose which one plays.

[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.

Adaptive music, camera focus, result feedback, and public-card checks helped players follow what was happening at the table.

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.

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.

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.

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

Brackeys Game Jam 2026.2 ↗

#30

Overall out of 2,251 entries

#9 Gameplay#17 Enjoyment#23 Theme#56 Audio

Shuddap was built in one week by a three-person team for Brackeys Game Jam 2026.2. It placed #30 overall out of 2,251 entries, based on 40 ratings, with Gameplay placing ninth.

Players have responded most to Bruce and Sal feeling different and to the amount of lying and double-bluffing at the table. They are using the conversation to make decisions instead of treating it as flavor text.

Play Shuddap ↗ Full jam results ↗

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 changed how I think about game AI. Bruce became more fun when I let him make reckless decisions, and Sal became more convincing when he manipulated the table without always finding the optimal move.

Bruce and Sal sitting across the table during a game of Shuddap
Next Project Biscuit Bandits →