Syntax (Occult Hangman)

Category: Word Game / Input Experiment
Engine: Unity (C#), Android APK
Itch.io: thyarcanist.itch.io/void-os


The Gimmick

Play Hangman by typing ASCII binary. Select a letter by entering its 8-bit binary representation (e.g., 01100001 for ‘a’). That was the one goal, and it works. Everything else — the VoidOS aesthetic, the decryption progression, the store, the multiple input modes — grew from that single premise.


Input Modes

Three ways to guess letters, switchable at any time via InputManager.cs:

Binary Input (BinaryDictionary.cs)

The core system. Two dictionaries map every letter (A-Z, a-z) to its 8-bit ASCII binary string. The player accumulates 0s and 1s up to 8 digits. A 20-second inactivity timer resets input for accessibility. On submit, GetMatchedKey() resolves the binary string to a character and passes it to the Hangman engine.

BinaryInformationManager can display the full letter-to-binary reference table. The game does not require memorization, but rewards it.

T9 Numpad (NumberPadManager.cs)

Classic phone-style multi-tap input. Keys 2-9 map to letter groups (2=ABC, 3=DEF, etc.). # submits, * clears. Input up to 4 characters for multi-letter keys (e.g., 222 = C). Resolved via letterMapping dictionary.

Standard Text

Direct keyboard input. Submit on Enter. The baseline mode for players who want traditional Hangman.


Hangman Engine (Hangman.cs)

Extends abstract GameMode with singleton persistence (DontDestroyOnLoad).

Difficulty

Three tiers (Easy, Normal, Hard) with configurable lives, guesses, and solve time per word. Ironman mode shares lives across all words in a session with bonus lives every N words solved.

Word Selection

Words pulled from theme-based dictionaries via DictionaryManager. Excludes already-solved and already-used words to prevent repeats within a session.

Guess Processing

Single-letter regex validation. Duplicate guesses ignored via HashSet. Correct guess reveals all matching positions. Incorrect guess decrements remaining guesses. Zero guesses costs a life (Ironman) or fails the word (non-Ironman).

Economy

Amagus earned per action:

Win streak multiplier means consistent play compounds rewards. Streak resets when lives deplete.


VoidOS Aesthetic

Boot Sequence (BootSequence.cs)

Simulated OS boot with character-by-character text output:

  1. “Alerting Processes…”
  2. “Booting: VoidOS” (or “VXXX.SO” if no profile)
  3. “ALERT! CORRUPTION FOUND” (if new user)
  4. “Initiating sub-routine: Transdimensional Signal…”
  5. User profile status check
  6. “Running protocol: Unknown entity detection…”
  7. “T.O.B.I alert status: INACTIVE”

Extra 2-second pauses after lines 5 and 7 for dramatic emphasis. Post-boot initializes the app launcher and decryption bar.

App Launcher

GameModeManager.cs manages the app grid. UpdateAppStates() walks child objects and enables only apps whose App.IsUnlocked() returns true. Apps unlock through progression (decryption integrity, tutorial completion, store purchases).


Decryption Progression (NodeDecryptionManager.cs)

A meta-progress bar representing “OS integrity” from 0.999 to 100. Correct guesses and solved words increase integrity. When integrity reaches the threshold (70), the Helbatch app unlocks.

This is the long-term goal that ties individual Hangman sessions to a larger narrative frame. Every correct guess is not just solving a word — it is decrypting the OS.


Binary Memorization Mode (BinaryMemorization.cs)

A separate GameMode for practicing letter-to-binary mappings. 60-second timer. Random binary strings are displayed; the player types the 8-bit representation. Correct answers add time. Per-letter performance is tracked in PlayerData.BinaryMemData for identifying weak spots.

This mode exists because binary input has a genuine learning curve. Rather than forcing players to reference the table during Hangman, this mode lets them drill the mappings separately.


Store System (StoreManager.cs)

In-app store for themes and dictionaries. Currency is Amagus earned from Hangman. StoreBlockManager builds the catalog from DictionaryManager._allDictionaries. Each dictionary and theme has its own price and unlock state. Purchases persist via Easy Save 3.


Player Profile (PlayerData.cs)

ScriptableObject persisted via ES3:

FieldPurpose
agentProxyIDUnique player identifier
amagusSoft currency
currentLevel / currentExpXP progression (max level 500)
winStreak / highestWinStreakSession performance
sessionsCompleted / sessionsFailedLifetime stats
BinaryMemDataPer-character correct/incorrect counts
unlockedBinaryInput / unlockedStoryFeature gates

XP curve is configurable via DefaultXP with expCurve, initialExpNeeded, and maxLevel parameters.


Game Modes

ModeDescription
ArcadeStandard Hangman with difficulty selection
StoryNarrative-wrapped Hangman (unlockable)
TutorialCycles through all three input modes (text, numpad, binary) per word
Binary MemorizationTimed binary drilling

TutorialHangman specifically forces input mode rotation via SetInputMethod(inputMethodIndex), ensuring new players experience all three input systems before choosing a favorite.


What This Proved

Binary input works as a Hangman mechanic. The 8-bit constraint turns every guess into a micro-puzzle within the macro-puzzle. The VoidOS wrapper gives the gimmick a reason to exist narratively, and the decryption progression gives it long-term pull. The total development time was under a month, with most of that spent on the binary input system itself.