Реализация Server-side для ММО
| |
Zeliaf | Дата: Среда, 04 Сентября 2013, 14:17 | Сообщение # 1 |
был не раз
Сейчас нет на сайте
| Здравствуйте, уважаемые форумчане. Возник вопрос. На чем писать сервер для ммо? И как его структурировать?
На данный момент задумываюсь о реализации серверной части на Java с использованием библиотеки Netty. С этой библиотекой знаком хорошо. Сервер сделать распределенным (в виде сервис-серверов). Но еще есть мысли о реализации сервера на C++. Как быть, товарищи? Может что посоветуете или добавите?
|
|
| |
Vinchensoo | Дата: Среда, 04 Сентября 2013, 14:43 | Сообщение # 2 |
Злобный социопат с комплексом Бога
Сейчас нет на сайте
| Зависит от задачи: какая игра, какая нагрузка, какая логика. Что вы понимаете под распределенным?
|
|
| |
Zeliaf | Дата: Среда, 04 Сентября 2013, 14:52 | Сообщение # 3 |
был не раз
Сейчас нет на сайте
| Под распределенным сервером я подразумеваю систему отдельных серверов, выполняющие определенные функции (логирование, авторизация, работа с базой, игровая механика).
По поводу нагрузки пока сказать ничего не могу.
Сообщение отредактировал Zeliaf - Среда, 04 Сентября 2013, 14:56 |
|
| |
Gargolev43 | Дата: Среда, 04 Сентября 2013, 15:21 | Сообщение # 4 |
частый гость
Сейчас нет на сайте
| Цитата (Zeliaf) Но еще есть мысли о реализации сервера на C++. Как быть, товарищи? Может что посоветуете или добавите? только Java. Слышал от умных людей, что C++ не используют, потому что не столько улучшается производительность, сколько повышается трудоемкость разработки
|
|
| |
Vinchensoo | Дата: Среда, 04 Сентября 2013, 16:12 | Сообщение # 5 |
Злобный социопат с комплексом Бога
Сейчас нет на сайте
| Цитата (Zeliaf) Под распределенным сервером я подразумеваю систему отдельных серверов, выполняющие определенные функции (логирование, авторизация, работа с базой, игровая механика). Это называется логика, зачем делать отдельный сервер под все это?
От нагрузки многое зависит, так же, как и от типа игры, которую вы собираетесь делать. Цитата (Gargolev43) только Java. Слышал от умных людей, что C++ не используют, потому что не столько улучшается производительность, сколько повышается трудоемкость разработки С++, несомненно, добавит трудоемкости решения задачи, но вот только для игр типа world of tanks особо вариантов нет)
|
|
| |
Zeliaf | Дата: Среда, 04 Сентября 2013, 16:17 | Сообщение # 6 |
был не раз
Сейчас нет на сайте
| Цитата (Vinchensoo) Это называется логика, зачем делать отдельный сервер под все это? Чтобы была возможность разнести потом нагрузку на отдельные машины.
Цитата (Vinchensoo) С++, несомненно, добавит трудоемкости решения задачи, но вот только для игр типа world of tanks особо вариантов нет) Насколько я знаю, сервера для игр Allods Online и SkyForge написаны на Java. Пускай и со своими наворотами.
Но вариант с С++ все таки тоже рассмотрю.
|
|
| |
Vinchensoo | Дата: Среда, 04 Сентября 2013, 16:49 | Сообщение # 7 |
Злобный социопат с комплексом Бога
Сейчас нет на сайте
| Zeliaf, вы скажите, что за игру вы делаете? Или вы сюда пришли поделится, что сервер писать собираетесь? Экстрасенсы тут не сидят. Цитата (Zeliaf) Чтобы была возможность разнести потом нагрузку на отдельные машины. Вы правда думаете, что если одна машина будет доставать из базы, а вторая будет держать логику боев, а третья будет отвечать за чат, вы что-то выиграете?
Используйте проверенные технологии, которые делают возможным кластеризацию и не придумывайте странные велосипеды. На 1 машину ставится сервер с логикой на java, на вторую- сервер субд, вот и все разделение. Причем, по началу можно держать и то, и то на одной машине. Нагрузка вырастет- разнесете.
|
|
| |
Zeliaf | Дата: Среда, 04 Сентября 2013, 18:11 | Сообщение # 8 |
был не раз
Сейчас нет на сайте
| Цитата (Vinchensoo) , вы скажите, что за игру вы делаете? Или вы сюда пришли поделится, что сервер писать собираетесь? Экстрасенсы тут не сидят. Non-Target MMORPG.
Цитата (Vinchensoo) Нагрузка вырастет- разнесете. И потом переписывать все и вся? Смысл делать два раза одну и ту же работу? Допустим сейчас я напишу сервер, в котором будет все ( и авторизация, и работа с базой, и логирование, и игровая механика, и прочее). А как только сервер будет загибаться от нагрузки(предположим такую ситуацию), придется все переписывать? Да и подключение миров(реалмов, шардов) уже будет невозможным.
|
|
| |
lvovand | Дата: Среда, 04 Сентября 2013, 18:17 | Сообщение # 9 |
старожил
Сейчас нет на сайте
| Zeliaf, почему все переписывать? изменить подключение к другому серверу, либо одну строку поменять, либо конфиг сделать сразу с настройками подключения
Разработка и продвижение сайтов. Дизайн
|
|
| |
Vinchensoo | Дата: Среда, 04 Сентября 2013, 18:43 | Сообщение # 10 |
Злобный социопат с комплексом Бога
Сейчас нет на сайте
| Цитата (Zeliaf) И потом переписывать все и вся? Смысл делать два раза одну и ту же работу? Допустим сейчас я напишу сервер, в котором будет все ( и авторизация, и работа с базой, и логирование, и игровая механика, и прочее). А как только сервер будет загибаться от нагрузки(предположим такую ситуацию), придется все переписывать? Да и подключение миров(реалмов, шардов) уже будет невозможным. Во-первых, это называется agile-разработка. А вы занимаетесь преждевременной оптимизацией. Во-вторых, что переписывать? Меняете строчку в конфиге, переносите сервер субд на другую машину- все работает как раньше, код сервера даже трогать не нужно. В-третьих, вы писали что-нибудь клиент-серверное? Не игры?
В-четвертых, вы правда думаете, что если вы разделите и сделаете под каждую задачу свой сервер(авторизация, работа с базой и тд), то это будет быстрее? Это мини-сервера, между собой, тоже должны связываться. В итоге логика будет офигеть как нетривиальна и нелинейна, а выигрыша вы совершенно не получите, а скорее все, наоборот, получите тормоза и развлекалово с поиском багов.
Про миры- вообще лол. Берете 2 одинаковых сервера с нулевой базой, в клиенте реализуете систему выбора сервера, вот вам и 2 параллельных мира. Даже переписывать ничего не нужно(на сервере).
Складывается ощущение, что вы совсем не представляете, о чем говорите. Если это так- лучше почитать статьи и поучится(без обид). Написание серверов для онлайн-игр, тем более реалтаймовых- одна из сложнейших задач, сходу ее не возьмешь. Цитата (Zeliaf) Non-Target MMORPG. Если с активным перемещением и т.д., как в вов, то мы возвращаемся к ворд оф танкс. Такие игры уже на джаве нужно писать очень аккуратно и без говнокода, иначе- крах.
|
|
| |
Zeliaf | Дата: Среда, 04 Сентября 2013, 18:48 | Сообщение # 11 |
был не раз
Сейчас нет на сайте
| Vinchensoo, спасибо за выраженное мнение. Но обратите хотя бы раз внимание на структуру тех-же java серверов L2 или C++ серверов WoW. Вся серверная структура у них разбита на 2(3) серверных приложения.
Хотя. Вы все сказали. Благодарю еще раз за выражение своего видения проблемы.
|
|
| |
Vinchensoo | Дата: Среда, 04 Сентября 2013, 19:09 | Сообщение # 12 |
Злобный социопат с комплексом Бога
Сейчас нет на сайте
| Цитата (Zeliaf) Но обратите хотя бы раз внимание на структуру тех-же java серверов L2 или C++ серверов WoW. Вся серверная структура у них разбита на 2(3) серверных приложения. Как я понимаю, у л2 3 сервера: сервер авторизации, сервер логики и сервер субд.
Никаких "серверов, работающих с базой" там, вроде как, нет. Сервер авторизации и логики у них разделен из-за особенностей архитектуры, большого смысла так делать нет.
Сделано это, чтобы поставить на фронтенд сервер, который будет распихивать игроков по физическим машинам. Точно такая же схема легко реализуется и с общим сервером для игровой логики, стоит только захотеть:)
Не хотите обсуждать- удачек)
|
|
| |
Tiendil | Дата: Среда, 04 Сентября 2013, 22:50 | Сообщение # 13 |
участник
Сейчас нет на сайте
| Купите инди лицензию BigWorld и не парьтесь. Или пишите на том, что знаете.
Сложности серверной разработки обычно упираются в архитектуру (а значит в руки разработчиков), а не в язык, на котором написаны. Вообще, язык сейчас далеко не самое 1-ое требование.
Участвовал в разработке Order of War (C++ UI & логика) и WoT (Python портал worldoftanks.ru почти всё :-) )
Текущий проект: the-tale.org - indie mmozpg
|
|
| |
KirKami | Дата: Среда, 04 Сентября 2013, 23:01 | Сообщение # 14 |
участник
Сейчас нет на сайте
| Цитата (Vinchensoo) сервер авторизации Цитата (Vinchensoo) Никаких "серверов, работающих с базой" там, вроде как, нет. Вроде бы сервер авторизации-то как раз и работает с базой аккаунтовю
|
|
| |
Gargolev43 | Дата: Четверг, 05 Сентября 2013, 00:14 | Сообщение # 15 |
частый гость
Сейчас нет на сайте
| Цитата (Vinchensoo) С++, несомненно, добавит трудоемкости решения задачи, но вот только для игр типа world of tanks особо вариантов нет) самое смешное, что про c++ и слышал это от кого-то из их разработчиков
|
|
| |
Epetuk | Дата: Четверг, 05 Сентября 2013, 06:36 | Сообщение # 16 |
частый гость
Сейчас нет на сайте
| Цитата (Vinchensoo) Как я понимаю, у л2 3 сервера: сервер авторизации, сервер логики и сервер субд. это явы сервера, оригинальные корейские разбиты на штук 7 отдельных - авторизация, кеширование, логирование, нпс - все отдельно, центральный геймсервер служит для объединения всего этого дела в единое целое.
|
|
| |
Vinchensoo | Дата: Четверг, 05 Сентября 2013, 10:51 | Сообщение # 17 |
Злобный социопат с комплексом Бога
Сейчас нет на сайте
| Цитата (KirKami) Вроде бы сервер авторизации-то как раз и работает с базой аккаунтовю Речь шла про отдельный мифический сервер работы с базой, зафиг он нужен- я хз, когда можно с любого сервера дергать удаленно непосредственно сервер СУБД. Цитата (Epetuk) это явы сервера, оригинальные корейские разбиты на штук 7 отдельных - авторизация, кеширование, логирование, нпс - все отдельно, центральный геймсервер служит для объединения всего этого дела в единое целое. Да. Я про неофф писал. Ну и разработчиков л2 можно понять- у них нагрузки дикие. Цитата (Gargolev43) самое смешное, что про c++ и слышал это от кого-то из их разработчиков Публиковали какое-то интервью, ага
|
|
| |
Epetuk | Дата: Четверг, 05 Сентября 2013, 13:15 | Сообщение # 18 |
частый гость
Сейчас нет на сайте
| та правильно, пущай автор сперва создаст нечто, с чем ява и нетти не справятся. Если все же удастся - прибыль от проекта позволит нанять людей и переписать проект на любой язык, заодно сменить архитектуру, разбить на несколько серверов\кластеров и т.д. и т.п.
|
|
| |
|