С Новым годом! Форум программистов, компьютерный форум, киберфорум
Программирование игр
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
мну довольно <(-__-)l
 Аватар для gGrn-7DA
217 / 206 / 15
Регистрация: 17.01.2010
Сообщений: 2,462

Логика сетевых игр

21.10.2011, 19:32. Показов 2329. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
По курсовику со знакомым решили попробовать сетевую игрушку написать. Игрушка ну совсем тривиальна.
Сервер должен просчитать текущую позицию игроков, горизонты видимости для каждого из них. Ну это мы осилим.

Но как синхронизировать клиентов и сервер?
Как часто надо обновлять данные на клиентах?
Клиент на сервер шлет каждое свое действие, а как часто сервер отвечает?
Сколько на сервере должно быть потоков? Логическое ядро сервера + по 2 потока на кождого клиента для получения и отправки данных? или сажать сокеты в массив и по очередно их опрашивать? как защититься от пустых "ожиданий" клиента и со спокойной совестью перейти к следующему?
Как оптимизировать нагрузку на сервер и сеть?
Какой принцип защиты соединения использовать? Как реализовать правильные ssl и tsl для этого? (ну это совсем уж последний вопрос...)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.10.2011, 19:32
Ответы с готовыми решениями:

Логика компьютерных игр
Получил сегодня задание написать курсач. В качестве курсача нам дали писать любую игру какую мы пожелаем. Главное, чтобы было побольше...

Логика против глаз (DX 9,10,11,OGL итд для игр) нужно определиться со всем
Я понимаю ,что тема заезжена триллион раз но все же чтение подобных тем и разных статей + коментов не дают мне ответа на мой вопрос. Люди...

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

6
290 / 193 / 23
Регистрация: 03.08.2011
Сообщений: 2,824
Записей в блоге: 12
22.10.2011, 15:49
Цитата Сообщение от gGrn-7DA Посмотреть сообщение
Но как синхронизировать клиентов и сервер?
я ак понял win api будет присутствовать тогда WSASyncSelect
Цитата Сообщение от gGrn-7DA Посмотреть сообщение
Как часто надо обновлять данные на клиентах?
перед каждой перерисовкой экрана

Цитата Сообщение от gGrn-7DA Посмотреть сообщение
Клиент на сервер шлет каждое свое действие, а как часто сервер отвечает?
не как сервер считает тока ту хрень котрую пошлёт клиент у клиента отношение к серверу токое же. А если без шуток сервак получает все данные отсылает нужные данные клиенту и потом обмениваются сообщениями о том что данные дошли ну тут больше читай про сокеты ,select, WSASyncSelect, потоки и эффективное програмирование сетевых приложений(это ксати очень сложно) и ещё сервер клиент лучше писать одному человеку
Цитата Сообщение от gGrn-7DA Посмотреть сообщение
Сколько на сервере должно быть потоков? Логическое ядро сервера + по 2 потока на кождого клиента для получения и отправки данных? или сажать сокеты в массив и по очередно их опрашивать? как защититься от пустых "ожиданий" клиента и со спокойной совестью перейти к следующему?
я делал для каждого клиента свой поток
Цитата Сообщение от gGrn-7DA Посмотреть сообщение
как защититься от пустых "ожиданий" клиента и со спокойной совестью перейти к следующему?
функция select или WSASyncSelect а защитится не как ожидание всегда будет если это консоль то ожтдание в потоке если это видовс приложение то обработчик сообщений сам как поток который ожидает
1
мну довольно <(-__-)l
 Аватар для gGrn-7DA
217 / 206 / 15
Регистрация: 17.01.2010
Сообщений: 2,462
24.10.2011, 12:59  [ТС]
Цитата Сообщение от Van111 Посмотреть сообщение
не как сервер считает тока ту хрень котрую пошлёт клиент у клиента отношение к серверу токое же. А если без шуток сервак получает все данные отсылает нужные данные клиенту и потом обмениваются сообщениями о том что данные дошли ну тут больше читай про сокеты ,select, WSASyncSelect, потоки и эффективное програмирование сетевых приложений(это ксати очень сложно) и ещё сервер клиент лучше писать одному человеку
Уточню немного.
Допустим есть ситуация, когда клиент ничего не шлет на вервер, но данные на клиенте должны своевременно обновляться. Тогда все таки при каждой перерисовке экрана запросы слать?
Клиенту по сути все равно, его канал это позволяет. А как же сервер? Клиенты же его соединение забьют до верху?


Цитата Сообщение от Van111 Посмотреть сообщение
я так понял win api будет присутствовать тогда WSASyncSelect
Вообще не хотел бы привязываться к конкретной платформе или языку.
Я думаю сервер писать на сях/ява под *nix. А клиенты наверно и на Windows и на *nix будут. Наверно на яве. Но не факт...

Спасибо за ответ. Буду вникать.
0
290 / 193 / 23
Регистрация: 03.08.2011
Сообщений: 2,824
Записей в блоге: 12
24.10.2011, 18:04
Цитата Сообщение от gGrn-7DA Посмотреть сообщение
Допустим есть ситуация, когда клиент ничего не шлет на вервер, но данные на клиенте должны своевременно обновляться. Тогда все таки при каждой перерисовке экрана запросы слать?
Клиенту по сути все равно, его канал это позволяет. А как же сервер? Клиенты же его соединение забьют до верху?
если клиент нечего не должен на сервер отправлять то пусть так и отошлёт что новых даных нет жди до следующей перерисовки экранаю после того как серве получил это строку он отправляет свои данные в противном отпрвяет типичное сообщеие об ожидании

Добавлено через 18 секунд
Цитата Сообщение от gGrn-7DA Посмотреть сообщение
Допустим есть ситуация, когда клиент ничего не шлет на вервер, но данные на клиенте должны своевременно обновляться. Тогда все таки при каждой перерисовке экрана запросы слать?
Клиенту по сути все равно, его канал это позволяет. А как же сервер? Клиенты же его соединение забьют до верху?
если клиент нечего не должен на сервер отправлять то пусть так и отошлёт что новых даных нет жди до следующей перерисовки экранаю после того как серве получил это строку он отправляет свои данные в противном отпрвяет типичное сообщеие об ожидании

Добавлено через 3 минуты
насчёт сервер клиента если будешь использовать с++ то понадобятся сокеты я тока сегодня сделал не совсем дороботаный модуль который позволяет вместо 20 строк утановления связи сделать это за одну и анологично дело состоит с приёмом и передачей данных я выложу нароботки в разделе с++ для начинающих
0
мну довольно <(-__-)l
 Аватар для gGrn-7DA
217 / 206 / 15
Регистрация: 17.01.2010
Сообщений: 2,462
24.10.2011, 20:23  [ТС]
Цитата Сообщение от Van111 Посмотреть сообщение
насчёт сервер клиента если будешь использовать с++ то понадобятся сокеты я тока сегодня сделал не совсем дороботаный модуль который позволяет вместо 20 строк утановления связи сделать это за одну и анологично дело состоит с приёмом и передачей данных я выложу нароботки в разделе с++ для начинающих
Вот с кодом то я справлюсь. Так и не ответил....
[3]:
Клиент отчылает на сервер только значимые события, например передает команды о начале перемещения игрока.
Если игрок стоит, то и слать это не обязательно, а тем более "пустые" пакеты, сервер и из отвалившегося сокета поймет, что клиент отключился. Флудить не обязательно.

Клиент молчит, а сервер то работает.
И покуда сокет не отвалится сервер должен обновлять состояние игрового мира на клиенте

Не по теме:

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


Вот как более оптимально организовать общение сервер -> клиент?
допустим фпс у игроков 60+, игроков тысяча, а стандартный пакет данных от сервера 1кБайт.
Трафик у сервера будет 60+мБайт... В то время как у простых игроков нагрузка будет около 60 кБайт.
Конечно игрушка не расчитывается сейчас на 1к игроков, но и рендер у нее из-за низкой графики будет повыше. А пакет и вовсе на угад взял. может меньше, может больше (>100 Байт однозначно).

В общем надо оптимизировать нагрузку на сеть...
0
290 / 193 / 23
Регистрация: 03.08.2011
Сообщений: 2,824
Записей в блоге: 12
24.10.2011, 22:17
Цитата Сообщение от gGrn-7DA Посмотреть сообщение
Конечно игрушка не расчитывается сейчас на 1к игроков, но и рендер у нее из-за низкой графики будет повыше. А пакет и вовсе на угад взял. может меньше, может больше (>100 Байт однозначно).
на rpg хватит а вот на стратегию раз в 20 больше надо

Добавлено через 3 минуты
Цитата Сообщение от gGrn-7DA Посмотреть сообщение
Вот с кодом то я справлюсь. Так и не ответил....
[3]:
Клиент отчылает на сервер только значимые события, например передает команды о начале перемещения игрока.
Если игрок стоит, то и слать это не обязательно, а тем более "пустые" пакеты, сервер и из отвалившегося сокета поймет, что клиент отключился. Флудить не обязательно.
Клиент молчит, а сервер то работает.
И покуда сокет не отвалится сервер должен обновлять состояние игрового мира на клиенте
самое главное в коде надо предусмотреть разницу между отключившимся клиентом и клиентом который не отсылает данные а сервер данные дожен отсылать молчащему клиент так же часто как и всем остальным ьак как остальные игроки могут мир изменить
0
мну довольно <(-__-)l
 Аватар для gGrn-7DA
217 / 206 / 15
Регистрация: 17.01.2010
Сообщений: 2,462
25.10.2011, 10:11  [ТС]
Цитата Сообщение от Van111 Посмотреть сообщение
самое главное в коде надо предусмотреть разницу между отключившимся клиентом и клиентом который не отсылает данные а сервер данные дожен отсылать молчащему клиент так же часто как и всем остальным ьак как остальные игроки могут мир изменить
Хватит воду лить... очень прошу.
Если клиент отвалится, то и сокет отвалится, я ж не по UDP связь держать буду.
В общем Есть кто с конструктивными идеями по моему вопросу?
Цитата Сообщение от gGrn-7DA Посмотреть сообщение
Как синхронизировать клиентов и сервер?
Как часто надо обновлять данные на клиентах?
Клиент на сервер шлет каждое свое действие, а как часто сервер?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.10.2011, 10:11
Помогаю со студенческими работами здесь

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

Минимальная скорость интернета для сетевых игр
Для того, чтобы играть в современные игры в интернет, какая должна быть минимальная скорость Интернета?

Вылет интернета при использовании Skype и сетевых игр
Добрый день! У меня ноутбук с ОС Win7 x64 и подключение по беспроводной сети (уровень сигнала:средний). Проблема заключается в следующем:...

порты для старых игр (и переиздание игр?)
есть где-то хорошее определение что есть порт для игры? (dos box - это в каком-то смысле порт или нет?) это не мод и не движок? то есть...

Для формирования сборной по хоккею предварительно выбрано 30 игроков. На основании протоколов игр (всего 10 игр) составлена таблица, в которой содержи
Для формирования сборной по хоккею предварительно выбрано 30 игроков. На основании протоколов игр (всего 10 игр) составлена таблица, в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru