![]() |
Ответ: Сеть в играх.
Цитата:
Можно конечно делать контроль на читерство на нескольких машинах, проверять возможность действий и сравнивать результат. Это очень интересно. Но синхронизировать всех будет трудно. Но для начала создай выделенный сервер. Реши сколько раз в секунду будешь обновлять инфу и начинай уже писать простенькое приложение соединяющее нескольких клиентов.Просто передавай координаты и направление и обновляй их на клиентах. Потом займись плавным передвижением. Правда с протоколом в блитце напряг. Один выбор UDP. TCP не пойдет так как сервер висеть будет до прихода пакета а поток для него не выделишь ибо блитц и если клиент отрубится то навечный зависон гарантирован. Но страшного ничего нет. Пакеты UDP не теряются и приходят по порядку , если ты не северный с южным полюсом соединяешь да и там потери исключены это все страшилки и мифы , не гарантируется но доставляется все нормально. Так что на этом не заморачивайся. Первая моя программа такого типа это были шарики скользящие по земле :-D . Так что не идиотизм а интересная мысль но трудноисполнимая. сначала делай как все а потом глядишь и будешь первопроходцем с какой нибудь новаторской идеей )) Коннект к серверу осуществить можно на еще одном выделенном порту для этого. Можно все сделать на одном порту. Разработай протокол обмена инфой сервера и клиента. |
Ответ: Сеть в играх.
|
Ответ: Сеть в играх.
запустил посмотреть сервер 30 % проца скушал :( написано так понимаю на блитце ? мангос 2 % запущен та том же компе онлайн 12 человек.
|
Ответ: Сеть в играх.
Tormaz
и зачем ты меряешь загруженность проца ? у тебя там управление ядерным реактором что ли ? проц для того и создан чтобы выполнять на нём код, а не крутить в холостую, просто отдавай время системе и будет низкая загруженность проца |
Ответ: Сеть в играх.
А затем, что как только попадается мне сервер :) я сразу смотрю сколько он кушает. И если сервер тратит 30% времени проца то не управляет ли этот сервер атомным реактором ,возникает вопрос ?
Что будет с ним если законектятся хотя бы 1000 человек и еще кричуры начнут двигаться , а то не дай бог думать :) ? Это какой проц надо будет, если в холостую только 30 %. И если можно поподробней об отдать время системе ? Настроить какими средствами ? Я честно не очень в блитце разбираюсь. Или вы имеете ввиду приоритет в системе ? Правда я думал , что лучше серверу время отдавать как можно больше. |
Ответ: Сеть в играх.
Tormaz
с чего ты взял что загруженность процессора и количество выполненной программой работы это одно и тоже ? загруженность процессора это то сколько времени программа будет отдавать системе и не более того простейший пустой цикл на blitz3d : Код:
while true (по-сути загруженность в прямом смысле определяет соотношение сколько программного кода выполнилось на процессоре, к количеству холостого прогона, но количество выполненных инструкций никак не определяет количество реально выполненной работы, в прочем последнюю нельзя универсально измерять) Код:
Что будет с ним если законектятся хотя бы 1000 человек и еще кричуры начнут двигаться , а то не дай бог думать ? так что не занимайся эзотерическими вещами |
Ответ: Сеть в играх.
простейший пустой цикл на blitz3d :
while true wend будет сжирать все ресурсы одного ядра (загруженность 100% для одно ядерных процессоров и 50% для двух ядерных, для 4 ядерных - 25% и тд) Ты это все серьезно ? Или ты это меня разводишь ?;) Если разводишь то держи ответ - 30% это 3х ядерный проц :) И если запустить на 2ядерном проце 3 пустых цикла то системе придется отказаться от от одного из них. Я и говорю что сервер кушает очень много времени проца а не тепла там или еще чего. Пустой цикл или нет я не знаю к сожалению так же как и проц . Если он там пустые по логике циклы гоняет то понятно где собака зарыта, значит есть запас. :) |
Ответ: Сеть в играх.
Аааа черт возьми я только что запустил 4 и еще мангос сервак не вырубил. Разделила системка ровно 22-24. Но в принципе это ничего не заначит поскольку ты прав висяк жуткий. А как с этим бороться ? Как отдать время системе ?
|
Ответ: Сеть в играх.
Tormaz
вызывать delay 1 (1 тут означает 1 миллисекунду, можно и 5 поставить), по-сути это делает задержку на 1 миллисекунду, во время задержки менеджер задач ставит на выполнение другие потоки, таким образом ты отдал время системе, совсем не обязательно что реальная задержка будет ровно 1 миллисекунду, она может быть и 10 миллисекунд |
Ответ: Сеть в играх.
Ну сколько отдать понятно. Интересненько.. спасибочки ... щас достанем этот жуткий блитц ))) и снова помучаем..
Отлично выходит и входит. Если можно последний вопрос ? Откуда я должен знать что delay отдает время системе а не крутит пустые циклы ? В том смысле где посмотреть я это был должен раньше, до того как задал этот тупой вопрос? |
Ответ: Сеть в играх.
Tormaz
я не виноват что в справке это не написано :) |
Ответ: Сеть в играх.
Во многих случаях можно обойтись без тиков. Какраз сейччас делаю такую стреллялку, где координаты и углы передаются относительно событий клавы и мыши, без таймера.
Если просто: Игрок жмет на кнопу "вперед", формируется пакет, условно - "Игрок Вася начиннает движение врепед из точки X:Z и c углом Yaw". Пакет уходит на сервер, сервер ни чего не считая рассылает это на всех. Так он начинает двигаться у всех. Пока Василий держит кнопку ни чего не отсылается. Отпускает кнопку, отсылается пакет "остановка игрока Вася в точке X:Z". В пределах пинга 300-500 все работает вполне сносно. Всреднем игрок совершает 1 событие в 2-3 секунды, каждый пакет 6-10 байт (полезной информации + где-то 100 байт съедает сам TCP), это здорово экономит трафик относительно тиковой схемы. |
Ответ: Сеть в играх.
Damp
а если пинг будет не стабильным, а прыгать от 10 до 1000 плюс еще потеря пакетов 25% то твоя система не сможет добится одинаковой картинки у всех игроков, а одинаковая картинка это самое важное в сетевых играх |
Ответ: Сеть в играх.
Пинг так прыгает только на гпрс )) , у 3-х человек тестил с интернетом по проводам, всреднем от 70 до 300..400.
Такая схема может включать и пингкомпенсацию, 2-ух видов: задержка исполнения команды на своем клиенте и дельтатайминг у всех остальных (для этого каждый пакет дополняется информацией о пинге данного клиента). Конечно контры так не сделать, тк перс может идти только либо по прямой, либо по дуге с определенным радиусом, но что-то аркадно вполне, только что играли :) |
Ответ: Сеть в играх.
Цитата:
|
Часовой пояс GMT +4, время: 22:10. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot