Розробка мобільної word-гри
Ви запускаєте свою першу словесну гру, тестуєте на Android — і через хвилину гравці скаржаться, що слово з восьми літер перевіряється півсекунди. На iOS кодування кирилиці дає збої, літера ё не розпізнається. Знайома ситуація? Ми вирішили її для 30+ проєктів за 10+ років. Оптимізація словникової бази Unity — ключовий фактор продуктивності. Неправильна реалізація словника — і гра гальмує або вилітає на 15% пристроїв.
Як Trie прискорює пошук слів?
Для російськомовних word-ігор словник — від 100 000 до 500 000 слів. Зберігати як список рядків у List<string> і робити .Contains() — O(n) пошук, 500ms на слабкому Android. Неприйнятно.
Правильна структура: Trie (префіксне дерево). Пошук слова — O(k) де k — довжина слова, зазвичай 3-15ms на будь-якому пристрої. Додатково Trie дозволяє знаходити всі слова із заданим префіксом — потрібно для підказок та автодоповнення.
Компактна реалізація в Unity через Dictionary<char, TrieNode>. Серіалізація в бінарний формат (MessagePack або власний) — завантаження словника 300K слів з бінарного файлу займає 200–400ms vs 2–3 секунди з JSON.
На Android — StreamingAssets з асинхронним завантаженням через UnityWebRequest.Get (обов'язково, оскільки прямий File.Read не працює з APK). На iOS — стандартний Resources.Load або Addressables. Trie
Порівняння підходів до зберігання словника
| Спосіб | Швидкість пошуку | Час завантаження 300K слів | Пам'ять |
|---|---|---|---|
| List |
500ms | 2-3 сек (JSON) | ~30 MB |
| HashSet |
100ms | 2-3 сек (JSON) | ~40 MB |
| Trie | 3-15ms | 200-400ms (бінарний) | ~20 MB |
Trie швидше списку в 50-100 разів і економить до 50% пам'яті — критично для мобільних пристроїв.
Як вирішується проблема кодування?
Кирилиця в Unity — UTF-16 рядки, все працює коректно. Проблеми починаються при роботі з символами: е та ё — різні символи, але гравці часто плутають. Потрібна нормалізація: при введенні е → перевіряємо обидва варіанти в словнику. Також: великі літери через char.ToLower() з CultureInfo.GetCultureInfo("ru-RU") — не ToLower() без аргументів. Детальніше про нормалізацію Unicode читайте в офіційній документації.
Як влаштований ввід літер?
Для scramble- та crossword-type ігор — кастомна клавіатура з Button компонентів на Canvas, не системна. Це дає повний контроль над layout'ом, haptics (Handheld.Vibrate() на Android, UIImpactFeedbackGenerator через iOS plugin), анімацією натискань.
Drag-to-select для Wordsearch та анаграм — IPointerDownHandler, IDragHandler з перебором GraphicRaycaster.Raycast по точках між попередньою та поточною позицією пальця кожен виклик IDragHandler.OnDrag.
Архітектура Trie
Базова структура вузла:
public class TrieNode { public Dictionary<char, TrieNode> Children; public bool IsEndOfWord; public TrieNode() { Children = new Dictionary<char, TrieNode>(); IsEndOfWord = false; } } Завантаження з бінарного словника через BinaryFormatter або MessagePack.
Типові помилки при розробці word-ігор
Нижче наведені поширені проблеми та їх рішення.
| Помилка | Наслідок | Рішення |
|---|---|---|
Використання File.ReadAllLines на Android |
Виліт додатку | UnityWebRequest з асинхронним завантаженням |
| Ігнорування літери «ё» | 20% слів не розпізнаються | Нормалізація з CultureInfo("ru-RU") |
Перевірка слів через ToUpper() |
Неправильна обробка кирилиці | ToLower() з локаллю |
| Відсутність офлайн-словника | Гра не працює без інтернету | Вбудований бінарний словник |
Процес роботи від ідеї до релізу
- Аналітика — вивчення конкурентів, збір вимог, вибір стеку (Unity + адресабельні словники).
- Проектування — прототип UI, архітектура Trie, схема мультиплеєра (якщо потрібен).
- Розробка — ітеративна реалізація: словник, геймплей, підказки, таблиці рекордів.
- Тестування — навантажувальне на словнику 500K слів, перевірка кодувань на реальних пристроях, включаючи кирилицю.
- Деплой — публікація в App Store та Google Play, налаштування CI/CD.
Що входить у роботу
- Архітектурна документація та опис словникової бази.
- Вихідний код під iOS та Android, зібраний в Unity.
- Налаштування CI/CD (GitHub Actions + App Center) для автоматичної збірки та викладання.
- Публікація в сторах (App Store Connect, Google Play Console) з дотриманням усіх гайдлайнів.
- Налаштування push-сповіщень через APNs та FCM, інтеграція in-app purchases (StoreKit 2 / Billing 6), підтримка ATT.
- Підтримка після релізу протягом 1 місяця (виправлення багів, оновлення словників).
- При необхідності реалізуємо багатокористувацький режим гри для змагань у реальному часі.
Зв'яжіться з нами, щоб обговорити ваш проєкт — оцінимо обсяг словника та підберемо оптимальну архітектуру. Замовте розробку вашої словесної гри — ми підготуємо архітектуру та оберемо оптимальний стек.
Гарантії
Ми гарантуємо, що ваш словник завантажуватиметься за частки секунди, а пошук слів — миттєвий. Наш досвід — понад 30 випущених проєктів та 10+ років на ринку мобільної розробки. Отримайте консультацію мобільного розробника з 10-річним стажем.







