Среда, 27 Ноября 2024, 05:52

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Урок по созданию браузерной игры № 7
AssasinДата: Вторник, 03 Ноября 2009, 12:56 | Сообщение # 1
web-coder
Сейчас нет на сайте
В данном уроке поговорим о том как будет функционировать инвентарь. При нажатии на кнопку Инвентарь в меню, открываеться всплывающее окно в котором будет 6 ячеек, в них может быть оружие или броня. Данные, которые будут здесь отображаться, считываються с БД с таблицы которую мы создадим в следующем уроке. Вещи, которые будут надеты на игроке будут считывать данные с таблицы users, в неё мы добавим несколько столбцов, каждый столбец будет иметь id вещи, которая находиться в таблице inventar. В таблице inventar будут записаны все вещи, которые находяться в игре, также в ней будет краткое описание вещи и её свойства (повышение атаки, защиты и т.д.). Вещи, которые надеты на игроке будут отображаться в Профиле игрока, в нем будет 4 ячейки — голова, правая рука, левая рука, ноги.
Все вещи, которые игрок будет получать, будут отображаться в инвентаре, а потом их можно будет перенести на ячейку в Профиле игрока, как обычно во всех играх.
Думаю все, если что то забыл, то напишу в следующем уроке happy

При копировании материала ссылка на источник обязательна!

JekelДата: Четверг, 12 Ноября 2009, 00:43 | Сообщение # 2
уже был
Сейчас нет на сайте
плз выложи уроки)
VinchensooДата: Четверг, 12 Ноября 2009, 11:33 | Сообщение # 3
Злобный социопат с комплексом Бога
Сейчас нет на сайте
Quote (Jekel)
плз выложи уроки)

Это и есть урок wacko


AssasinДата: Четверг, 12 Ноября 2009, 23:00 | Сообщение # 4
web-coder
Сейчас нет на сайте
Наверное он имел ввиду продолжение, на днях будет.
1nfernoДата: Воскресенье, 06 Июня 2010, 13:48 | Сообщение # 5
был не раз
Сейчас нет на сайте
Всем привет.

Помучив первую тему теперь приступим к инвентарю... =)))
Данное решение инвентаря подходит только для ситуации когда у нас в инвентаре ограниченное количество слотов для вещей (может я ошибаюсь, но это не так важно, так как все равно нельзя будет реализовать ещё несколько штук см. ниже).

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

Теперь как это будет у нас реализовано в MySQL.
Как все это унас будет отображаться в интерфейсе пользователя я считаю не так важно и кто как хочет может реализовывать, это не будет влиять на архитектуру хранения в MySQL.
1.Самый примитивный способ, я думаю, это все вещи зогнать в одну таблицу например item_list (я имею ввиду не види вещей а ВСЕ вещи). Тоесть будут столбцы item_id (уникальный номер вещи по всей игре) item_name, характеристики вещи(которые мы сможем потом менять - делать всякие заточки , улучшения ), другие параметры вещи и столбец - какому игроку принадлежит вещь.
В этой ситуации наверно придётся раскидывать разные виды вещей по разным таблицам (мечи в одной таблице щиты в другой и т.д.) ввиду разных характеристик предмета, у меча нет параметра брони , у шлема - параметра атаки. Но представьте сколько времени будет занимать формирование инвентаря, нужно будет сделать запросы ко всем таблицам и выбрать по параметру - принадлежность предмета. А таблицы то будут огромные...
Думаю этот вариант не подходит - ресурсоёмкое решение (хотя если таблици сортировать по принадлежности предметов.... ??? ).

2. У нас есть таблица Inventar, есть таблицы с видами вещей item_list (id вещи и её характеристики ). В ней храняться инвентари всех игроков, тоесть по количеству записей она будет соответствовать таблице users. Первый столбец - user_id. А потом содержимое инвентаря, ктоторое придётся хранить в текстовом виде : перечисление всех вещей и за каждой вещью её модификаторы
(id_123 min_attack=+7 max_attack=+4 mf_crit=-12, id_156 def=+50 mf_crit=+15, ...... - в данном случае мы имеем в инвентаре меч id_123 у которого есть свои параметры атаки и модификаторов, кот мы берём из таблицы item_list и к этим параметрам прибавляем индивидуальные модификаторы характерные именно для этой вещи - увеличиваем минимальную аттаку на 7 , максимальную аттаку на 4 и модификатор крита уменьшаем на 12 и так делаем со всеми перечисленными вещами).
Минус всего этого , в том что нам придётся каждый раз работатьс этой гигантской строчкой....
а также у нас нет уникального id вещи, с помощью которого мы могли бы просто выкинуть вещь или подобрать, нам придётся прикаждом действии с вещью передавать её параметры.

Нус... жду обсуждения всего этого....

LucasitoДата: Воскресенье, 06 Июня 2010, 20:06 | Сообщение # 6
участник
Сейчас нет на сайте
У нас в игре реализовано так:
Одна таблица - "шаблоны" вещей. Т.е. вещи с базовыми характеристиками и процент разброса этих характеристик, пока у все хстоит 100%. Т.е. например есть базовый меч с 5 атаки. Значит может получится меч с 1 атакой и с 10. 0 не получится, т.к. если у вещи один параметр, то 0 алгоритм генерации вещи не дает взять. Все характеристики в игре- это отдельные поля в таблице. Например поле def, поле luck, поле type(тип вещи, например 1- щит, 2- меч и т.д.)
Вторая таблица- сами вещи. У каждой вещи стоит владелец(игрок). Так же указано из какого шаблона получилась вещь. Выборки для инвентаря по конкретному игроку проходят очень быстро, т.к. нужные поля в таблице индексированы.
Этот подход дает очень большую гибкость. У каждой вещи можно поменять любые параметры, можно даже сменить аватарку, работает быстро для поиска предметов в инвентаре и то, что надето на игрока.



Скриншоты. Приглашаем бета-тестеров!
Помог? Ставь "+" мне в репу :)
1nfernoДата: Воскресенье, 06 Июня 2010, 20:43 | Сообщение # 7
был не раз
Сейчас нет на сайте
Спасибо за ответ...
а какое у тебя в игре, в этой таблице количество вещей на данный момент?
Видимо так и придётся делать....
Я так понимаю индексирование по полю владелец(игрок), так как по нему будет делаться выборка?
LucasitoДата: Воскресенье, 06 Июня 2010, 20:45 | Сообщение # 8
участник
Сейчас нет на сайте
количество "шаблонов" 81
количество вещей в инвентаре, надетых и в лавках 13760
индексов 5 штук.
по id вещи
по пользователю+признак лавка/надето/инвентарь+позиция,если вещь надета
по "шаблону"+позиция,если вещь надета
и ещё узкоспециализированные индексы 2 штуки.



Скриншоты. Приглашаем бета-тестеров!
Помог? Ставь "+" мне в репу :)


Сообщение отредактировал Lucasito - Воскресенье, 06 Июня 2010, 20:49
scnДата: Воскресенье, 04 Ноября 2012, 01:51 | Сообщение # 9
был не раз
Сейчас нет на сайте
как будет считываться информация с таблицы с вещами?
на каждое поле с шмоткой в users новый запрос в inventar?
Я пробую писать игру и на этом застрял...
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг