Сервер для 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+ человек бегают вдали друг от друга и никак не контактируют? Игрок это дочерний юнит (в нашем случае кролик). И все действия кроликов это действия игрока минус одна команда на отправку данных.
Цитата drcrack ( ) надо 10000 кроликов чтобы примерно оценить нагрузку на сеть от 100 человек в одном месте (т.к. каждому из 100 надо послать инфу обо всех остальных) Но при одном условии, что 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 пользователей должны одновременно(очень важно слово) скажем начать двигаться из одной точки в одну общую точку. Если это условие не выполняется то нагрузку так считать нельзя. И опять же это будет пиковая нагрузка, а не средняя
|
|
| |