FAQ — различия между версиями

Материал из wiki.appsalutecreator.com
Перейти к: навигация, поиск
м
(Q: Как делается сборка на устройство?)
 
Строка 4: Строка 4:
 
===<small>Q: Как делается сборка на устройство?</small>===
 
===<small>Q: Как делается сборка на устройство?</small>===
  
'''A:''' Сборка на устройство делается с помощью Marmalade SDK. Вам же необходимо:
+
'''A:''' Сборка на устройство делается с помощью Cmake. Вам же необходимо:
# [http://ge.absolutist.com/index.php/%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B8_%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0 Установить и настроить] Marmalade SDK
+
# [http://ge.absolutist.com/index.php/%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B8_%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0 Установить и настроить] Cmake, Android Studio(Android SDK, NDK), JDK
 
# [http://ge.absolutist.com/index.php/%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B4%D0%BB%D1%8F_%D0%B7%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B8_%D0%BD%D0%B0_%D0%BC%D0%B0%D1%80%D0%BA%D0%B5%D1%82%D1%8B Настроить проект]  
 
# [http://ge.absolutist.com/index.php/%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B4%D0%BB%D1%8F_%D0%B7%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B8_%D0%BD%D0%B0_%D0%BC%D0%B0%D1%80%D0%BA%D0%B5%D1%82%D1%8B Настроить проект]  
 
# В редакторе сцен открыть проект, выбрать ''Project -> export'' , в открывшемся окне выбрать необходимые параметры и платформу, но не указывать папку, потом нажать OK.
 
# В редакторе сцен открыть проект, выбрать ''Project -> export'' , в открывшемся окне выбрать необходимые параметры и платформу, но не указывать папку, потом нажать OK.
  
Дальше редактор и Marmalade SDK соберут проект в пакет для выбранной платформы.
+
Дальше редактор соберёт проект в пакет для выбранной платформы.
  
 
===<small>Q: Как переопределять существующие классы (объекты) и создавать свои?</small>===
 
===<small>Q: Как переопределять существующие классы (объекты) и создавать свои?</small>===

Текущая версия на 11:28, 6 июля 2017

Содержание

Общие вопросы

Q: Как делается сборка на устройство?

A: Сборка на устройство делается с помощью Cmake. Вам же необходимо:

  1. Установить и настроить Cmake, Android Studio(Android SDK, NDK), JDK
  2. Настроить проект
  3. В редакторе сцен открыть проект, выбрать Project -> export , в открывшемся окне выбрать необходимые параметры и платформу, но не указывать папку, потом нажать OK.

Дальше редактор соберёт проект в пакет для выбранной платформы.

Q: Как переопределять существующие классы (объекты) и создавать свои?

A: Пока никак.

Q: Как добраться до исходного кода сцены, что-бы что-то дописать?

Или все управление объектами реализуется через машины состояний?

A: Крайне настоятельно рекомендуется пользоваться только машинами состояний и другими объектами создаваемыми в редакторе сцен, но моожно открыть xml файл проекта.

Q: Необходима ли очистка памяти вручную, или есть сборщик мусора? И как можно мониторить память приложения?

A: При загрузке экрана загружается только графика и объекты которые используются на нём, при переходе на другой экран неиспользуемые ресурсы выгружаются и загружаются только те которые будут использоваться. Мониторить память можно следующим образом:

На устройстве:

  • Собрать пакет, указав в app.icf параметр
[Game]
debug="Absolutist-2253"
  • Запустить приложение и тапнуть по левому краю экрана
  • Выбрать параметр "time" (да, не логично)

Во вьювере:

  • Убедиться что в app.icf уже есть параметр
[Game]
debug="Absolutist-2253"
  • Запустить приложение и тапнуть по левому краю окна или нажать F2
  • Выбрать параметр "time" (да, не логично)

Q: Как расставить объекты на устройствах с разным расширением экрана?

Предусмотрена ли различная настройка (расстановка) объектов для разных расширений экранов? Может есть возможность выбора одного из нескольких файлов настроек (xml и т.д.), в зависимости от расширения экрана текущего устройства? И если да, то этот выбор происходит автоматически, или надо прописывать его в коде вручную?

A: Если необходимо чтобы объект находился на определённом расстоянием в пикселях от края экрана, то можно воспользоваться параметрами позиционирования у объекта. Если необходимо знать разрешение экрана, то его можно получить из объекта options параметрами resh и resw.

Q: Предусмотрена ли автоматическая подгрузка графики для retina-экрана? На подобии нативной iOS'овской или cocos'овской подгрузки файлов с суфиксом "@2x".

A: Вся графика тянется в соответствии с настройками viewer.xml поэтому одного комплекта графики достаточно. Сплэшскрины для retina-экранов генерирует Marmalade SDK при сборке проекта.

Q: Есть ли анимция "Ease" (как в cocos2d), или подобные эффекты надо писать вручную?

Q: Есть ли анимция переходов между сценами, перелистывания страниц, или надо писать вручную?

A: В данный момент есть растворение по alpha и перелистывание (текущее изображение "уезжает" а под ним показывается новое)

Q: Хочу рисовалку(разукрашку) в приложение

Если необходимо сделать рисовалку (разрисовку), то ее прийдется писать на Marmalade самостоятельно, или у Вас уже есть что-то подобное во фреймворке?

A: Есть. Объект paint.

Q: Как можно пользоваться внутренней базой данных приложения (например, папка "Documents" приложения в iOS) для сохранения туда файлов?

A: Пока никак. Максимум можно использовать докачку паков графики.

Q: Как можно работать с нативными фичами ОС'ей (подгрузка фото из альбома пользователя и т.д.)?

A: Работа с фичам производится на базе объектов, к примеру подгрузить картинку из альбома может объект picimage.

Q: Как можно работать с нативными фичами девайсов (акселерометр и т.д.)?

A: Работа с фичами девайсов производится на базе объектов, с акселерометром может работать физ.мир.

Q: Хочу делать сцены с динамической подгрузкой графики.

Как реализовать программную генерацию сцен (подгрузка графики, расстановка объектов и т.д.)? Необходимо для создание динамичных сцен, содержимое которых может меняться.

A: В данный момент нельзя создавать сцены с динамической подгрузкой графики и объектов - список графических ресурсов и объектов для загрузки на конкретном экране определяется перед загрузкой экрана.

Q: Если я соберу игру с использованием звуков и видео и предложу её издателю - мне тоже не нужно будет покупать лицензию за использование их в игре?

A: Не путаем использование кодеков и происхождение звуков! Сам звук должен иметь легальное происхождение!! Но в любом случае несете ответственность вы за использование как звуков так и графики

Q: Я не смог найти учебный, проект его теперь нет вместе с редактором? Где его можно найти?

A: Новое место в папке Мои документы\Absolutist\Projects Demo и Learning мы активно обновляем и документацию и уроки так что самые свежие изменения на смотрите на сайте

Q: Можно ли писать свои расширения если да то как их подключать к проекту?

A: Да можно. Просто пока не документировали это дело . Но очень скоро. Просто компилить в студии свои расширения.

Q: Как собрать исполняемый файл под Windows?

Для этого тоже необходим Marmalade SDK или можно как-то и без него обойтись?

A: Можно без. В скором времени обновятся сборочные скрипты для сборки без мармелада.

Сборка

Q: Хочу применить действие Move к кнопке с помощью машины состояний, но не могу разобраться как это сделать.

В методе Move нет выбора объекта. В методе Set есть выбор объекта, но для него можно задать только состояние. А состояние для кнопки я описать не могу - у нее нету поля states.

A: Кнопку надо поместить в группу машины, а в машине задать состояние в котором будет move. Тоесть необходимо 2 объекта: 1) машина 2) кнопка машина может быть без ресурса. В таком случае подобъекты будут двигаться вместе с корневым объектом и наследовать все его свойства. Тоесть, если сделать корневому объекту scale, то и подобъекты отмасштабируются тоже

Q: как изменить точку пивота у объекта?

A: Точка пивота меняется в редакторе ресурсов. Если надо в одном месте чтобы у ресурса была точка пивота в одних кординатах, а в другом - в других - надо несколько ресурсов одинаковых по виду, но с разными точками пивота. Выбирается ресурс, ставится галочка "edit pivot" - можно будет тянуть красный крестик на рисунке, потом снимается галочка и для надёжности "apply"


Q: у некоторых ресурсов с прозрачностью есть артефакты в виде черных (серых) пикселей либо по линии прямоугольника текстуры, либо по кривой - линии перехода непрозрачных и прозрачных пикселей. Как можно устранить этот эффект?

A: добавть бордер из прозрачных пикселей к графическому ресурсу в редакторе ресурсов


Q: Как называется параметр "текущая колонка"/"текущая строка" у объекта "таблица"? Мне необходимо менять этот параметр с помощью "set->obj-par-val"?

A: curCol/curRow Да. После установки параметра переведите таблицу в состояние refresh.


Q: Как выбрать фото в picimage и "запомнить" его?

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

A: 1) В данный момент picimage умеет кадрировать, но не умеет поворачивать. Выбранное фото можно сохранить выбранному объекту состоянием save. если фотография поменяется, то ранее сохранённый ресурс пропадёт. если надо ещё на каких-то экранах показать его можно а) объект положить на отдельную сцену и расшарить её на необходимые экраны б) вытянуть у первого объекта id ресурса и задавать его в другим объектам

пример добавления фотографии: http://ge.absolutist.com/index.php/Imagepiker


Q: У textEdit'а необходимо после ввода имени (завершения редактирования строки) записать его в файл статистики и отображать в поле при последующих входах на сцену.

A: В данный момент объект Edit сохраняет имя игрока для профиля. Текст который будет доступен по параметру pномер_игрока.name(на пример p0.name) (<p2 name="fghfghfg" />) для сохранения текста необходимо в объекте типа options указать поле, после введения текста перевести его (объект типа options) в стостояние save (сохранится в .name). Обратиться к тексту можно через объект типа options. Количество игроков можно получить по параметру max_player, текущего по cur_player в объекте типа options. объект типа options лучше всего иметь один на весь проект и разместить его лучше всего на отдельном глобальном экране. про профили и edit\: http://ge.absolutist.com/index.php/Edit


Q: Я хочу программно анимировать картинку, "высовывая" ее, тоесть показать верхние 10%, потом 20% и т.д. до 100%.

Можно, конечно, вырезать из бекграунда большие куски-заглушки, наложить их поверх картинки и двигать ее не "обрезая" программно, но эти заглушки получатся слишком большими. да и "высовывающяяся" картинка на сцене не одна (их 8 штук).

A: есть 2 варианта: или вырезать заглушки из фона, или попробовать сместить точку пивота у объекта и показывать его scale-ом

Q: Как перенести точку пивота сцены?

Я добавил новый BasicGraphics(1280-800) (перед этим собирал на iPad Landscape), все объекты, естественно, перенеслись на 1280х800, но меня смущают позиции: Х левого края экрана равен -512 (хотя должен быть -640), правый - +768 (вместо +640). Тоесть центр (пивот, если я не ошибаюсь) у сцены 1280х800 остался как у сцены 1024х768. В принципе, можно работать и так, но хотелось бы перенести пивот сцены в ее геометрический центр (640; 400). Как это можно сделать?

A: При добавлении нового лэйоута координаты сцен не пересчитываются и они помещаются на новый лэйоут со старыми координатами. можно просто поменять координаты сцены на нужные и она станет на место.

Q: Можно получить от imagepicker какой-то callback?

По нажатию на кнопку у меня вызывается load для imagepicker и move для диалогового окна (imagepicker лежит в подгруппе этого окна). Эти операции идут подряд в одной машине, но диалоговое окно выезжает только после выбора фото imagepicker-ом, либо после отмены выбора. И вот, если я отменяю выбор, то диалоговое окно выезжает пустым (с кнопкой ОК, но без фотографии для редактирования). Как правильно проверить, произошел ли выбор фото или произошла отмена выбора (для того, чтобы не открывать диалоговое окно)?

A: у picimage есть 2 добавляемых параметра: картинка загружена и картинка отменена


Q: можно ли в проекте задать параметр автомасштабирования или что-то в этом роде?

У Мармелада есть VirtualWidth и VirtualHeight, которые масштабируют размеры выртуального экрана (который я создаю) под размеры физического экрана девайса. В конструкторе подобные настройки есть?

A: Если приложение на устройстве падает без ошибок, то вероятно переполнилась видеопамять. Необходимо уменьшить значение в app.icf (system\temp\projects\Absolutist\project\common). Для масштабирования в viewer.xml используются такие параметры:

   sx - ручное масштабирование по х
   sy - ручное масштабирование по y
   x - сдвиг изображения по x
   y - сдвиг изображения по y
   autoPosX - автоматическое позиционирование по х
   autoPosY - автоматическое масштабирование по y
   autoScX - автоматическое масштабирование по x
   autoScY - автоматическое масштабирование по y 

Примеры настроек и более подробно про настройку масштабирования: http://ge.absolutist.com/index.php/%D0%AD%D0%BA%D1%81%D0%BF%D0%BE%D1%80%D1%82,_%D0%B8%D0%BC%D0%BF%D0%BE%D1%80%D1%82_%D0%B8_%D1%80%D0%B5%D0%BB%D0%B8%D0%B7_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B0 Проверить хватит ли памяти указаной в app.icf можно на вьювере под windows(при условии что экспорт проекта будет не масштабирован). Для этого необходимо в папке редактора отредактировать app.icf параметр для редактирования: MemSize


Q:при запуске приложения на девайсе наблюдается притормаживание (секунд 5-10). Анимации и прочее заметно тормозят и дергаются. Через секунд 5-10 притормаживание проходит и все работает отлично. Как исправить эту проблему?

A: Для более быстрой загрузки можно включить предзагрузку экранов, но это в нагружет устройство - в фоне после открытия текущего экрана загружется в память графика выбранных экранов. Подтормаживания в начале появляются из-за одновременного запуска большого количесва объектов и фоновой загрузки, если она включена. Также нагружают устройсво несколько одновременно запускающихся патиклов. Настройки предзагрузки можно посмотреть в project->project options Вкладка Preloading screens содержит экраны на которые возможен переход с текущего, в вкладке Button setup сожержатся _все_ кнопки проекта, на которых указан переход на другой экран. Отключение предзагрузки на кнопке дублирует отключение в Button setup(если в одном из двух мест отключить, то и в оставшемся тоже отключится) Для отключения предзагрузки её надо отключить как на кнопке, так и на Preloading screens. Для более плавного запуска можно: запускать анимацию и дествия с небольшой задержкой после загрузки экрана и желательно не одновременно.


Q: Можно вставить прелаудер с некоторой задержкой? Достаточно установить first loading bg/bar в options, или надо делать прелаудер-сцену в начале запуска приложения?

A: first loading bg/bar - это графические ресурсы для индикатора загрузки в первый раз при открытии приложения.

Для отображения какой-то активности при переходе между экранами можно добавить ресурс в поле activity и в loading bg/bar (для бара лоадинга соответственно должно быть включено отображение его progressbar="0" или должен отстутсвовать, или =1 + указано в объекте options что бар надо отображать) на activity настройки прогресбара не распостраняются.


Q: при переходе между сценами появилась белая полоска-прогресс-бар. Можно ли ее убрать или заменить на наш loading? Это и есть loading bar в options?

A: Белую полоску можно убрать поставив параметр progressbar="0" в viewer.xml соответсвующей платформы в тэг default. пример viewer.xml:

<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<viewer>
    <banners />
    <globaltop   />
 <flurry game_id=""/>
    <dev w="-1" h="-1" autoPosX="1" autoScX="0" autoScY="1" nm="Fit height" />
    <default prj="project.seproj"  video_memory="64715200" color_aabbggrr="ff000000" scr="0" lay="0" progressbar="0" /> 
</viewer> 

system\temp\projects\Absolutist\project здесь находятся viewer.xml для разных платформ


Q:Какие папки и файлы не менять при переустановке конструктора, чтобы все настройки проэкта и вьювера сохранились?

A: \system\temp\projects\Absolutist\project - здесь настройки проекта при сборке

\system\temp\build_last\Viewer\platforms\marmalade\libs - здесь библиотеки для сборки, иногда надо только их менять

\system\temp\build_last\Viewer\platforms\marmalade - здесь прочие настройки, дополнения и прочее, в редких случаях они меняются

\system\scripts - скрипты для сборки, обычно не меняются

\system\*.sets - настройки редактора, содержатся также настройки объектов. Меняются при изменении полей объектов, их добавлении, добавлении объектов.

При обновлении вьювера меняются viewer.s86, viewer.lic, viewer.exe и может поменяться s3e.icf, при обновлении редактора сцен - SceneEditor.exe, редактора текстов - TextsEditor.exe, редактора ресурсов - ResourcesEditor.exe в папке %system_disk%:\Users\%user%\AppData\Roaming\Absolutist\Viewer - находятся настройки вьювера(который запускается из редактора)

при добавлении нового объекта меняются как минимум: вьювер, библиотеки, объекты для редактора, это пути:

\system\temp\build_last\Viewer\platforms\marmalade\libs

\system\*.sets

\viewer.*

менять обычно не надо:

\app.icf

%system_disk%:\Users\%user%\AppData\Roaming\Absolutist\Viewer\viewer.xml

\system\temp\projects\Absolutist\project


Q: У некоторых ресурсов с прозрачностью есть артефакты в виде черных (серых) пикселей по линии прямоугольника текстуры. Как можно устранить этот эффект?

A: В редакторе ресурсов необходимо добавить бордер графическому ресурсу.


Q: Можно добавить бордер группе ресурсов, или только по отдельности каждому?

A: Можно поставить бордер в редакторе ресурсов Project->options->Cropping Settings тогда бордер будет добавляться всем новым объектам, или можно по отдельности добавлять каждому.


Q: Как работать с профилями игроков?

A: Для добавления, редактирования, удаления профилей необходимо связать таблицу, объект типа options и поле типа "edit". Также необходимо задать картинку в поле cursor в таблице, чтобы видеть что выбрано и настроить количество ячеек и их отображение в таблице. Чтобы добавить профиль необходимо объект типа options переводить в определённые состояния.

add - добавляет профиль из поля типа edit

delete - удаляет профиль

edit - редактирует профиль

change - переключает между профилями

update - обновляет информацияю о профилях - перевычитывает их из настроек и обновляет данные в таблице


поэтому:

  • добавление:

add -> update

  • редактирование:

change -> edit -> update

  • удаление:

change -> delete -> update


Q: Я привязываю звук к кнопке на состояние down, кнопка совершает переход между сценами. Есть способ проигрывать длинный звук кнопки до конца?

Я привязываю звук к кнопке на состояние down, кнопка совершает переход между сценами. Звук короткий (1-2 секунды). Но при нажатии на кнопку переход совершается очень быстро и звук не успевает проигрывается до конца (получается обрезанный звук, что-то вроде "тс"). Есть способ проигрывать звук кнопки до конца?

A: 1) Вместо кнопки поставить машину с задержкой и проигрыванием звука.

или

2) Включать кнопкой машину которая через время перейдёт на другой экран.


Q: Можно ли объекту-патчворку машиной задавать картинки и маски?

A: Да. Параметры:

res - картинка

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

resT - маска


Q: Когда я перетаскиваю фрагмент на patchwork из таблицы, то одни кусочки увеличиваются до оригинального размера (100%), а другие - до не полного (примерно 90%). Подскажите, как это исправить?

A: Вероятно проблема связана с тем что некоторые объекты не успеваюют увеличить свои размеры к исходным до размещения на своей позиции. Попробуйте уменьшить значение в параметре пачворка "притяжение таблицы" (группа элементы пачворка). Тогда объекты будут быстрее увеличиваться до исходных размеров.


Q: Можно закинуть кусочки в две таблицы? или только в одну?

A: В Данный момент к одному пачворку подключается только одна таблица. Можно попробовать использовать 2 пачворка, но тогда элементы каждого пачворка будут лететь в соответствующую таблицу и необходимы будут дополнительные машины для проверки собранности пачворков(чтобы 2 работали как 1)


Q: Что мне изменить в настройках Windows, чтобы вьювер отобразил английский текст?

A: Панель управления\Все элементы панели управления\Язык и региональные стандарты поменять на США формат и расположение. Или в объект типа options записать в параметр lang значение en


Q: Подскажите, где поменять имя приложения?

A: \system\scripts\proj_config.csv

+;last;Absolutist;Absolutist;Absolutist;1.0.0;Absolutist;Absolutistkindle;Absolutistdroid;

  1. + - собирать или нет ( не надо трогать! )
  2. last - Версия вьювера ( не надо трогать! )
  3. Absolutist - Короткое имя проекта, аналогичное имени папки. ( не надо трогать! )
  4. Absolutist - Имя проекта (такое, как отображается на устройстве), пример: The Elephant;
  5. Absolutist - Имя файла проекта без пробелов и расширения, пример: The_Elephant;
  6. 1.0.0 - Версия проекта в формате major.minor.revision, пример: 0.0.1 - начальная, 1.0.1 - релизная;
  7. Absolutist - Pkg name для Iphone пример: com.yourcompany.theelephant;
  8. Absolutistkindle Pkg name для Amazon. Пример: com.yourcompany.theelephant;
  9. Absolutistdroid - Pkg name для Android. Пример: com.yourcompany.theelephant;