|
15 / 13 / 4
Регистрация: 23.08.2017
Сообщений: 187
|
|
Игра, сервер и клиент03.12.2017, 15:27. Показов 10095. Ответов 32
Метки нет (Все метки)
Добрый день.
Решила я написать простенькую игру для развития реализации дальнейших планов. Пишу на С++ под Linux/BSD платформы и только! На данный момент есть 3D мир и катающиеся по нему шарик - которым я могу управлять. Прекрасно понимаю что такое TCP/UDP, сокеты. Писала простенькие клиент-серверные приложения стандартными средствами. Сейчас начинаю изучать boost asio для экономии времени и удобства, по крайней мере мне так кажется. Суть моей задачи написать северную и клиентскую часть для игры о которой написала выше. Шар в игровом мире начинает двигаться и теоретически клиент должен слать на сервер данные и получать разрешение на действие.. и так.. Что собственно мне не понятно. Какие данные должен слать клиент игры на сервер, json, xml, serialization просто какие-то бинарные данные ? как происходит этот механизм отправки данных? Раньше на простых приложениях я просто подключалась к порту сервера и отправляла json и в конце "\n" что означало конец связи. Я же не могу для игры при каждом движении шара открывать сокет каждый раз и после завершать соединение верно ?! Значит нужно удерживать соединение. А если удерживать соединение, то какой тип данных слать, если json то там много лишнего мусора будет, за секунду шар может поменять 10-100 разных координат в зависимости от скорости самого шара. А еще клиент должен получить ответ от сервера что можно двигаться по этим точкам и там нет преград. А самое не понятное мне, это если 2 и больше шариков - которыми управляют другие пользователи. Как мне получать координаты всех шариков пользователей в реальном времени ? Между нами сервер, как-то слушать нужно или как это работает ?
0
|
|
| 03.12.2017, 15:27 | |
|
Ответы с готовыми решениями:
32
Клиент-Серверное приложение. Как сделать, чтобы сервер сам отправлял сообщения на клиент
Клиент/сервер: клиент посылает серверу слово; определить, является ли это слово палиндромом |
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||||||||
| 04.01.2018, 10:02 | ||||||||
|
Добавлено через 8 минут Добавлено через 22 минуты Добавлено через 15 минут Добавлено через 8 часов 52 минуты А вообще с WoT другое интересно - как они в траф укладываются. Банально берем минимальные данные пакета - позиция - 3 флоата кватернион корпуса 4 флоата угол поворота башни и угол возвышения пушки еще 2 флоата. итого 3+4+2=9*4=36 байт на танк апдейта инфы. допустим в среднем видно 10 супостатов и друзей. итого 360 байт отправки на каждого клиента за фрейм. При 30fps обновления физики имеем 10800 бод на клиента. Стандартный серверный гигабитный канал дает примерно 100 мегабод чистого (после вычета управляющих полей протокола)трафа. Итого получается 10 тыс клиентов максимум при передаче минимально сериализованного мира. Так что тридцатьчетверка в самом деле пантеру в лоб не пробивает. Все там как то гораздо хитрее.
0
|
||||||||
|
15 / 13 / 4
Регистрация: 23.08.2017
Сообщений: 187
|
|||||
| 04.01.2018, 14:22 [ТС] | |||||
|
Сколько игра стоит в месяц ? ~400 рублей ? Каждый 10ый в лучшем случае сидит на премиуме и то не уверена может и каждый 20ый... Посчитаем "GTX 1080 Ti потребляет 250 Ватт" = 180 кВатт/месяц * 5.38р.к = 968.4руб/месяц. Даже не окупается если каждый второй на премиуме. Получается что они уходят в минус т.к в танках всегда онлайн народ при такой схеме ![]() Вообщем даже я тестировала написав мир + несколько домиков, просчет вершин в матрице очень даже не накладно на мой слабенький сервер если запустить туда 1000 клиентов. Хотя с GPU надо попробовать думаю поточные процессоры интересней работают разумеется с float особенно. ![]() ![]() Сорри писала торопилась... нужно бежать.
0
|
|||||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|||||||||
| 05.01.2018, 07:56 | |||||||||
|
Да кстати гораздо перспективнее в этом плане не сериализовать полностью класс а нечто типа автогенерируемого протокола RPS (remote property set) Добавлено через 10 минут Добавлено через 6 минут Добавлено через 43 минуты Добавлено через 7 минут Ну и основной заработок у них не на премиум акаунтах а на голдовых снарядах. Добавлено через 5 минут Добавлено через 18 минут Мало того, в WoT карта разрушаемая в отличии от WoW соответственно нужно передавать еще состояние разрушенных объектов при их попадании в поле зрения. Что будет не менее затратно в плане трафа чем разница в количестве позиционных данных с кораблем. У улитки с этим похоже вообще ужастики.. т.к. и разрушаемых объектов больше и части оных объектов танк может на себе тащить или толкать. Добавлено через 6 минут Ну а в общем затраты трафа пропорциональны квадрату наблюдающих друг друга клиентов.
0
|
|||||||||
| 05.01.2018, 08:45 | ||
|
Исходники к книге: https://github.com/MultiplayerBook/MultiplayerBook
0
|
||
|
15 / 13 / 4
Регистрация: 23.08.2017
Сообщений: 187
|
|||||
| 05.01.2018, 15:04 [ТС] | |||||
Там же не только авторизация, но и весь трафик. Чего-то другого значит боятся ![]() Вообщем не будут они рендер делать на чужих серверах или закупать 10ки тысяч выдеокарт потому что это технически нереально всё это за миллисекунды синхронизировать да и дорого, а наши не любят платить, потому что это и не разумно и жадность. Вчера посмотрела 92000 человек онлайн. 92000 поделим грубо на 5человек/карта=18400 карт требуется. Вот куда их столько деть? да и как это выглядит дико. И разумеется там не топ карты уже давно.Посмотрела тестик, попала артой в окно одного здания, не прошло, хотя стекла там нет, да и если бы была физика то стекло для арты это как бы смешно не пробить. В некоторых моментах где скошенные углы снаряды тоже не проходят, это говорит о том что там скорее всего сетка координат и GPU даже не трогают по причинам что написала выше. Смотрела в замедлении реплей с отвязанной камерой. А облачные вычисления выгодны там, где цена за электричество очень мала или просчитать что-то разово, а платят по факту всегда с запасом. Я брала раньше на Амазоне, удобный API, но я не представляю как сделать игрушку, которая в реальном времени бы обменивалась с ними данными c их кластером до которого пинг от 50ms и больше. А это очень много при расчете движения снаряда... P.S Тема исчерпала себя, всем спасибо за советы, особенно про книгу, благодаря ей я нашла все ответы на мои вопросы и пишу очень интересную онлайн игру. Добавлено через 6 минут ![]() в DoRunLoop требуется только Timing::sInstance.Update(); DoFrame(); Правда я и SDL2 убрала и переписала всё на cocos2dx.
0
|
|||||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|||
| 05.01.2018, 15:38 | |||
|
Добавлено через 28 минут
0
|
|||
|
15 / 13 / 4
Регистрация: 23.08.2017
Сообщений: 187
|
||||
| 05.01.2018, 15:42 [ТС] | ||||
|
Кстати на WOW я такой же тест делала и персонажи двигаются синхронно на обеих экранах с мизерной задержкой, а WOW предпочел TCP. Для WOW это не важно, там касты. В WOT какой-то тайный заговор )))Добавлено через 1 минуту
0
|
||||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||
| 05.01.2018, 15:43 | ||
|
0
|
||
|
15 / 13 / 4
Регистрация: 23.08.2017
Сообщений: 187
|
||
| 05.01.2018, 15:46 [ТС] | ||
|
0
|
||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||||
| 05.01.2018, 15:56 | ||||
|
Не по теме:
Добавлено через 32 секунды Добавлено через 7 минут
0
|
||||
| 05.01.2018, 19:13 | ||
Книга: Multiplayer Game Development with HTML5 Всё это JS/Node.js, но принципы можно понять и реализовать на любом языке.
1
|
||
|
0 / 0 / 0
Регистрация: 12.01.2018
Сообщений: 10
|
|
| 12.01.2018, 23:41 | |
|
GbaLog-, Здравствуйте можно к вам обратиться по важному вопросу в личку?
0
|
|
|
Любитель чаепитий
|
||
| 15.01.2018, 11:46 | ||
|
так вероятность ответа увеличивается в разы.
0
|
||
| 15.01.2018, 11:46 | |
|
Онлайн игра, надо написать асинхронные клиент-сервер и сервер-посредник на C# Игра сервер/клиент
Игра Точки JavaFX Клиент-Сервер Взаимодействие WinCC с Labview 2013, как сервер-клиент, так и клиент-сервер Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства.
Жизнь действительно предъявляет каждому. . .
|
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
|
Лето уходит
kumehtar 17.08.2026
|
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
|
|
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины".
За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html
Задача: . . .
|
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
|
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет:
1. Использовать системное время и дату,
2. Есть возможность вводить время и дату вручную.
3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
|
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber.
Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
|