Играть без "тормозов" или как я сделал RAID массив для онлайн-игры
Не секрет, что многие из нас любят побаловаться в свободное время компьютерными играми. Большинство онлайн игр реализованы по клиент-серверной технологии: у игрока на персональном компьютере размещается некий front-end, по сути, графический интерфейс, а со стороны сервера — обыкновенная база данных, работающая под управлением собственного движка. Такая схема дает возможность существенно снизить нагрузку на сеть, поскольку передаются только данные об изменениях положения игрового персонажа в пространстве и его действиях, а также команды с мыши и клавиатуры. В обратную сторону аналогичным образом передаются данные клиенту, в том числе геодата, объекты и информация о других персонажах, управляемых компьютером и игроками.
Остальное делается на стороне клиента: игровой механизм преобразует полученные данные в графический ряд, формируя изображение традиционным для трехмерных (иногда — двумерных) миров способом: модели,текстуры и прочее обрабатывает собственно компьютер игрока. Но если нагрузка на сеть минимальна, то нагрузка на игровую станцию нешуточная, ведь ей приходится постоянно подгружать текстуры, отрисовывать анимацию, моделировать условия освещения, теней, физику игры и прочие события, и все это происходит в реальном времени.
В процессе экспериментов с разными игровыми мирами и серверами мне удалось выяснить, что проблема не в сетевом соединении и не в производительности видеокарты или процессора, хотя они тоже важны.