Sanctuary [Разработка]

Re: Sanctuary [Разработка]

Svartberg,
Я бы принял участие, будь я умнее.
Удачи с работой)

Oliver
Magni nominis umbra
useravatar
Offline
562 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Sanctuary [Разработка]

Из последних новостей:
И так, прошло уже достаточно солидное кол-во времени и пора бы уже рассказать, что было сделано за это время.
Честно сказать, не так много, как хотелось бы. Однако, вот, чего удалось добиться:
  - Наконец реализована тестовая версия инвентаря на простой системе ID отклика.
В краце поясню, что это значит: Поскольку в игре есть огромное кол-во предметов которые создаются непосредственно в процессе разработки (еда, напитки, предметы декора и тд.), то было принято решение забить все данные для этой лабуды непосредственно в базу данных. Каждый предмет в игре постоянно идентифицируется при помощи обращения к локации-базе, в которой забиты все уже заготовленные ID, который в свою очередь, при взаимодействии с определенным предметом, уже обращается к второй локации-базе, в которой уже находится вся необходимая информация о предмете.
Зачем это было сделано?
В игре огромное кол-во контейнеров, куда можно положить предметы, было решено структурировать обращения программы к необходимой информации в зависимости от потребностей. Проще говоря, программа обращается к необходимой базе только при необходимости. (Чтобы не забивать память ненужной информацией, ибо на поздних этапах происходит более 500000 операций за ход. Будь то информация о предмете или противнике и тд.)
Сам процесс инициализации предметов в контейнерах весьма прост. К примеру, когда мы получаем новый предмет в инвентарь, к ID предмета приписывается ID контейнера, и затем эта смесь отправляется в специальный массив который хранит все данные о предметах в контейнерах. Предмет отображается в контейнере только при условии наличия необходимого ID в массиве.
Пример:
Допустим, у нас есть Картошка, ее ID выглядит, примерно, так - VEG00PT, где:
  VEG - тип предмета;
  00 - контрольная сумма;
  PT - порядковый номер/определитель предмета.
ID нашего рюкзака выглядит еще проще: ID.HR01, где:
  HR - тип контейнера, в данном случае Hero (Герой);
  01 - порядковый номер контейнера.
Когда мы поднимаем картошку и добавляем ее в инвентарь, происходит следующее: ID контейнера соединяется с ID предмета и получается такое чудо: ID.HR01VEG00PT и вот уже этот ID отправляется в массив, где и хранится до тех пор пока он не удалится из него.
Когда мы выбрасываем предмет, то, при условии, что кол-во предмета <= 0, универсальный ID удаляется из массива. Это позволяет хранить большое кол-во информации в одном лишь массиве.
А теперь одно очень важное замечание. Чтобы не заставлять обработчик инициализировать весь массив с данными, тем самым постоянно прогонять условия по базе из огромного количества значений, мы обращаемся к данной базе лишь при условии открытия инвентаря контейнера. Когда мы открываем инвентарь, то все остальные действия в игре замораживаются, освобождая стеки памяти для анализа данных для отображения предметов.
Благодаря этому, даже имея более 200000 значений в базе, все операции пройдут менее чем за 500мс. (При условии, что ваша оперативка имеет 2гига или более)
К сожалению, на старых смартфонах эта система будет работать хреново, но игра и не рассчитана на мобильные платформы.
Почему мне пришлось заморозить практически все расчеты в игре, при открытии инвентаря?
Уже говорилось выше, каждый ход программа инициализирует более 500000 расчетов, а с условием и особенностями движка, это довольно много (поскольку у меня всего 2 гига оперативы (+512 мб предоставляет видюха) и все эти расчеты полностью забивают оставшиеся стеки).
Единственная проблема, с которой я столкнулся: вывод предметов происходит строго по тому, в какой последовательности находятся их ID в общей базе.
Но кое-как я смог разбавить эту проблему запилив сортировку. Так-же запилил страничное отображения (на одной странице только 15 предметов, чтобы не пришлось прокручивать экран вниз).

Так-же сделал денежную систему, но из-за некоторых ограничений движка, максимальная сумма в КОНТЕЙНЕРЕ, прошу заметить, может достигать лишь лимита в 2147483647. И это, примерно 247000 золотых. Но я ввел ограничение в 250000 золотых. да, в игре есть медь, серебро и золото, не считая другой валюты. Золото, серебро и медь - основная валюта. Для того, чтобы система монитизации работала, пришлось использовать расчетное количество в медных монетках. А серебро и золото прост для красоты  конвертируется. Чтоб у вас не было в инвентаре написано 2147483647 медных монет.

Что-ж, я думаю, что на данный момент это все, о чем я хотел бы вам рассказать. Спасибо за внимание)

Svartberg
Geek
useravatar
Offline
243 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Sanctuary [Разработка]

Svartberg,
я тоже поначалу пилил трёхмонетную систему. Но у меня было сложнее. Был действительно счёт трёх видов монет и конвертирование. Причём, торговцы вели курс монет. Т.е. если товар стоит серебряную монету, а у тебя только золотые, сначала они "обменивали" тебе золотой на горсть сребреников и медяков, а потом продавали товар за серебряную монету. Т.е. они покупали золото с коэффициентом 0.8 от базовой цены. Чтобы купить золото у торговца, нужно было потратить 1.2 от базовой цены монеты, т.е. дофига меди, если в кармане мешок медных монет. Всё это изначально планировалось для удобства движения по социальной лестнице. Потом я как всегда переделал движок, и отложил вопрос о монетах в долгий ящик, оставив одну валюту.

Насчёт склеивания id. Кажется не очень рациональным. Почему не вести два массива: в одном ай-ди объекта($object_id), в другом ай-ди его местоположения ($position_id)? Чтобы отсеять все объекты, лежащие в сумке, нужно просто получить список ИД всех объектов, чьё $position_id соответствует ИД сумки. arrpos, думаю, работает быстрее arrcomp.

Aleks Versus
воздвигатель башни
useravatar
Offline
1493 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Sanctuary [Разработка]

Ну, пока тестил, то время отклика при 500000 было, у твоего варианта: 0,2, у моего, 1,0.
Выбрал же такой вариант, потому, что мне удобнее работать с такими данными (просто учитывая свою систему).

Svartberg
Geek
useravatar
Offline
243 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Sanctuary [Разработка]

Из последних новостей:
Доброго времени суток!
Вкратце расскажу о том, что готовлю сейчас: В игре появится энциклопедия, которая будет хранить в себе всю информацию об игре. Это касается и найденных мобов.
Пример вывода информации о мобе:

http://i.imgur.com/R8HMZs6.png

Svartberg
Geek
useravatar
Offline
243 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Sanctuary [Разработка]

Svartberg,
По артом чувствуеться что будет текстовая версия DarkSouls, очень хочется сыграть

DeathSpace
useravatar
Offline
77 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Sanctuary [Разработка]

DeathSpace написал(а):

Svartberg,
По артом чувствуеться что будет текстовая версия DarkSouls, очень хочется сыграть

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

Svartberg
Geek
useravatar
Offline
243 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Sanctuary [Разработка]

Дааа, поиграть хочется, но ждать, видимо, ещё долго. (((

Ajenta
демиург
useravatar
Offline
1364 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Sanctuary [Разработка]

Ajenta написал(а):

Дааа, поиграть хочется, но ждать, видимо, ещё долго. (((

Уже скоро)

Svartberg
Geek
useravatar
Offline
243 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Sanctuary [Разработка]

На куспко будет? smile

Ajenta
демиург
useravatar
Offline
1364 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Информация

Статистика форума:
 
Всего тем:
974
Всего опросов:
14
Всего сообщений:
16790588
Сообщений на этой неделе:
4
Пользователи форума:
 
Всего пользователей:
2371
Последним зарегистрировался:
Artog