forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Болтовня (http://forum.boolean.name/forumdisplay.php?f=25)
-   -   На чем писать сервер ММО игры (http://forum.boolean.name/showthread.php?t=14019)

HolyDel 08.01.2011 17:34

На чем писать сервер ММО игры
 
Предлагаю обсудить такую тему.

Тут проскальзывала как то мысль что сервер надо писать на плюсах. Я считаю что шарп больше подойдет для этой цели. Так как сервера надо писать много (на шарпе писать все же проще чем на плюсах), все сложные математические вычисления, требующие критической скорости можно и в unsafe секциях писать и во внешних либах на плюсах или даже просто сях. Да и ошибки в шарпе править легче, а совершить сложнее, а для сервера,имхо, ошибки критичнее чем для клиента .

вот. обсуждаем...

Amatsu 08.01.2011 17:47

Ответ: На чем писать сервер ММО игры
 
Если бы на блитце имело смысл писать сервер, я бы уже делал мморпг :)

den 08.01.2011 17:54

Ответ: На чем писать сервер ММО игры
 
Я вот был недавно на конференции у нас в институте (вобще это оказалась хорошая, годная реклама от мелкомягких), и там в одной из лекций чел рассказывал как раз про сервера. Расказал про два подхода.
1) Если делать сервер многопоточным, то на каждого юзера надо делать поток. Но чел также сказал о внутреностях потоков. Поток при инициализации захапывает себе кусок памяти (точно не помню, но вроде сказал что связанно с процесорами:dontknow: ), и поэтому даже если поток обрабатывает мало инфы то памяти жрёт относительно много.
2) Если делать сервер асихронным (могу ошибится в терминологии) то при большом кол-во юзверей система будет долго переключатся от одного пользователя к другому.

Поэтому выбор технологии на стороне сервера.

Также сказал что в пятом нэт фраемворке будет два класса - для реализаии многопоточности и асихроности. Он показал пример кода так там весь алгоритм сводится к инициализации нужного класса.:)

Цитата:

Сообщение от Amatsu (Сообщение 174869)
Если бы на блитце имело смысл писать сервер, я бы уже делал мморпг :)

дык для ммо и машина нужна хорошая и работать должно круглосуточно. Или это была шутка?:)

HolyDel 08.01.2011 18:10

Ответ: На чем писать сервер ММО игры
 
ппц. сервер на 2/4/8/16/32 юзера чтоли? я думаю по потокам надо разделять локации, но суть не в этом... Скажем так - насколько критична для сервера ММО быстродействие в целом, можно ли ею жертвовать ради безопасности, ваше мнение?

ABTOMAT 08.01.2011 18:24

Ответ: На чем писать сервер ММО игры
 
Цитата:

я думаю по потокам надо разделять локации
Поддерживаю.
Возможно, для сервера скорость и не так критична (т.к. можно тупо купить больше мощностей), а вот для клиента - да, посылать в магазин за новой железкой - неприлично-с.
Однако деньги на сервер тоже не резиновые. На плюсах можно вполне себе писать стабильный сервер. Опять же, понадобится больше человеко-часов, если они высоко оплачиваются, есть смысл пожертвовать производительностью чтоб сэкономить на людях и взять шарпы. (Апогей такого принципа - php)
Короче, если б я стал писать сервер, стал бы это делать на плюсах (не доверяю шарпам), но и шарпы - тоже годно. (с учётом JIT вполне способны работать с норм. скоростью, которая, как писалось выше, не так критична)

Randomize 08.01.2011 18:34

Ответ: На чем писать сервер ММО игры
 
Если мало времени, то лучше взять C#.
Плюсы:
1) Cкорость разработки
2) Простота отладки
3) Это не питон :D



Кстати Jimon поднимал этот вопос на ГД: http://www.gamedev.ru/code/forum/?id=78290

ffinder 08.01.2011 19:11

Цитата:

Сообщение от HolyDel (Сообщение 174867)
надо писать на плюсах. Я считаю что шарп больше подойдет

а чо, есть всего два языка в мире, да?

для серверной технологии есть несколько требований:
1. fault-tolerance, умение не падать при ошибках. отказ в обслуживании одного клиента не должен ломать услугу для остальных.
2. горячая замена кода. без комментариев.
3. неостанавливающий сборщик мусора. есть только в Erlang и в платформе для Java, которая называется Azul. если есть еще где - не стесняйтесь сказать.

Цитата:

Сообщение от Amatsu (Сообщение 174869)
Если бы на блитце имело смысл писать сервер, я бы уже делал мморпг :)

фейспалм же.
риальне плакаю.
если бы только в сервере был вопрос...

falcon 08.01.2011 20:58

Ответ: На чем писать сервер ММО игры
 
Ой как вовремя вы эту тему подняли :)
Я сейчас решил углубиться в разработку подобных систем, чисто для самопрокачки :)
Для разработки сервера выбрал C#
Не могу точно аргументировать выбор (даже в доке причины выбора очень неубедительно выглядят). C# выбрал только потому, что хотел на практике освоить этот язык.
Вроде работа с сокетами везде примерно одинаковая, к тому же есть множество готовых решений по работе с сокетами, базами, многопоточностью... и для плюсов и для шарпа и для жабы... другое дело что шарп и джава несколько проще и надёжней, нежели плюсы. Опять же часто натыкаюсь на высказывания о суровой требовательности шарп\джава приложений... мол затраты памяти можно смело умножать на два. Но не менее часто натыкаюсь и на несогласных с этим))

в общем интересно что скажут люди более или менее разбирающиеся в этой теме :)
(речь ведь идёт о НЕбраузерных ммо?)

по мне, так очень важно установить требования к серверу, и лишь после этого выбирать инструменты.. для браузерных ММО мб и пхп хватит за глаза и за уши..
Где не стоит вопроса о минимизации трудозатрат (разработка "для души" или мб огромное финансирование) - можно выбрать плюсы.. для создания надёжной(!) системы потребуется много времени.

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

ffinder 08.01.2011 21:43

Ответ: На чем писать сервер ММО игры
 
джемон, ты чота наредактировал, что наши с холи посты вместе скукожились. а ну раскукож все обратно!

jimon 08.01.2011 21:48

Ответ: На чем писать сервер ММО игры
 
я думаю люди смотрят немного не с той стороны на разработку сервера в целом, вот что такое сервер для клиента ? по-сути это коробка которая находится где-то и которая подключена к интернету

с такой стороны для сервера узкими местами становится даже ОСь, потому нужно обладать такими инструментами которые позволят работать всему серверу (как железке) для обработки логики программы сервера, если смотреть именно с такого угла то мы видим что много вещей таких как страницы памяти, производительность сетевого стека, эффективность менеджера задач и тд будут влиять на производительность нашего сервера

для эффективной настройки и создания производительного софта нужен будет специалист высокого уровня который понимает как это всё работает, а не выполняет какую-то инструкцию написанную до него, а если у нас уже есть необходимый специалист то значит можем нанять и второго, а быстрее всего опытным людям написать производительный сервер на C++, благо есть весь необходимый инструментарий (у google и facebook высоконагруженные системы на c++ работают, они дураки чтоли ?)

возможно для очень производительных систем стоит смотреть в сторону RTOS, а там нет никаких java и c#, серьезные инструменты же

Цитата:

джемон, ты чота наредактировал, что наши с холи посты вместе скукожились. а ну раскукож все обратно!
упс, не то слил :) HolyDel писал :
Цитата:

Цитата:

а чо, есть всего два языка в мире, да?
я потому и говорю - "обсуждаем".

1. согласен
2. согласен
3. не критично

den 08.01.2011 21:58

Ответ: На чем писать сервер ММО игры
 
Ну всё, опять холивар щас начнётся...
И так, тема очередного холивара: что использовать при разработке сервера - C++ или C# ??

falcon 08.01.2011 22:03

Ответ: На чем писать сервер ММО игры
 
Den параноик, не?
вполне годный тред :)

Jimon ну а если у нас по концепту в игре не больше нескольких сотен игроков (ну прям самый пик - тысяча). При чём расчёты ведутся сравнительно не сложные.. Всё равно эффективней использовать плюсы?
Мне кажется подход в выборе инструмента и выборе "взгляда" должен зависить именно от задачи..
зачем нанимать высококлассного специалиста за тысячи $, разрабатывать высокопроизводительную систему, если в задаче требуется создать что-то сравнительно простое?

jimon 08.01.2011 23:03

Ответ: На чем писать сервер ММО игры
 
falcon
для <=256 человек можно что угодно использовать имхо, но стоит понимать что на чём угодно много денег не заработаешь :)

ps. видел как люди делали сетевые крестики нолики на bat файлах, и ничо так

Amatsu 08.01.2011 23:17

Ответ: На чем писать сервер ММО игры
 
Цитата:

Сообщение от jimon (Сообщение 174913)
falcon
для <=256 человек можно что угодно использовать имхо

Для такого можно даже на блитце сервер написать, без использования графического режима (он тогда почти не грузит систему).

SBJoker 08.01.2011 23:37

Ответ: На чем писать сервер ММО игры
 
C# язык специально разработан для разработки отказоустойчивых приложений, быстродействие несильно отличается от плюсов если писать годный код а не быдлокодить. Сетевая часть сильная. Если понадобятся потоки - их есть у нас.

При жжелании если будут критичные места по времени выполнения можно и с++ вставки сделать и асм, для чего unsafe секции и предусмотрены.

Возможностей совершить критическую ошибку мало.

ffinder 09.01.2011 00:03

Ответ: На чем писать сервер ММО игры
 
для затравки: http://habrahabr.ru/blogs/erlang/111252/

имею опыт работы с Эрлангом и C#
средства, которые предоставляет .NET полностью проигрывают по удобству и возможностям.
опишу позитивные моменты Эрланга:
1. очень сильная сетевая часть. полностью решена "проблема 10000 поключений"
2. очень хорошо решены вопросы многопоточности: виртуальная машина имеет свой планировщик легковесных потоков, которых можно создвавать несколько миллионов.
3. практический функциональный язык с single assignment - очень тяжело испортить данные. нет общей памяти между микротредами - невозможно устроить race condition или deadlock.
4. неблокирующий сборщик мусора. у каждого микротреда (легковесного потока, свой стек и куча. изначально на каждый микротред выделяется 1,5 Кб памяти. сравните с 1 Мб в нативных потоках).
5. встроенная система сообщений, позволяет выстраивать логичную архитектуру.

Из недостатков нужно отметить:
1. низкая производительность - на одном уровне с Питоном (хотя под линуксом есть возможность компилировать в нативный код - скорость возрастает довольно прилично).
2. динамическая типизация. частично компенсируется утилитой для статического анализа кода (Dialyzer).

И еще раз: в серверах главное не скорость, а надежность.

pax 09.01.2011 01:19

Ответ: На чем писать сервер ММО игры
 
У меня мало очень опыта программирования сетей. Но пару слов добавлю к теме:

1. Очень хорошая статья про 3 подхода проектирования сервера на C#: Winsock
2. На C# вроде можно реализовать "горячую" замену кода используя домены приложения. ASP.NET так работает.
3. Mono позволяет запускать сервер написанный на C# на Windows, *nix, Linux, Mac

IGR 09.01.2011 02:54

Ответ: На чем писать сервер ММО игры
 
сервер на с# для мморпг чудесно работал с 1-1,5 к клиентов ( больше просто никогда небыло в онлайне :)), по этому, мое личное мнение: в наше время, учитывая время и деньги можно спокойно брать с# и не парится !! Скорость разработки быстрее, надежность больше !! Скорость работы программы я думаю не оч будет отличатся при нескольких тисяч клиентов, вот если сервер расчитывается на сотню тысяч то хз !! Но наверное для самопальной мморпг такая проблема будет просто отсутсвовать !! :-D

falcon 09.01.2011 04:33

Ответ: На чем писать сервер ММО игры
 
EVE online для реализации сервера использует python (имея онлайн в десятки тысяч..)
http://ru.wikipedia.org/wiki/Использование_Python

Amatsu 09.01.2011 10:12

Ответ: На чем писать сервер ММО игры
 
Цитата:

Сообщение от falcon (Сообщение 174937)
EVE online для реализации сервера использует python (имея онлайн в десятки тысяч..)
http://ru.wikipedia.org/wiki/Использование_Python

Да, в среднем в онлайне около 40к народу. Вот только у них там сервер - это кластерная система размером с комнату за много много баксов + выделенный канал в интернет на много много мегабит.

pax 09.01.2011 11:51

Ответ: На чем писать сервер ММО игры
 
Если кто соберется программировать клиент/сервер на C# в рамках какого-то форумного проекта, то я не против поучаствовать в свободное (если будет) время (опыт программирования сетей интересен)

Randomize 09.01.2011 13:50

Ответ: На чем писать сервер ММО игры
 
Python... Всё чаще слышу что это круто и профессионалы выбирают питон.
Видать всех устраивают эти самые "4 пробела". Меня отпугнули дико. Скажем так: Python зафейлился на первом свидании для меня. Может дать ему второй шанс?

pax 09.01.2011 14:06

Ответ: На чем писать сервер ММО игры
 
Цитата:

Сообщение от Randomize (Сообщение 174959)
Python... Всё чаще слышу что это круто и профессионалы выбирают питон.
Видать всех устраивают эти самые "4 пробела". Меня отпугнули дико. Скажем так: Python зафейлился на первом свидании для меня. Может дать ему второй шанс?

Да в общем-то не такой плохой язык. Код написанный на нем кажется компактнее, но отсутствие операторных скобок немного напрягает иногда. Работа с коллекциями у него интересная (срезы, кортежи). Я как-то писал на нем экспортер мешей из Blender в xml. Вроде ничего, но надо хорошую IDE, иначе тяжело.

PS: не обязательно 4 пробела использовать для отступа, можно Tab или например 2 пробела, главное чтобы отступ был одинаковый.

Randomize 09.01.2011 15:26

Ответ: На чем писать сервер ММО игры
 
Цитата:

Сообщение от pax (Сообщение 174960)
PS: не обязательно 4 пробела использовать для отступа, можно Tab или например 2 пробела, главное чтобы отступ был одинаковый.

Ох если бы... Или IDE у меня плохой попался.

den 09.01.2011 15:35

Ответ: На чем писать сервер ММО игры
 
А интересно, на чём написан сервер(а) для WOW и Lineage ?
Имхо это самые крупные ММО.

Randomize 09.01.2011 15:40

Ответ: На чем писать сервер ММО игры
 
Цитата:

Сообщение от Den (Сообщение 174968)
А интересно, на чём написан сервер(а) для WOW и Lineage ?
Имхо это самые крупные ММО.

Lineage 2 - Java
WoW - не знаю

pax 09.01.2011 15:44

Ответ: На чем писать сервер ММО игры
 
Цитата:

Сообщение от Den (Сообщение 174968)
А интересно, на чём написан сервер(а) для WOW и Lineage ?
Имхо это самые крупные ММО.

Вот сторонняя реализация сервера WOW http://ru.wikipedia.org/wiki/MaNGOS C++

ffinder 09.01.2011 18:23

Ответ: На чем писать сервер ММО игры
 
Цитата:

Сообщение от Randomize (Сообщение 174959)
Python... Всё чаще слышу что это круто и профессионалы выбирают питон.

я канеш дико извиняюсь, но бум питона уже кагбэ проходит.

Halk-DS 09.01.2011 23:54

Ответ: На чем писать сервер ММО игры
 
Я както наткнулся на статейку, парни делятся опытом создания своей MMOG и вот вырезка из нее:
Цитата:

Начну с выбора языка для клиента. Подавляющее большинство, а именно около 99% всего написано на Си, и тут вопрос уже даже не эффективности программирования на том или ином языке, а скорее просто судьба, так как писать свой движок для клиента неоправданно.
Придётся брать готовый, а он в 99% случаев написан на С++, хотя я нашёл одно исключение на JAVA
А вот сама статья, если интересно: http://magazine.sources.ru/2010/03/nonapolis_com/

п.с. Мне понравилась...

ffinder 10.01.2011 01:26

Ответ: На чем писать сервер ММО игры
 
Цитата:

Сообщение от Halk-DS (Сообщение 175024)
парни делятся опытом создания своей MMOG

где ты там опыт увидел? нет у них ничего кроме разговоров.

опыт описан вот тут: http://www.dtf.ru/articles/read.php?id=37995

pax 10.01.2011 02:02

Ответ: На чем писать сервер ММО игры
 
Цитата:

Сообщение от ffinder (Сообщение 175035)
опыт описан вот тут: http://www.dtf.ru/articles/read.php?id=37995

Да, писать игру с женой это круто! Моя с компьютером на "Вы"

Halk-DS 10.01.2011 03:38

Ответ: На чем писать сервер ММО игры
 
