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:
- Correct letter guess:
0.001 * (winStreak + 1) - Solved word:
0.02 * (winStreak + 1)
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:
- “Alerting Processes…”
- “Booting: VoidOS” (or “VXXX.SO” if no profile)
- “ALERT! CORRUPTION FOUND” (if new user)
- “Initiating sub-routine: Transdimensional Signal…”
- User profile status check
- “Running protocol: Unknown entity detection…”
- “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:
| Field | Purpose |
|---|---|
| agentProxyID | Unique player identifier |
| amagus | Soft currency |
| currentLevel / currentExp | XP progression (max level 500) |
| winStreak / highestWinStreak | Session performance |
| sessionsCompleted / sessionsFailed | Lifetime stats |
| BinaryMemData | Per-character correct/incorrect counts |
| unlockedBinaryInput / unlockedStory | Feature gates |
XP curve is configurable via DefaultXP with expCurve, initialExpNeeded, and maxLevel parameters.
Game Modes
| Mode | Description |
|---|---|
| Arcade | Standard Hangman with difficulty selection |
| Story | Narrative-wrapped Hangman (unlockable) |
| Tutorial | Cycles through all three input modes (text, numpad, binary) per word |
| Binary Memorization | Timed 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.