Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D

Ответ
 
Опции темы
Старый 13.11.2009, 02:25   #16
Tormaz
Нуждающийся
 
Регистрация: 23.10.2009
Сообщений: 74
Написано 9 полезных сообщений
(для 22 пользователей)
Ответ: Сеть в играх.

Сообщение от Данил Посмотреть сообщение
Т.е. в моем случае я думал сделать , чтобы, допустим ,каждые 50 миллисекунд клиент получал позиции объектов ( допустим, ближайших объектов). В пакете, допустим ,входили такие данные, как позиция объекта, поворот объекта, и команды объекта. Т.е. как - чтобы клиент ставил объект в нужном месте в нужном повороте, а потом просто эти 50 миллисекунд двигал объект по командам, команды в данном случае - то ,что нажимал другой клиент.
Да вроде , если я правильно понял , ты правильно думаешь. Но если ты будешь соединять таким образом не 2 игрока а более, то возникает проблема в разнице задержки пакетов от игроков и не постоянства этой задержки. Если твоя игра не требует точности передвижений , ну к примеру как Linege, то то что ты пишешь реализовать в принципе возможно. Там собственно тыкаешь мышкой а все остальное происходит на сервере. Сто раз в секунду мышку не тыкнешь , да и опрашивать ее можно 2 раза в секунду для такой игры достаточно. Я как то тоже думал загрузить бы клиентов по уши и пусть их сеть и компьютеры дымят считают все вплоть до ии . Каждый из игроков посылает пакет всем о своих действиях и все работает. А сервер существует только для коннекта и дисконнекта. Но в таком случае очень велик шанс читерства. Твой компьютер расчитывает , что ты попал ты шлешь клиентам инфу о попадание, а он тебе отвечает А Я В ТАНКЕ поскольку клиент взломан и персонаж неубиваем. И даже если проект не коммерческий жалко ведь будет. Запустишь бесплатно сервер а всякая гадость испортит всю игру и убьет все труды.
Можно конечно делать контроль на читерство на нескольких машинах, проверять возможность действий и сравнивать результат. Это очень интересно.
Но синхронизировать всех будет трудно.
Но для начала создай выделенный сервер. Реши сколько раз в секунду будешь обновлять инфу и начинай уже писать простенькое приложение соединяющее нескольких клиентов.Просто передавай координаты и направление и обновляй их на клиентах. Потом займись плавным передвижением.
Правда с протоколом в блитце напряг. Один выбор UDP. TCP не пойдет так как сервер висеть будет до прихода пакета а поток для него не выделишь ибо блитц и если клиент отрубится то навечный зависон гарантирован.
Но страшного ничего нет. Пакеты UDP не теряются и приходят по порядку , если ты не северный с южным полюсом соединяешь да и там потери исключены это все страшилки и мифы , не гарантируется но доставляется все нормально. Так что на этом не заморачивайся.

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

Последний раз редактировалось Tormaz, 13.11.2009 в 12:21.
(Offline)
 
Ответить с цитированием
Старый 13.11.2009, 07:01   #17
tormoz
Гигант индустрии
 
Аватар для tormoz
 
Регистрация: 14.12.2005
Сообщений: 2,785
Написано 1,183 полезных сообщений
(для 4,437 пользователей)
Ответ: Сеть в играх.

http://forum.boolean.name/showthread...598#post124598
__________________
(Offline)
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо tormoz за это полезное сообщение:
Nex (13.11.2009), Townboy (13.11.2009), Данил (13.11.2009)
Старый 13.11.2009, 12:24   #18
Tormaz
Нуждающийся
 
Регистрация: 23.10.2009
Сообщений: 74
Написано 9 полезных сообщений
(для 22 пользователей)
Ответ: Сеть в играх.

запустил посмотреть сервер 30 % проца скушал написано так понимаю на блитце ? мангос 2 % запущен та том же компе онлайн 12 человек.
(Offline)
 
Ответить с цитированием
Старый 13.11.2009, 23:31   #19
jimon
 
Сообщений: n/a
Ответ: Сеть в играх.

Tormaz
и зачем ты меряешь загруженность проца ? у тебя там управление ядерным реактором что ли ? проц для того и создан чтобы выполнять на нём код, а не крутить в холостую, просто отдавай время системе и будет низкая загруженность проца
 
Ответить с цитированием
Старый 13.11.2009, 23:37   #20
Tormaz
Нуждающийся
 
Регистрация: 23.10.2009
Сообщений: 74
Написано 9 полезных сообщений
(для 22 пользователей)
Ответ: Сеть в играх.

А затем, что как только попадается мне сервер я сразу смотрю сколько он кушает. И если сервер тратит 30% времени проца то не управляет ли этот сервер атомным реактором ,возникает вопрос ?
Что будет с ним если законектятся хотя бы 1000 человек и еще кричуры начнут двигаться , а то не дай бог думать ?
Это какой проц надо будет, если в холостую только 30 %. И если можно поподробней об отдать время системе ? Настроить какими средствами ? Я честно не очень в блитце разбираюсь. Или вы имеете ввиду приоритет в системе ?
Правда я думал , что лучше серверу время отдавать как можно больше.
(Offline)
 
Ответить с цитированием
Старый 14.11.2009, 01:24   #21
jimon
 
Сообщений: n/a
Ответ: Сеть в играх.

Tormaz
с чего ты взял что загруженность процессора и количество выполненной программой работы это одно и тоже ? загруженность процессора это то сколько времени программа будет отдавать системе и не более того

простейший пустой цикл на blitz3d :
while true
wend
будет сжирать все ресурсы одного ядра (загруженность 100% для одно ядерных процессоров и 50% для двух ядерных, для 4 ядерных - 25% и тд)

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

Что будет с ним если законектятся хотя бы 1000 человек и еще кричуры начнут двигаться , а то не дай бог думать  ?
Это какой проц надо будет, если в холостую только 30 %.
минимальные знания оценки производительности программ позволяют сразу сказать что такие размышления это бред, нужно брать во внимание сервисные издержки кода, порядок зависимости от количества клиентов и тд, так что при 1 клиенте может быть 30%, при 20 - 40%, а при 1000 всего 45%

так что не занимайся эзотерическими вещами
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
G.A.D (14.11.2009)
Старый 14.11.2009, 01:29   #22
Tormaz
Нуждающийся
 
Регистрация: 23.10.2009
Сообщений: 74
Написано 9 полезных сообщений
(для 22 пользователей)
Ответ: Сеть в играх.

простейший пустой цикл на blitz3d :
while true
wend
будет сжирать все ресурсы одного ядра (загруженность 100% для одно ядерных процессоров и 50% для двух ядерных, для 4 ядерных - 25% и тд)

Ты это все серьезно ? Или ты это меня разводишь ? Если разводишь то держи ответ - 30% это 3х ядерный проц И если запустить на 2ядерном проце 3 пустых цикла то системе придется отказаться от от одного из них.
Я и говорю что сервер кушает очень много времени проца а не тепла там или еще чего.
Пустой цикл или нет я не знаю к сожалению так же как и проц . Если он там пустые по логике циклы гоняет то понятно где собака зарыта, значит есть запас.
(Offline)
 
Ответить с цитированием
Старый 14.11.2009, 01:59   #23
Tormaz
Нуждающийся
 
Регистрация: 23.10.2009
Сообщений: 74
Написано 9 полезных сообщений
(для 22 пользователей)
Ответ: Сеть в играх.

Аааа черт возьми я только что запустил 4 и еще мангос сервак не вырубил. Разделила системка ровно 22-24. Но в принципе это ничего не заначит поскольку ты прав висяк жуткий. А как с этим бороться ? Как отдать время системе ?
(Offline)
 
Ответить с цитированием
Старый 14.11.2009, 02:26   #24
jimon
 
Сообщений: n/a
Ответ: Сеть в играх.

Tormaz
вызывать delay 1 (1 тут означает 1 миллисекунду, можно и 5 поставить), по-сути это делает задержку на 1 миллисекунду, во время задержки менеджер задач ставит на выполнение другие потоки, таким образом ты отдал время системе, совсем не обязательно что реальная задержка будет ровно 1 миллисекунду, она может быть и 10 миллисекунд
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо за это полезное сообщение:
is.SarCasm (17.12.2009), LLI.T.A.L.K.E.R. (30.04.2011), Tormaz (14.11.2009)
Старый 14.11.2009, 02:32   #25
Tormaz
Нуждающийся
 
Регистрация: 23.10.2009
Сообщений: 74
Написано 9 полезных сообщений
(для 22 пользователей)
Ответ: Сеть в играх.

Ну сколько отдать понятно. Интересненько.. спасибочки ... щас достанем этот жуткий блитц ))) и снова помучаем..

Отлично выходит и входит. Если можно последний вопрос ? Откуда я должен знать что delay отдает время системе а не крутит пустые циклы ? В том смысле где посмотреть я это был должен раньше, до того как задал этот тупой вопрос?
(Offline)
 
Ответить с цитированием
Старый 14.11.2009, 03:35   #26
jimon
 
Сообщений: n/a
Ответ: Сеть в играх.

Tormaz
я не виноват что в справке это не написано
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Tormaz (14.11.2009)
Старый 21.11.2009, 18:13   #27
Damp
Знающий
 
Регистрация: 12.07.2007
Сообщений: 297
Написано 50 полезных сообщений
(для 133 пользователей)
Ответ: Сеть в играх.

Во многих случаях можно обойтись без тиков. Какраз сейччас делаю такую стреллялку, где координаты и углы передаются относительно событий клавы и мыши, без таймера.
Если просто:
Игрок жмет на кнопу "вперед", формируется пакет, условно - "Игрок Вася начиннает движение врепед из точки X:Z и c углом Yaw". Пакет уходит на сервер, сервер ни чего не считая рассылает это на всех. Так он начинает двигаться у всех. Пока Василий держит кнопку ни чего не отсылается. Отпускает кнопку, отсылается пакет "остановка игрока Вася в точке X:Z".
В пределах пинга 300-500 все работает вполне сносно. Всреднем игрок совершает 1 событие в 2-3 секунды, каждый пакет 6-10 байт (полезной информации + где-то 100 байт съедает сам TCP), это здорово экономит трафик относительно тиковой схемы.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
h1dd3n (17.12.2009)
Старый 21.11.2009, 18:30   #28
jimon
 
Сообщений: n/a
Ответ: Сеть в играх.

Damp
а если пинг будет не стабильным, а прыгать от 10 до 1000 плюс еще потеря пакетов 25% то твоя система не сможет добится одинаковой картинки у всех игроков, а одинаковая картинка это самое важное в сетевых играх
 
Ответить с цитированием
Старый 21.11.2009, 19:21   #29
Damp
Знающий
 
Регистрация: 12.07.2007
Сообщений: 297
Написано 50 полезных сообщений
(для 133 пользователей)
Ответ: Сеть в играх.

Пинг так прыгает только на гпрс )) , у 3-х человек тестил с интернетом по проводам, всреднем от 70 до 300..400.
Такая схема может включать и пингкомпенсацию, 2-ух видов: задержка исполнения команды на своем клиенте и дельтатайминг у всех остальных (для этого каждый пакет дополняется информацией о пинге данного клиента).
Конечно контры так не сделать, тк перс может идти только либо по прямой, либо по дуге с определенным радиусом, но что-то аркадно вполне, только что играли
(Offline)
 
Ответить с цитированием
Старый 16.12.2009, 20:54   #30
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Сообщение Ответ: Сеть в играх.

Сообщение от impersonalis Посмотреть сообщение
уорниг метаморфирование ника детектед!
Tormaz
Вот кстати интересно как это выглядит со стороны правил форума.
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо ABTOMAT за это полезное сообщение:
impersonalis (16.12.2009), is.SarCasm (17.12.2009)
Ответ


Опции темы

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сеть dector Стихотворения 5 05.01.2008 19:28
Музыка в играх Данил Болтовня 13 30.10.2007 13:24
Реализация сетевых механизмов в играх и Blitz Armageddon 3D-программирование 1 08.01.2007 16:26
Вывести Текст В чужих Играх AVin C++ 18 13.02.2006 22:55


Часовой пояс GMT +4, время: 16:12.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com