| Сервер для MMORPG | 
|  | 
| 
| kr0n4ik | Дата: Воскресенье, 21 Октября 2018, 20:59 | Сообщение # 1 |  | был не раз Сейчас нет на сайте | Пришла в голову идея создания сервер для mmorpg. Но писать код хочу на js. Вообще идея в том посмотреть будет он быстрее скажем таких же серверов на c++ или с. В интернете полно споров про такие вещи и вроде js набирает плюсы в плане производительности и меньшего потребления ресурсов. Вообще интересно начальное мнение по этому вопросу. Как в пример наверное возьму сервер для wow или rose. Для полдней есть даже клиент на js клиент. Бред или выстрелит, как считаете?
 |  |  |  |  | 
| 
| TLT | Дата: Воскресенье, 21 Октября 2018, 23:42 | Сообщение # 2 |  |   
 Сейчас нет на сайте | Обычно, чем ниже уровень языка тем быстрее... Если так рассуждать, то C++ второго уровня, а JS - скриптовой ЯП, выше. Хотя, с серверами не знаю как это применимо. 
 Дао, выраженное словами, не есть истинное Дао.
 |  |  |  |  | 
| 
| AlexRabbit | Дата: Понедельник, 22 Октября 2018, 03:39 | Сообщение # 3 |  |   старожил Сейчас нет на сайте | Очень странно поставлен вопрос. Нет никаких данных о предполагаемых одновременных соединениях (сколько одновременно игроков онлайн), какой объем данных должен будет передаваться, как они будут обрабатываться (что на стороне сервера и что на стороне клиента)... и еще десятков вопросов по теме. 
 Примеров ММО на JavaScript, Node JS + MongoDB (или любой другой БД) достаточно. Но обычно это 2д браузерки с маленьким онлайном или ниипической системой кластеризации (которая сама по себе сложнее написанной MMO). В конце концов можно глянуть следующее https://medium.com/@endel....1cebbfe
 
 
 Сообщение отредактировал AlexRabbit - Понедельник, 22 Октября 2018, 03:39 |  |  |  |  | 
| 
| drcrack | Дата: Понедельник, 22 Октября 2018, 10:16 | Сообщение # 4 |  | старожил Сейчас нет на сайте | nodejs хорошо заходит если клиент на js, т.е. обычно в браузерках иначе несколько проигрывает по удобству c++/java/c#
 основная проблема это типизация и соответственно большое количество тупых багов (частично лечится хорошей IDE или переходом на TypeScript) а также отсутствие потоков внутри процесса (не лечится, приходится выкручиваться).
 |  |  |  |  | 
| 
| programMain | Дата: Пятница, 26 Октября 2018, 02:29 | Сообщение # 5 |  |   частый гость Сейчас нет на сайте | Я думаю что тут смотря с какой стороны смотреть. js - яп задуманный для клиентов. Он ограничен силой браузера, и точно уступает всем типизированным языкам по скорости. Не говоря уже о том что все что написано на js в конечном итоге станет структурами на c++. Время тратится на преобразование. Я бы рекомендовал c# - проще. И минимум ошибок. c++ - круто, но времязатратно. js - 100 человек я думаю станет смертью для твоего сервера). Если клиент на js - web сокеты в помощь и подключайся к c# и будет тебе счастье) |  |  |  |  | 
| 
| kr0n4ik | Дата: Суббота, 17 Ноября 2018, 00:18 | Сообщение # 6 |  | был не раз Сейчас нет на сайте | Первые наброски 
 как разгребу немного выложу на гитхаб
 |  |  |  |  | 
| 
| drcrack | Дата: Суббота, 17 Ноября 2018, 10:34 | Сообщение # 7 |  | старожил Сейчас нет на сайте | прикольно |  |  |  |  | 
| 
| kr0n4ik | Дата: Воскресенье, 18 Ноября 2018, 22:23 | Сообщение # 8 |  | был не раз Сейчас нет на сайте | С горем пополам дошел до заполнения мира. Решил протестировать задержку на 1000 кроликов. Работает без проблем. Ну правда не все функции обработки написаны и время обработки физических данных возрастет, но можно точно сказать что 100+ человек потянет. вот ссылка github 
 |  |  |  |  | 
| 
| avkvl | Дата: Понедельник, 19 Ноября 2018, 00:43 | Сообщение # 9 |  | почетный гость Сейчас нет на сайте | Цитата kr0n4ik (  )  но можно точно сказать что 100+ человек потянет
 Даже не понятно откуда такая уверенность. Как 1000 кроликов могут сигнализировать о том, что 100+ человек (которые асинхронно бегают, совершают действия, имеют разного качества интернет и латенси) смогут комфортно играть? Или имеется ввиду что 100+ человек бегают вдали друг от друга и никак не контактируют?
 |  |  |  |  | 
| 
| drcrack | Дата: Понедельник, 19 Ноября 2018, 03:42 | Сообщение # 10 |  | старожил Сейчас нет на сайте | надо 10000 кроликов чтобы примерно оценить нагрузку на сеть от 100 человек в одном месте (т.к. каждому из 100 надо послать инфу обо всех остальных) |  |  |  |  | 
| 
| kr0n4ik | Дата: Вторник, 20 Ноября 2018, 14:46 | Сообщение # 11 |  | был не раз Сейчас нет на сайте | Цитата avkvl (  )  Даже не понятно откуда такая уверенность. Как 1000 кроликов могут сигнализировать о том, что 100+ человек (которые асинхронно бегают, совершают действия, имеют разного качества интернет и латенси) смогут комфортно играть? Или имеется ввиду что 100+ человек бегают вдали друг от друга и никак не контактируют?Игрок это дочерний юнит (в нашем случае кролик). И все действия кроликов это действия игрока минус одна команда на отправку данных.
 
 Но при одном условии, что 100 игроков в одно и тоже время начнут выполнять одно и то же действие (можно сказать что любое действие, но при этом размер пакетов будет разный). И тогда это не примерная (средняя), а пиковая нагрузка. И что то мне слабо верится что 100 игроков будет одновременно что то делать.Цитата drcrack (  )  надо 10000 кроликов чтобы примерно оценить нагрузку на сеть от 100 человек в одном месте (т.к. каждому из 100 надо послать инфу обо всех остальных)Ну ок создал 18000 сокетов, время задержки 2-3мс. Из ваших рассуждений получаем 140 клиентов держит спокойно или 100+.
 Кому интересно:
 -добавил движение игрокам
 -добавил модельки
 |  |  |  |  | 
| 
| drcrack | Дата: Вторник, 20 Ноября 2018, 14:53 | Сообщение # 12 |  | старожил Сейчас нет на сайте | Цитата  И что то мне слабо верится что 100 игроков будет одновременно что то делать.рейд на столицу например, около короля может и больше собраться, и все будут одновременно что-то делать
 
 из скрина не совсем понятно, кролики хотя бы двигаются?
   |  |  |  |  | 
| 
| avkvl | Дата: Вторник, 20 Ноября 2018, 15:34 | Сообщение # 13 |  | почетный гость Сейчас нет на сайте | Проблема ведь не только в отправке пакетов. Нужно обеспечивать некоторый тикрейт и обработывать коллизии: один игрок бежит и атакует второго игрока, а тот в это время может быть уже в другом месте и первый игрок испытывает дискомфорт от такой игры. А кролики проверяют насколько адекватно выполнились их действия? |  |  |  |  | 
| 
| Kwant | Дата: Пятница, 23 Ноября 2018, 17:57 | Сообщение # 14 |  |   почетный гость Сейчас нет на сайте | Цитата kr0n4ik (  )  Пришла в голову идея создания сервер для mmorpg. Но писать код хочу на js. Вообще идея в том посмотреть будет он быстрее скажем таких же серверов на c++ или с. В интернете полно споров про такие вещи и вроде js набирает плюсы в плане производительности и меньшего потребления ресурсов. Вообще интересно начальное мнение по этому вопросу. Как в пример наверное возьму сервер для wow или rose. Для полдней есть даже клиент на js клиент. Бред или выстрелит, как считаете?
 Проблема не в скорости уже.
 Затык будет в аллокации памяти - на JS её нельзя делать. И если есть места с критичной производительностью придётся сделать типо Кольцевой буфер для объектов, чтобы не сливать их, ибо GC придётся потом огромный объем подчищать, это может создать лаг кратковременный. Ну и т.п., и т.д.
 Правд это уже конечные оптимизации проекта, а сейчас пока ничего особо и нет.
 
 Полистал исходники на гите - так себе стиль. Используй вместо ES5 уже давно пришедший ES6.
 |  |  |  |  | 
| 
| Anyan | Дата: Среда, 19 Декабря 2018, 11:49 | Сообщение # 15 |  | участник Сейчас нет на сайте | Цитата kr0n4ik (  )  И что то мне слабо верится что 100 игроков будет одновременно что то делать.то есть зашли 5000 юзеров в игру и делать одновременно что то будет только 99 максимум, а остальные будут стоять и не двигаться
   
 может имеется в виду на одной локе? так осады даже в непопулярных проектах по 250тел набирают, что уж говорить о массовых?
 
 но у ТС есть мнение, он явно знаить шобуить
   |  |  |  |  | 
| 
| kr0n4ik | Дата: Вторник, 25 Декабря 2018, 21:58 | Сообщение # 16 |  | был не раз Сейчас нет на сайте | Я считаю понятие о одновременном у вас размыто. Если взять скажем cs то там поток данных одновременный и можно сказать что количество пользователей сильно влияет на нагрузку. Тут всё иначе, если считать, как вы предлагаете, то 5000 пользователей должны одновременно(очень важно слово) скажем начать двигаться из одной точки в одну общую точку. Если это условие не выполняется то нагрузку так считать нельзя. И опять же это будет пиковая нагрузка, а не средняя |  |  |  |  |