Вниз  Игра "Zone of Alienation: The Beginning"
- 4.11.2014 / 20:22
RblSb
  Пользователь

RblSb 
Сейчас: Offline
Zvers, гибкость для мобильных игр вещь очень вредная, на midp 1.0 даже для разных экранов были отдельные сборки. Короче говоря все довольно печально вышло, слишком тяжелый проект для стандартов j2me. Судя по фикс-версиям ты сам уже перестал понимать работу кода, думаю на ведре все бы отлично могло выйти. Теперь ты чем занят?
- 4.11.2014 / 20:36
Zvers
  Пользователь

Zvers 
Сейчас: Offline
RblSb, Чтобы качественно в данном случае сделать несколько версий для разных устройств, нужно заново переписывать весь код под определённую архитектуру. В ходе тестирования после добавления какой-нибудь оптимизационной фичи постоянно проявлялось повышение производительности на целевом устройстве с одновременным понижением её на других.
Кстати, долго мучались над Z каналом. Сначала был реализован алгоритм, работающий за O(1) по перемещению слоёв, но из-за того, что НПЦ тоже умеют двигаться, он не всегда давал корректный результат. Пришлось сортировать все объекты. Поначалу был QSort. И тут тоже проблемы - неустойчивые сортировки приводили к "миганию" объектов в некоторых местах. А устойчивые чаще всего дольше работают, либо используют дополнительную память. А какая нафиг дополнительная память много раз в секунду, когда итак это основная проблема. Что-то в этом роде.
Сейчас много чем занимаюсь. Учёба очень много времени занимает. А так сейчас RB2 на Android уже, надеюсь, выйти должна.
- 4.11.2014 / 21:09
RblSb
  Пользователь

RblSb 
Сейчас: Offline
Zvers, что за z канал? всмысле перемещение слоев?
- 4.11.2014 / 21:24
dimon_net
  Пользователь

dimon_net 
Сейчас: Offline
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 / 21:37
Zvers
  Пользователь

Zvers 
Сейчас: Offline
dimon_net, Карты добавить проще, просто создать их с помощью утилит ML Map Creator, добавить в ресурсы и
LocationManager.addLocation(new Location(String path_1, String path_back, String path_2, false, String name));
path_1 - путь к бинарику карты
path_2 - путь к бинарику объектов карты
path_back - путь к картинке с тайлами
name - название карты

Переходы между локациями тоже нужно добавлять, если надо
World.locareas.addElement(new LocationArea(int id, int id2, int x, int y, int w, int h, int player_x, int player_y, int dir));
id - айдишка локации, на которой находится переход
id2 - айдишка локации, куда нужно перейти
x, y, w, h - координаты и размеры области, в которой действует переход
player_x, player_y - координаты игрока после перехода на новую локацию (-1, если должна сохраниться текущая координата)
dir - направление, при котором переход на новую локацию происходит автоматически (без нажатия пользователем кнопки 0). -1 если пользователь должен нажать на 0 чтобы перейти, иначе автоматический переход действителен, поле имеет значения Game.player.LEFT, Game.player.RIGHT, Game.player.DOWN, Game.player.UP
- 4.11.2014 / 21:39
Zvers
  Пользователь

Zvers 
Сейчас: Offline
RblSb, Грубо говоря порядок отрисовки объектов
- 4.11.2014 / 21:39
dimon_net
  Пользователь

dimon_net 
Сейчас: Offline
dimon_net, Карты добавить проще, просто создать их с помощью утилит ML Map Creator, добавить в ресурсы и
LocationManager.addLocation(new Location(String path_1, String path_back, String path_2, false, String name));
path_1 - путь к бинарику карты
path_2 - путь к бинарику объектов карты
path_back - путь к картинке с тайлами
name - название карты

Переходы между локациями тоже нужно добавлять, если надо
World.locareas.addElement(new LocationArea(int id, int id2, int x, int y, int w, int h, int player_x, int player_y, int dir));
id - айдишка локации, на которой находится переход
id2 - айдишка локации, куда нужно перейти
x, y, w, h - координаты и размеры области, в которой действует переход
player_x, player_y - координаты игрока после перехода на новую локацию (-1, если должна сохраниться текущая координата)
dir - направление, при котором переход на новую локацию происходит автоматически (без нажатия пользователем кнопки 0). -1 если пользователь должен нажать на 0 чтобы перейти, иначе автоматический переход действителен, поле имеет значения Game.player.LEFT, Game.player.RIGHT, Game.player.DOWN, Game.player.UP
Спасибо. А на HTML5 можна создать такую игру?
- 4.11.2014 / 21:41
Magatino
  Администратор

Magatino 
Сейчас: Offline
RblSb (04.11.2014/21:09)
Zvers, что за z канал? всмысле перемещение слоев?
Глубина же, используется в играх, где спрайты могут перекрывать друг друга :gg:
- 5.11.2014 / 02:45
AGet
  Пользователь

AGet 
Сейчас: Offline
Zvers, пример: в .jar'нике папка Levels. В ней файлы: Level_1.zoalvl, Level_2.zoalvl, etc. Внутренности:

Map ... /// Карта к которой цепляем
AddNPC Medic x y WithQuest quest1 /// Добавить NPC с квестом на карту
AddNPC Medic x y WithoutQuest /// Добавить "столба"
Quest quest1
  If Not SayWithNPC1
  DisplaySimpleDialog "Привет! Мы похоже раньше не виделись!"
  Else
  DisplaySimpleDialog "Мы раньше, похоже, виделись"
  EndIf
EndQuest
Считываем все карты, считываем все файлы квестов, цепляем, читаем, добавляем, погнали :-D
Так ГОРАЗДО удобнее. Наверно... :)
- 5.11.2014 / 05:00
DominaN
  Пользователь

DominaN 
Сейчас: Offline
AGet, это уже скриптовая машина как в сталкере или зомбишутере
Наверх  Всего сообщений: 729
Фильтровать сообщения
Поиск по теме
Файлы топика (22)