LINUX.ORG.RU

erlang vs haskell vs ocaml for mmorpg


0

0

появилась необходимость написать mmorpg и решил опробовать что-нибудь функциональное, на первый взгляд идеально подходит erlang с его легкими потоками, но меня смущает динамическая типизация и скорость, судя по тестам он двум другим языкам проигрывает, на данный момент присматриваюсь к ocaml, тк мне он показался наиболее практичным, хотя очень понравился haskell, но как-то мне он кажется очень уж академичным

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


Re: erlang vs haskell vs ocaml for mmorpg

А что подразумевается под MMORPG? Я несколько сомневаюсь, что там будет столько расчётов, что производительности erlang-а или haskell-а не хватит.

Legioner ★★★★★ ()
Ответ на: Re: erlang vs haskell vs ocaml for mmorpg от Legioner

Re: erlang vs haskell vs ocaml for mmorpg

мморпг - это будет сервер, который должен будет взаимодействовать с примерно 700-1000 игроками, расчеты конечно не сильно серьезные, но их много и критично время реакции сервера на действия игроков, на данный момент есть криво написанный вариант на с++ который прилично грузит проц, уже на 400 игроках да еще и падает постоянно

cvb ()

Re: erlang vs haskell vs ocaml for mmorpg

Если тебе нужно, чтобы оно работало - пиши на том, что лучше знаешь. Если нужно, чтобы было интересно - пиши на D, поможешь компилятор отладить, хоть какая-то польза...

tailgunner ★★★★★ ()

Re: erlang vs haskell vs ocaml for mmorpg

Сервер - Java. Клиент - Python. После написания и отработки движков и протоколов, клиента можно попробовать переписать на C++ :)

KRoN73 ★★★★★ ()
Ответ на: Re: erlang vs haskell vs ocaml for mmorpg от Legioner

Re: erlang vs haskell vs ocaml for mmorpg

>В ерланге есть какая то реалтаймовость, узкие места можно писать на С. Я бы попробовал, ради интереса.

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

cvb ()
Ответ на: Re: erlang vs haskell vs ocaml for mmorpg от cvb

Re: erlang vs haskell vs ocaml for mmorpg

>на данный момент есть криво написанный вариант на с++ который прилично грузит проц, уже на 400 игроках да еще и падает постоянно

У нас L2Fortress, написанный на Java (+ скрипты на Jython и JBForth) не тормозил на 1000 онлайне. При 40 тыс. активных мобов в игре. Но это уже на приличном железе. Мой древний Xeon-1800 работал максимум с 140 игроками, загрузка была где-то процентов по 30.

KRoN73 ★★★★★ ()
Ответ на: Re: erlang vs haskell vs ocaml for mmorpg от tailgunner

Re: erlang vs haskell vs ocaml for mmorpg

>Если нужно, чтобы было интересно - пиши на D, поможешь компилятор отладить, хоть какая-то польза...

я невижу у D каких-нибудь преимуществ, перед перечисленными языками

cvb ()
Ответ на: Re: erlang vs haskell vs ocaml for mmorpg от cvb

Re: erlang vs haskell vs ocaml for mmorpg

>> Если нужно, чтобы было интересно - пиши на D, поможешь компилятор отладить, хоть какая-то польза...

> я невижу у D каких-нибудь преимуществ, перед перечисленными языками

А можно спросить, каков твой опыт работы с Erlang, Ocaml, Haskell? Насчет D - я не говорил о преимуществах, а только о том, что ваша работа будет интересной (ловить глюки в сыром компиляторе - это круто!) и полезной - отловленные вами глюки будут исправлены.

tailgunner ★★★★★ ()
Ответ на: Re: erlang vs haskell vs ocaml for mmorpg от KRoN73

Re: erlang vs haskell vs ocaml for mmorpg

>У нас L2Fortress, написанный на Java (+ скрипты на Jython и JBForth) не тормозил на 1000 онлайне. При 40 тыс. активных мобов в игре. Но это уже на приличном железе. Мой древний Xeon-1800 работал максимум с 140 игроками, загрузка была где-то процентов по 30.

да как-то java, хоть и ентерпрайз, но мне все больше нравятся функциональные языки

