Как перенести игру с андроида на компьютер
Перейти к содержимому

Как перенести игру с андроида на компьютер

  • автор:

Сорвите куш. Играйте в игры для Android на ПК.

What is Android on PC?

Превратите ваш ПК в мощное устройство для игр на Android

reason1

Большой монитор и непревзойденная графика

Наслаждайтесь каждым элементом графики любимой игры на вашем компьютерном мониторе, который превосходит по детализации маленькие экраны телефонов

reason1

Дорогие смартфоны вовсе не обязательны

Играйте на обычном ПК в игры, которые предъявляют высокие требования к характеристикам мобильных устройств. И забудьте о компромиссах, когда дело касается производительности.

reason1

Как насчет суперсил?

Будьте во всеоружии и используйте мощный функционал BlueStacks: режим эко, скрипты, мультиоконность, синхронизацию окон и многое другое.

reason1

Никаких проблем с батареей устройства

Современные мобильные игры с высоким качеством графики стремительно сокращают время автономной работы устройства. Используйте BlueStacks и не переживайте о емкости батареи, даже если вы нацелены на многочасовой геймплей.

reason1

Нет звонкам и отвлекающим сообщениям

Больше никаких прерываний во время жаркой игровой сессии! Запускайте игру на своем ПК и полностью сосредоточьтесь на геймплее, не отвлекаясь на звонки или сообщения.

reason1

Высокая точность действий

Управление на мобильном телефоне может вызвать массу сложностей. Используйте клавиатуру, мышь и даже геймпад, чтобы быть на 100% уверенным в своих действиях.

Как скачать игры для Android и начать играть на ПК?

  • Установите BlueStacks на ПК
  • Войдите в аккаунт Google, чтобы получить доступ к Google Play, или сделайте это позже
  • Найдите игру, воспользовавшись полем поиска
  • Выберите интересующую игру среди результатов поиска и установите ее
  • Завершите авторизацию в Google (если вы пропустили пункт 2) и установите игру
  • Начинайте играть

Watch Video

Наслаждайтесь играми для Android на ПК, скачав платформу BlueStacks совершенно бесплатно! Испытайте невероятный игровой опыт на широкоформатном мониторе и насладитесь каждой деталью любимой игровой вселенной. Получите полную свободу действий благодаря управлению с помощью клавиатуры, мыши и даже геймпада. Такое невозможно вообразить на смартфоне! Оцените высокую точность прицеливания и выполняйте смертельные хэдшоты в шутерах. А еще вам доступны готовые схемы управления, которые вы можете настроить под свой стиль игры. Кроме того, BlueStacks оснащен мощными инструментами, которые значительно улучшат ваш геймплей. Это режим эко, мультиоконность и синхронизация окон, скрипты и макросы, переводчик в реальном времени и многое другое.

Это ваш эмулятор Android

Миф #1

Эмуляторы Android поставляются в комплекте с программами и приложениями, которые замедляют работу вашей системы.

Другие эмуляторы

Некоторые эмуляторы Android могут содержать вредоносное ПО. В прошлом некоторые из них включали майнеры криптовалюты, вредоносное и шпионское ПО, которые выполняли несанкционированные подключения на вашем компьютере. Вот почему вам следует скачивать эмулятор Android с надежного официального веб-сайта.

Подход BlueStacks

BlueStacks обеспечивает чистый игровой процесс без вредоносного шпионского и рекламного ПО. Продажа данных пользователей никогда не являлось нашей целью, и мы этим никогда не занимались. Мы — единственная игровая платформа Android, имеющая партнерские отношения с MSI, Intel, AMD, Qualcomm, Samsung и более чем 150 ведущими разработчиками игр.

Миф #2

Чтобы играть в игры для Android на ПК, необходима очень мощная конфигурация системы.

Другие эмуляторы

Не все эмуляторы Android ориентированы на новейшие технологии и эффективную оптимизацию использования ресурсов вашей системы. Это может отрицательно повлиять на игровой процесс и производительность недорогих ПК. Особенно это касается требовательных игр. Запуск подобной игры на таких эмуляторах может задействовать все мощности компьютера. Конечно, ничто не превзойдет производительность высококлассных ПК, однако некоторые эмуляторы Android способны запускать игры даже на ПК с низкими характеристиками, поскольку их разработчики обращают внимание на новейшие технологии и тренды.

Подход BlueStacks

BlueStacks может работать практически на любом ПК. Тем не менее желательно, чтобы ваша система соответствовала некоторым минимальным требованиям, однако они не являются обязательными для запуска большинство игр. ПК средней конфигурации может конкурировать с высокопроизводительными устройствами на Android при использовании BlueStacks. Мы предлагаем варианты выбора количества ядер процессора и объема ОЗУ для работы BlueStacks. Так вы можете регулировать производительность платформы и геймплея. Также отметим, что результаты недавних тестов показали, что BlueStacks на 30% быстрее, чем любая другая платформа на Android в мире.

Миф #3

Геймеры, которые играют в игры для Android на ПК, получают несправедливое преимущество и используют читы.

Другие эмуляторы

Некоторые игроки могут использовать эмуляторы Android для получения несправедливого игрового преимущества. Тем не менее для запуска читов в большинстве случаев требуются root-права. Они открывают множество возможностей для вмешательства в системные файлы. Если пользователь получает root-доступ, он может изменять игровые файлы, настраивать графику или даже жульничать во время игрового процесса. Чтобы минимизировать подобные действия, некоторые игры, такие как PUBG Mobile и COD: Mobile, объединяют игроков по типу используемой платформы. Это значит, что игроки, играющие на эмуляторах, не встречаются с игроками на мобильных устройствах.

Подход BlueStacks

BlueStacks напрямую сотрудничает с разработчиками и поставщиками технологий, поэтому у нас есть возможность обеспечить лучшую совместимость игр на рынке. BlueStacks в большей степени является игровой платформой Android, а не эмулятором, поэтому наши партнеры-разработчики доверяют нам обеспечение справедливого и сбалансированного игрового процесса. Они предоставляют нам ранний доступ к играм и контенту, чтобы мы убедились в корректности их работы прежде, чем настанет ваша очередь играть. В связи с этим мы принимаем всяческие меры, чтобы наши пользователи играли честно и не мошенничали. Это включает в себя контроль root-доступа, а также некоторые другие более глубокие интеграции разработчиков. Все это приводит к тому, что использование читов становится невероятно сложным даже для самых технически подкованных игроков.

Миф #4

Независимо от того, сколько ОЗУ и ядер процессора я выделю для эмулятора Android, он никогда не будет так хорош, как мобильный телефон или планшет.

Другие эмуляторы

Некоторые эмуляторы работают лучше флагманского телефона на Android даже на недорогом бюджетном ПК с 8 ГБ оперативной памяти и четырехъядерным процессором. Однако производительность эмулятора зависит не только от ОЗУ и процессора, но и многих других факторов. Может ли он плавно запускать игры с высоким разрешением? Поддерживаются ли обновленные версии Android? Настроено ли эффективное использование ресурсов вашего ПК? Оптимизированы ли настройки графики для более плавного игрового процесса? Как часто разработчики выпускают обновления? Создатели мощного эмулятора всегда будут сосредоточены на улучшении игрового процесса с помощью полезных функций и своевременных обновлений.

Подход BlueStacks

BlueStacks включает в себя множество настроек, например, выбор графического рендеринга или режим графического движка, а также другие опции, благодаря которым его производительность в несколько раз выше любого флагманского смартфона на Android. Графика BlueStacks Hyper-G задействует всю вашу систему для обеспечения оптимального игрового процесса независимо от технических характеристик. Не имеет значения, используете ли вы встроенную видеокарту или дискретную модель RTX 2080Ti, вы можете запускать новейшие требовательные игры для Android с невероятной производительностью, превосходящей любой телефон на Android.

Портирование любимой игры под Android

Создание игры процесс захватывающий и познавательный. Особенно это заметно, когда ремейк «классики» делаешь сам, руководствуясь идеями оригинала и десятками часов, потраченных на прохождение кампании. У меня не было сколь-нибудь значимого опыта разработки для Android’a, поэтому создание работающего «как надо» приложения для планшета поначалу выглядело довольно туманно, но от этого не менее притягательно. При наличии времени и возможностей, можно стряхнуть пыль со старых игр, подмазать и подклеить, добавив поддержку «больших» разрешений и окажется, что они выглядят не хуже современных продуктов, выложенных на маркете, даже с палитрой RGB565 без альфа-канала. Я предполагал, что будут подводные камни и заботливо спрятанные грабли, которые лежат тихонько во время разработки, но больно лупят по голове, стоит запустить игру на реальном железе. Чего сильно не хватало, так это отладчика, а возникающие проблемы лишь укрепили желание достичь поставленной цели. Под катом будет рассказ о том, как это все заработало.

image

Стоит сразу предупредить, что это возможно будет рассказ о велосипедах, я не придумал ничего такого, что не гуглится на просторах «интернетов». Также Читатель вряд ли увидит новые решения или мега технологии, но найдет опробованные инструкции по сборке приложения, использующего SDL1/2, для Android.

Здравствуйте!
Ремейк игры Caesar III© начинался совсем не как отдельный проект, а скорее набор фиксов для количества жителей, поддержки «больших» разрешений и исследования декомпилированного кода оригинальной игры в поисках пасхалок и недокументированных режимов работы. А когда количество восстановленного кода перевалило за половину от общего, стало понятно, что можно попытаться восстановить игру. В качестве библиотеки отрисовки была выбрана SDL1.2, которая хорошо зарекомендовала себя в других проектах, а ещё проста в освоении и использовании. Ремейк поначалу был Linux-only, в начале этого года перебрался на другие платформы (Mac, Windows и Haiku), а потом у меня завелся вот такой планшет, а голове периодически возникали мысли «работает на одном линуксе, должно работать и на другом».

Попытка номер раз, удачная
У SDL версии 1.2 «из коробки» нет возможности работы под андроидом, зато есть замечательный проект libsdl-android, который позволяет, используя свое окружение и скрипты собирать код, использующий эту библиотеку в приложении для андроида. Собранное приложение может загрузить ресурсы как из интернета, так и распаковать из установщика. Сам libsdl-android содержит большое количество библиотек, которые могут вам понадобиться, начиная от bzip2 и разных кодеков, до самой SDL и его окружения SDL_image, SDL_mixer, ttf и другие. Если у игры нет платформозависимого кода, то портирование занимает несколько шагов:

0. установка и настройкак adt

#/bin/bash
ARCH=x86_64;
NDK_VERSION=r9;
SDK_VERSION=20130729;
[ $(TARGET_ARCH) = «i386» ] && ARCH=x86;
echo «Downloading the ndk. »;
wget —quiet —continue dl.google.com/android/ndk/android-ndk-$$NDK_VERSION-linux-$$ARCH.tar.bz2;
echo «Extracting the ndk. »;
tar -xjf android-ndk-$$NDK_VERSION-linux-$$ARCH.tar.bz2 -C ~/;
echo «Downloading the sdk. »;
wget —quiet —continue dl.google.com/android/adt/adt-bundle-linux-$$ARCH-$$SDK_VERSION.zip;
echo «Extracting the sdk. »;
ARCHIVE=`readlink -f adt-bundle-linux-$$ARCH-$$SDK_VERSION.zip`;
cd ~;
unzip -o -qq $$ARCHIVE;
echo «Configure paths. »;
echo «export ANDROID_SDK=~/adt-bundle-linux-$$ARCH-$$SDK_VERSION/sdk» >> ~/.bashrc;
echo «export ANDROID_NDK=~/android-ndk-$$NDK_VERSION» >> ~/.bashrc;
echo «export NDK_ROOT=\$$ANDROID_NDK» >> ~/.bashrc;
echo «export PATH=\$$PATH:\$$ANDROID_NDK:\$$ANDROID_SDK/tools:\$$ANDROID_SDK/platform-tools» >> ~/.bashrc;

1. клонирование репозитория libsdl-android
2. копирование исходников приложения в папку проектов libsdl-android

в моем случае это клонирование исходников через git
cd commandergenius/project/jni/application
git clone bitbucket.org/dalerank/caesaria

3. создание файла конфигурации для сборки игры через libsdl-andlroid

В папке с исходниками надо создать или скопирать ииз другого проекта файл AndroidAppSettings.cfg, ниже я привел его содержимое своего конфига
комментарии подлежат удалению, также я опустил настройки по умолчанию
# The application settings for Android libSDL port
#Название, которое будет показано пользователю
AppName=«CaesarIA»
#имя пакета
AppFullName=net.dalerank.caesaria
#внутрення версия приложения
AppVersionCode=1740
#эта версия будет показана пользователю
AppVersionName=«0.3.1740»
#здесь можно указать локальный или удаленный архив, который будет распакован после установки
AppDataDownloadUrl=»!!Game data is 100 Mb|cache.zip»
#версия библиотеки, с которой собирается приложение (версия 2.0 не работает)
LibSdlVersion=1.2
#ориентация экрана
ScreenOrientation=h
#глубина цвета, поддерживается 16/24/32 — 16 самый быстрый, на глаз отличия не заметны
VideoDepthBpp=16
#этот и два следующих флага отвечают за подеключение OpenGL в приложения,
#так как я не использую GL, то и подключать их смысла нет
NeedDepthBuffer=n
NeedStencilBuffer=n
NeedGles2=n
#флаг отвечает за хранение текстур в оперативной памяти, если на ПК это не вызывало проблем, то
#на андроиде без этого флага текстуры могут не отображаться
SwVideoMode=y
#эмуляция мыши, флаг нужен для работы следующих двух флагов
AppUsesMouse=y
#обработка нескольких одновременных нажатий
AppUsesMultitouch=y
#эмуляция нажатия правой кнопки мыши, тапом вторым пальцем
AppNeedsTwoButtonMouse=y
#отображение курсора
ShowMouseCursor=n
#вообще-то здесь должно стоять yes, но при включении этого флага поле ввода не убиралось
AppNeedsTextInput=n
#разрешение чтения с накопителя
AccessSdCard=y
#если кеш подтягивается из интернета, то нужно поставить в yes
AccessInternet=n
#число встроенных виртуальных кнопок SDL, я использую свой GUI, поэтому кнопок не будет
AppTouchscreenKeyboardKeysAmount=0
#задержка заставки SDL перед стартом приложения
StartupMenuButtonTimeout=3000
#под какое abi будет собираться приложение
MultiABI=armeabi-v7a
#здесь нужно указать библиотеки. помимо sdl, которые нужны для работы приложения
CompiledLibraries=«sdl_mixer sdl_ttf lzma ogg»
#дополнительные флаги компиляции, у меня включены RTTI и исключения
AppCflags=’-O2 -finline-functions -frtti -fexceptions’
#здесь указаны папки, где нужно искать исходники для сборки, помимо текущей
AppSubdirsBuild=’dep dep/smk dep/aes dep/lzma dep/bzip2 dep/libpng source source/vfs source/core source/gfx source/game source/gui source/sound source/scene source/pathway source/walker source/objects source/good source/city source/events source/world source/religion’

4. настройка пути для компиляции нужного приложения

$rm project/jni/application/src
$ln -s caeasaria project/jni/application/src
5. cборка аpk

$./changeAppSettings.sh -a
$android update project -p project
$./build.sh
6. подписывание и установка приложения на андроид

Если все удачно скомпилилось, то в папке commandergenius/project/bin появится файла MainActivity-[release|debug]-unsigned.apk, который нужно подписать и установить на устройство.

$ keytool -genkey -v -keystore rs.keystore -alias caesaria -keyalg RSA -keysize 2048 -validity 10000
$ jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore rs.keystore ~/projects/commandergenius/project/bin/MainActivity-release-unsigned.apk caesaria
$ mv ~/projects/commandergenius/project/bin/MainActivity-release-unsigned.apk ~/projects/caesaria.apk
$ adb uninstall net.dalerank.caesaria
$ adb install ~/projects/caesaria.apk

Подводные камни
0. Определение окружения: для начала надо определиться в каком окружении будет работать Windows, Linux или Linux Android.
Решение: Проверяем наличие дефайнов ANDROID/__ANDROID__.

1. Логи: смотреть сообщения об ошибках и прочий вывод можно через abd logcat, но как оказалось стандартные средства типа stdout/printf не работают, можно конечно пользоваться выводом лога в файл и смотреть уже его, но хотелось какойто более привычной отладки.
Решение: подключаем заголовочный файл логов андроида #include , а для вывода сообщения пользуемся функцией
__android_log_print(ANDROID_LOG_DEBUG, CAESARIA_PLATFORM_NAME, «%s», str.c_str() );

с привычным printf синтаксисом.

2. Использование OpenGL: если кому понадобится OpenGL, то на мобильных плафтормах обитает его близкий родственник GLES.
Решение: подключаем вместо стандартных заголовояных файлов и , есть небольшие отличия в использовани текстур и отрисовке, но в основном код(простой код, который я использовал) работает практически без изменений.

3. Обработка событий: пропадает событие SDL_MOUSEBUTTONUP при движении пальцем по экрану, это могла быть недоработка в самой библиотеке libsdl-android или я где-то его терял. Проявлялось иногда в отсутствии реакции элементов интерфейса на действия пользоватся, например после движения остановились на кнопкой, которая по идее должна перейти в состояние если над ней находится курсор мыши.
Решение: Специфично для моего приложения — при сборке под андроид было добавлено принудительное обновление состояния элементов под курсором при движении последнего.

4. Мелкий интерфейс: разрешение экрана современных мобильных устройств сопоставимо или превышает разрешение монитора, используемого 10-15 лет назад, но физические размеры заметно меньше, оттого и сам элементы пользовательского интерфейса выглядят мелко и пользоваться ими будет не всегда удобно.
Решение: Переделка интерфейса, что достаточно хлопотное занятие и не всегда удается сохранить первоначальный вид.

Один переезд равен двум пожарам(народная мудрость)
Все началось с того, что один из коммитеров прислал ссылку на ветку разработки, где успешно запустил игру с использованием относительно свежей библиотеки SDL2, а до этого использовалась версия SDL1.2 — 2008 года выпуска. Надо сказать, что я и сам рассматривал возможность перехода на новую версию, особенно после просмотра списка изменений, который сулил нормальную поддержку Mac и Android, что называется «из коробки». А тут еще и миниотпуск на работе получился, взяв кувалду побольше гайд потолще и большую чашку кофе, я начал переводить ремейк на новый «движок».
Не хочу утомлять читателя техническими подбробностями переезда, просто у самой библиотеки с приходом аппаратной поддержки изменилась идеология работы, что поначалу доставляло определенные трудности, пока я к ней не привык. Переезд растянулся на неделю вечеров и под конец представлял собой исправление оставшихся недочетов и графических артефактов. Переделки были закончены и подготовлены сборки для «больших» ОС, и опять появилась необходимость повторного чтения мануалов по сборке приложения под Андроид, потому как libsdl-android нормально адаптирован для работы с SDL1.2, а поддержка SDL2 похоже заброшена (о чем сами авторы и пишут в ридми)

Скрытый текст

The libsdl.org now has an official SDL 1.3 Android port, which is more recent and
better suited for creating new applications from scratch, this port is focused mainly
on SDL 1.2 and compiling existing applications, it’s up to you to decide which port is better.
Also this port is developed very slowly, although the same is true for an official port.

Осознал я правдивость этого текста, когда было потрачено несколько часов в попытке запустить порт в старой конфигурации через libsdl-android. Ну что ж, отрицательный опыт — тоже опыт: буду использовать доступные инструмены.

Попытка номер два, не совсем удачная
SDL2 уже содержит все необходимые конфиги для сборки приложения под андроид, почитав статью, рекомендованную на официальном сайте, можно пробовать собрать чтонибудь. Опять же будут несколько шагов, за исключением установки и настройки adt.

0. копирование примера из поставки SDL2

$git clone bitbucket.org/dalerank/caesaria
$hg clone hg.libsdl.org/SDL
$mkdir caesaria/android
$cp SDL/android-project caesaria/android
$mkdir caesaria/android/libs
$mkdir caesaria/android/data
$cp SDL caesaria/android/libs

Для чего все эти копирования сделаны. чтобы проще было считать относительные пути для библиотек. В папке android/libs будет лежать SDL и компания, в папке android/data — будет иконка приложения.

1. создание структуры папок для проекта

В папке android/android-project/jni создаем символьные ссылки на компоненты приложения

$ln -s ../../libs/SDL SDL
$ln -s ../../libs/SDL_mixer SDL_mixer
$ln -s ../../libs/SDL_net SDL_net
$ln -s ../../src/dep/aes aes
$ln -s ../../src/source application
$ln -s ../../src/dep/bzip2 bzip2
$ln -s ../../src/dep/freetype freetype
$ln -s ../../src/dep/libpng libpng
$ln -s ../../src/dep/lzma lzma
$ln -s ../../src/dep/smk smk
$ln -s ../../src/dep/src src
$ln -s ../../src/dep/ttf ttf
$ln -s ../../src/dep/zlib zlib

Немного о том, что же я тут написал:
zlib нужен для сборки freetype, который в свою очередь нужен для SDL_ttf и будет отвечать за рендеринг шрифтов.
Библиотека smk нужна для воспроизведения видео в формате smack, в этом формате выполнены ролики оригинальной игры.
Bzip, lzma и aes нужны для работы с zip-архивами.
libpng требуется для загрузки текстур для игры.
SDL, SDL_mixer, SDL_net отвечают соответсвенно за рисования, работы со звуком и сетью.
application содержит исходники самой игры, которые будут собраны в библиотеку libapplication.so
в папке src располагаются исходники библиотеки libmain.so, а вот для неё уже написано кружево java-вызовов над с-кодом, которое позволит нам успешно стартовать и порадовать пользователя яркой картинкой.
Настройки проекта и конфиги для ndk уже любезно предоставлены авторами SDL2

2. написание конфигов для сборки компонентов игры

Чтобы система сборки увидела, какие нам необходимы библиотеки для работы и собрала их, нужно написать для них конфиги, наподобие Makеfile. С большой вероятностью Android.mk уже будет присутствовать в репозитории библиотеки, или их можно найти на просторах интернета. Мне пришлось дописать конфиги сборки для для игры и библиотеки libsmk.

Android.mk для libsmk очень прост и будет понятен людям, не связанным с программированием для андроида
#smk/Android.mk
LOCAL_PATH := $(call my-dir)

LOCAL_MODULE := smk
LOCAL_SRC_FILES := $(subst $(LOCAL_PATH)/,, \
$(wildcard $(LOCAL_PATH)/*.c))

Конфиг содержит указание скомпилировать все файлы с расширением .с, найденные в текущей папке (для libsmk это будет jni/smk)

Аналогично пишется и конфиг для сборки библиотеки, которая будет представлять саму игру.

#application/Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

SDL_PATH := ../../libs/SDL
SDL_MIXER_PATH := ../../libs/SDL_mixer
SDL_NET_PATH := ../../libs/SDL_net
GAME_PATH := $(LOCAL_PATH)
DEP_PATH := ../dep

LOCAL_C_INCLUDES := \
$(LOCAL_PATH)/$(SDL_PATH)/include \
$(LOCAL_PATH)/$(SDL_MIXER_PATH) \
$(LOCAL_PATH)/$(SDL_NET_PATH)/include \
$(LOCAL_PATH)/$(FREETYPE_PATH)/include \
$(LOCAL_PATH)/$(GAME_PATH) \
$(LOCAL_PATH)/$(DEP_PATH) \
$(LOCAL_PATH)/$(DEP_PATH)/libpng

# Add your application source files here…
LOCAL_SRC_FILES := $(subst $(LOCAL_PATH)/,, \
$(wildcard $(GAME_PATH)/*.cpp) \
$(wildcard $(GAME_PATH)/core/*.cpp) \
$(wildcard $(GAME_PATH)/vfs/*.cpp) \
$(wildcard $(GAME_PATH)/objects/*.cpp) \
$(wildcard $(GAME_PATH)/gui/*.cpp) \
$(wildcard $(GAME_PATH)/city/*.cpp) \
$(wildcard $(GAME_PATH)/gfx/*.cpp) \
$(wildcard $(GAME_PATH)/events/*.cpp) \
$(wildcard $(GAME_PATH)/world/*.cpp) \
$(wildcard $(GAME_PATH)/pathway/*.cpp) \
$(wildcard $(GAME_PATH)/walker/*.cpp) \
$(wildcard $(GAME_PATH)/good/*.cpp) \
$(wildcard $(GAME_PATH)/religion/*.cpp) \
$(wildcard $(GAME_PATH)/scene/*.cpp) \
$(wildcard $(GAME_PATH)/sound/*.cpp) \
$(wildcard $(GAME_PATH)/game/*.cpp))

LOCAL_SHARED_LIBRARIES := SDL2 SDL2_mixer SDL2_net sdl_ttf pnggo lzma bzip2 aes smk
LOCAL_CPP_FEATURES += exceptions
LOCAL_CPP_FEATURES += rtti
LOCAL_LDLIBS := -lGLESv1_CM -llog

Тоже должно быть понятно, в LOCAL_C_INCLUDES добавляет пути где нужно искать заголовочные файлы, в LOCAL_SRC_FILES добавляем файлы с исходным кодом,
в LOCAL_SHARED_LIBRARIES прописываем зависимости приложения.

флаги rtti, exceptions отвечают за использование RTTI и исключений.

3. сборка

$cd android-project
$android update project -p. -t android-15
$ndk-build V=1
$ant [release|debug]
$ant install[r|d]

Теоретически, после выполнения описанных шагов на подключенном девайсе или эмуляторе вы увидите установленное приложение.

Грабли
1. Где искать ресурсы.
Место размещения ресурсов зависит от конкретной реализации ОС, но в большинстве случаев приложению будет доступна папка /sdcard/Android/data/имя_пакета/files, при использовании непосредственно пути может быть ошибка доступа или ошибка поиска файла.
Получить полный путь к директории приложения можно через функцию SDL_AndroidGetExternalStoragePath(), определенную в файле SDL_system.h
2. Использование флагов создания окна.
Комбинация SDL_WINDOW_OPENGL | SDL_WINDOW_SHOWN | SDL_WINDOW_BORDERLESS работает не на всех девайсах, убираем SDL_WINDOW_OPENGL или SDL_WINDOW_BORDERLESS и смотрим какой из флагов крашит программу. Не могу объяснить с чем связано такое поведение. С флагом SDL_WINDOW_SHOWN запукается по логам один в один, как и со всеми флагами, но при этом вероятность вылета намного меньше.
3. Слишком много звуковых каналов.
Наблюдаются вылеты при вызове функции SDL_mixer::Mix_AllocateChannels(N>16) c ошибкой, что невозможно иниализировать звук. Обходится снижением запрошенного числа каналов, насколько корректно решать эту проблему таким способом я не знаю.
4. stlport vs gnustl
Вылет при использовании stlport, нарвался на этот баг при обходе вектора с использованием итераторов на эмуляторе Nexus 7 (Android 4.0.3). Опять же не могу объяснить факт сей ошибки, решилось использованием gnustl при сборке приложения.
5. Мое кунгфу сильнее твоего.
Использование библиотеки с именем, похожим на имя той, что уже есть в системе приводит к загрузке чужой библиотеки, в которой возможно нет необходимых функций. Ошибка появилась из-за того, что я собираю свою версию libpng.so, решение было найдено на stackoverflow, исправилось заменой имени библиотеки libpng.so на libpnggo.so

В заключении.
Работает! Почти не отличается от ББ! Доволен ли я? Не очень!

Дело в том, что толи я криворукий, толи лыжи не едут, но на планшете приложение получилось крайне медленным (10-12 fps для крайне простой картинки результат унылый), думаю, вина тут в руках и незнании матчасти. SDL — отличная библиотека в обеих реинкарнациях, и много действительно хороших игр использует её, а также портировано на андроид.

Потраченного времени на создание порта не жаль точно, получен определенный опыт и много положительных эмоций, когда игра взлетела. Тем, кто ещё раздумывает пробовать или нет, однозначно пробовать, не откладывайте на потом!

З.Ы. За развитием проекта всегда можно посмотреть тут.

Как перенести игру с андроида на компьютер

Битва Замков вики

Играю в БЗ на телефоне уже почти 4 месяца и подумал почему бы не делать это с компьютера. Как перенести своего персонажа на комп, и чтобы ничего не пропало. Ведь вложено не мало трудов.

(отредактировал(а): DerAleksey)

Аккаунт привязан к почтовому аккаунту? Если нет — добавь почтовый аккаунт на телефон и в настройках игры нажми на кнопку «Привязать», если привязан — устанавливаешь на комп блюстакс, в гугл аккаунтах добавляешь тот аккаунт, к которому привязал игру. Будет синхронизация, может высветятся пара вопросов. Потом заходишь в игру через блюстакс — изначально будет окно с гостевым аккаунтом, но не переживай, заходи в опции и жми на «Сменить аккаунт», выбирай свою почту и вуаля, ты на скоем игровом аккаунте )

(отредактировал(а): Shurik90)
Стремно как то, «сменить аккаунт» кликать)
(отредактировал(а): DerAleksey)
Стоит попробовать думаю.
(отредактировал(а): DerAleksey)

Тоже хотел на комп перенести. Но оказалось, что играл с гостевого входа и аккаунт привязан, почту не помню. Можно както восстановить доступ?

(отредактировал(а): 32Fan77)
тряси почту со службы поддержки. объясни ситуацию и может быть тебе все выдадут.
(отредактировал(а): B8086)
Все получилось, спасибо)
(отредактировал(а): DerAleksey)

сделал как написано выше несколько раз, даж стакс переустанавливал, не связывает он с акком и хоть ты тресни, нажимаю на переход к своему аккку в игре но от все равно открывает гостевой

(отредактировал(а): Indimion57)

На телефоне аккаунт игры должен быть привязан к аккаунту android (. @gmail.com). BlueStacks тоже надо привязать к своему основному аккаунту. В игре в настройках нажать «сменить», а там уже выбрать свой аккаунт. Все работает, проверено!

(отредактировал(а): Bosma)

если на блюстаксе нет приложения g+ то привязка и наличие акка вообще роли не играют. нужно получить разрешение на доступ к личной инфе в соцсетях g+, и это делается через пару-тройку сторонних гугловских приложений (непомню какие точно). без них акк не сменится вообще никогда. сие верно только в случае если в игре на акк пытаются зайти впервые. если все же с блюстакса уже игралось то читаем дальше. изредка бывают глюканы у блюстакса. он просто тупо не открывает окно с кнопочкой ОК, но это вполне решаемо перезагрузкой либо блюстакса либо компа(что удобнее клиенту). самый край можно удалить гуглоакаунт в настройках андройда, перезапустить блюстакс и заного добавить тот же гуглоакк. иногда эти пляски тоже помогают.

(отредактировал(а): B8086)

От Indimion57:
сделал как написано выше несколько раз, даж стакс переустанавливал, не связывает он с акком и хоть ты тресни, нажимаю на переход к своему аккку в игре но от все равно открывает гостевой

(отредактировал(а): DerAleksey)
Что вы об этом думаете?

Наши ресурсы

В социальных сетях

Обзор

  • Что такое Фэндом?
  • О нас
  • Вакансии
  • В прессе
  • Обратная связь
  • Условия использования
  • Конфиден­циальность
  • Общая карта сайта
  • Локальная карта сайта

Сообщество

  • Вики Сообщества
  • Поддержка
  • Справка
  • Запретить продажу данных

Перенести игру с Unity 3D на Android

Я создал игру на движке Unity3d и теперь хочу ее перенести на android. Что-то нужно устанавливать еще, подключать, переделывать? Как это можно сделать?

Отслеживать
71.4k 12 12 золотых знаков 91 91 серебряный знак 180 180 бронзовых знаков
задан 19 июл 2012 в 11:16
Вася Копенко Вася Копенко
41 1 1 золотой знак 1 1 серебряный знак 4 4 бронзовых знака

Я думаю, перенести ничего не изменяя не получится. Вот тут инструкция по интеграции юнити в андроид сдк: docs.unity3d.com/Documentation/Manual/android-sdksetup.html Кстати, интересная тема! Надо будет и себе попробовать.

19 июл 2012 в 12:18

Не совсем понятно, создали — в смысле десктопная версия? Мне кажется там нужно будет только заморочиться с управлением.

1 апр 2015 в 10:25

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

Не считайте ответом, но из-за отсутствия нужно привилегии не могу редактировать (дополнять) чужие ответы.

Дополнение к ответу: Вообще необходимо сделать несколько непростых шагов:

  1. Установить «Unity Remote Tool» c Play.Market или AppStore (в зависимости от ОС).
  2. Оптимизировать управление под ваш(и) аппарат(ы). Тут пригодится 1 пункт.
  3. Оптимизировать быстродействие приложения.
  4. Оптимизировать приложение под разные разрешения экрана.
  5. Оптимизировать вес .apk файла.
  6. Отдать на тест друзьям/QA специалистам.

Отслеживать
ответ дан 7 июл 2015 в 13:05
83 1 1 серебряный знак 7 7 бронзовых знаков

Для того что-бы сбилдить (собрать) под андроид проект достаточно просто в настройках билдинга выбрать соответствующую платформу. Также понадобится установленный JDK и Android SDK. Когда будете первый раз билдить, Unity попросит указать путь к Android SDK. После билдинга вы получите *.APK файл, который нужно просто скопировать на ваше устройство и установить.

А вот дальше могут начаться проблемы и зависят они от того, что у вас в проекте.

Что может случится:

  1. Интерфейс — размеры экранов мобильных устройств меньше чем у компьютеров, поэтому некоторые кнопки и поля могут оказаться слишком мелкими. Просто сделайте их больше размером.
  2. Управление — возможно придется переписать управление под мультитач (multi touch).

Если ваш проект ориентирован как на Android, так и на PC то можете использовать директивы компилятора: Платформенно зависимая компиляция

Например вы можете написать так:

#if UNITY_ANDROID // управление для андроид, этот // кусок кода будет билдиться // только для андроида #endif #if UNITY_STANDALONE_WIN // управление для windows, этот // кусок кода будет билдиться // только для windows #endif 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *