Понедельник, 25 Ноября 2024, 22:23

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 2 из 3
  • «
  • 1
  • 2
  • 3
  • »
Новые уроки по создание броузерной игры – 2.
HerrPotapovДата: Вторник, 29 Июля 2014, 23:53 | Сообщение # 21
заслуженный участник
Сейчас нет на сайте
last2424, я надеюсь у тебя есть офигенно хорошая причина использовать именно Mongo =) эта штука мне в принципе тоже очень нравится, но это бомба замедленного действия. Отсутствие join'ов это все-таки слишком круто...

Добавлено (29.07.2014, 23:53)
---------------------------------------------
Прочел предыдущий пост. Это ад.

Цитата
Mysql не подойдёт для ММО так, как он не выдержит нагрузку на сервер во время игры(именно игры), для таких дел стоит использовать mongodb, но не всегда даже его удобно использовать для работы с сайтом, например для новостей о игре я бы использовал mysql, так, как например я до сих пор не могу понять, как реализовать новостную систему с mongodb.

Начнем с того что как раз таки для новостной системы Монго идеальна. Если ты не понял как это сделать - как ты собираешься делать игру?
Второе. Про MySQL и то что она не справится с нагрузкой. Это банально твоя выдумка.
Третье. От MongoDB действительно можно добиться повышенной производительности, но я готов поспорить что ответа на вопрос "как это сделать?" ты не знаешь. Разубеди меня пожалуйста, для этого нужно сказать всего два слова (найти эти два слова можно в доках монго). Подсказка, то что я хочу услышать связано с "горизонтальной плоскостью"
Четвертое. По итоговой производительности ДАЖЕ НА ЗАПИСЬ Mongo показывает не лучшие результаты чем PostgreSQL. Источник - хабр, искать статью лень, но если очень надо - могу.

И пятое, отдельно от первых четырех пунктов. Игра реал-тайм я так понял? И для реал-тайма ты хочешь использовать PHP у которого стандартное поведение - умирать через 30 секунд работы скрипта? Дада, я знаю что это меняется в настройках сервера, но это ограничение не с потолка взялось. PHP был сделан для других целей, а ты кажется собираешься завинчивать гайки молотком.

Ну в общем тебе удачи, нооооооооо...


Discord: alpotapov#1741

Интервью с разработчиком WarCastle - Читаем и вникаем!
last2424Дата: Среда, 30 Июля 2014, 00:05 | Сообщение # 22
30 мл. блоков
Сейчас нет на сайте
HerrPotapov, ну в принципе я знаю как это делается, меня пока что бросает в ступор такая вещь, как сортировка. biggrin
Как записывать, обновлять, выводить всё знаю. JavaScript ещё.
P.S. а эти два слова случайно не "Sharding Introduction"?

Добавлено (30.07.2014, 00:05)
---------------------------------------------
HerrPotapov, на счёт мускуля, это не банально моя выдумка, ты считаешь что мускуль выдержить хотя бы 1000 игроков? biggrin


Предупреждение: всё что я написал в зачёркнутом виде является шуткой и никак не пытает обидеть того к кому обращаются.(нет)

Сообщение отредактировал last2424 - Среда, 30 Июля 2014, 00:06
HerrPotapovДата: Среда, 30 Июля 2014, 00:14 | Сообщение # 23
заслуженный участник
Сейчас нет на сайте
last2424, да, я имел в виду (автоматический) шардинг - это у них прямо на главной написано.

Как бы да, считаю. Мог бы ты аргументировать как-то свою позицию "не выдержит"? И вообще что это значит "выдержит 1000 игроков"?

Добавлено (30.07.2014, 00:14)
---------------------------------------------
Я посмотрел внимательно еще раз в твой первый пост и на твою схему как это все будет работать. Я конечно не разрабатывал реал-тайм многопользовательские игры, но записывать КАЖДОЕ перемещение персонажа в базу данных - это просто не может быть правильным решением

Короче. Я из этой дискуссии самоустраняюсь, потому что у меня много критики и маловато аргументов чтобы эту критику обосновать.
Буду смотреть что выйдет из этой затеи (если она конечно не отправится вслед за всеми уроками которые здесь обычно публикуют)


Discord: alpotapov#1741

Интервью с разработчиком WarCastle - Читаем и вникаем!
last2424Дата: Среда, 30 Июля 2014, 00:15 | Сообщение # 24
30 мл. блоков
Сейчас нет на сайте
HerrPotapov, он сможет выдержать сразу 1000 запросов в секунду? Нет!

Каждую секунду с клиента на сервер отправляется запрос к базе данных. Таким образом получается место расположение и направление движения тех или иных игроков. Если игрок передвигается, то делается еще одно обращение к бд в котором производится запись о текущей точке расположения и точке в которую двигается игрок. Данная система проверенна и работает на ура, но проблема заключается в том, сто mysql не выдерживает такого количества запросов в секунду.