кстати на данный момент все крутится на Intel(R) Xeon(TM) CPU 2.80GHz которых 2, но имеющийся с++ код никто не респаралеливал:(

cvb ()
Ответ на: Re: erlang vs haskell vs ocaml for mmorpg от cvb

Re: erlang vs haskell vs ocaml for mmorpg

>я невижу у D каких-нибудь преимуществ, перед перечисленными языками

Производительность + нативная линковка с кучей Си-шных либ + более привычная идеология :)

KRoN73 ★★★★★ ()
Ответ на: Re: erlang vs haskell vs ocaml for mmorpg от tailgunner

Re: erlang vs haskell vs ocaml for mmorpg

>А можно спросить, каков твой опыт работы с Erlang, Ocaml, Haskell?

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

>Насчет D - я не говорил о преимуществах, а только о том, что ваша работа будет интересной (ловить глюки в сыром компиляторе - это круто!) и полезной - отловленные вами глюки будут исправлены.

проблема в том, что к моим глюкам добавятся еще и глюки компилера и совсем не гарантированно, что сами разработчики сразу кинутся их исправлять, а мне + ко всему надо чтобы моя софтина еще и работала, еслибы just fot fun, то я бы может и попробовал, но это не тот случай

cvb ()
Ответ на: Re: erlang vs haskell vs ocaml for mmorpg от anonymous

Re: erlang vs haskell vs ocaml for mmorpg

> Лаги в джите.

Поясни.

Вообще, расскажи подробнее, если в курсе. А то у нас в OpenWorlds сейчас Питон только в клиенте будет, сервер изначально на Java планируется, как и L2Fortress. Но питоновское лобби сильное ;)

KRoN73 ★★★★★ ()
Ответ на: Re: erlang vs haskell vs ocaml for mmorpg от KRoN73

Re: erlang vs haskell vs ocaml for mmorpg

>Производительность + нативная линковка с кучей Си-шных либ + более привычная идеология :)

с производительностью и у оcaml неплохо, да и у ghc, сравнивал с gcc

с либами в ocaml тож проблем нет, а насчет идеологии - всегда полезно попробовать что-то новое

cvb ()
Ответ на: Re: erlang vs haskell vs ocaml for mmorpg от cvb

Re: erlang vs haskell vs ocaml for mmorpg

>> А можно спросить, каков твой опыт работы с Erlang, Ocaml, Haskell?

> очень маленький

Понятно.

> ко всему надо чтобы моя софтина еще и работала, еслибы just fot fun, то я бы может и попробовал, но это не тот случай

Но ты тем не менее хочешь сделать реализацию на языке, которого не знаешь (и, более того, в парадигме, которой не знаешь)? Я не понимаю твоей логики.

tailgunner ★★★★★ ()
Ответ на: Re: erlang vs haskell vs ocaml for mmorpg от KRoN73

Re: erlang vs haskell vs ocaml for mmorpg

Jita - это не то, что вы вероятно думаете, это густонаселённая солнечная система, своего рода торговый центр с локалом 600-800 человек 24 часа 7 дней в неделю

anonymous ()
Ответ на: Re: erlang vs haskell vs ocaml for mmorpg от tailgunner

Re: erlang vs haskell vs ocaml for mmorpg

>Но ты тем не менее хочешь сделать реализацию на языке, которого не знаешь (и, более того, в парадигме, которой не знаешь)? Я не понимаю твоей логики.

на осмысление парадигмы я уже потратил достаточно времени, и успел поработать с лиспом, сейчас я просто хочу выбрать наиболее эффективный инструмент из 3х перечисленных с условием поставленной задачи, чего в моей логике такого непонятного?

cvb ()

Re: erlang vs haskell vs ocaml for mmorpg

Сервер -- на erlang/haskell + c. Достаточно практично. Как раз ocaml брать не порекомендую -- сейчас за ним стоит сравнительно небольшое коммунити, скорее всего будет во многих местах тяжко.

pierre ()
Ответ на: Re: erlang vs haskell vs ocaml for mmorpg от cvb

Re: erlang vs haskell vs ocaml for mmorpg

>на осмысление парадигмы я уже потратил достаточно времени, и успел поработать с лиспом, сейчас я просто хочу выбрать наиболее эффективный инструмент

В таком случае интересно было бы услышать, почему в этом списке из 3-х языков нет Лиспа. Из всех упомянутых языков лично я больше знаком с Лиспом и его же выбрал бы для проекта. Итак, чем Лисп хуже них - медленно? плохая реализация потоков? сокетов? ещё что-то?

seiken ★★★★★ ()

Re: erlang vs haskell vs ocaml for mmorpg

Erlang вообще отнесён к функциональным по недоразумению. Он объектный.

Miguel ★★★★★ ()

Re: erlang vs haskell vs ocaml for mmorpg

Я бы делал всю логику на erlang, а узкие места (если бы были) на C или OCaml. В erlang очень хорошо с распараллеливанием и не будет проблем раскидать приложение по нескольким физическим серверам.

Если нет экспириенса в ерланге, то не помешает его для начала получить, дабы правильно спроектировать. А то есть вероятность, что ты напишешь сиплюсплюсное приложение, используя синтаксис ерланга. У него самое ценное - это виртуальная машина.

anonymous ()
Ответ на: Re: erlang vs haskell vs ocaml for mmorpg от KRoN73

Re: erlang vs haskell vs ocaml for mmorpg

> Сервер - Java. Клиент - Python. После написания и отработки движков и протоколов, клиента можно попробовать переписать на C++ :)

Сервер нужно писать на ALGOL-е, а клиент - на FORTRAN-е!!! После написания и отладки, клиента можно попробовать переписать на BASIC

anonymous ()
Ответ на: Re: erlang vs haskell vs ocaml for mmorpg от tailgunner

Re: erlang vs haskell vs ocaml for mmorpg

> Если тебе нужно, чтобы оно работало - пиши на том, что лучше знаешь. Если нужно, чтобы было интересно - пиши на D, поможешь компилятор отладить, хоть какая-то польза...

Какая тут польза, компилятор мертворожденного языка, кому он нужен?

fmj ()
Ответ на: Re: erlang vs haskell vs ocaml for mmorpg от fmj

Re: erlang vs haskell vs ocaml for mmorpg

> компилятор мертворожденного языка, кому он нужен?

Чё, правда мертворожденного? Сам роды принимал?

По данным TIOBE: D - 12 место, Haskell - 24, Erlang - 40, ML - 42. D обходит все предложенные OP языки _в сумме_ почти в 3 раза.

Так что хреновый ты акушер...

tailgunner ★★★★★ ()
Ответ на: Re: erlang vs haskell vs ocaml for mmorpg от tailgunner

Re: erlang vs haskell vs ocaml for mmorpg

По-моему, тут двух мнений быть не может. MMORPG подразумевает одновременную поддержку множества клиентских сессий, а это именно то, для чего и придуман Эрланг. Там и легковесные процессы из коробки со всеми плюшками и синтаксическим сахаром, и кластеризация, и горячее обновление... В общем, если есть сомнения, поделать туториалы, а потом попробовать те же самые задачки порешать хоть на D, хоть на чём другом. Все вопросы отпадут сами собой.

Отдельные узкие места, если они будут, потом переписать хоть на C, хоть на чёрте лысом, дело вкуса.

anonymous ()
Ответ на: Re: erlang vs haskell vs ocaml for mmorpg от tailgunner

Re: erlang vs haskell vs ocaml for mmorpg

> пиши на D, поможешь компилятор отладить, хоть какая-то польза

Лол, ты сделал мой день.

- Чем лучше выкопать траншею сложного профиля, лопатой или экскаватором?

- Попробуй бензопилой, она лучше пилит, чем простая ножовка, правда часто ломается, вот и поможешь отладить, хоть какая-то польза...

anonymous ()
Ответ на: Re: erlang vs haskell vs ocaml for mmorpg от seiken

Re: erlang vs haskell vs ocaml for mmorpg

>В таком случае интересно было бы услышать, почему в этом списке из 3-х языков нет Лиспа. Из всех упомянутых языков лично я больше знаком с Лиспом и его же выбрал бы для проекта. Итак, чем Лисп хуже них - медленно? плохая реализация потоков? сокетов? ещё что-то?

потому что хочется статической типизации,а ерланг тут потому что он меня заинтересовал

cvb ()
Ответ на: Re: erlang vs haskell vs ocaml for mmorpg от anonymous

Re: erlang vs haskell vs ocaml for mmorpg

> По-моему, тут двух мнений быть не может.

Ты это скажи OP.

> это именно то, для чего и придуман Эрланг.

Да ради бога, я не против Эрланга. ИМХО, начинать писать ответственный проект на языке, которого не знаешь - это дурь, но у других может быть другое мнение.

tailgunner ★★★★★ ()
Ответ на: Re: erlang vs haskell vs ocaml for mmorpg от anonymous

Re: erlang vs haskell vs ocaml for mmorpg

>> пиши на D, поможешь компилятор отладить, хоть какая-то польза

> Лол, ты сделал мой день.

Смейся, анонимный брат. Смех продлевает жизнь.

> Чем лучше выкопать траншею сложного профиля, лопатой или экскаватором?

> Попробуй бензопилой, она лучше пилит, чем простая ножовка

Там, где тебя учили, тебе сказали, что доказательство по аналогии является мошенничеством?

tailgunner ★★★★★ ()
Ответ на: Re: erlang vs haskell vs ocaml for mmorpg от tailgunner

Re: erlang vs haskell vs ocaml for mmorpg

Да никто тебе ничего не собирался ничего доказывать, лол, так, проняло твоего покорного слугу до колик, вот и решил поблагодарить за 5 минут здорового смеха.

anonymous ()
Ответ на: Re: erlang vs haskell vs ocaml for mmorpg от pierre

Re: erlang vs haskell vs ocaml for mmorpg

>Сервер -- на erlang/haskell + c. Достаточно практично.

и всетаки, что для данной задачи будет иметь больше поюсов, erlang или haskell?

>Как раз ocaml брать не порекомендую -- сейчас за ним стоит сравнительно небольшое коммунити, скорее всего будет во многих местах тяжко.

неожиданный поворот событий, мне почему-то казалось наоборот

cvb ()
Ответ на: Re: erlang vs haskell vs ocaml for mmorpg от anonymous

Re: erlang vs haskell vs ocaml for mmorpg

>По-моему, тут двух мнений быть не может. MMORPG подразумевает одновременную поддержку множества клиентских сессий, а это именно то, для чего и придуман Эрланг.

MMORPG-сервер - это в первую очередь не проблема числа соединений, а очень ресурсоёмкие вычисления. Взаимная видимость объектов, коллизии, геодата и искуственный интеллект.

KRoN73 ★★★★★ ()

Re: erlang vs haskell vs ocaml for mmorpg

Я пишу MMORPG на Scheme (сервер). Часть, отвечающая за сокеты и процессы написана на Си.

Клиент на Си.

xTERM ★★ ()
Ответ на: Re: erlang vs haskell vs ocaml for mmorpg от anonymous

Re: erlang vs haskell vs ocaml for mmorpg

>Там и легковесные процессы из коробки со всеми плюшками и синтаксическим сахаром

Мне хватило vfork() - один единственный вызов и вся многопоточность была готова)))

xTERM ★★ ()
Ответ на: Re: erlang vs haskell vs ocaml for mmorpg от KRoN73

Re: erlang vs haskell vs ocaml for mmorpg

> , а очень ресурсоёмкие вычисления. Взаимная видимость объектов, коллизии, геодата и искуственный интеллект.

Т.е. лиспу альтернативы тут нет? Или ocaml все же сойдет для сельской местности?

anonymous ()
Ответ на: Re: erlang vs haskell vs ocaml for mmorpg от KRoN73

Re: erlang vs haskell vs ocaml for mmorpg

Сейчас вот накалякает на одном из перечисленных языков, не получится нихрена толкового, и будет язык винить.

anonymous ()

Re: erlang vs haskell vs ocaml for mmorpg