Ну насчет болтовни уж не скажи: http://nonapolis.com/
Там есть чем доказать что они хороши. А то о чем они говорят в етой статье, ето касательно основной темы топика что отличительно от твоей ссылки(на первый взгляд, может я и не прав, еще не читал, позно счяс немного). Они там говорили о движках...

ffinder 11.01.2011 00:27

Ответ: На чем писать сервер ММО игры
 
вот еще вброс - что написано на Эрланге:
http://ru.w3support.net/index.php?db=so&id=690875

среди прочего:
Vendetta Online (MMO)
чат в facebook
амазоновский сервис S3
twitter (!!!!)
ejabbered (ога, наш уютненький чятег крутится на эрланге)

falcon 11.01.2011 15:28

Ответ: На чем писать сервер ММО игры
 
to ffinder
Erlang, Erlang...
это (как я понимаю) другая парадигма, другие решения... следовательно и подход к разработке совсем другой. Грамотный программист, например, C++ на дороге не валяется... подозреваю, что грамотный серверный C++ программист тем более. А учитывая, что отказоустойчивые и производительные серверные системы отлично себе существуют на Java\C#\Python (языки даже проще того же C++), то выбирать Erlang при разработке как-то не рационально..
В коммерческом продукте это немалое вложение (сервеных программистов\архитекторов\тестеров Erlang ещё найти надо.. и стоить они будут дороже Java кодера).
В некоммерческих по сути вообще пофиг на чём писать.. можно и Erlnag взять чисто в ознакомительных целях..

хотя конечно нельзя закрывать глаза на некоторые преимущества... наверное этот язык действительно упрощает создание безопасных систем, способных выдерживать огромные(!) нагрузки.
Имхо, лучше разработать сервис, запустить его, и, если сервис окажется успешным и появится миллионы пользоватей и сотни тысяч постоянных подключений, то есть резон уже "оптимизировать" переписав на Erlang.
В остальных же случаях можно обойтись C#\Java\Python /C++ сервером, докупая железки по мощьнее. Дёшево, и вполне эффективно.

Самое ж главное уметь выбирать инструмент в зависимости от КОНКРЕТНОЙ задачи...
просто "сервер ММО" - задача, всё-таки, достаточно абстрактная..

ffinder 11.01.2011 16:39

Ответ: На чем писать сервер ММО игры
 
faclon, я твой лепет даже комментировать не хочу, обычное нытье типа "не хочу учить новый язык, он же сложный".
тем более что Эрланг как раз-таки значительно ПРОЩЕ чем С++/С#/Java
Если коротко - то он по сложности как Python, только функциональный и многопоточный.

falcon 11.01.2011 17:09

Ответ: На чем писать сервер ММО игры
 
Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 551 сообщение(ий)):
У вас нет прав, чтобы видеть скрытый текст, содержащийся здесь.

не вяжется как-то в моей голове "простой" и "функциональный". Особенно после ОО парадигмы..
С чего ты взял, что я ною и не хочу учить другие языки тоже не ясно.
ладно, диалог в таком тоне действительно продолжать не охота..))

pax 11.01.2011 17:16

Ответ: На чем писать сервер ММО игры
 
Цитата:

Сообщение от ffinder (Сообщение 175183)
twitter (!!!!)

То-то я часто в твиттер зайти не могу от перегруза... :)

ffinder 11.01.2011 17:34

Ответ: На чем писать сервер ММО игры
 
Цитата:

Сообщение от falcon (Сообщение 175255)
ладно, диалог в таком тоне действительно продолжать не охота..))

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

falcon 11.01.2011 17:56

Ответ: На чем писать сервер ММО игры
 
Ну если ты перечитаешь повнимательнее, то может обратишь внимание на то, что я не столько имею ввиду недостатки самого языка (кстати им ты меня довольно-таки заинтриговал), сколько не рациональность использования любого(впринцыпе) не тривиального (с не привычной парадигмой) языка в проекте.
Если сравнивать ЯЗЫКИ, то наверное Erlang таки эффективней.. заинтриговала направленность на многопоточность, уход от решение проблем с общей памятью.. не ну правда интересно.))
Но эффективность при разработке проекта, и потом самого продукта, часто не вяжется с эффективностью языка. Уверен, ты лучше меня знаешь о многогранности критериев выбора средств разработки.))


Часовой пояс GMT +4, время: 10:38.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot