О пользе теории

 Почитал тут недавно о том, как великий Джон Кармак создавал псевдо-3Д движок для Wolfenstein-3d и DOOM в начале 90-х. И это действительно очень интересное чтиво - как буквально и говна и палок, на оочень медленном железе сделать без преувеличения революционный шутер от первого лица (FPS). До Кармака никто такого сделать не смог, а он смог. Без трехмерных ускорителей, без видеопамяти, вообще без нихуя сделал настоящий шутер. Это уже потом, когда DOOM и Wolfenstein буквально взорвали индустрию и стали мегапопулярными и де-факто новым стандартом качества - вот тогда уже начали шевелиться производители разного оборудования. А все почему - потому что Кармак был практик, а не теоретик, хотя теория ему кое в чем все же помогла. 

Например, алгоритм быстрого вычисления обратного корня или разбития пространства BSP. Причем в первом случае сам Кармак сам не знал как оно работает - просто использовал чей-то код, а во втором случае прочитал какую-то книжечку и реализовал алогритм, хотя до того этот алгоритм никому не был нужен лет 20.  


Это все я к чему - без применения на практике вся эта теория мертва и никому не нужна. Быстрое вычисление обратного корня в крайнем случае можно было сделать просто используя табличные значения и линейню аппрокримацию между ними (хотя даже это было бы излишним - брать ближайшее значение было бы вполне достаточно для игры), а BSP конечно улучшила алгоритмизацию разбиения уровня для оптимального рендеринга, но в принципе можно было и без нее обойтись и первые версии DOOM/Wolfenstein именно так и делали. Невероятный качественный рывок в создании игр был осуществлен без этого математического аппарата. Разражает, что при упоминании первого настоящего реально успешного движка шутера как-то много внимания уделено именно этим второстепенным и ничего кардинально не решающим технологиями, упуская из вида именно рейкастинг с количеством лучей, равным количеству пикселей по горизонтали (то есть 320, например) и использование масштабируемых битмапов для отображения окружения (стены, противники, двери и проч) - вот что самое главное. Именно этот технический трюк и есть секрет успеха, потому что дает возможность быстро рендерить кадр шутера на любом, вообще любом устройстве, у которого есть пара мегабайт памяти и пара мегагерц процессора (официальные системные требования что-то типа интел 80386 и 4 мегабайта памяти - вообще почти ничего).

Это все к чему - вспомнилось мне тут как я ходил по собеседованиям и там различные хацкеры постоянно задают хитрожопые вопросы типа ромбического наследования в C++, про виртуальные деструкторы, про конструкторы копий, чем дек лучше вектора и прочая хуета. Это все важно, конечно, но давайте будем честными - тупой зубреж этой говенной теории никак не показывает уровень мастерства программиста. Ну есть еще некоторые особые ценители темплейтов, которые тоже раздражают (именно этот шаблонизированный пиздец, в который превратились плюсы и есть причина потери популярности языка). Хотя, все же что-то этот тупой зубреж показывает: он демонстрирует готовность кандидата напрягаться ради прохождения технического собеседования. Ну типа если напрягается, значит оно ему надо и он в принципе может напрягаться. Но с таким же успехом можно проверять способность вышивать крестиком, добавив соотвествующее требование (кстати советую попробвать и таким образом сразу отсеять дохуя ленивых или дохуя гордых, хехе). Короче, не прошел бы Кармак собеседование на какую-то задротскую украинскую галеру - завалился бы на первом вопросе типа "как работает вычисление обратного корня", потому что он сам написал комментарий типа "хз что тут происходит, но это работает". И вот только это имеет значение - оно сука работает. Именно так Кармак и сделал рывок в гейм-индустрии. 
Практика и реально работающие вещи - вот что имеет значение. А все эти матричные преобразования над вершинами и пикселями - это уже потом пришло, когда оказалось, что тема-то прибыльная и надо ставить эти поделки на промышленные корпоративные рельсы, чтобы прибыль от игр получали не только кучка очкастых техногиков, но и пузатые дяди-инвесторы с миллиардами долларов. 
Потом уже оказалось, что можно гораздо быстрее все делать в специально разработанном для этого железе и вообще жизнь усложнилась - надо где-то взять модель, разработанную каким-то дизайнером в специальном софте (блендер, фотошоп), который купил текстуры у еще кого-то, потом все это (модель, текстуры, анимации) лепится докучи в коде и в виде набора точек и текстур скармливается 3D-ускорителю. Никакой романтики и изобретательности, зато сколько людей кормится с индустрии! А в начале 90-х каждый создатель движка сам делал свой редактор моделей и уровней, эхх.

Комментарии

Популярные сообщения из этого блога

Новый год в клубе Мисто

Ну нихуя себе первое марта

Упаднические настроения