Движок la2 - Страница 4 - Форум администраторов игровых серверов
Форум администраторов игровых серверов StormWall - Защита от DDos атак
Регистрация Мнения Справка Пользователи Календарь Все разделы прочитаны
Вернуться   Форум администраторов игровых серверов > MMO > Lineage II

Lineage II
Дискуссии на тему создания, настройки и обслуживания серверов Lineage 2. При поддержке: Премиум услуги по рекламе

Ответ
Опции темы
Непрочитано 18.01.2017, 22:40   #31

По умолчанию Re: Движок la2

Цитата:
Сообщение от f1redark Посмотреть сообщение
Если нормально писать на C++, используя его современные возможности (smart pointers, и т п), то проблем с памятью нет. То же самое с выходом за границы массива, есть std::vector, и другие контейнеры.

У С++ есть интересное свойство, люди, которые пишут на нем 1-2 года, зачастую начинают считать себя вполне себе гуру, и это большая ошибка. В нем очень много тонких мест и нюансов, которые чаще всего начинаешь осознавать/понимать только гораздо позже, лет так через 5, и то, после того, как соберешь на своей шкуре достаточное кол-во граблей. Я уже не говорю про грамотную структуру проекта, иерархию классов, и остальное.



Не думаю, что managed когда нибудь догонит unmanaged, хотя бы из за GC, да и других причин хватает. Rust плохой пример, потому, что его главный принцип - zero-cost abstractions, большинство вещей он делает на этапе компиляции, и GC в понимании Java программистов в нем нет. Фактически, в нем используется тот же принцип, что и в smart pointer'ах C++.



Не все так радужно, можно долго петь дифирамбы Java, но, тем не менее, для примера, практически все браузеры у нас на C/C++, как и 90% прикладного софта.

Попробуйте открыть в Eclipse более менее большой проект, сомнительное удовольствие.
Попробуйте написать на плюсах такой же большой проект, который будет долго открываться в эклипсе, а потом катать его компоненты на пару сотен машинок с разной архитектурой, и Вы узнаете как широко может улыбаться C++ программист когда библиотеки которые он использовал для своего проекта не заводятся на ARM машинках или были выпилены из новых дистрибутивов линукса. Код на java более гибок и экосистема выстроенная вокруг неё лучше покрывает большинство задач, делая это без лишней боли. Это позволяет сосредоточиться на бизнес-логике а не на решении проблем с совместимостью. Как выше писали - проще докупить железа в парк, чем переплачивать банде труъ "си"циалистов.

наговнякать код можно на любом языке.
Camelion вне форума Отправить сообщение для Camelion с помощью ICQ Ответить с цитированием
Непрочитано 18.01.2017, 23:08   #32
Пользователь

По умолчанию Re: Движок la2

Цитата:
Сообщение от Camelion Посмотреть сообщение
Попробуйте написать на плюсах такой же большой проект, который будет долго открываться в эклипсе, а потом катать его компоненты на пару сотен машинок с разной архитектурой, и Вы узнаете как широко может улыбаться C++ программист когда библиотеки которые он использовал для своего проекта не заводятся на ARM машинках или были выпилены из новых дистрибутивов линукса. Код на java более гибок и экосистема выстроенная вокруг неё лучше покрывает большинство задач, делая это без лишней боли. Это позволяет сосредоточиться на бизнес-логике а не на решении проблем с совместимостью. Как выше писали - проще докупить железа в парк, чем переплачивать банде труъ "си"циалистов.

наговнякать код можно на любом языке.
Это что за интересно такие волшебные библиотеки, которые вы используете в С++, и которые могут не заводиться/быть выпилены? Если под архитектуру запилен gcc/g++, то он скомпилирует любой валидный C++ код реализованного под его версию стандарта. Естественно, что для этого нужно писать нормально, не закладываясь на всякие platform specific вещи и грязные хаки. На счет <нет библиотеки | выпилили библиотеку>, все просто, обычно в ТЗ прописаны требования, предъявляемые для того, чтобы ПО/СПО работало, если они не выполнены, это уже проблемы заказчика. В крайнем случае, никто не мешает притащить нужные либы с собой, как это обычно делают с Qt* или вкомпилить статически.

Каждому языку своя ниша, и, по моему скромному мнению, системное и прикладное ПО это ниша С++, а не Java, поэтому в принципе не вижу причин, по которым тот же l2 server должен быть написан на Java, а не на C++. Тем более, на нормальных серверах, речь идет про high load, где C++ проявляет себя лучше. Не зря же почти все игровые сервера, включая оригинальный l2 server, написаны на C/C++)
f1redark вне форума Ответить с цитированием
Непрочитано 18.01.2017, 23:27   #33
Пользователь

По умолчанию Re: Движок la2

Цитата:
Сообщение от f1redark Посмотреть сообщение
Не зря же почти все игровые сервера, включая оригинальный l2 server, написаны на C/C++)
И умудряются тормозить на онлайне 5000 на топовых серверных платформах. Офф сервера тому примером.

Но я согласен конечно же С++ код гораздо более быстрый.
flopix вне форума Ответить с цитированием
Непрочитано 18.01.2017, 23:44   #34

По умолчанию Re: Движок la2

Цитата:
Сообщение от f1redark Посмотреть сообщение
Это что за интересно такие волшебные библиотеки, которые вы используете в С++, и которые могут не заводиться/быть выпилены? Если под архитектуру запилен gcc/g++, то он скомпилирует любой валидный C++ код реализованного под его версию стандарта. Естественно, что для этого нужно писать нормально, не закладываясь на всякие platform specific вещи и грязные хаки. На счет <нет библиотеки | выпилили библиотеку>, все просто, обычно в ТЗ прописаны требования, предъявляемые для того, чтобы ПО/СПО работало, если они не выполнены, это уже проблемы заказчика. В крайнем случае, никто не мешает притащить нужные либы с собой, как это обычно делают с Qt* или вкомпилить статически.

Каждому языку своя ниша, и, по моему скромному мнению, системное и прикладное ПО это ниша С++, а не Java, поэтому в принципе не вижу причин, по которым тот же l2 server должен быть написан на Java, а не на C++. Тем более, на нормальных серверах, речь идет про high load, где C++ проявляет себя лучше. Не зря же почти все игровые сервера, включая оригинальный l2 server, написаны на C/C++)
И как вы отмасштабируете свой хай-лоад под сверх-высокую нагрузку без боли? То-то же во всех популярных C++ онлайн серверах создано под несколько десятков игровых инстансов (л2, аа, вот, итд), наверняка из-за того что сервер на с++ бешеный хай-лоад держит. Бесконечно вверх вы не сможете масштабироваться ни на одном языке, когда-нибудь вы упретесь в производительность железа. И тогда нужно будет двигаться горизонтально. Ах, да, этого же не было в требованиях, и в том, что проект стал сверх-популярным и вылез за пределы первоначально ожидаемой нагрузки - вина заказчика, такой-сякой, плохо прописал требования.

Для заказчика ваша система за некоторым исключением - черный ящик из которого наружу торчит функционал. И чем быстрее(+дешевле) ящик может обрастать функционалом - тем счастливее заказчик. Скажите любому стартапу: сейчас мы будем вам писать кластер серверов на с++ под разные архитектуры с хождением по бд-шардам и репликацией сессий между инстансами, и вы увидите как потенциальные заказчики убегают от вас в лес на сверхзвуковых скоростях.
Camelion вне форума Отправить сообщение для Camelion с помощью ICQ Ответить с цитированием
Непрочитано 19.01.2017, 00:11   #35
Пользователь

По умолчанию Re: Движок la2

Цитата:
Сообщение от Camelion Посмотреть сообщение
И как вы отмасштабируете свой хай-лоад под сверх-высокую нагрузку без боли? То-то же во всех популярных C++ онлайн серверах создано под несколько десятков игровых инстансов (л2, аа, вот, итд), наверняка из-за того что сервер на с++ бешеный хай-лоад держит. Бесконечно вверх вы не сможете масштабироваться ни на одном языке, когда-нибудь вы упретесь в производительность железа. И тогда нужно будет двигаться горизонтально. Ах, да, этого же не было в требованиях, и в том, что проект стал сверх-популярным и вылез за пределы первоначально ожидаемой нагрузки - вина заказчика, такой-сякой, плохо прописал требования.

Для заказчика ваша система за некоторым исключением - черный ящик из которого наружу торчит функционал. И чем быстрее(+дешевле) ящик может обрастать функционалом - тем счастливее заказчик. Скажите любому стартапу: сейчас мы будем вам писать кластер серверов на с++ под разные архитектуры с хождением по бд-шардам и репликацией сессий между инстансами, и вы увидите как потенциальные заказчики убегают от вас в лес на сверхзвуковых скоростях.
Не вижу проблем, для меня масштабирование это прерогатива архитектуры, а не языка, поэтому что нормальное с++ приложение что java масштабируется, но с++ при этом жрет гораздо меньше памяти, и работает быстрее.

Опять же, причем тут БД шары и репликации к конкретному языку? Вы с одинаковым успехом можете их дергать из любого языка, для которого разработчики софта предоставили соответствующие биндинги. И к чему напирать на разные архитектуры? Это редкость, когда нужно писать так, что бы поддерживалась миллион платформ. Из своей практики разработки могу сказать, что зачастую, архитектура одна, и она заранее известна, но, в целом, не вижу проблем даже если их будет много, выше описал, что компилируется все одинаково.

Взять то же СПО, вам нужно, чтобы ваш любимый эклипс работал под арм? Под мипс? А игровой сервер?
f1redark вне форума Ответить с цитированием
Непрочитано 19.01.2017, 01:24   #36

По умолчанию Re: Движок la2

Цитата:
Сообщение от f1redark Посмотреть сообщение
Не вижу проблем, для меня масштабирование это прерогатива архитектуры, а не языка, поэтому что нормальное с++ приложение что java масштабируется, но с++ при этом жрет гораздо меньше памяти, и работает быстрее.

Опять же, причем тут БД шары и репликации к конкретному языку? Вы с одинаковым успехом можете их дергать из любого языка, для которого разработчики софта предоставили соответствующие биндинги. И к чему напирать на разные архитектуры? Это редкость, когда нужно писать так, что бы поддерживалась миллион платформ. Из своей практики разработки могу сказать, что зачастую, архитектура одна, и она заранее известна, но, в целом, не вижу проблем даже если их будет много, выше описал, что компилируется все одинаково.

Взять то же СПО, вам нужно, чтобы ваш любимый эклипс работал под арм? Под мипс? А игровой сервер?
Кто за вас напишет репликацию сессий игрока между инстансами ваших серверов? А кто за вас реализует шардинг между бд-инстансами(даже подпертыми репликами).
И зачем сравнивать эклипс и l2-сервер. Если говорить об эклипсе, или другом прикладном софте - нужно чтоб он работал на максимальном кол-ве доступного мне оборудования, начиная от макоси заканчивая древней виндой xp. Серверные же приложения должны быть дешевыми в разработке, хорошо масштабироваться, достойно тестироваться. На сях нет шансов написать дешево, быстро и гибко. Вы либо пропарите сроки, либо недотестируете, либо ценник сервака будет заоблачным. И это уже проблема языка и его экосистемы, потому что вместо того чтоб херачить код вы на каждом шаге огребаете от проблем совместимости и перегруженности языка.
Тема про серверный движок, превратилась в холивар. Никто не спорит что некоторый код на с/с++ будет быстрее чем на некоторых других языках. Целесообразно ли писать серверный движок на сях? Абсолютно нет, большинство языков втч java подходят для этого лучше. Мерило для разработки софта - цена/время/качество.
Даже пресловутая поддержка многих архитектурных платформ: когда ваш кластер получает следующую версию оси сервер за сервером (мы же за zero down-time) - java приложение окажется более живучим к обновке и шансы хапнуть горя из-за того что часть кластера была на голом arm железе, другая часть на виртуалках в облаке меньше в разы. Собирать кластер из абсолютно идентичных машин под одно конкретное приложение не очень то выгодно. Если так происходит - значит и приложение заточено именно под это конкретное железо, и юзает его на полную. Но тогда теряется выигрыш от переносимости кода. И что будет через год, когда вашему серваку понадобится более мощное железо? Разбирать кластер не очень-то выгодная затея. И не забывайте про тестовые среды, держать для которых продакшн железо - сильно бьет по карману.
Скорость выполнения кода на С++ как-раз в том, что есть отличная возможность заюзать особенности железа+софта на полную не пользоваться ей и писать более совместимый код который gcc/g++ скомпилит под любую платформу очень не разумно.
Скорость java - в быстром изготовлении продакшн-реди-кода, который можно подкрутить на скорость и новый функционал а также пойти любым из возможных путей по масштабированию этого кода.

Пользуясь случаем - ищу программиста на С++, который пишет а) быстро, б) дешево, в) качественно, г) с набором тестов. Уверен таких не существует, но попробовать стоит.
Camelion вне форума Отправить сообщение для Camelion с помощью ICQ Ответить с цитированием
Непрочитано 19.01.2017, 04:30   #37
Пользователь

Автор темы (Топик Стартер) Re: Движок la2

Я понял позицию на счет С++, но, а что насчет с#? Что-то не очень ясно. Вроде писали же эмуль на нем.
REchargeD вне форума Ответить с цитированием
Непрочитано 19.01.2017, 09:47   #38
Герой

По умолчанию Re: Движок la2

Есть одна проблема с высокоуровневыми языками. В связи с тем что научится писать на таких языках гораздо легче то появляются тру кодеры которые кроме говнокода нечего толкового не напишут.
Пример из жизни: У меня на работе появилось пару вакансий java developer, в итоге за 2 месяца еще не кого не нашли, приходят сеньоры на зп 150к+ которые не знают разницу между int и Integer. Что такое автобоксинг не не слышали, какие виды есть сборщика мусора и как они работают тоже мало кто знает.
Собственно вопрос, насколько производительное приложение они напишут?
kingzor вне форума Отправить сообщение для kingzor с помощью ICQ Ответить с цитированием
Непрочитано 19.01.2017, 10:56   #39
Пользователь

По умолчанию Re: Движок la2

Холи вара не увидел.

http://igorkahovka.livejournal.com/336917.html

Обычно выбирают быстро качественно дорого, причем не только в с++, на что нам намекают зп Java EE программистов.
f1redark вне форума Ответить с цитированием
Непрочитано 19.01.2017, 13:10   #40
Пользователь

По умолчанию Re: Движок la2

А по поводу холивара. В то время когда появился первый эмуль (l2jserver) мое имхо - выбрали именно java потому что на тот момент серваки под никсами стояли намного дешевле виндовых (под Mono никто не хотел писать. Если он тогда уже был. честно говоря инфы не нашел)
Сейчас же дела обстоят куда более благосклонны к C#
1) Переход .Net под openSource - да здравствует Mono от разработчиков. Пиши под любую ось
2) MS усиленно взялась за разработку данного языка и его продвижение.
3) Разрабатывается NetNative под десктоп и сервера. - Компиляция в машинный код (без JIT)
4) Удобный синтаксический сахар типа string str = $"Дай мне {count} яблок" вместо ("Дай мне {0} яблок",count)
5) Проработан ThreadPool - теперь не нужно мучится с неблокирующими сокетами и выставлять в очередь пакеты на посылку.
6) Оптимизация IL кода на этапе компиляции (развертывание if в свичи и тд.) - положительно влияет на скорость.

Дело лишь в том. Кому нужно все это переписывать на шарпы когда весь код уже на java.
А если учесть тот факт что основную архитектуру не переписывали с 2007 года (pheonix не считаю ибо парни всеравно особо в архитектуре ничего не изменили) то тут уже даже говорить по сути неочем. Работает и ладно а если есть какие то баги - поставим костыль и дальше поковыляем.
Alay вне форума Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Движок Для Птс rqrwre Движки сайтов (CMS) 6 05.01.2014 21:36
Движок для pts Deamond Движки сайтов (CMS) 6 04.10.2013 13:03
Движок тех. поддержки Rovskoi Курилка / Yak floor 6 06.12.2012 17:42
1$ Что за движок 12king Движки сайтов (CMS) 11 10.01.2012 01:39


© 2007–2024 «Форум администраторов игровых серверов»
Защита сайта от DDoS атак — StormWall
Работает на Булке неизвестной версии с переводом от zCarot
Текущее время: 19:49. Часовой пояс GMT +3.

Вверх