HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Технические вопросы (https://hlfx.ru/forum/forumdisplay.php?forumid=20)
-- [iOS, Android] Нубские вопросы от XaeroX (https://hlfx.ru/forum/showthread.php?threadid=5064)
Отправлено XaeroX 25-04-2019 в 09:24:
AntiPlayer
Я не считаю Андроид подходящей платформой для игр, и с уважением отношусь к его черте сжигать ресурс аккумулятора за считаные часы.
Но андроид версия движка - это хорошая разминка для мозгов (т.к. это очень капризная платформа), плюс я полагаю, что мультиплеер может кому-то пригодиться. Даже выделенный сервер - зачем нагружать РС расчётами, если можно запустить его на телефоне, а с РС спокойно приконнектиться в режиме клиента и играть, тратя ресурсы исключительно на клиентские расчёты?
Кстати, в мульте графон вообще никому не интересен: все атцы сразу же отключают все эти красивые эффекты и хд-текстуры.
Добавлено 25-04-2019 в 16:24:
Но опять же - когда портируем на GLES2+, тогда и графон с шейдерами появится. Это задача с очень низким приоритетом, но она в принципе есть, да.
__________________
Отправлено Дядя Миша 25-04-2019 в 10:15:
Телефон вообще не для игр. Просто у многих была в детстве мечта погамать в дуум на калькуляторе и впоследствии она приняла такие извращённые формы.
Добавлено 25-04-2019 в 13:15:
У меня был первый телефон с потдержкой явы, это Siemens A65. В ём было целых 1.7 мегабайта памяти и я туда закачал каких-то игр, типо марио и принца персии и рубился целую неделю. А потом мне это надоело.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено thambs 25-04-2019 в 12:14:
Дядя Миша
Так рынок же порешал что для игорей.
__________________
http://www.moddb.com/mods/monorail-quest
Отправлено FiEctro 25-04-2019 в 13:22:
thambs
Если это можно назвать играми, в целом да, мобильный рынок выжил, но во что он мутировал лично мне смотреть до слёз больно. Делать какой то серьёзный проект на мобилы резона нет никакого вообще, а вот генерить по 5 штук в месяц всяких донатных кликеров с рекламой, если не прибыльно, то хотя бы в минус не уйдёшь.
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
Отправлено AntiPlayer 25-04-2019 в 14:32:
XaeroX
С одной стороны да, телефон не для игр. Даже скорее не для шутеров.
А с другой, пару месяцев назад я с удовольствием прошел на телефоне GTA: Vice City. Спасибо адаптированным управлению и сложности.
Цитата:
FiEctro писал:
но во что он мутировал лично мне смотреть до слёз больно
Есть очень классные проекты порты с ПК, крутые квесты, вроде Valiant Hearts или Monument Valley.
Цитата:
XaeroX писал:
все атцы сразу же отключают все эти красивые эффекты и хд-текстуры.
слежу за киберспортом и основными дисциплинами в нем. Типа вместо первого канала в фоне частенько играет. Никто давно ничего не отключает. Играют на максималках со 120fps.__________________
I tell you to enjoy life
Отправлено XaeroX 25-04-2019 в 16:16:
Цитата:
AntiPlayer писал:
Никто давно ничего не отключает. Играют на максималках со 120fps.
Может быть, нынче правила киберспорта запрещают что-то отключать? Для меня это новость, т.к. следить я за ним перестал году в 2006-м. Но факт в том, что на размытых текстурах и без эффектов удобнее замечать врагов. Вероятно, сейчас это тупо (прости, Дядя Миша!) приравнивают к читам. 
Добавлено 25-04-2019 в 23:16:
Цитата:
AntiPlayer писал:
А с другой, пару месяцев назад я с удовольствием прошел на телефоне GTA: Vice City. Спасибо адаптированным управлению и сложности.
Но зачем, если можно это сделать на РС с огромным дисплеем, удобной клавиатурой, и уж если что-то адаптировать там - так это управление РУ-вертолётом к джойстику. 
__________________
Отправлено Дядя Миша 25-04-2019 в 16:31:
Цитата:
thambs писал:
Так рынок же порешал что для игорей.
авечки там всякие? Ну это и раньше было. Это не игры, это таймшутеры или как правильно.
Цитата:
XaeroX писал:
Вероятно, сейчас это тупо

__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено EXL 25-04-2019 в 20:02:
Цитата:
XaeroX писал:
Товарищи эндэкашники, а на Андроид какой версии вы обычно таргетируете свой код?
14 или 16-ой.
Цитата:
XaeroX писал:
т.к. хочу собирать 64-битные бинарники, а это кажется только на 21 апи возможно (в 16-м тулчейне я не вижу кланга для arm64).
Такого быть не должно, я собирал 64-битные библиотеки ещё на Android-9, лет пять назад. Кросс-компиляторы там должны быть общие, а сам Target Platform для NDK влияет лишь на доступность определённых API в поставке:
https://developer.android.com/ndk/guides/stable_apis
То есть если ты соберёшь с API_LEVEL=26 (Android 8.0), это не значит что у тебя приложение не будет работать на 5.1; можешь проверить сам. По-крайней мере у меня приложение с высоким уровнем NDK API работает без проблем на древнем Android 2.3.3.
Добавлено 25-04-2019 в 23:02:
P.S. сейчас проверил, Android NDK (ndk-build и CMake) при platform-9 автоматом линкует 64-битные библиотеки из platform-21.
Отправлено a1batross 26-04-2019 в 09:33:
> (т.к. это очень капризная платформа)
Смотря как ты к этому относишься. Если уровня позапускать в эмуляторе и на личном/жены/мамы/и т.д. устройстве, то скорее всего тебе оно не покажется капризной. А когда твой движок будет запущен на нескольких тысяч устройств, а то и больше миллиона -- писать под андроид разхочется.
Опыт собственный, да.
> P.S. сейчас проверил, Android NDK (ndk-build и CMake) при platform-9 автоматом линкует 64-битные библиотеки из platform-21.
Так официальный порт на 64 бита примерно тогда и появился. Где-то с Android 5.0.
Отправлено XaeroX 26-04-2019 в 10:45:
Цитата:
a1batross писал:
Если уровня позапускать в эмуляторе и на личном/жены/мамы/и т.д. устройстве, то скорее всего тебе оно не покажется капризной.
Ну хз, мне и на этом уровне она кажется капризной.
Особенно эта мерзкая чувствительность к выравниваниям.
Цитата:
a1batross писал:
Так официальный порт на 64 бита примерно тогда и появился. Где-то с Android 5.0.
Я понимаю, да, 5.0 и апи левел 21.
Вопрос - если я соберу armeabi-сошки с апи левелом 21, они запустятся на устройствах с апи левел 16? Или надо непременно собирать 32-битные сошки с апи левелом 16, а 64-битные - тулчейном 21-го левела?
Вы тут постоянно про какие-то ndk-build и CMake пишете, но у меня полностью самописная билд-система (а лучше сказать - геганцкий мейкфайл под все оси, который умеет собирать всё от Qt-ехешника vfont под винду до жавовского classes.dex под андроид), поэтому мне нужны конкретные названия бинарников и конкретные флаги компиляции. Это хард-мод, я знаю, но я терпеть не могу зависеть от чужих библиотек/систем сборки/прочей херни, которая меняется внезапно и без предупреждения.
С armeabi я разобрался, всё отлично собирается и работает с тулзами из platform-16, а вот с arm64/aarch64 пока никак.__________________
Отправлено a1batross 26-04-2019 в 11:24:
XaeroX
Цитата:
Особенно эта мерзкая чувствительность к выравниваниям
Это так только ARM и только в отношении float-ов. Которыми любой игровой движок пропитан, так что... крепись. 
Цитата:
Вопрос - если я соберу armeabi-сошки с апи левелом 21, они запустятся на устройствах с апи левел 16? Или надо непременно собирать 32-битные сошки с апи левелом 16, а 64-битные - тулчейном 21-го левела?
Запустятся ровно до тех пор, пока ты не юзаешь какие-то специфичные для новых апи левелов фичи. Как с жавой. Таргет выше, а реальный минимум определяется только вызываемыми функциями/методами.
Цитата:
но я терпеть не могу зависеть от чужих библиотек/систем сборки/прочей херни, которая меняется внезапно и без предупреждения
ХАХА. Я тоже! 
Я для Android NDK писал плагин для Waf. Можешь посмотреть тут, как примерный ориентир: https://github.com/FWGS/xash3d-fwgs...lib/xcompile.py. Если недостаточно, объясню в подробностях. Можешь и в тг написать.
Для Android SDK я тоже, но думаю ты не станешь заморачиваться, чтобы собирать жавовую часть мейкфайлами. Но если хочешь, могу тоже объяснить как APK собираются из под консоли.
Цитата:
а вот с arm64/aarch64 пока никак
Если уже разобрался сам, то вообще достаточно выбрать тулчейн(он в папке toolchains лежит), сисрутом указал сисрут из platform-21 и вперёд.
Как с clang-ом я не шарю, там вроде вообще один компилятор на все платформы и может достаточно указать триплет в сифлагах.
Отправлено XaeroX 26-04-2019 в 11:33:
Цитата:
a1batross писал:
Это так только ARM и только в отношении float-ов.
Представь себе - не только в отношении float-ов. 
У него шорт должен быть строго выровнен по 2-м байтам, дабл по 8-и и так далее.
Я только в арм собираю под андроид, т.к. у меня нет х86-устройств, да и вообще - они сейчас широко распространены?
Цитата:
a1batross писал:
пока ты не юзаешь какие-то специфичные для новых апи левелов фичи
Я вообще ничего специфичного не юзаю, это ведь те же сошки, что собираются под другие оси, ну плюс несколько андроид-специфичных функций типа записи лога. Я не использую никаких native app glue, т.к. не стремаюсь немного и на джаве пописать.
Мне интересно, не насуёт ли туда чего-нибудь компилятор? Выше в этой теме уже выяснили, что он мне неон засунул, потому что я забыл его явно попросить этого не делать.
Цитата:
a1batross писал:
но думаю ты не станешь заморачиваться, чтобы собирать жавовую часть мейкфайлами. Но если хочешь, могу тоже объяснить как APK собираются из под консоли.
Я же написал - это всё уже в нашей инфраструктуре есть.
Да, у меня джава собирается мейкфайлами там же, где и плюсовый код. Команды простые, javac да dx. Апк у меня собирается aapt-ом, подписывается и устанавливается на устройство через питоновский скрипт. Тоже ничего сложного. Сложности главным образом в параметрах, которые нужно скормить клангу, ну и вот в платформе. На 16-й платформе кланг не понимает архитектуру aarch64.
Цитата:
a1batross писал:
то вообще достаточно выбрать тулчейн(он в папке toolchains лежит)
Я обычно генерю тулчейн через make_standalone_toolchain, но мысль понятна, да.__________________
Отправлено a1batross 26-04-2019 в 11:38:
XaeroX
Цитата:
Я обычно генерю тулчейн через make_standalone_toolchain, но мысль понятна, да.
Мне так влом делать. Я даже к Source SDK когда-то прикрутил именно Android NDK вместо standalone toolchain. При чём тут Source SDK? Та я ковырял порт HL2 на тегру. 
Цитата:
Команды простые, javac да dx. Апк у меня собирается aapt-ом, подписывается и устанавливается на устройство через питоновский скрипт. Тоже ничего сложного
Ну aapt уже deprecated, dx тоже может быть выкинут в пользу d8. Но пока можно поставить билдтулзы постарее -- можно не заморачиваться.
Цитата:
они сейчас широко распространены?
Никогда не были. Но больше не будет -- интел ушёл с мобильного рынка. Только ради эмулятора можно.
Отправлено XaeroX 26-04-2019 в 11:41:
Цитата:
a1batross писал:
Можешь посмотреть тут, как примерный ориентир
Спасибо. Получается, для arm64 не нужно передавать ни arch, ни mfloat-abi?
Ещё пара нубских вопросов:
1) Насколько hard быстрее softfp? Есть ощутимая разница?
2) В интернете тоже находил "-Wl,--fix-cortex-a8", но добавлять не стал. Насколько этот фикс актуален в 2к19-м?
Добавлено 26-04-2019 в 18:41:
Цитата:
a1batross писал:
Ну aapt уже deprecated
Ну там можно даже простым pkzip-ом собирать, в принципе, разве нет? Я видел, некоторые так делают. Это ж обычный зип-архив.
Из тонкостей - только "правильные" слеши в путях (ещё один каприз андроида).__________________
Отправлено a1batross 26-04-2019 в 11:50:
XaeroX для AArch64 я думаю необязательно передавать -march или -mfloat-abi. Все AArch64 устройства умеют hardfp. Ну и arch пока не несёт значения, arm64 всё же молод.
1) Для Ксаша было быстрее. Но hardfp deprecated в новых NDK(неосилили, лол), так что на свой страх и риск. Разница в том, что придётся некоторые вызовы оборачивать aapcs атрибутом(при обращении к softfp библиотеке) и вместо libm, линковаться к libm_hard.
2) От неё ни холодно, ни жарко. Cortex-A8 вероятность встретить сильно меньше, чем A9 или A7. Но можно оставить, так как для других никакого эффекта нет.
Добавлено 26-04-2019 в 14:45:
Цитата:
XaeroX писал:
ещё один каприз андроида
Я думаю Linux как такового. 
Цитата:
XaeroX писал:
Ну там можно даже простым pkzip-ом собирать, в принципе, разве нет?
Я так и делаю, да. aapt2 теперь просто генератор R.java и компилятор ресурсов. И начальный APK он тоже создает.
Добавлено 26-04-2019 в 14:50:
Да, пример где надо aapcs атрибут добавлять -- вызовы OpenGL. libGLES он всё же в softfp.