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 минут. Если присмотреться, то там можно реализовать, например, любой вид инвентаря. Всё зависит от фантазии.
|