Интересная и глубокая настольная стратегия «Подводные города». Выглядит громоздко, но на самом деле правила довольно логичны и объясняются быстро. Конечно, игра не семейного типа, а для менее казуальных игроков.
По сюжету у человечества в будущем кончилось место на земле, и люди строят города-купола на океаническом дне. Нужно правильно распределять ресурсы и создавать себе работающую экономику. Каждый ход есть десятки комбинаций действий, адекватный уровень напряжённости между игроками, но при этом на мой взгляд механика совсем не грузит, потому что почти всегда несколько одинаково выгодных вариантов. У многих еврогеймов недостаток в том, что для эффективной игры нужно сидеть и просчитывать свой ход далеко вперёд, отнимая у всех время и нехило нагружая свою голову. Здесь этого почти нет.
Пожалуй, у игры могли бы быть компоненты получше. По современным меркам они простоваты и рисовка не слишком богатая. Но это частично исправляет дополнение. И в любом случае, игра искупает любые замечания своим интересом и сбалансированностью.
Советую тем, кто играет в настолки, но эту почему-то пропустил.
#games
🚀Обновление для WebView с упором на производительность и контроль
Вышла версия 1.15.0 библиотеки AndroidX WebKit (WebView). Главное изменение — повышение minSdk с API 21 до API 23 😁
🎯 Ключевые новые возможности:
⚡️ Ускорение загрузки
👉prerenderUrlAsync() — предварительная загрузка (prerender) страниц для мгновенного открытия.
👉Profile.preconnect()— предварительное установление соединения с origin.
👉Profile.addQuicHints() — подсказка WebView использовать протокол QUIC/HTTP3 для ускорения.
🔧 Больше контроля
👉setHyperlinkContextMenuItems() — кастомизация контекстного меню для ссылок.
👉 setBackForwardCacheSettings() — настройка Back/Forward кэша (таймауты, лимиты).
👉Profile.addCustomHeader() — установка кастомных HTTP-заголовков для запросов.
🔒 Безопасность и отладка
👉 Новый WebViewBuilder API для создания WebView с неизменяемой конфигурацией, что повышает безопасность при использовании addJavascriptInterface.
👉 Улучшенные API для отладки асинхронной инициализации WebView.
👉 Также возвращена отправка заголовка X-Requested-With, а старый API для его исключения помечен как deprecated.
#WebView#AndroidDev#Jetpack
🚀Вышел AndroidX WebKit 1.16.0. Забирай в работу интеграции
👉 minSdk поднят до 24 (Android 7.0) — учитывайте при апгрейде.
👉 Async-старт WebView вышел из experimental. startUpWebView вместе с ProcessGlobalConfig позволяют прогреть WebView в фоне до того как он понадобится UI. Эту штуку давно ждали в стабильной версии — для меня самое ценное обновление этого релиза.
👉 Navigation API тоже стабильный. Больше не надо @OptIn — addNavigationListener даёт колбэки на разных стадиях навигации, ошибку загрузки через Navigation.webResourceError, URL текущей страницы через Page. Главное — теперь FCP и LCP метрики прилетают напрямую из WebView без инъекции JS:
// Перед использованием проверь
// WebViewFeature.isFeatureSupported(WebViewFeature.NAVIGATION_LISTENER)
WebViewCompat.addNavigationListener(webView, object : NavigationListener {
override fun onFirstContentfulPaintMillis(page: Page, millisFromNavStart: Long) {
analytics.report("FCP", millisFromNavStart, page.url)
}
override fun onLargestContentfulPaintMillis(page: Page, millisFromNavStart: Long) {
analytics.report("LCP", millisFromNavStart, page.url)
}
override fun onNavigationCompleted(navigation: Navigation) {
navigation.webResourceError?.let { err ->
Log.w("WV", "load failed: ${err.errorCode}")
}
}
})
На один WebView можно вешать несколько листенеров и прокидывать свой Executor если нужны колбэки в фоновом потоке.
👉WebViewCompat.saveState теперь умеет ограничивать размер state. Если ловили TransactionTooLarge при сохранении состояния — это для вас.
👉 Подвезли addJavaScriptOnEvent для инъекции JS на загрузку документа и инъекцию скриптов в isolated worlds без конфликтов со страницей. Гибридным приложениям пригодится.
👉 [EXPERIMENTAL] BackForwardCacheSettings полностью переписали. Если использовали старый Builder через WebSettingsCompat.setBackForwardCacheSettings — ловите ошибку компиляции при апгрейде. Теперь так:
val settings = WebSettingsCompat.getBackForwardCacheSettings(webView.settings)
settings.setMaxPagesInCache(5)
👉Profile.setSpeculativeLoadingConfig депрекейтнут, замена через Profile.setMaxPrerenders плюс PrefetchCache.setMaxPrefetches и setPrefetchTtlSeconds (тоже experimental).
#Android#Webview#Web#AndroidDev
🤖Как использовать WebView с Edge-to-edge (EN,6м)
Разбор как встроить WebView в интерфейс приложения с поддержкой отображения на весь экран (Edge-to-edge). Рассматриваются варианты когда вы отображаете сторонние сайты и свой web контент, когда вы можете на уровне CSS добавить отступы
🔗Ссылка без VPN
#android#edgetoedge#android16#webview#compose