|  4.11.2014 / 08:18 |  | 
| dimon_net    Пользователь 
  Сейчас: Offline 
 Регистрация: 11.06.2013
 | Zvers (02.11.2014/13:21)В этой версии из движка убрал ненужные пакеты, связанные с мультиплеером и 3D графикой. Они, разумеется, не допиленные. Просто не удивляйтесь, что в некоторых классах есть закомментированные строки, сЗачем? Можно было выложить и кто-то доделал пакеты.И ещё как создать квест в этой игре?
 
 Изменено dimon_net (4.11 / 08:18) (всего 1 раз)
 | 
|  4.11.2014 / 13:10 |  | 
| Zvers    Пользователь 
  Сейчас: Offline 
 Регистрация: 06.02.2010
 | dimon_net,  В классе Quests дефолтного пакета все квесты. Добавить квест просто, но не очень удобно. Для начала для квеста нужно придумать ID - целое число. Для второстепенных квестов оно меньше -1000, для основных желательно делать его положительным (но не обязательно). ID квеста должен быть уникальным и отличаться от айдишников других квестов (все ID можно узреть в классе Quests). В классе Quests нужно описать квест в методах beginQuest и endQuest. В beginQuest создаётся объект квеста.quest_pointer = new Quest(String name, String descr);
 Первый аргумент - название, второй - описание (второй в ЗОА не используется, можно что угодно написать)
 Затем нужно добавить в квест контрольные точки.
 quest_pointer.addPoint(TypeQuest type, QuestProperties prop, String name); // один из примеров метода (там есть ещё пара перегруженных)
 type - модель квеста, в которой хранится информация о прогрессе данной контрольной точки. TypeQuest - абстрактный класс, от которого наследуются все типы (PositionQuest, KillerQuest, ItemQuest, DialogQuest и т.д., все типы находятся в пакете org.mlge.quest.type)
 prop - объект, в котором хранится информация о награде за выполнение данной контрольной точки (деньги, какие предметы появятся в инвентаре, какие уберутся).
 name - если использовать данный аргумент, то при выполнении данной контрольной точки в сообщениях будет фигурировать этот параметр, а не название квеста (Задание обновлено: name и т.д.)
 
 Затем нужно указать quest_pointer.type = ID; // ID - тот айди, который вы придумали для квеста
 
 Всё это надо сунуть в условие
 else if (n - ID == 0) {
 // .. = new Quest ( .....
 }
 
 
 В endQuest() нужно в такой же условный блок сунуть обнуление ссылки на квест.
 
 Квест создан и теперь нужно в нужный момент вызвать QuestManager.addQuest(ID);
 
 | 
|  4.11.2014 / 13:21 |  | 
| Zvers    Пользователь 
  Сейчас: Offline 
 Регистрация: 06.02.2010
 | Вообще, чтобы найти рабочий баланс между скоростью загрузки и стабильностью, в пользовательском коде (не в движке) было использовано много вещей, ухудшающих декомпозицию и удобство программирования. Ну что поделать, на такое приходится идти в условиях небольшого количества ресурсов девайсов.Поэтому если кто-то захочет добавить квест, советую хорошенько изучить структуру уже созданных квестов.
 
 | 
|  4.11.2014 / 15:21 |  | 
| ВитаминКО    Супермодератор 
  Сейчас: Offline 
 Имя: ВасилиусОткуда: RZN
 Регистрация: 20.04.2012
 
 | __________________все так сложно и так круто  
   わからない!! | 
|  4.11.2014 / 15:26 |  | 
| PLUTONiUM    Пользователь 
  Сейчас: Offline 
 Имя: NamelessОткуда: Авалон
 Регистрация: 14.10.2012
 
 | Оптимизировать игру, запилить новый сюжет, и go играть   | 
|  4.11.2014 / 16:00 |  | 
| AGet    Пользователь 
  Сейчас: Offline 
 Регистрация: 20.07.2012
 | Ну нафиг, вынесли бы уровени в отдельные файлы...
 | 
|  4.11.2014 / 17:36 |  | 
| Zvers    Пользователь 
  Сейчас: Offline 
 Регистрация: 06.02.2010
 | AGet,  Ругались бы все на долгую загрузку, например, диалогов
 | 
|  4.11.2014 / 17:55 |  | 
| Zvers    Пользователь 
  Сейчас: Offline 
 Регистрация: 06.02.2010
 | AGet,  Стоп. В каком смысле уровни?
 | 
|  4.11.2014 / 19:09 |  | 
| RblSb    Пользователь 
  Сейчас: Offline 
 Регистрация: 25.07.2011
 | Zvers, сейчас она тоже не шибко быстрая. Ты знаешь что большое количество классов вредно для бедных телефонов? 150 мать вашу классов без единого комментария его назначения -__-И вот нафига делать в коде методы размером в одну строчку? Это уж точно скорости не прибавит. Да и отдельные классы с парой переменных. Наверно здорово каждый раз создавать экземпляр для обращения к ним. Почему же игра таким функционалом не блещет? Что это за код-мираж? Извращение...
 
 | 
|  4.11.2014 / 20:05 |  | 
| Zvers    Пользователь 
  Сейчас: Offline 
 Регистрация: 06.02.2010
 | RblSb,  Насчёт количества классов согласен, но без этого игра бы так и не вышла. В ходе работы много раз возникала необходимость что-то переделать, и только благодаря архитектурному подходу и гибкости движка это было возможным.Лёгкие методы же, кстати, инлайнятся хорошо. Количество объектов лёгких классов пренебрежительно мало, так что это точно на производительность не влияет.
 Вот все строки можно было бы в ресурсы засунуть, намного уменьшило бы размер самых "тяжёлых" классов. Но тут есть обратная сторона медали - мобильники не терпят динамических выделений памяти, а учитывая, что не везде есть дефрагментация (далеко не везде), это становится основной проблемой оптимизации (кстати говоря, если бы не это, игра вышла бы как минимум на год раньше), + пришлось бы долго грузить эти данные.
 
 Если не обращать внимание на кашу кода в дефолтном пакете, с помощью данного движка можно быстро реализовать почти любую игру. Используя движок и утилиты, можно создать основной каркас игры за 5-10 минут. Если присмотреться, то там можно реализовать, например, любой вид инвентаря. Всё зависит от фантазии.
 
 |