Суббота, 23 Ноября 2024, 00:38

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 2 из 2
  • «
  • 1
  • 2
Какой сервер?
VinchensooДата: Суббота, 12 Декабря 2015, 13:07 | Сообщение # 21
Злобный социопат с комплексом Бога
Сейчас нет на сайте
Цитата KamiRonin ()

Пишется, имеет, практикуется и доводится ровно настолько насколько нужно!..

Покажите мне написанный вами игровой сервер? Ну позязя
Цитата KamiRonin ()
я в каждом посте кинул ссылку и не одну - как это реализовывают за короткое время без крупных усилий.. эти ссылки - мои доводы (помимо собственного опыта).

Я не смотрел все ссылки. Та ссылка, что относится к nodeJS - не имеет ничего общего с реальной жизнью, я могу еще раз повториться.
Я читал эту статью, когда только начинал работать на nodeJS (года 2 назад), это сугубо синтетический пример, в котором у сервера нет ВООБЩЕ никакой более-менее сложной логики.
Цитата KamiRonin ()
хотя ладно.. кто читает - пусть сам посмотрит что ему подойдет! ) мой главный посыл - НЕ НУЖНО БОЯТЬСЯ ПИСАТЬ сервера самостоятельно, ничего особо сложного там нет! (если идти по шагам, по этапам)!!

Ваш посыл не верен. Не нужно боятся писать- да, возможно. Ничего сложного- нет, это не так.
Цитата KamiRonin ()
! это ваша судьба!" ???! ))

Наша судьба- писать ПО, нам за это деньги платят =) А не спорить на форуме по поводу какой-то сферической фигни.
Свой сервер для сложной игры будет стоить сотни нефти, крови, боли и пота, за все это бизнес никогда платить не будет, когда можно взять готовое решение и делать продукт?
Мне кажется, здесь форум разработчиков игр, а не сетевых решений и люди, которые тут задают вопросы- хотят делать игры, а не ковыряться со скучными техническими вещами.
Цитата KamiRonin ()
А алгоритм игрового многопоточного сервера в одном предложении умещается (tcp) "получи строго сформулированный пакет, определи его сигнатуру (что он собой представляет - команду, данные, сообщение), проверь разрешения, транслируй это другим подключенным клиентам / выполни команду (если пришла команда) / запиши данные (если пришли данные)". Где тут тяжко трудно сложно невозможно нереально экстремально и тп??!?!

Ну да, игровые многопоточные сервера - это так просто.
Я уж молчу, что для некоторых игр ТСР, например, вообще не применим, нужен UDP. Поверх него нужно реализовывать свой контроль получения пакетов, либо другие механизмы (типа интерполяции для тех же координат). А в готово сервере достаточно поправить 1 строчку в конфиге.
Что, у вас в игровом сервере ничего сложнее чата нет? Синхронизация данных между потоками, синхронизация с базой, кеши, игровые комнаты, кластеризация, разделение нагрузки, роутинг запросов- ну дейсвительно, работы на пару днейт =)


KamiRoninДата: Суббота, 12 Декабря 2015, 18:42 | Сообщение # 22
почти ветеран
Сейчас нет на сайте
сервер на node.js я выписывал по шарповской отладке, поэтому запустил, погонял, показалось неудобно и перевел на Qt весь функционал, чтобы максимизировать эффективность под линухом.. написал и оставил - сервак выполняет все нужные функции без каких либо заморочек с мороком по поводу разделения нагрузки и тп.. нет такой необходимости - на тестах он показал 5000 подключений вообще без напрягов - на ближайшее время хватит за глаза.. а кому нужно тот пусть и долбит кластеризации и прочие игровые комнаты (ничего в них сложного нет!!! как и в роутингах с кэшами!)

Цитата Vinchensoo ()
Ну позязя

ууу, нуу все.. позязя начались.. :-/
ок.. )) для себя считаю полемику исчерпанной, как вопрос интерполяции координат НА СЕРВАКЕ.. пфф.. )


Мыслю - значит программирую...
Конструктивная критика - умных ведет к совершенству...
Великие умы обсуждают идеи, средние - обсуждают поступки, а малые - людей.
VinchensooДата: Суббота, 12 Декабря 2015, 19:13 | Сообщение # 23
Злобный социопат с комплексом Бога
Сейчас нет на сайте
Цитата KamiRonin ()
сервер на node.js я выписывал по шарповской отладке, поэтому запустил, погонял, показалось неудобно и перевел на Qt весь функционал, чтобы максимизировать эффективность под линухом.. написал и оставил - сервак выполняет все нужные функции без каких либо заморочек с мороком по поводу разделения нагрузки и тп.. нет такой необходимости - на тестах он показал 5000 подключений вообще без напрягов - на ближайшее время хватит за глаза.. а кому нужно тот пусть и долбит кластеризации и прочие игровые комнаты (ничего в них сложного нет!!! как и в роутингах с кэшами!)

Я обожаю пассажи про "на тестах он показал 5к подключений без напрягов". Примерно также, как 15минутный сервер на ноде показывает 1 млн синтетики, угу.
Вы вообще в курсе, что когда люди пишут онлайн игру, то они рассчитывают зарабатывать с нее деньги?
Если игра поперла, и у вас вчера было 4000 игроков, а сегодня внезапно стало 6000, а послезавтра- 10 000, вы что делать будете?
С горящей задницей бегать и переписывать все на готовое решение, оптимизировать свой велосипед (ну пока нам 10000 хватит, давайте допилим, а потом подумаем. В итоге пока допилили- игроков уже 15 000, а лаги все продолжаются -> капец проекту).

Если мы изначально говорим о любительской разработке с надеждой поиметь 500 активных пользователей и 50 онлайна, то сервер можно писать хоть на game maker.
Но зачем для любительской разработки все эти сложности, копание с низкоуровневой скукотой, когда можно взять готовое решение и делать ИГРУ, где будут ездить танчики, летать самолетики и тд. Видимый прогресс - мотивирует. Написанный сетевой фреймворк объемом в 1к строк- не мотивирует.

Цитата KamiRonin ()
как вопрос интерполяции координат НА СЕРВАКЕ.. пфф.. )

У вас игрок в консоли сервера играет или запросы ваершарком шлет? Игра- комплексный продукт.

К слову, я лично написал свой небольшой сетевой фреймворк на nodeJS, но мне так проще, потому что я понимаю, что делаю.
И для меня это всего лишь хобби, с надежной найти 500 фанатов =)

А вот советовать человеку, который задает вопрос "как пильнуть танки, пацаны?" - это прям какой-то садизм

Совсем недавний пример от "знакомых":
На днях запускали проект в одной крупной социальной сети. Игра с браузерным клиентом.
В итоге из-за внезапной нагрузки игроки не могли даже достучаться на сервер, не то, чтобы поиграть.
По оценкам знакомых- потеряли около 100к инсталлов из-за этой проблемы.

Цитата KamiRonin ()
для себя считаю полемику исчерпанной

Ну и класс.


KamiRoninДата: Суббота, 12 Декабря 2015, 19:33 | Сообщение # 24
почти ветеран
Сейчас нет на сайте
Ну обожай пассажи.. хто ж тебе мешает!! Тесты же нужны для того чтобы.. чтобы.. ни для чего по твоему видать! smile Дураки тесты придумали, и создали гребанную тучу инфраструктуры, чтобы их создавать! ) аха.. но даже это фигня - потому что я просто создал нагрузочное приложение - которое плодит подключения и коннектясь к серваку проводит прокачку ему игровых данных - обращения к базе скуля, посылки типовых пакетов без перерыва.. мне показал проект 5000 я сказал - стоп, если посещаемость будет по стату выше 1000 в час - буду решать о расширении аппаратной части и напишу микромодуль перенаправления коннекта... и не стал угорело рвать на себе волосы - мол, аааа а вдруг предут 10000 в секунду а у меня тут не прибрано!! smile :) пипец логика млин!! )) до такого уровня посещений в котором стоит вообще дергаться, не то, что с горящей задницей бегать млин -- не один год может пройти!
Цитата Vinchensoo ()
У вас игрок в консоли сервера играет или запросы ваершарком шлет

нет, обычный шарп клиент с отправкой координат позиции тела + экшн пакетов разного рода + чат. все равно интерполяции координат делаются на клиенте при получении изменения позиций аватаров у него..
Цитата Vinchensoo ()
К слову, я лично написал свой небольшой сетевой фреймворк на nodeJS,

ёёксель моксель - аж фреймворк млина! smile ну видать там и кластеризация и роуминг и интерполяция - все при нем!! :D
Цитата Vinchensoo ()
Ну и класс.

еще бы тебе не класс - сказал без доводов свое "веское" и видно пошел фреймворк допиливать!! biggrin а потом вернулся и еще "имхошек" накидал... самое то - когда аппанет видя, что тут все глухо - машет рукой - тебе раздолье сразу!! а то!! smile доводов от тебя кроме "это было 2 года назад" - мы так и не увидели! ) досужее все.. поэтому на твоих "позязя" я и хотел закончить "обсуждать сферический вакуум"! smile Но нееет, ты ж так просто не предашь свое имхо!? wink biggrin


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


Сообщение отредактировал KamiRonin - Суббота, 12 Декабря 2015, 19:35
VinchensooДата: Суббота, 12 Декабря 2015, 20:31 | Сообщение # 25
Злобный социопат с комплексом Бога
Сейчас нет на сайте
Цитата KamiRonin ()
о даже это фигня - потому что я просто создал нагрузочное приложение - которое плодит подключения и коннектясь к серваку проводит прокачку ему игровых данных - обращения к базе скуля, посылки типовых пакетов без перерыва.. мне показал проект 5000 я сказал - стоп, если посещаемость будет по стату выше 1000 в час - буду решать о расширении аппаратной части и напишу микромодуль перенаправления коннекта..

О чем я и говорил. Подобным тестам- цена не только грош, даже меньше.
1. Тестирование имеет смысл проводить только с помощью специализированного ПО. Видимо инструменты типа JMeter пишутся просто потому, что пацаны не додумались создать консольное приложение и кидать запросы.
2. Тестирование "предполагаемого онлайна" и тестирование пропускной способности сетевого движка- вещи, тащем-то, совсем разные, чего вы тоже не понимаете.
3. Тестирование проводится на работающем прототипе
4. Тестирование проводится при наличии рабочей схемы БД, когда прототип близок к завершению, утверждена схема, таблицы созданы и заполнены, ибо логика и производительность тех же запросов тоже могут немножко влиять на производительность игры в целом.
5. Тестирование проводится, когда готова часть логики, которую стоит тестировать
6. Тестирование проводится не по локалхосту (надо объяснять, как работает OSI и откуда берутся задержки, хоть и малые по сравнению с пингом).
7. Тестирование нужно проводить не с одной машины, а с нескольких, учитывая пинги.
8. Нужно тестировать ситуацию с потерей части данных из-за фигового интернета.

Надо ли объяснять, что ваше консольное приложение при всем желании не способно эффективно использовать более 4 потоков, а значит все ваше тестирование - унылый аналог ДДОСА (причем, некачественный)?

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

Ну и напоследок, раз вам уже так понравилась моя фраза про интерполяцию координат, подумайте, каким образом в ГРАМОТНЫХ играх работает Path Finding, проверки столкновений, возможности попаданий пули и прочее.

За сим я с вами беседовать больше не намерен.
Вы мало того, что не особо понимаете предмет разговора, так еще и банально невоспитанны и общаетесь на уровне гопников в подъезде.
У меня слишком мало свободного времени, чтобы тратить его на разговоры с тем, кто не хочет слушать =)

ЗЫ- присылайте приглашение, с удовольствием поучаствую в тестировании вашей игры, когда она увидит свет.


Edison6Дата: Суббота, 12 Декабря 2015, 21:16 | Сообщение # 26
TRUE Programmer
Сейчас нет на сайте
Винч vs C# "программист"
1 : 0


Берил сбрей усы

Сообщение отредактировал Edison6 - Суббота, 12 Декабря 2015, 21:17
KamiRoninДата: Воскресенье, 13 Декабря 2015, 08:19 | Сообщение # 27
почти ветеран
Сейчас нет на сайте
Цитата KamiRonin ()
для себя считаю полемику исчерпанной

уже было..


Мыслю - значит программирую...
Конструктивная критика - умных ведет к совершенству...
Великие умы обсуждают идеи, средние - обсуждают поступки, а малые - людей.
JOKFENДата: Вторник, 15 Декабря 2015, 20:33 | Сообщение # 28
был не раз
Сейчас нет на сайте
KamiRonin, Извиняюсь, вот несколько дней уже бьюсь, так с мертвой точки и не сдвинулся, что очень огорчает sad По сути QT слушает определённый порт на подключение к нему и принимает пакеты в little endian (0101). А Unity хочет подключится к серверу он отправляет пакет, но уже с Big Endian (1010). В теории unity и QT должны тупо на выходе преобразовывать эти пакеты на противоположный и всё будет норм. Теперь вопрос как это сделать в QT и Unity? Нашёл такую статью для unity, но чёт далёк от понимания, зачем то зачем сё. В какую сторону смотреть?
KamiRoninДата: Вторник, 15 Декабря 2015, 22:54 | Сообщение # 29
почти ветеран
Сейчас нет на сайте
Цитата JOKFEN ()
В теории unity и QT должны тупо на выходе преобразовывать эти пакеты на противоположный и всё будет норм.

не, не "должны". автоматом не станет работать, только своим кодом преобразовывать.
например, Qt строку из потока сокета считывает в порядке: размер (UInt32), и цепочка символов (каждый UInt16 или ushort).
шарп автоматом формирует пакет немного иначе - размер Int32, символы (char или short) причем в BigEndian;
поэтому и нужно привести к Qt виду перед отправкой - для чего пишется небольшая функция (или делать это на сервере при получении).

в той статье которую ты нашел - как рза и показаны функции такого преобразования.

в общем - для связи Qt и шарпа эта тема и есть самая муторная - ее один раз нужно пройти, написать свой набор служебных функций и дальше уже все делать через них.
на самом деле там их всего около 4-5 и они все небольшие.
вот тут про порядок следования байт было.. здесь пример реализации.. и тп
поиск по словам "порядок байт TCP" - я когда разбирался просто сделал простейшие клиента и сервера - отправлял данные и смотрел порядок байт через отладчик и в шарпе и в Qt. очень быстро стало ясно кто как формирует пакеты в своих классах.

сразу скажу - все упирается в выбранный формат обмена - т.е. тебе нужно определиться с логикой, пакетов чтобы и на сервере и на клиенте иметь ожидаемые части.
передаем Vector3, Quaternion, int, float, string + каждый пакет может быть разного значения. тут каждый выбирает сам как организовать работу с этим "форматом" - кто то унифицирует пакеты (строгая одинаковая структура) - но это может привести к излишкам передаваемой информации; кто-то считает что нужно все свести к минимуму трафика любой ценой (почти всегда хорошо). большинство готовых решений просто серилизуют пакет информации во что то свое (передается в любом случае последовательность байт - но вот структура этой последовательности как раз и важна), передают, а на другом конце, после десериализации уже выстраивается линия поведения с полученными данными исходя из их содержания.


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


Сообщение отредактировал KamiRonin - Вторник, 15 Декабря 2015, 23:10
8Observer8Дата: Среда, 16 Декабря 2015, 17:01 | Сообщение # 30
заслуженный участник
Сейчас нет на сайте
Я изучаю и пробую UNet для кооператива небольших демок. Пока на локалке пробую. Мне хочется найти способ, как можно удалённо соединиться по UNet.

Сообщение отредактировал 8Observer8 - Среда, 16 Декабря 2015, 17:05
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг