🇬🇧 English • 🇹🇷 Türkçe • 🇦🇿 Azərbaycanca • 🇷🇺 Русский • 🇪🇸 Español
Ink & Irony is a premium, beautifully crafted iOS word-guessing game (Hangman-style) built entirely with SwiftUI and SwiftData. It offers a unique "hand-drawn sketchbook" aesthetic, complete with dynamic jittery ink animations, immersive haptics, and a brutal offline taunting system that reacts to every mistake you make.
- Dynamic UI: Custom
Shapeextensions create jittery, layered stroke animations that simulate real pen-on-paper drawing. - Theme Engine: Advanced
ThemeManagersupporting both Light Mode ("Aged Parchment") and Dark Mode ("Charcoal Sketch") with semantic design tokens (inkPrimary,errorInk, etc.). - Custom Typography: Integrated tailored fonts (
Caveat,Special Elite,Courier Prime) to mimic handwriting and typewriter stamps.
The game is fully localized using a custom LocalizationService, allowing players to experience the UI and the gameplay in:
- 🇺🇸 English
- 🇹🇷 Turkish
- 🇦🇿 Azerbaijani
- 🇷🇺 Russian
- 🇪🇸 Spanish
A robust WordRepository manages thousands of localized words split across specific offline JSON dictionaries.
- Difficulty Levels: Easy, Medium, Hard, Nightmare.
- Categories: Animals, Science, History, Technology, Anatomy, Abstract Vocabulary, and more.
- Savage Taunts: A mock offline AI (
TauntService) delivers brutal, context-aware insults based on your language, difficulty, and the number of mistakes you've made. - AVFoundation & CoreHaptics: Every action is accompanied by realistic paper tears, pencil snaps, pen scratches, and precise tactile pulses.
- Game Sessions: Every win or loss is persistently stored using iOS 17's SwiftData.
- Leaderboard View: Filter your past performances by language to see your highest scores, filtered dynamically using
@Query. - Streak Tracking: Tracks current and all-time highest winning streaks.
- Framework: SwiftUI
- Database: SwiftData
- Architecture Pattern: MVVM (Model-View-ViewModel) + Services (
AudioService,HapticService,TauntService,WordRepository). - Data Format: Decodable JSON for dictionaries and taunts.
- Minimum iOS Version: iOS 17.0+ (Due to SwiftData and Observation frameworks).
Ink/
├── App/ # App entry point, Main Menu (ContentView)
├── Core/ # Models (Language, Difficulty, Word, GameSession) & LocalizationService
├── UI/ # SwiftUI Views (GameView, Setup, Leaderboard, ResultScreen, Sub-components)
├── Services/ # Business Logic (Audio, Haptics, Taunts, Word Repository, ScoreManager)
└── Resources/ # Locale-specific JSON dictionaries and Audio/Font assets
- Clone or download the repository to your local machine.
- Open
Ink.xcodeprojin Xcode 15 or later. - Select an iOS Simulator or a physical device running iOS 17.0+.
- Hit Cmd + R to build and run the application.
Note: If you are running on a simulator, CoreHaptics feedback will be silently ignored, but audio and visual animations will still function perfectly.
Created by Cavid Abbasaliyev
If you have any questions, feedback, or just want to say hi, feel free to reach out:
- Email: abbas3liyev@gmail.com
- LinkedIn: Cavid Abbasaliyev