1. Erlang + HIPE по производительности рвёт Haskell как носовой платок.
2. Erlang создавался для подобных вещей. До нескольких сот тысяч одновременно работающих клиентов - где такое можно увидеть ещё?
3. Неплохо проработана инфраструктура языка. Также созданию языка предворяло несколько лет исследований в области разработки ПО. Сравнивались между собой различные методы и подходы в программировании. И постарались учесть все эти вещи так, чтобы количество возможных ошибок, возникающих при программировании, было минимальным.
4. Хорошо проработаная и великолепно реализованная сетевая подсистема.
5. Очень быстрый сборщик мусора. Никаких стопвордов и тому подобного непотребства.
6. Встроенная кластеризация.
7. Отказоустойчивость.
8. Mnesia. Всё, что можно творить с её помощью, я даже представить себе боюсь.
9. Не уверен, что стоит об это говорить в контексте mmorpg, но очень удобная работа с бинарными форматами.

В общем для серверной части mmorpg практически безальтернативное решение. Основные источники информации - диссертация Армстронга, Concurrent Programming in Erlang и встроенная документация. Язык очень простой, чтобы начать программировать на нём, достаточно 2-3 дня (при условии, что функциональный подход не в новинку).

Минусы: Мало библиотек. Получить помощь от рускоговорящего человека сложно (из рускоязычных мест скопления эрлангистов можно назвать разве что rsdn.ru/Декларативное программирования, erlang.dmitriid.com и erlang@conference.jabber.ru).

Пара ссылок почти в тему:
http://www.devmaster.net/articles/mmo-scalable-server/
http://wagerlabs.com/
ну и:
http://www.trapexit.org/
http://www.erlang-projects.org/
http://www.planeterlang.org/

anonymous ()
Ответ на: Re: erlang vs haskell vs ocaml for mmorpg от anonymous

Re: erlang vs haskell vs ocaml for mmorpg

> 1. Erlang + HIPE по производительности рвёт Haskell как носовой платок.

Что ж он STMку хаскельную в шутауте не рвет? :-)

> 7. Отказоустойчивость.

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

> 8. Mnesia. Всё, что можно творить с её помощью, я даже представить себе боюсь.

Аналоги в хаскеле имеются в рамках happs

По остальным пунктам не в курсе, поэтому соглашусь :-)

pierre ()
Ответ на: Re: erlang vs haskell vs ocaml for mmorpg от anonymous

Re: erlang vs haskell vs ocaml for mmorpg

>Erlang создавался для подобных вещей. До нескольких сот тысяч одновременно работающих клиентов - где такое можно увидеть ещё?

Для MMORPG? Он что, на порядок круче C++? На котором невозможно реализовать на доступном железе и несколько десятков тысяч взаимодействующих чаров :)

...

Повторюсь, сеть тут - дело десяток.

Erlang нужен когда клиентов - сотни тысяч, но вычислений они не требуют.

KRoN73 ★★★★★ ()

Re: erlang vs haskell vs ocaml for mmorpg

> но меня смущает динамическая типизация

В erlang есть статическая типизация.

stassats ★★★★ ()
Ответ на: Re: erlang vs haskell vs ocaml for mmorpg от tailgunner

Re: erlang vs haskell vs ocaml for mmorpg

>> компилятор мертворожденного языка, кому он нужен? Чё, правда мертворожденного? Сам роды принимал?

>По данным TIOBE: D - 12 место, Haskell - 24, Erlang - 40, ML - 42. D обходит все предложенные OP языки _в сумме_ почти в 3 раза.

>Так что хреновый ты акушер...

Чета я только не видел ни одного ни крупного OpenSource проекта на D, ни коммерческой его эксплуатации (и никогда не увижу, ибо он будет вечно сырой и глючный). а то, что его толпа красноглазых использует, ни о чем, абсолютно, не говорит.

fmj ()
Ответ на: Re: erlang vs haskell vs ocaml for mmorpg от KRoN73

Re: erlang vs haskell vs ocaml for mmorpg

> Для MMORPG? Он что, на порядок круче C++?

Если тебе нужно распараллелить задачу, то лучше. Какой (или чего ?) прирост тут можно получить с помощью С ?

> Erlang нужен когда клиентов - сотни тысяч, но вычислений они не требуют.

Почему обязательно 1 клиент - 1 поток ? У меня может быть 1 клиент, и 1к потоков, которые будут рождаться и умирать с бешеной скоростью.

А что вообще в MMORPG можно распараллелить ? Можно мир - несколько процессов, NPC, итп - для каждого свой процесс ?

halflife ★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.