А если ваш сервер выполняет действи исключительно по сигналу от игрока, то это неверно - по сигналу от игрока, на сервере должно инициироваться действие, но выполняться оно должно в своем цикле.
Например предположим что-нибудь простенькое, например текстовую игру в чате.
Игрок пишет команды "идти влево", "идти влево", "идти вниз". Он их может написать и отправить практически одновременно, но на сервере скорость "хотьбы" должна быть определена.
Например на сервере установлен свой цикл с частотой 2 раза в секунду, когда он обрабатывает действия в мире. И когда он перебирает всех игроков с их текущим экшеном, он просто видит на какой стадии игрок. В тот момент, когда игрок завершил свободную команду, сервер смотрит в буфер игрока и начинает выполнять следующую. А сам поток коннекшена с игроком, может тольпо принять в буфер эту команду. Ну или очистить его, если игрок напишет например "стоп". Но игрок не должен пробежать все три позиции именно в момент получения этих команд сервером.
Как-то так.
Дальше - думайте сами, игры разные, случаи разные...
Я еще помню doom2 целиком на tcp, который шел со скоростью самого медленного игрока в сети.
Saboteur
@saboteur_kiev Куратор тега Разработка игр
Alexey Lizurchik: В сервере всегда есть свой цикл, по которому происходит процесс. У вас мобы как бегают? Мгновенно, или с определенной скоростью? У вас снаряды как летят - мгновенно, или от них можно увернуться? Как промежутки полета вычисляются?
В той же Eve Online существует даже замедление игрового времени, если игроков в системе становится слишком много, чтобы адекватно успевать синхронизировать всех участников.
Saboteur
@saboteur_kiev Куратор тега Разработка игр
от пользователей к серверу - tcp, от сервера к пользователям - udp
таким образом, сервер всегда с определенной частотой рассылает всем игрокам текущий статус, и этот статус должен быть не инкрементивным а цельным. Если игрок не успеет принять какой-то пакет, это не страшно - в следующем пакете нагонит, ну а сервер не ждет от каждого игрока подтверждение, что пакет принят, таким образом сам по себе не тормозит с игровыми тиками.
А игроки отправляют серверу с подтверждением по TCP, таким образом клиент игрока точно знает, что уже было отправлено на сервер с подтверждением, и может отрисовывать экшн, или наоборот залагать, но не влияя на остальных игроков.
dvomaks: ну а что такого может испортить то, что в массив попадет странная информация? Пока ее никто не обрабатывает ничем, ничего она не сможет сделать.
Вам же верно сказали, что надо смотреть где оно применяется, и чаще всего это в виде sql/exec injection
kingdomofcrooked: У вас наверное в windows 9.1 нет больше ничего, и гибернация это не то, чтобы мне хотелось. Сколько у вас оперативки? У меня сейчас 16. Чтобы уйти в гибернацию, ему нужно записать на диск 16 гигабайт, а при запуске прочитать 16 гигабайт. Даже с SSD это много.
Кроме того у меня все время запущены:
Криптованный диск (при перезапуске нужно вводить пароль)
Виртуальный диск (при перезапуске он будет пересоздаваться), на котором находится браузер (запускается за 1 сек со всеми плагинами)
торрент с примерно 2000+ раздачами. При запуске он несколько минут запускает раздачи
Скайп, который сам по себе стартует гораздо дольше чем весь виндовс
и еще мелкие штуки.
Кроме того, как я уже писал - по ночам идет раздача торрентов, резервное копирование и всякие штуки, кодирование видео, например.
Дѣаволъ: ну гляньте же фриланс. спецов по mysql/php на порядки больше, чем по MS SQL/MS Access
я не знаю, кто сейчас будет учить Access с нуля, а php - студентов полно. Мелкие задачи могут сделать за еду.
Можно найти специалиста подороже, но в условиях широкого выбора и высокой конкуренции, цена ниже и услуги доступнее. Плюс готовые решения, те же построители отчетов.
Дѣаволъ: Но в данный случай вопрос был не от программиста, которого не волнует, а от человека, которого волнуют плюсы и минусы перехода на другую систему.
Бизнес работает так, как ему выгодно, а не как красиво программисту...
Хомон: perl активно используется во многих проектах, связанных с разбором текста, ибо для этого он был изначально создан, и до сих пор его нестрогая типизация и в случае парсинга больших объемов различного текста самая удобная.
Кроме того, вы можете удивиться, но perl можно встретить как смесь различных управляющих скриптов в различных учреждениях, например электростанциях, поскольку для замены скриптов на bash в первую очередь на ум приходит perl, с его отличной back-version совместимостью и стабильностью.
Сергей: да, а в качестве опенсорса, посмотрите СACLS в командной строке и эксель.
Если умеете писать на любом скриптовом языке (perl/python/php), маленький парсер в массив и вот вам за день работы карта в удобном для вас виде.
Артём Петренков: а знания алгоритмов уже сделали свое дело - хуяк хуяк и уже директор.
Ну и мало ли.. Проекты закрываются, открываются, сделает потом еще один.
Реально мало людей, которые разбираются в чем-то на высоком и низком уровне одновременно.