Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DEAD HAND

English | 한국어

A mobile-first prison poker roguelike built with React, TypeScript, PixiJS, and Vite.

You are an inmate fighting your way through a rigged prison hierarchy. Read your opponents, manage a single stack of coins, bend the rules with limited-use skills, and survive heads-up Texas Hold'em matches where bankruptcy means defeat.

The project began as a blackjack prototype. A few internal paths and class names still use blackjack, but the current game is Texas Hold'em.

Screenshots

Title

DEAD HAND title screen

Story match

DEAD HAND story opponent screen

Features

  • Heads-up Texas Hold'em with preflop, flop, turn, river, folding, raising, showdowns, and split pots
  • Eight story opponents with portraits, tells, traits, and match-specific house rules
  • Poker AI influenced by hand strength, pot odds, board texture, aggression, bluffing, tilt, and composure
  • Roguelike progression with rewards and a limited cheating-skill loadout
  • Story and Endless modes
  • A portrait 9:16 interface with pixel-art characters, prison backdrops, animated cards, and chips
  • Web, Android (Capacitor), and Apps in Toss build targets
  • Korean, English, Japanese, and Simplified Chinese UI

Tech stack

  • React 18 and TypeScript
  • Vite 6
  • PixiJS 8
  • Capacitor 8
  • Apps in Toss Web Framework
  • i18next

Getting started

Requirements

  • Node.js 24 or later
  • npm

Node.js 24 is required by the current Apps in Toss toolchain.

git clone https://github.com/rapina/dead-hand.git
cd dead-hand
npm ci
npm run dev

Open the local URL printed by Vite.

Commands

npm run dev              # Start the Vite development server
npm run build            # Type-check and create a production web build
npm run preview          # Preview the production build

npm run android:build    # Build and sync an Android debug app
npm run android:install  # Install the debug APK on a connected device
npm run android:release  # Create a signed release AAB

npm run toss:dev         # Start the Apps in Toss development server
npm run toss:build       # Build the Toss AIT artifact

Android release builds require a local android/keystore.properties file and keystore. Both are intentionally excluded from Git.

Project structure

src/
  game/blackjack/   Poker runtime and rules (legacy directory name)
  components/       Game table, overlays, tutorials, and shared UI
  screens/          Title, story, shop, codex, ranking, and cutscenes
  assets/           Portraits, scenes, UI art, and store assets
  ads/              Web, Toss, and AdMob adapters
  iap/              Entitlements and platform purchase adapters
  platform/         Platform-specific integrations
  i18n/             Localized UI and dialog

android/            Capacitor Android project
scripts/            Asset generation and build helpers
GDD.md              Canonical game design document

Game loop

Choose a mode
  -> meet an opponent
  -> play a heads-up Hold'em match
  -> bankrupt the opponent
  -> choose a reward or skill
  -> face the next prisoner

Coins are your stake and survival resource. Antes and bets move into the pot, and the winner takes it. A run ends when your stack reaches zero.

Configuration and secrets

The repository does not include production credentials, signing keys, or local environment files.

  • Copy credentials into local environment files only when needed.
  • Keep .env*, Android keystores, keystore.properties, and service-account files out of Git.
  • The asset-generation scripts read GEMINI_API_KEY from the environment.

Contributing

Issues and pull requests are welcome. Please run npm run build before submitting a change. Update GDD.md when changing game mechanics, balance, progression, or monetization behavior.

When working in the legacy src/game/blackjack/ directory, use poker terminology in new code and documentation.

License

No open-source license has been selected yet. The source is publicly available, but reuse and redistribution rights are not granted until a license is added.

About

A prison-noir Texas Hold’em roguelike built with React, TypeScript, and PixiJS.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages