Показать сообщение отдельно
Старый 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)
 
Ответить с цитированием