Как сделать инвентарь для браузерной
| |
mmorpgbr | Дата: Суббота, 16 Марта 2013, 14:16 | Сообщение # 1 |
частый гость
Сейчас нет на сайте
| Народ привет!
Обьясните мне пожалуста суть, логику и построения инвентаря для браузерной текстовой rpg: 1. Использую php, JQuery ну и само собой java script. 2. Как вообще должно работать это всё? 3. Какая там должна быть опр. последовательность?
Мне код не нужен. Нужно конкретно всё обьяснить! Чтоб не задавать кучу тупых вопросов.
|
|
| |
Monteg | Дата: Суббота, 16 Марта 2013, 14:42 | Сообщение # 2 |
участник
Сейчас нет на сайте
| mmorpgbr, В своей БД создаешь новую таблицу Персонаж - Предмет. Заносишь и берешь данные с помощью php. Что конкретно непонятно?
|
|
| |
Быдлокодер | Дата: Суббота, 16 Марта 2013, 14:45 | Сообщение # 3 |
частый гость
Сейчас нет на сайте
| Начнем с малого, а именно с JS. ЗАПОМНИТЕ ВСЕ РАЗ И НАВСЕГДА: JQUERY ЭТО ПРОСТО БИБЛИОТЕКА ДЛЯ ЯЗЫКА JAVASCRIPT НАПИСАННАЯ НА ЯЗЫКЕ JAVASCRIPT.
А теперь просто объясню как должен работать инвентарь без технических деталей.
1. Создаем в базе данных у пользователя колонку с названием "MoiIzvras4eniaNadInventarem" и конечно как и я пишем все на русском языке, просто используем латиницу (не забываем что мы быдлокодеры). 2. Решаем сколько будет переменных. Вообще это надо было сделать ещё перед созданием таблицы, но нам пофиг. 3. Создаем страницу с инвентарем. (скажем таблицу 3х3). 4. Создаем страницу с магазином бесплатных вещей для тестов. 5. И подошли к самому сочному php. Создаем файл для выборки из базы данных инвентаря у конкретного пользователя в формете json, распарсим его и вставим в таблицу нужные значения. 6. Сделаем кнопочку купить в магазине и выкинуть в инвентаре (драг энд дроп сделаете сами если понадобиться). 7. С помощью js добавим на наши кнопочки обработчики событий отправляющие на сервер get запрос с id или названием предмета (по вашему желанию). 8. Купить.Создаем файл принимающий эти данные использующий, выбирающий из базы данных цену вещи наличности персонажа и инентарь, проверяем хватает ли денег и не полон ли инвентарь, если все ок то вычитаем деньги и добавляем в свободную ячейку наш предмет. PROFIT! 9. Выкинуть. Создаем файл получющий инвентарь нашего персонажа, распарсим его ( не забудем что он в json), проверим есть ли что либо в нужной нам ячейке, заменим на 0. Заного отправим на сервер.
|
|
| |
mmorpgbr | Дата: Суббота, 16 Марта 2013, 14:50 | Сообщение # 4 |
частый гость
Сейчас нет на сайте
| Что такое json??? Как сделать так чтоб надетая одежда отображалась в вкладке инвентаря?
|
|
| |
Быдлокодер | Дата: Суббота, 16 Марта 2013, 14:52 | Сообщение # 5 |
частый гость
Сейчас нет на сайте
| таким же принципом и одежду. и загуглите про json.
|
|
| |
HerrPotapov | Дата: Суббота, 16 Марта 2013, 19:25 | Сообщение # 6 |
заслуженный участник
Сейчас нет на сайте
| mmorpgbr, я думаю очевидно, что вариант Быдлокодера есть чистейший быдлокод? =) Monteg предложил хороший (и по-моему единственно возможный) вариант
Discord: alpotapov#1741
Интервью с разработчиком WarCastle - Читаем и вникаем!
|
|
| |
Talco | Дата: Суббота, 16 Марта 2013, 22:31 | Сообщение # 7 |
почетный гость
Сейчас нет на сайте
| Цитата (HerrPotapov) mmorpgbr, я думаю очевидно, что вариант Быдлокодера есть чистейший быдлокод? =) Monteg предложил хороший (и по-моему единственно возможный) вариант Не вдаваясь в подробности, быдлокодер описал систему инвентаря(...и не только инвентаря), которая используется во многих известных мне движках.
xNova: Революция
|
|
| |
HerrPotapov | Дата: Суббота, 16 Марта 2013, 22:58 | Сообщение # 8 |
заслуженный участник
Сейчас нет на сайте
| Talco, советую для общего развития почитать про нормальные формы. Вариант предложенный Быдлокодером нарушает первую (все значения должны быть атомарными). Представь себе, что тебе нужно узнать у каких персонажей есть предмет с id = 3. Если все сохранено в одном столбце в json, то придется делать запрос вытаскивающий ВСЕХ персонажей из БД, потом для каждого нужно будет этот json распарсить. А если инвентарь в отдельной табличке, то все просто Код select itp.player_id, p.nickname from items_to_players itp where itp.item_id = '3' join players p on itp.player_id = p.id И плюс такого подхода - он никак не зависит от количества зарегистрированных персонажей. А в варианте "быдлокода" очень даже зависит - одно дело достать и распарсить json для 10 персонажей и совсем другое - для 10 тысяч.
И я смотрел в исходники нескольких движков (в основном вот отсюда брал devtown.ru) - такой лютой жести я в своей жизни не видел (и что-то мне подсказывает что и не увижу). Я просто не понимаю как можно писать НАСТОЛЬКО плохо.
Discord: alpotapov#1741
Интервью с разработчиком WarCastle - Читаем и вникаем!
|
|
| |
Быдлокодер | Дата: Суббота, 16 Марта 2013, 23:08 | Сообщение # 9 |
частый гость
Сейчас нет на сайте
| HerrPotapov я предложил вариант которые подходит под данный вопрос, если бы были уточнения вроде твоего, то и структура была бы другой. Давайте сравним производительность выборки 1 значения в json+преобразование его в массив (и я не говорю о том что часто надо ещё и передать в js для ajax инвентаря). И туже выборку из скажем 30-50 значений.
Мне кажется результат известен заранее. И совет на будущее - четких правил нету, есть лишь советы которым можно следовать, а можно не следовать и далеко не всегда эти советы верны. Это как использовать ООП для вывода "hellow world".
|
|
| |
HerrPotapov | Дата: Воскресенье, 17 Марта 2013, 00:01 | Сообщение # 10 |
заслуженный участник
Сейчас нет на сайте
| Быдлокодер, четких правил нет, но есть good practices и есть bad practices. Схема предложенная тобой относится к bad practices хотя бы потому что ломает идею заложенную в реляционных базах данных. Твой подход хорош при использовании NoSQL вроде MongoDB, там это нормально, там так делать не то что можно, а нужно. Плюс еще один вопрос у меня возникает - а что конкретно ты предлагаешь хранить в поле "MoiIzvras4eniaNadInventarem"? JSON-объект содержащий айди предметов? Тогда чтобы узнать имя/параметры вещей из инвентаря игрока нужно будет делать второй запрос к БД вида where id = '$id1' OR id = '$id2' ... OR id = '$idn'. Не самое оптимальное решение. Или в json-объект предполагается запихнуть предметы целиком, со всеми их параметрами? Ну тут уже кому угодно станет очевидно что это несусветная глупость, ведущая к лютой избыточности. Плюс если правишь баланс и изменил какой-то показатель у предмета... Да-да, надо лезть ко всем игрокам в инвентарь, проверять наличие там этого предмета и менять его параметр у каждого игрока.
И не надо про "подходящий под конкретный запрос вариант". Это очевидно, что если человек делает онлайн-игру, то рано или поздно эта система сломается (или будет люто тормозить).
Discord: alpotapov#1741
Интервью с разработчиком WarCastle - Читаем и вникаем!
Сообщение отредактировал HerrPotapov - Воскресенье, 17 Марта 2013, 00:02 |
|
| |
because_ahaha | Дата: Воскресенье, 17 Марта 2013, 00:26 | Сообщение # 11 |
был не раз
Сейчас нет на сайте
| Цитата (mmorpgbr) 2. Как вообще должно работать это всё? 3. Какая там должна быть опр. последовательность? Если ты знаешь пхп и не понимаешь как сделать инвентарь, то возможно стоит задуматься о выборе другой профессии, т.к. проще связки значений user_id - item_id может быть только 2*2.
Цитата (mmorpgbr) Как сделать так чтоб надетая одежда отображалась в вкладке инвентаря? Один из вариантов - добавить для предмета флаг надета/снята и фильтровать по нему
HerrPotapov, Быдлокодер, по-моему хранить данные в json объекте это извращение. В лучшем случае случае такой вариант может подойти для статичных данных, типа информации об игроке, которая обновляется изредка. И даже в таком случае должно быть поле с user_id, по которому будет осуществляться выборка
|
|
| |
Быдлокодер | Дата: Воскресенье, 17 Марта 2013, 00:28 | Сообщение # 12 |
частый гость
Сейчас нет на сайте
| Ну уж извените но как собирается хранить вещи создатель, как вы выразились, онлайн игры мы с вами знать точно не можем. И если уж отвечаете, на полный текст, а не на его часть. Цитата (Быдлокодер) если бы были уточнения вроде твоего, то и структура была бы другой.
Хорошая практика? Плохая практика? А вы шутник однако. Ещё один совет. Главное результат. Пользователям абсолютно плевать на то какой код внутри, главное что заботит пользователя это удобство и производительность, остальное его не касается. И не надо тут про, повторное использование кода, расширяемость и подобную лабуду. А если уж решите про это поговорить, то приведите хотя бы 1 пример законченного проекта 5 летней давности, части кода которого вы бы использовали на данный момент в другом проекте. А уж о расширяемости лучше помолчите, пока на вашем счету не будет крупных hightload проектов.
because_ahaha, не знаю как в браузерных играх, но хранить данные в json объектах очень удобно на практике в web программировании.
Сообщение отредактировал Быдлокодер - Воскресенье, 17 Марта 2013, 00:30 |
|
| |
HerrPotapov | Дата: Воскресенье, 17 Марта 2013, 00:51 | Сообщение # 13 |
заслуженный участник
Сейчас нет на сайте
| Быдлокодер, если удобно хранить данные в json, то mongodb в зубы и вперед. А хранение json-объектов в полях реляционной базы данных - мина замедленного действия (я уже привел два примера этого). Хотя вряд ли это волнует быдлокодера, для которого "расширяемость" это "лабуда". Конечно, говнокодить сайтики может быть и прокатит таким образом, но вот проблема, зарплата таких говнокодеров выше 30-40 (что-то многовато)-50 (это наверное только по блату) тысяч рублей никогда не поднимется. Так и будет этот персонаж за еду работать.
Discord: alpotapov#1741
Интервью с разработчиком WarCastle - Читаем и вникаем!
|
|
| |
Быдлокодер | Дата: Воскресенье, 17 Марта 2013, 01:09 | Сообщение # 14 |
частый гость
Сейчас нет на сайте
| 110 тысяч тебя чем-то не устраивает похоже?
|
|
| |
Talco | Дата: Воскресенье, 17 Марта 2013, 01:21 | Сообщение # 15 |
почетный гость
Сейчас нет на сайте
| HerrPotapov, честное слово, смешно! Такое ощущение, что ты заходишь на форум для того чтобы поспорить с кем-нибудь, и показать свое Я.
Цитата (Быдлокодер) А теперь просто объясню как должен работать инвентарь без технических деталей. Цитата (Talco) Не вдаваясь в подробности, быдлокодер описал систему инвентаря(...и не только инвентаря), которая используется во многих известных мне движках. Такие пояснения пишут специально для таких, как ты. А идеальных вариантов нет, и быть не может!
xNova: Революция
|
|
| |
HerrPotapov | Дата: Воскресенье, 17 Марта 2013, 01:25 | Сообщение # 16 |
заслуженный участник
Сейчас нет на сайте
| Быдлокодер, ну вообще меня не очень. А если это такой тонкий намек на то что ты столько получаешь - позволь посмеяться и посоветовать тебе отправиться делать уроки (или высыпаться перед тем как ты в понедельник пойдешь работать курьером на 20к/месяц).Добавлено (17.03.2013, 01:25) --------------------------------------------- Talco, да, я пытаюсь показать свое я, пытаюсь показать, что мне интересны такие вопросы, пытаюсь показать, что я читаю умные книжки и применяю знания по назначению, параллельно пытаясь давать ответы на вопросы новичков. Даже без подробностей описанная система - дерьмо. И я по-моему подробно расписал почему.
Discord: alpotapov#1741
Интервью с разработчиком WarCastle - Читаем и вникаем!
|
|
| |
Быдлокодер | Дата: Воскресенье, 17 Марта 2013, 01:46 | Сообщение # 17 |
частый гость
Сейчас нет на сайте
| HerrPotapov, если для тебя это большие деньги, то мне жаль тебя. Подсказка, oDesk. Если когда нибудь узнаешь что значит это слово и выучишь английский язык, то возможно поймешь к каким деньгам надо стремиться.
P.S. Я получаю ещё мало, на данный момент стремлюсь к 130-150 $ в год.
|
|
| |
HerrPotapov | Дата: Воскресенье, 17 Марта 2013, 03:12 | Сообщение # 18 |
заслуженный участник
Сейчас нет на сайте
| Быдлокодер, а я, а я, а я 111 тысяч в месяц получаю! Так-то! Подсказка, успешный молодой стартапер! А теперь вопрос - что объединяет твое высказывание с моим? Ответ - это наглая ложь =)
Discord: alpotapov#1741
Интервью с разработчиком WarCastle - Читаем и вникаем!
|
|
| |
Быдлокодер | Дата: Воскресенье, 17 Марта 2013, 14:18 | Сообщение # 19 |
частый гость
Сейчас нет на сайте
| HerrPotapov, подсказка. Поддержка крупного украинского интернет магазина. Поддержка самописов в течении 3 месяцев (или пока не найдут программиста которого я введу в курс дела). В неделю минимум 2-3 заказа на разработку сайта и примерно такое-же количество заказов на разработку интернет магазина. И в среднем один заказ на самопис за месяц (хотя бывает что и их не ту).
Ну ладно, покину я не верующих. Смыла спорить с человеком не разбирающимся в теме нету.
|
|
| |
liker | Дата: Воскресенье, 17 Марта 2013, 19:39 | Сообщение # 20 |
почетный гость
Сейчас нет на сайте
| давайте жить дружно
|
|
| |
|