P.S. информация о том что не выдержит Mysql 100 игроков взята с другого, но достоверного источника.


Предупреждение: всё что я написал в зачёркнутом виде является шуткой и никак не пытает обидеть того к кому обращаются.(нет)

Сообщение отредактировал last2424 - Среда, 30 Июля 2014, 00:41
PaugepДата: Среда, 30 Июля 2014, 00:17 | Сообщение # 25
был не раз
Сейчас нет на сайте
last2424, вобщем все ясно, я просто неудачник.


last2424Дата: Среда, 30 Июля 2014, 00:20 | Сообщение # 26
30 мл. блоков
Сейчас нет на сайте
Paugep, хм, сейчас посмотрим.

Добавлено (30.07.2014, 00:20)
---------------------------------------------
Блин, надо скинуть не в C:\WebServers\denwer, а в C:\WebServers\. biggrin


Предупреждение: всё что я написал в зачёркнутом виде является шуткой и никак не пытает обидеть того к кому обращаются.(нет)
PaugepДата: Среда, 30 Июля 2014, 00:31 | Сообщение # 27
был не раз
Сейчас нет на сайте
last2424, вроде сработало. Как же я это писать-то устал -_-

Добавлено (30.07.2014, 00:31)
---------------------------------------------
last2424, зачем 1 пункт?

last2424Дата: Среда, 30 Июля 2014, 00:38 | Сообщение # 28
30 мл. блоков
Сейчас нет на сайте
Paugep, ну я думаю умный человек может понять, в первой части ведь было указано, что нужны хоть какие-нибудь знания.
Потому что я думаю что при изучении php, хоть раз ссылались на denwer. В крайнем случаю, можно почитать, посмотреть про эту систему.


Предупреждение: всё что я написал в зачёркнутом виде является шуткой и никак не пытает обидеть того к кому обращаются.(нет)
WikkeДата: Среда, 30 Июля 2014, 03:21 | Сообщение # 29
частый гость
Сейчас нет на сайте
Если речь идет о realtime, то в топку php!
Тут несколько вариантов :
* Python
* Node.JS ( память течет как ... правила форума запрещают мне такое сравнение :C )
* Node.Lua ( о да, эта вещь существует и вполне хороша для людей, которые знакомы с C++ )
* Java ( готовьте вашу оперативку :3 )
* C++ ( мой выбор )

Ну и почему я выбрал C++ : потому что я больной на голову человек с психическими отклонениями и социофобией мне зачастую нужен доступ к системным вызовам и слово "компиляция" не заставляет моё очко сжиматься biggrin

Насчет СУБД :
Недавно дочитал книгу "Обеспечение высокой доступности систем на основе MySQL" и могу сказать вам, что MySQL при правильном использовании дрючит MongoDB только так, но не стоит забывать зачем был создан MongoDB.
PostgreSQL - идеален для подобных систем, но нужно помнить, что не стоит динамику хранить в MySQL / PostgreSQL / MongoDB.

Для этого есть :
* Memcached
* Redis
* ээм больше ничего толкового не знаю :C

Причем одно не заменяет другое!

Насчет denwer / lamp :
Стоит делать окружение изначально под свой проект. У меня всегда стандартное окружение :
Nginx + Redis + Memcached + FastCGI ( уже идет в составе nginx ) + Python + еще что - то.

В итоге я не парюсь с лампами, джентельменами и прочей лабудой.
Но у меня всегда окружение формируется под Debian, так что под Windows денвер быть может самое лучшее решение.
last2424Дата: Среда, 30 Июля 2014, 09:36 | Сообщение # 30
30 мл. блоков
Сейчас нет на сайте
Блин, зыбыл ответить на счёт реал-тайма, вон человечек 7 часов проснулся и отписался. biggrin
Нет, игра не реал-тайм. Зафига реал-тайм мморпг? Хотя бывают квесты здать которые надо в определённый час, но смысл тут парится?

Добавлено (30.07.2014, 09:36)
---------------------------------------------
P.S. пошёл пилить 3 часть. biggrin


Предупреждение: всё что я написал в зачёркнутом виде является шуткой и никак не пытает обидеть того к кому обращаются.(нет)

Сообщение отредактировал last2424 - Среда, 30 Июля 2014, 09:29
likerДата: Среда, 30 Июля 2014, 09:41 | Сообщение # 31
почетный гость
Сейчас нет на сайте
делюсь своим мнением, если вы не против.
Если игра real-time(а именно, все действия персонажа, такие как движение и тд передаются на сервер и еще показываются другим игрокам), то тут PHP вообще не годиться, это просто не его профиль, это реализовать крайне сложно и онлайн выше 20-30 человек, ну мб 50 не выдержит.

Если разрабатывать скажем эконом. стратегию на PHP, то при грамотном подходе mysql 1000 выдержит, а то и больше, если запросы будут адекватные, а не 20 запросов в 1 скрипте
smile smile
last2424Дата: Среда, 30 Июля 2014, 09:43 | Сообщение # 32
30 мл. блоков
Сейчас нет на сайте
liker, но опять же, она не реал-тайм. happy

Предупреждение: всё что я написал в зачёркнутом виде является шуткой и никак не пытает обидеть того к кому обращаются.(нет)

Сообщение отредактировал last2424 - Среда, 30 Июля 2014, 10:02
AssasinДата: Среда, 30 Июля 2014, 11:19 | Сообщение # 33
web-coder
Сейчас нет на сайте
Цитата last2424 ()
Каждую секунду с клиента на сервер отправляется запрос к базе данных. Таким образом получается место расположение и направление движения тех или иных игроков. Если игрок передвигается, то делается еще одно обращение к бд в котором производится запись о текущей точке расположения и точке в которую двигается игрок. Данная система проверенна и работает на ура, но проблема заключается в том, сто mysql не выдерживает такого количества запросов в секунду.


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

Такая структура позволяет уменьшить поток передаваемых/принимаемых данных и не нагружает сервер.
last2424Дата: Среда, 30 Июля 2014, 11:25 | Сообщение # 34
30 мл. блоков
Сейчас нет на сайте
Assasin, да, верно, как всегда на высоте. biggrin
Но по сути HerrPotapov хотел аргументов к тому что Mysql не выдержит 1000 игроков.


Предупреждение: всё что я написал в зачёркнутом виде является шуткой и никак не пытает обидеть того к кому обращаются.(нет)

Сообщение отредактировал last2424 - Среда, 30 Июля 2014, 11:44
lvovandДата: Среда, 30 Июля 2014, 12:38 | Сообщение # 35
старожил
Сейчас нет на сайте
Цитата last2424 ()
Mysql не выдержит 1000 игроков

можно неудачным запросом положить все и при наличии всего одного игрока.
А тем более, если не реал-тайм, то что такого страшного, с чем бы мускл не справился бы?


Разработка и продвижение сайтов. Дизайн
last2424Дата: Среда, 30 Июля 2014, 12:44 | Сообщение # 36
30 мл. блоков
Сейчас нет на сайте
Чатом? Прокачкой можно даже накрыть всё. Это сугубо моё личное мнение, что скуль для такого не подходит, если можете доказать что сможет выдержать, аргументы в студию. biggrin MongoDB, я использую не только во этой причине, он удобен, длиннющие строки на PHP(я очень криво обращаюсь с вызовами Mysql в PHP, у меня выходит на одна строчка на это), в то время, как на вызов MongoDB мне хватает одной строчки на то что бы просто сделать выборку из базы.

Предупреждение: всё что я написал в зачёркнутом виде является шуткой и никак не пытает обидеть того к кому обращаются.(нет)

Сообщение отредактировал last2424 - Среда, 30 Июля 2014, 13:09
likerДата: Среда, 30 Июля 2014, 13:10 | Сообщение # 37
почетный гость
Сейчас нет на сайте
чат писать есть смысл на nodejs.
lvovandДата: Среда, 30 Июля 2014, 13:13 | Сообщение # 38
старожил
Сейчас нет на сайте
а какие нужны аргументы?
вопрос не в чате и прокачке, а в том как они реализованы,
можно положить сервер и одним игроком, а можно сделать что и при тысяче в онлайне сервер вполне себя комфортно чувствовать будет.

и потом что, монго даст преимущество при сборке чата?

не хочется холиварить, согласен что делать проект лучше на том, что лучше знаешь, но от себя добавлю, что к нереляционным базам лучше идти, когда хорошо разбираешься в реляционных, точно понимая их преимущества и недостатки реляционных


Разработка и продвижение сайтов. Дизайн
last2424Дата: Среда, 30 Июля 2014, 13:21 | Сообщение # 39
30 мл. блоков
Сейчас нет на сайте
lvovand, не парься, просто не парься. happy

Предупреждение: всё что я написал в зачёркнутом виде является шуткой и никак не пытает обидеть того к кому обращаются.(нет)
lvovandДата: Среда, 30 Июля 2014, 13:30 | Сообщение # 40
старожил
Сейчас нет на сайте
Цитата last2424 ()
не парься, просто не парься

))

ну так а зачем делать громкие предъявы мусклу? ))
если уж говорить о его лежке, то показать структуру таблиц, кол-во записей, потом запрос показать, который привел или может привести к лежке.
В 99% случаев можно оптимизировать таблицу или запрос и время выполнения запроса значительно уменьшить


Разработка и продвижение сайтов. Дизайн
  • Страница 2 из 3
  • «
  • 1
  • 2
  • 3
  • »
Поиск:

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