Пишем свой MMORPG сервер. (комментарии)
Это сообщение сгенерировано автоматически.
Хорошие статьи, направление у нас пока совсем не развито, а это хорошая база. Можешь рассказать о твоих посылках к тому, чтобы писать своё именно на С++? Чем был плох оригинал на шарпе? Я не к тому, что зачем в принципе делать своё, а чем база на с++ лучше шарпа в данном случае?
RMX
имхо С++ даже сравнивать с С# нельзя.
потенциальная производительность хорошо написанного сишного сервера до 50 000 активных игроков на 4х процессорном сервере.
С# в лучшем случае на такой конфигурации 5-6 тысяч выдержит.
хотя я встречал утверждения типа "вы просто не умеете их готовить"
главное наверное в том что С++ я знаю достаточно хорошо и програмлю с 98 года. С# для меня пока остается сугубо экзотическим языком применения которому в своей деятельности я не вижу.
progman
Спасибо за мнение. Из профиля я понял что твой основной опыт - это интернет казино, да? Насколько казино близко или далеко от "типичной" mmo, например от той же рассмотренной тобой LineAge? И еще вопрос: расширял ли ты сервер вширь, т.е. кластер и какие технологии/решения применял для этого?
RMX
>progman
>Спасибо за мнение. Из профиля я понял что твой основной опыт - это интернет
>казино, да? Насколько казино близко или далеко от "типичной" mmo, например от
>той же рассмотренной тобой LineAge? И еще вопрос: расширял ли ты сервер вширь,
>т.е. кластер и какие технологии/решения применял для этого?
есть просто онлайн казино - то очень далеки. а если с мультиплеером, где люди играют, скажем в покер, друг против друга - то довольно близки по духу так сказать.
кластер? нет, не было необходимости. 50 000 потенциальных клиентов онлайн хватало. хотя технологически сделать сопряжение двух игровых сервером возможность есть. по крайней мере я именно с таким расчетом разрабатывал серверную часть для мультиплеерных игр.
вообще проще нарастить мощность арендуемого сервера. вместо двухпроцессорного воткнуть четырехпроцессорный, памяти нарастить. БД очень память кушать любит и ее мало не бывает а на работу с БД существенная часть процессорного времени уходит.
никак не могу понять, может кто подскажет,
в статье есть такой момент (3я часть)
...
//обработчик полученных сообщений
//игровой пакет будет состоять из двух частей: заголовок ( 2 байта – размер всего пакет) и тела пакета, содержащее данные
// посему и считывается данные в два захода: сначала читаем 2 байта – размер данных, а затем сами данные
//и отправляем полученные данные в обработчик данных
//что с ними делать дальше – каждый решает сам
...
/*READ PACKET SIZE*/
HRESULT hr = COverlappedSocket::OnRecive( m_hSocket, dwIndex, &m_RecvBuffer, &m_dwNumRecvBytes);
if(S_OK != hr )
return S_FALSE;
WORD len = *(WORD*)&m_RecvBuffer.buf[0];
m_RecvBuffer.buf = new char[len];
m_RecvBuffer.len = len;
...
почему тут предполагается, что будет получено именно 2 байта, а не все то, что успел прислать клиент с прошлого чтения буффера ?
Dark
потому что нам вобщем то пофигу сколько реально байт успело прийти. читать мы будем только два, дабы узнать размер пакета который нужно прочитать полностью.
Небольшой некропост :) progman, перезалей исходники пожалуйста, если они у тебя остались :)
Тема в архиве.