Розробка мобільної word-гри
Словесні ігри — жанр, де основна технічна складність лежить не в графіці та не в фізиці, а в роботі зі словниками та алгоритмах пошуку слів. Неправильна реалізація словникової бази — і гра працює некоректно на 15% пристроїв через кодування, або тормозить при перевірці слова з 8 букв.
Словникова база: зберігання та пошук
Для російськомовних 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.
Кодування та Unicode
Кирилиця у Unity — UTF-16 рядки, все працює коректно. Проблеми починаються при роботі з символами: е (е) та ё (ё) — різні символи, але гравці часто плутають. Потрібна нормалізація: при введенні е → перевіряємо обидва варіанти в словнику. Також: великі букви через char.ToLower() з CultureInfo.GetCultureInfo("ru-RU") — не ToLower() без аргументів.
UI введення букв
Для scramble та crossword-type ігор — користувацька клавіатура з Button компонентів на Canvas, не системна. Дає повний контроль над layout'ом, haptics (Handheld.Vibrate() на Android, UIImpactFeedbackGenerator через iOS plugin), анімацію натискань.
Drag-to-select для Wordsearch та анаграм: IPointerDownHandler, IDragHandler з перебором GraphicRaycaster.Raycast по точкам між попередньою та поточною позицією пальця при кожному виклику IDragHandler.OnDrag.
Графік: word-гра з одним режимом та словником з 100K слів — 6–10 тижнів. З кількома режимами, щоденними завданнями, мультиплеєром — 3–5 місяців.







