![]() |
На чем писать сервер ММО игры
Предлагаю обсудить такую тему.
Тут проскальзывала как то мысль что сервер надо писать на плюсах. Я считаю что шарп больше подойдет для этой цели. Так как сервера надо писать много (на шарпе писать все же проще чем на плюсах), все сложные математические вычисления, требующие критической скорости можно и в unsafe секциях писать и во внешних либах на плюсах или даже просто сях. Да и ошибки в шарпе править легче, а совершить сложнее, а для сервера,имхо, ошибки критичнее чем для клиента . вот. обсуждаем... |
Ответ: На чем писать сервер ММО игры
Если бы на блитце имело смысл писать сервер, я бы уже делал мморпг :)
|
Ответ: На чем писать сервер ММО игры
Я вот был недавно на конференции у нас в институте (вобще это оказалась хорошая, годная реклама от мелкомягких), и там в одной из лекций чел рассказывал как раз про сервера. Расказал про два подхода.
1) Если делать сервер многопоточным, то на каждого юзера надо делать поток. Но чел также сказал о внутреностях потоков. Поток при инициализации захапывает себе кусок памяти (точно не помню, но вроде сказал что связанно с процесорами:dontknow: ), и поэтому даже если поток обрабатывает мало инфы то памяти жрёт относительно много. 2) Если делать сервер асихронным (могу ошибится в терминологии) то при большом кол-во юзверей система будет долго переключатся от одного пользователя к другому. Поэтому выбор технологии на стороне сервера. Также сказал что в пятом нэт фраемворке будет два класса - для реализаии многопоточности и асихроности. Он показал пример кода так там весь алгоритм сводится к инициализации нужного класса.:) |
Ответ: На чем писать сервер ММО игры
ппц. сервер на 2/4/8/16/32 юзера чтоли? я думаю по потокам надо разделять локации, но суть не в этом... Скажем так - насколько критична для сервера ММО быстродействие в целом, можно ли ею жертвовать ради безопасности, ваше мнение?
|
Ответ: На чем писать сервер ММО игры
Цитата:
Возможно, для сервера скорость и не так критична (т.к. можно тупо купить больше мощностей), а вот для клиента - да, посылать в магазин за новой железкой - неприлично-с. Однако деньги на сервер тоже не резиновые. На плюсах можно вполне себе писать стабильный сервер. Опять же, понадобится больше человеко-часов, если они высоко оплачиваются, есть смысл пожертвовать производительностью чтоб сэкономить на людях и взять шарпы. (Апогей такого принципа - php) Короче, если б я стал писать сервер, стал бы это делать на плюсах (не доверяю шарпам), но и шарпы - тоже годно. (с учётом JIT вполне способны работать с норм. скоростью, которая, как писалось выше, не так критична) |
Ответ: На чем писать сервер ММО игры
Если мало времени, то лучше взять C#.
Плюсы: 1) Cкорость разработки 2) Простота отладки 3) Это не питон :D Кстати Jimon поднимал этот вопос на ГД: http://www.gamedev.ru/code/forum/?id=78290 |
Цитата:
для серверной технологии есть несколько требований: 1. fault-tolerance, умение не падать при ошибках. отказ в обслуживании одного клиента не должен ломать услугу для остальных. 2. горячая замена кода. без комментариев. 3. неостанавливающий сборщик мусора. есть только в Erlang и в платформе для Java, которая называется Azul. если есть еще где - не стесняйтесь сказать. Цитата:
риальне плакаю. если бы только в сервере был вопрос... |
Ответ: На чем писать сервер ММО игры
Ой как вовремя вы эту тему подняли :)
Я сейчас решил углубиться в разработку подобных систем, чисто для самопрокачки :) Для разработки сервера выбрал C# Не могу точно аргументировать выбор (даже в доке причины выбора очень неубедительно выглядят). C# выбрал только потому, что хотел на практике освоить этот язык. Вроде работа с сокетами везде примерно одинаковая, к тому же есть множество готовых решений по работе с сокетами, базами, многопоточностью... и для плюсов и для шарпа и для жабы... другое дело что шарп и джава несколько проще и надёжней, нежели плюсы. Опять же часто натыкаюсь на высказывания о суровой требовательности шарп\джава приложений... мол затраты памяти можно смело умножать на два. Но не менее часто натыкаюсь и на несогласных с этим)) в общем интересно что скажут люди более или менее разбирающиеся в этой теме :) (речь ведь идёт о НЕбраузерных ммо?) по мне, так очень важно установить требования к серверу, и лишь после этого выбирать инструменты.. для браузерных ММО мб и пхп хватит за глаза и за уши.. Где не стоит вопроса о минимизации трудозатрат (разработка "для души" или мб огромное финансирование) - можно выбрать плюсы.. для создания надёжной(!) системы потребуется много времени. Там же, где требуется создать надёжный продукт в кротчайшие сроки - стоит обратить внимание на шарп\жабу. |
Ответ: На чем писать сервер ММО игры
джемон, ты чота наредактировал, что наши с холи посты вместе скукожились. а ну раскукож все обратно!
|
Ответ: На чем писать сервер ММО игры
я думаю люди смотрят немного не с той стороны на разработку сервера в целом, вот что такое сервер для клиента ? по-сути это коробка которая находится где-то и которая подключена к интернету
с такой стороны для сервера узкими местами становится даже ОСь, потому нужно обладать такими инструментами которые позволят работать всему серверу (как железке) для обработки логики программы сервера, если смотреть именно с такого угла то мы видим что много вещей таких как страницы памяти, производительность сетевого стека, эффективность менеджера задач и тд будут влиять на производительность нашего сервера для эффективной настройки и создания производительного софта нужен будет специалист высокого уровня который понимает как это всё работает, а не выполняет какую-то инструкцию написанную до него, а если у нас уже есть необходимый специалист то значит можем нанять и второго, а быстрее всего опытным людям написать производительный сервер на C++, благо есть весь необходимый инструментарий (у google и facebook высоконагруженные системы на c++ работают, они дураки чтоли ?) возможно для очень производительных систем стоит смотреть в сторону RTOS, а там нет никаких java и c#, серьезные инструменты же Цитата:
Цитата:
|
Ответ: На чем писать сервер ММО игры
|
Ответ: На чем писать сервер ММО игры
Den параноик, не?
вполне годный тред :) Jimon ну а если у нас по концепту в игре не больше нескольких сотен игроков (ну прям самый пик - тысяча). При чём расчёты ведутся сравнительно не сложные.. Всё равно эффективней использовать плюсы? Мне кажется подход в выборе инструмента и выборе "взгляда" должен зависить именно от задачи.. зачем нанимать высококлассного специалиста за тысячи $, разрабатывать высокопроизводительную систему, если в задаче требуется создать что-то сравнительно простое? |
Ответ: На чем писать сервер ММО игры
falcon
для <=256 человек можно что угодно использовать имхо, но стоит понимать что на чём угодно много денег не заработаешь :) ps. видел как люди делали сетевые крестики нолики на bat файлах, и ничо так |
Ответ: На чем писать сервер ММО игры
Цитата:
|
Ответ: На чем писать сервер ММО игры
C# язык специально разработан для разработки отказоустойчивых приложений, быстродействие несильно отличается от плюсов если писать годный код а не быдлокодить. Сетевая часть сильная. Если понадобятся потоки - их есть у нас.
При жжелании если будут критичные места по времени выполнения можно и с++ вставки сделать и асм, для чего unsafe секции и предусмотрены. Возможностей совершить критическую ошибку мало. |
Ответ: На чем писать сервер ММО игры
для затравки: 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). И еще раз: в серверах главное не скорость, а надежность. |
Ответ: На чем писать сервер ММО игры
У меня мало очень опыта программирования сетей. Но пару слов добавлю к теме:
1. Очень хорошая статья про 3 подхода проектирования сервера на C#: Winsock 2. На C# вроде можно реализовать "горячую" замену кода используя домены приложения. ASP.NET так работает. 3. Mono позволяет запускать сервер написанный на C# на Windows, *nix, Linux, Mac |
Ответ: На чем писать сервер ММО игры
сервер на с# для мморпг чудесно работал с 1-1,5 к клиентов ( больше просто никогда небыло в онлайне :)), по этому, мое личное мнение: в наше время, учитывая время и деньги можно спокойно брать с# и не парится !! Скорость разработки быстрее, надежность больше !! Скорость работы программы я думаю не оч будет отличатся при нескольких тисяч клиентов, вот если сервер расчитывается на сотню тысяч то хз !! Но наверное для самопальной мморпг такая проблема будет просто отсутсвовать !! :-D
|
Ответ: На чем писать сервер ММО игры
EVE online для реализации сервера использует python (имея онлайн в десятки тысяч..)
http://ru.wikipedia.org/wiki/Использование_Python |
Ответ: На чем писать сервер ММО игры
Цитата:
|
Ответ: На чем писать сервер ММО игры
|
Ответ: На чем писать сервер ММО игры
Python... Всё чаще слышу что это круто и профессионалы выбирают питон.
Видать всех устраивают эти самые "4 пробела". Меня отпугнули дико. Скажем так: Python зафейлился на первом свидании для меня. Может дать ему второй шанс? |
Ответ: На чем писать сервер ММО игры
Цитата:
PS: не обязательно 4 пробела использовать для отступа, можно Tab или например 2 пробела, главное чтобы отступ был одинаковый. |
Ответ: На чем писать сервер ММО игры
Цитата:
|
Ответ: На чем писать сервер ММО игры
А интересно, на чём написан сервер(а) для WOW и Lineage ?
Имхо это самые крупные ММО. |
Ответ: На чем писать сервер ММО игры
Цитата:
WoW - не знаю |
Ответ: На чем писать сервер ММО игры
Цитата:
|
Ответ: На чем писать сервер ММО игры
Цитата:
|
Ответ: На чем писать сервер ММО игры
Я както наткнулся на статейку, парни делятся опытом создания своей MMOG и вот вырезка из нее:
Цитата:
п.с. Мне понравилась... |
Ответ: На чем писать сервер ММО игры
Цитата:
опыт описан вот тут: http://www.dtf.ru/articles/read.php?id=37995 |
Ответ: На чем писать сервер ММО игры
|
Ответ: На чем писать сервер ММО игры
Ну насчет болтовни уж не скажи: http://nonapolis.com/
Там есть чем доказать что они хороши. А то о чем они говорят в етой статье, ето касательно основной темы топика что отличительно от твоей ссылки(на первый взгляд, может я и не прав, еще не читал, позно счяс немного). Они там говорили о движках... |
Ответ: На чем писать сервер ММО игры
вот еще вброс - что написано на Эрланге:
http://ru.w3support.net/index.php?db=so&id=690875 среди прочего: Vendetta Online (MMO) чат в facebook амазоновский сервис S3 twitter (!!!!) ejabbered (ога, наш уютненький чятег крутится на эрланге) |
Ответ: На чем писать сервер ММО игры
to ffinder
Erlang, Erlang... это (как я понимаю) другая парадигма, другие решения... следовательно и подход к разработке совсем другой. Грамотный программист, например, C++ на дороге не валяется... подозреваю, что грамотный серверный C++ программист тем более. А учитывая, что отказоустойчивые и производительные серверные системы отлично себе существуют на Java\C#\Python (языки даже проще того же C++), то выбирать Erlang при разработке как-то не рационально.. В коммерческом продукте это немалое вложение (сервеных программистов\архитекторов\тестеров Erlang ещё найти надо.. и стоить они будут дороже Java кодера). В некоммерческих по сути вообще пофиг на чём писать.. можно и Erlnag взять чисто в ознакомительных целях.. хотя конечно нельзя закрывать глаза на некоторые преимущества... наверное этот язык действительно упрощает создание безопасных систем, способных выдерживать огромные(!) нагрузки. Имхо, лучше разработать сервис, запустить его, и, если сервис окажется успешным и появится миллионы пользоватей и сотни тысяч постоянных подключений, то есть резон уже "оптимизировать" переписав на Erlang. В остальных же случаях можно обойтись C#\Java\Python /C++ сервером, докупая железки по мощьнее. Дёшево, и вполне эффективно. Самое ж главное уметь выбирать инструмент в зависимости от КОНКРЕТНОЙ задачи... просто "сервер ММО" - задача, всё-таки, достаточно абстрактная.. |
Ответ: На чем писать сервер ММО игры
faclon, я твой лепет даже комментировать не хочу, обычное нытье типа "не хочу учить новый язык, он же сложный".
тем более что Эрланг как раз-таки значительно ПРОЩЕ чем С++/С#/Java Если коротко - то он по сложности как Python, только функциональный и многопоточный. |
Ответ: На чем писать сервер ММО игры
не вяжется как-то в моей голове "простой" и "функциональный". Особенно после ОО парадигмы.. С чего ты взял, что я ною и не хочу учить другие языки тоже не ясно. ладно, диалог в таком тоне действительно продолжать не охота..)) |
Ответ: На чем писать сервер ММО игры
|
Ответ: На чем писать сервер ММО игры
Цитата:
|
Ответ: На чем писать сервер ММО игры
Ну если ты перечитаешь повнимательнее, то может обратишь внимание на то, что я не столько имею ввиду недостатки самого языка (кстати им ты меня довольно-таки заинтриговал), сколько не рациональность использования любого(впринцыпе) не тривиального (с не привычной парадигмой) языка в проекте.
Если сравнивать ЯЗЫКИ, то наверное Erlang таки эффективней.. заинтриговала направленность на многопоточность, Но эффективность при разработке проекта, и потом самого продукта, часто не вяжется с эффективностью языка. Уверен, ты лучше меня знаешь о многогранности критериев выбора средств разработки.)) |
Часовой пояс GMT +4, время: 10:38. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot