“Моя видеокарта не тянет эту игру”. Думали ли вы иногда так, видя 6 FPS (кадров в секунду) играя в новенькую игру?
Так как это работает? Как набор нулей и едениц на вашем жестком диске превращаются в красивую (или не очень) картинку, которой вы можете управлять? Наваливайте пельмешек, на связи разработчик игр с восьмилетним стажем и мы начинаем!
Архитектура ПК
Всё что я расскажу дальше - сильно упрощенная схема и в реальности всё намного сложнее. Но для первого понимания это подойдет.
Итак, вскрывши крышку своего ПК вы увидите необходимые нам детали:
1. ) Центральный процессор(далее ЦП);
2. ) Оперативная память (далее ОЗУ);
3. )Жесткий диск;
4. ) Видеокарта.
Центральный процессор и жесткий диск
Роль ЦП в работе игр поистине неоценима. Но давайте сейчас отправимся в тот момент, когда игра была только запущенна. Итак, ваша игра лежит на жестком диске. Скорость работы читания с обычного жесткого диска - 100 мегабайт в секунду у нового и почти 50 мегабайт в секунду у старого. Что нам это дает? Как бы быстро это не казалось (1 gb за 10 секунд) это очень моло для игр. Представьте себе ситуацию: вы едите на скорости 150 км/час в новенькой NFS. И тут появляется цель: отрисовать 4 дома (5 мб один), дорогу(30 мб на дорогу со всеми её материалами), 8 деревьев (4 мб одно) и 5 машин (5 мб одна). В среднем, на такой скорости, на вашем экране должно рисоваться на пару секунд разных объектов общим размером на 100-150 мегабайт. Но мы помним, что прежде чем их отрисовать, нужно их вытащить из жесткого диска. И того: ради 2 секунд отрисовки мы потерям секунду на то чтобы их вытащить из памяти и всего лишь 1/60 секунды(при 60 FPS) чтоб их отрисовать. Это нерационально использованное время. Но как иначе?
Жесткий диск и принцип его работы
Как работает жесткий диск?
Он получил своё название не зря. Внутри этой черной коробки и вправду лежит металлический диск. Когда вам нужно что то записать, он раскручивается до скорости 7 200 оборотов в секунду, и маленькая магнитная головка записывает на этом диске данные зарисовывая и очищая клеточки как делали вы на скучных уроках на полях в тетради.
Но как происходит эта запись? При помощи магнитов. Каждая клеточка (правильное её название "бит") может быть либо намагничена либо размагничена. Головка может её намагнить и размагнитить. Так же она может проверить намагничен ли бит. И у нас выходит классическая схема "намагничено = 1, размагничено = 0".
Головка считывает эти нули и единицы и отдает их ЦП. Тот, в свою очередь, расшифровывает их в цифры и буквы. Плюс такой системы в трм, что жесткий диск может хранить информацию годами ведь размагнитить настолько мелкий бит довольно сложно. Минус - 100 мб/сек очень медленно для плавной работы игр.
Оперативная память
Но уже давно для этой проблемы была придумана панацея - оперативная память. Данный вид памяти, в отличии от жесткого диска, работает практически моментально, выдавая ЦП ту информацию, которая ему нужна, не теряя при этом времени. Минус кроется в одном из названий этой памяти - "энергозависимая память". Да, как только к компьютеру перестаёт подходить электроэнергия все данные из оперативной памяти стираются.
ЦП, ОЗУ и Жесткий диск
А теперь рассмотрим как это работает на практике...
Вы кликаете на игру. ЦП говорит Жесткому диску какая информация ему нужна. Многие игры вначале выдают какую-то картинку или экран загрузки. А теперь уйдет от нескольких секунд до нескольких минут на то, чтоб вытащить данные из жесткого диска. Тут же их процессор считывает и записывает в ОЗУ. После появляется главное меню и многие данные напрямую читаются из ОЗУ. Но в играх, на монеру GTA 5 некоторые данные всё равно подгружаются из жесткого диска, так как игра размеров в 60 Gb не поместится в 4 Gb ОЗУ. И работа разработчика в том, чтоб сделать эту подгрузку незаметной. Но чаще игра (или большая её половина) просто перемещается из жесткого диска в оперативную память.
ЦП и Видеокарта
Итак, мы вытащили кучу информации. Но что дальше? Теперь процессор начинает думать по настоящему. Он начинает просчитывать геометрию объектов.
Об этом написано было в другой статье, ссылка будет в конце.
Процессор просчитал геометрию. Но она полностью бесцветная. В этот момент ЦП считывает информацию "какая текстура должна быть у какой геометрии и тут же отправляет эту всю информацию в видеокарту. Тут же видеокарта начинает рендеринг картинки.
Как устроена видеокарта
Мало кто знает, но видеокарта по своей структуре - это еще один маленький компьютер внутри вашего большего ПК. У видеокарты есть свой: 1) процессор и 2) Оперативная память.
Получивши текстуры, материал и геометрию видеокарта записывает их в свою оперативную память и начинает собирать этот "конструктор" на своем процессоре. После этого он выдает его на свой видеовыход и картинка уходит на ваш монитор.
На случай, если вы столь бедны что не имеете возможность купить видеокарту (или она просто сломалась), разработчики материнских плат часто добавляют "встроенную видеокарту".
Этой карты хватает чтоб смотреть видео и играть в старенькие или 2D игры, ведь размер выделенной ей оперативной памяти часто не превышает 64 мегабайт.
Терминология
Давайте в конце поговорим о сухих числах.
Частота работы процессора определяет как часто процессор обрабатывает информацию.
Ядра и потоки процессора определяет сколько информации процессор может обрабатывать паралельно.
Размер ОЗУ говорит сколько мегабайт памяти может содержать ваша оперативная память.
Частота ОЗУ говорит как быстро эта память может записываться\читаться процессором.
Выходит иногда так, что видеокарта на 2 Gb работает лучше чем видеокарта на 4Gb из-за того, что первая имеет большую частоту процессора или оперативной памяти.
Обращайте на это внимание и высокого вам FPS...
Прошлые статьи:
Понятие коллайдеров, текстур и материалов,
Рендеринг,
Виды текстур,
Открытый мир в играх на примерах.