Джон Кармак вместе с тёзкой Джоном Ромеро стали родоначальниками игрового жанра FPS. На слабеньких 486SX, без видеокарт (!) они выдали настоящий 3D-шутер без лагов с эффектом присутствия, что стало бомбой для 1993 года — в эпоху пошаговых стратегий и отсутствия скроллинга. Казалось, тут вмешалась чёрная магия…

В принципе, примерно так и есть. В разработке Wolfenstein 3D, Doom и движка Quake Джон Кармак действительно использовал кучу нестандартных приёмов вроде конверсии указателей или выхода за границы объектов, чтобы в циклах получать доступ к другому объекту, который гарантированно идёт следом.

Уровень программирования Doom и Quake до сих пор считается непревзойдённым образцом хакерских оптимизаций, а сам Джон Кармак — эталон сверхэффективного разработчика. Благодаря высочайшему качеству программирования Doom стал феноменом, который изменил мир.

▍ Проекты


Чтобы понять уровень легендарности Джона Кармака, достаточно взглянуть на список его разработок, который включает в себя 41 игру, изданную с 1990 по 2012 годы. Некоторые экземпляры:
  • Slordax, 1990 год, первая реализация сайд-скроллинга в играх на PC,
  • Wolfenstein 3D, 1992, наложение текстур,
  • Doom, 1993, BSP-деревья (об этом ниже), отказ от музыки в пользу окружающих шумов (идея Кармака),
  • Doom II, 1994,
  • Heretic, 1994,
  • Hexen: Beyond Heretic, 1995,
  • Quake, 1996,
  • Quake II, 1997,
  • Quake III Arena, 1999,
  • участие в опенсорсных проектах, в том числе первый порт X Window System на Mac OS X Server и проект Utah GLX по доработке драйверов OpenGL для Linux.
В последующих играх (после 1999 года) он выступал уже не как ведущий программист, а как технический директор.

В 2014 году опубликованы исходные тексты ранних игр Hovertank 3D и Commander Keen. Первые игры написаны на Borland Turbo Pascal и Borland C++ 2.0. Исходный код Wolfenstein 3D открыт в 1995 году, Doom — в 1997.

Из-за репутации заядлого технаря Кармака в id Sofware называли Джон-Движок. Собственно, игровые движки он разрабатывал практически в одиночку, тогда как другие сотрудники концентрировались на дизайне, уровнях и прочих игровых механиках.

Если говорить о разработке игр, то в жанре шутеров Джон Кармак — не просто легенда, а скорее Бог.

▍ Детство за компьютером


Джон Кармак родился 20 августа 1970 года и увлёкся компьютерными играми в юном возрасте. В подкасте с Лексом Фридманом от 4 августа 2022 года он вспоминает, что часами просиживал перед монитором. В школе учитель показал ему Apple II, и парень моментально влюбился. Компьютер был какой-то волшебной вещью, которая выполняла команды в точности, как написано. Тогда ещё не было интернета, поначалу маленький Джонди (Джон Д. Кармак Второй) ходил в библиотеку и искал какие-то книги по программированию, учился по ним.

Первую программу он написал в компьютерном магазине, где дорвался до работающего образца и набрал:

10 PRINT "JOHN CARMACK"
20 GOTO 10

Вероятно, тогда Джону было около десяти лет. В следующие годы он активно изучал программирование, играл в Ultima, но когда в возрасте 15 лет прочитал книгу Стивена Леви «Хакеры. Герои компьютерной революции», судьба подростка была решена. В книге рассказывалось о вундеркиндах, изменивших мир, и их культуре: экспериментах с мейнфреймами в MIT, самодельных программах, независимых компаниях по разработке игр. Отчисленный из Гарварда Билл Гейтс (автор интерпретатора бейсика для Altair), два Стива, Джобс и Возняк, создатели Apple II и большие любители компьютерных игр. Все они были хакерами, как многие другие. И все любили игры. Юный Джонди думал только о том, как попасть в их ряды, и даже год, проведённый в колонии для трудных подростков, не изменил его мнения.

Больше всего ему нравилось программировать графику, в том числе 3D-модели. Результат сразу был виден на экране. Первая игра Кармака называлась Shadowforge и очень походила на Ultima, хотя содержала несколько дополнительных фишек: например, персонаж мог атаковать не в четырёх направлениях, а в восьми. Джон заработал тысячу долларов, продав игру частной компании. Затем продолжал работать как фрилансер, продавая свои игры разным издателям, а в конце концов согласился принять предложение на работу от Softdisk. Так началась его игровая карьера как профессионального разработчика.

Работая в Softdisk, 19-летний Кармак придумал способ реализовать скроллинг на PC. Это было настолько прорывной и впечатляющей идеей, что коллега по имени Джон Ромеро уговорил вундеркинда забрать из старой фирмы рабочие компьютеры и основать свою компанию, которую они назвали id Software.

id Software, начало 90-х

На КДПВ в начале статьи — рабочий компьютер Кармака в 1995 году. В качестве монитора используется 28" модель Silicon Graphics/Integraph InterView 28hd96 весом 45 кг. Это был один из первых на рынке мониторов с разрешением 1920×1080. В предыдущие годы ему приходилось работать на двух мониторах меньшего размера. К 2011 году рабочее место проапгрейдилось до двух 30-дюймовых мониторов.

▍ Профессиональные хаки


Некоторые профессиональные приёмы Джона Кармака упоминаются в биографических книгах, в статьях и интервью с ним.

Например, Дэвид Кушнер в книге «Повелители Doom» (2003) упоминает о создании 3D-рендерера для Doom. Джон Кармак сразу понял, что написанный им рендерер тормозит при открытии некоторых уровней. И проблема фундаментальная. Поэтому он начал читать научные работы по компьютерным наукам, чтобы найти подходящее решение для оптимизации рендерера и повышения производительности. В итоге он применил технику под названием двоичное разбиение пространства, которая никогда раньше не применялась в видеоиграх, что значительно ускорило работу движка Doom.

Техника двоичного разбиения пространства (или BSP-дерева) — решение задачи отрисовки 3D-сцены. Её иногда называют определением видимой поверхности (visible surface detection, VSD).

VSD и выбраковка (отбрасывание невидимых полигонов) — сложнейшая задача, для решения которой в 90-е годы применялись десятки подходов, а вычислительная сложность задачи нарастает как кубическая функция, что очень быстро становится ограничивающим фактором для рендеринга реалистичных миров.

Вкратце техника BSP-дерева описана здесь. Если в двух словах, в Wolfenstein был реализован примитивный рендерер по ограниченной сцене (стены только в двух направлениях, один уровень по высоте, никаких лестниц, тайлы по сетке через фиксированные промежутки), а для Doom пришлось написать принципиально новый рендерер, ориентированный на объекты. Он перебирает объекты в сцене и проецирует каждый из них на экран по очереди.

Джон Ромеро в книге «Doom: Scarydarkfast» (2013) вспоминает, что дизайн уровней в Doom с самого начала был на порядок сложнее, чем в Wolfenstein 3D:

«Три основных компонента дизайна DOOM – три трамплина, позволивших оторваться от Wolfenstein 3D, – уже присутствовали в первой альфе: изменяемое окружение, динамическое освещение и сквозные сектора. Согласно примечаниям к релизу, движущиеся сектора (поднимающиеся и опускающиеся платформы) уже были добавлены на уровни, но пока не функционировали. Наверное, можно сказать, что на данном этапе команда только училась с ними работать. На первом уровне присутствовал расширенный набор спиральных туннелеобразных лестниц, ведущих на выступ с видом на другую комнату, полную импов. Это был ранний вариант соединения секторов, ставший фирменным дизайнерским элементом (на рис. внизу). В конце концов эта карта превратилась в E2M7, хотя изначально полировалась для усиления эффекта масштабности ангара из начала E1M1».


Изначально Кармак пытался решить эту проблему, опираясь на схему уровней (такой подход через три года был реализован в игре Duke Nukem), но в 1993 году процессоры не тянули такой алгоритм, особенно когда сектора были вложены друг в друга, как в круговой лестнице.

Поэтому Кармак начал искать лучший алгоритм. Так он и нашёл алгоритм разбиения двоичного пространства, впервые описанный в научной статье для создания авиасимуляторов ВВС США в 1969 году (R. Schumacher, B. Brand, M. Gilliland, W. Sharp, «Study for Applying Computer-Generated Images to Visual Simulation», Air Force Human Resources Laboratory, December 1969).

В качестве потенциального решения предлагалась так называемая «матрица приоритетов»:



Матрица показывает отношения между тремя объектами на основе трёх разделяющих плоскостей и расположения точки обзора камеры — если объект $a_i$ заслоняет объект $a_j$, тогда запись $a_{ij}$ в матрице будет равна $1$.

Исследователи предложили реализовать матрицу аппаратно и пересчитывать каждый кадр. Основной недостаток заключается в том, что для представления сцены с $n$ объектов требуется матрица размером $n^2$. Поэтому исследователи переходят к изучению вопроса о том, возможно ли представить матрицу окклюзии в виде «списка приоритетов» и использовать плоскости разбиения для упорядочивания объектов в сцене для рендеринга.

Только в 1980 году в работе под названием «О генерации видимых поверхностей с помощью априорных древовидных структур» был приведён конкретный алгоритм для достижения этой цели (Henry Fuchs, Zvi Kedem, Bruce Naylor, «On Visible Surface Generation By A Priori Tree Structures», ACM SIGGRAPH Computer Graphics, July 1980).

В этой статье впервые представлено чёткое дерево BSP (с отсылкой на идею 1969 года). Построенное дерево BSP легко использовать для обеспечения приоритетного порядка объектов в сцене. Вот примерная схема построения и обхода дерева BSP, представляющего простую двумерную сцену. В трёхмерной сцене геометрия сложнее, но идея та же самая:

Первый шаг. Основная линия вдоль стены D разбивает сцену на два множества

Второй шаг. Полупространства по обе стороны D снова разделяются. Стена C — единственная в своём полупространстве, поэтому разбиение не требуется. Стена B образует новую разделительную линию в своём полупространстве. Стену A нужно разбить, потому что она пересекает линию раздела

Третий шаг. Упорядочение стен по отношению к точке обзора в правом верхнем углу, необходимое для алгоритма окраски пикселей. Здесь просто последовательный обход дерева

Замечательная особенность дерева BSP состоит в том, что его достаточно построить один раз, а затем одно и то же дерево BSP можно использовать для рендеринга сцены независимо от того, где находится точка зрения камеры, пока полигоны не перемещаются. Вот почему дерево BSP так полезно для рендеринга в реальном времени — вся тяжёлая работа по построению дерева выполняется заранее, а не во время рендеринга.

Вершина (1), лайндеф (2), сайддеф (3) и часть висплана (4) в DOOM на уровне E1M1, из книги «Doom: Scarydarkfast»

Брюс Нейлор, один из авторов статьи 1980 года, позже напишет об этой проблеме в своей работе 1993 года «Constructing Good Partitioning Trees». По словам Джона Ромеро, возможно, Джон Кармак узнал о BSP-деревьях именно из этой статьи — по крайней мере, он её читал. И затем уже генератор BSP-деревьев был добавлен конкретно в редактор уровней Doom.

Уровень E1M7 «Вычислительный центр». Игрок начинает в точке A и движется мимо точки B к точке C, после чего возвращается и получает доступ к точке D. Там он получает ключ-карточку для открытия точки E и наконец добирается до выхода в точке F. Из книги «Doom: Scarydarkfast»

Джон Кармак не только оценил мощь идеи, но и нашёл способ реализовать BSP-деревья в реальном времени на процессорах, которые даже не могли выполнять операции с плавающей точкой. Это было значительное достижение. И это не единственный хак. О других виртуозных приёмах можно прочитать в «Чёрной книге движка Doom» Фабьена Сангларда.

Некоторые специалисты считают, что именно эпизод с двоичным разбиением пространства — самый лучший наглядный пример того, почему Кармак стал такой легендарной личностью в программировании.

▍ Иммунитет от выгорания?


Хотя Джон какое-то время занимался дзюдо и бразильским джиу-джитсу, его жизнь не совсем соответствует модному ныне принципу «work-life balance». Как он сам говорил, «баланс переоценивают». Бывшая жена Кармака жаловалась, что он взял рабочий компьютер в свадебное путешествие и вообще постоянно «как будто отсутствовал». В вышеупомянутом подкасте Джон сказал, что если спать восемь часов в сутки, то можно работать сто часов в неделю, «правильно расставив приоритеты». Он также отметил, что «если продолжать работать, преодолевая убывающую эффективность, можно добиться большего, чем если остановиться на этом этапе».

Но когда программирование — это страсть, которая охватывает тебя целиком, то что может быть лучше?

Правда, Кармак отметил один важный момент: он всегда был крайне уравновешенным и никогда не испытывал проблем с эмоциональной нестабильностью. Когда мальчика отправляли в колонию, следователь отметил полное отсутствие у него эмпатии («какой-то мозг на ножках»). Похоже, Джон от природы лучше приспособлен для изматывающей интеллектуальной работы, чем большинство людей в этом мире. По этому поводу фрагмент из книги «Повелители Doom» о возрасте примерно 20–25 лет, за этот период он создал примерно два десятка игр:

Кармак был человеком момента. Его сильной стороной была сосредоточенность. Время существовало для него не в виде какого-то многообещающего будущего или сентиментального прошлого, а в виде настоящего, которое состояло из хитросплетений задач, решений, воображения и кода. Он не хранил ничего, что напоминало бы ему о прошлом, — ни фотографий, ни записей, ни игр, ни компьютерных дискет. Он даже не сохранил копий своих первых игр, Wraith и Shadowforge. У него не было ни школьного альбома, ни журналов с его первыми публикациями. Он не хранил ничего — только то, что могло понадобиться ему здесь и сейчас. В спальне Кармака не было лишних вещей, только лампа, подушка, покрывало и стопка книг. Не было даже матраса. Из дома он забрал только кошку по кличке Митси (подарок от новой семьи), крайне мерзопакостную и готовую обоссать что угодно и когда угодно…

Кармак часто говорил ребятам, что его волнуют только работа над программами и деньги на пиццу и диетическую колу, чтобы не помереть от голода и жажды. Ему не интересно было управлять большой компанией. Чем больше становилось деловых обязанностей вроде отправки заказов и маркетинга, тем сильнее они отвлекались от создания отличных игр.

Возможно, заодно с эмоциональной стабильностью Джону достался иммунитет от выгорания?

Рабочий десктоп Кармака на октябрь 2022 года: Titan RTX, 4090 и A100

В 2000-е годы Кармак увлёкся конструированием ракет (Armadillo Aerospace, на фото он на ракетном фестивале X-Prize Cup 2005) и шлемов виртуальной реальности (Oculus Rift). А сейчас применяет свои способности для решения более интересной задачи — создания сильного ИИ (Keen Technologies).

Аргументация такого решения простая и логичная. Джон Кармак считает появление AGI «возможным», а у него лично есть «ненулевой шанс внести свой вклад» в это чрезвычайно ценное изобретение. Исходя из таких условий, согласно логике Паскаля, он «обязан начать работу».


Комментарии (58)


  1. v1000
    12.12.2022 12:28
    +10

    В свое время понравилось, как он решал проблемы создания очков виртуальной реальности, и возмущался, что мы можем получать сигнал с другого устройства на другой точке земного шара быстрее, чем передать этот сигнал через метровый кабель от самого устройства до телевизора.


    1. Aquahawk
      12.12.2022 16:12
      +4

      И, что интересно, революции в этом так и не произошло, и все эти 240 герц это не сколько про отклик сколько про плавность


      1. Gugic
        13.12.2022 04:46
        +1

        Квест принес людям доступный и хорошо работающий беспроводной PCVR, что, если вдуматься (в сильно повышенные требования к отклику) - очень круто. Я лично теперь никакой проводной VR шлем даже в перспективе не рассматриваю.


  1. cher-nov
    12.12.2022 14:10
    +15

    На слабеньких 486SX, без видеокарт (!)

    Это не так. Видеоадаптеры тогда существовали именно как карты расширения, их единственное отличие от видеокарт - отсутствие специализированного сопроцессора (GPU). Но своя собственная память и регистры управления у них были уже тогда, и эффективная работа со всем этим требовала особых умений и квалификации ничуть не меньше, чем сейчас.

    отказ от музыки в пользу окружающих шумов (идея Кармака)

    В Doom не было музыки? А мужики-то и не знают. Даже в первом Quake она ещё была.


    1. screwer
      12.12.2022 14:25
      +3

      И во втором, и в третьем


      1. chelovek-jpeg
        12.12.2022 22:11
        +7

        кстати из-за пиратства многие действительно не знали, что в квейках была музыка))


        1. MindPhaser34
          15.12.2022 07:23

          причем огненная музыка =) До сих пор с первыми моментами quake 2 сразу вспоминаются гитарные рифы саундтрека!


    1. thevlad
      12.12.2022 14:47
      +1

      Видеокарты это был кусок памяти(frame buffer) либо просто линейный, либо с переключением банков (если совсем древние). Единственная задача была перегнать туда данные. Настройка режима и других параметров обычно производилась через прерывания VESA биоса. Самое сложное по скорости это был 3д растеризатор реализованный на cpu.


      1. shiru8bit
        12.12.2022 15:51
        +9

        И тем не менее, видеокарты (!) были. Не было 3D-ускорителей для PC.


      1. barbaris76
        12.12.2022 16:17
        +3

        Ну, не так всё просто. На том же 486SX и ISAшной Trident 9000 DOOM у меня бегал в окне 50% от исходного, иначе это было слайдшоу. А на PCIной S3 Trio всё просто летало в фуллскрине.


        1. vanxant
          12.12.2022 16:34
          +6

          Тут скорее проблемы с шиной, у ISA были жалкие 16 бит на 8 МГц, а у PCI уже 32х33


        1. thevlad
          12.12.2022 16:42
          +2

          Зависит от шины и скорости памяти, s3 trio умело в плоский буфер в 32 битном режиме, было pci и относительно быстрая память. Trident висела на isa и доступ к памяти фреймбуфера был bank switched.

          PS: у меня как раз были такая же эволюция железок в конце 90х 486/Trident, Pentium/S3 Trio, и я писал для них крутящиеся кубики, когда временами прогуливал школу.


          1. vicsoftware
            12.12.2022 19:42

            Какое отношение плоский буфер, и bank-switch имеют к Doom, который работал в 13 -о режиме, который 320х200 и занимал чуть меньше одного сегмента памяти?


            1. thevlad
              12.12.2022 20:07

              Это было про большие разрешения и Quake в частности. По поводу DOOM он работал в 32 битном режиме. Сегментация и bank switch ортогональные концепции, можно было иметь плоскую память в 32 битном защищенном режиме, но видюха все равно была bank-switched. В случаи 320x200 фрэймбуфер умещался в один сегмент/банк.


              1. vicsoftware
                12.12.2022 20:18

                Запускать Quake на ISA карте - это надо было быть большим любителем боли :)


    1. sidisko
      12.12.2022 22:12
      +5

      в первой кваке музыка была записана на диск как audioCD и плеилась как в обычном CD проигрывателе, минуя цпу. собственно многие потом в музыкальных центрах и слушали саундтрек к игре.


  1. Jianke
    12.12.2022 14:10
    +5

    Иммунитет от выгорания?

    ...возрасте примерно 20–25 лет, за этот период он создал примерно два десятка игр

    Это и есть секрет отсутствия выгорания. В этом возрасте организм очень быстро восстанавливается.


    1. Format-X22
      12.12.2022 14:19
      +8

      Нет, это эмоциональная стабильность и отсутствие выброса стрессового микса в кровь из-за проблем, от которых ты не помрешь и от которых не нужно прямо сейчас бежать по саванне с копьем. Это и вызывает основную усталость и потом выгорание. Умеешь с этим работать - всё прекрасно в твоей жизни, ты эффективен.


      1. Jianke
        12.12.2022 16:46
        +4

        Если регулярно недосыпаешь, а тебе далеко не двадцать лет, то никакая "эмоциональная стабильность" не поможет.


        1. engine9
          12.12.2022 18:40
          +2

          Поможет. Чтобы не триггериться на ерунду и делать действительно важные вещи, чтобы высыпаться.


  1. Drayden
    12.12.2022 15:17
    +5

    Красивый комп у Кармака. Очень стильно.


  1. AntonPolyakov
    12.12.2022 15:32
    +4

    На слабеньких 486SX, без видеокарт (!) они выдали настоящий 3D-шутер без лагов

    Doom успешно бегал на 386DX с 4 мегами оперативки. Это были минимальные требования. Ну а Wolf 3D и на 286-х шел с 640 кБ оперативки. 486-й (даже SX) - это уже роскошь.


    1. DROS
      13.12.2022 10:50

      Ооооо... 386й и 4метра памяти! У меня первый дум "бегал" только если уменьшить экран на 1 шаг, иначе тормозил.


    1. v4e
      13.12.2022 11:31

      В статье восклицательный знак не там. Я бы его поставил 486SX(!) - вот так. Потому что 486SX бомжеватая версия нормального 486, без FPU. Молодому поколению может диким показаться что процессор может не иметь модуля по работе с плавающей точкой - FPU (float point unit). Потому, что начиная с пентиума эта всегда часть CPU.

      486SX были сравнимы по цене 386DX. И где-то DX и клал на лопатки, за счет наличия FPU. А бывало, что-то даже не запускалось, или запускалось с просадкой по производительности за счет софтовой эмуляции этих самы float point вычислений. Не могу привести пример, у меня был доступ к 486sx в старших классах школы, очень давно, году так 93-94.


      1. odissey_nemo
        13.12.2022 17:46
        +2

        Процессор с плавающей точкой - это была роскошь, не везде доступная. В конце 80-х на болгарских СМ-4 (аналог PDP-11, чего уж тут) стоял FIS (Floating Instruction Set) с 4-мя командами (FMUL, FDIV, FADD и FSUB, если не забыл). А на пришедших к нам ГэДээРовских машинах, тоже на базе PDP-11 (операционка MOOS-1600), на которых стояли дисплейные процессоры нашей разработки, присутствовал аж целый FPP (Floating Point Processor) с множеством команд, включая тригонометрию. Но команд FIS там не было!

        А тут к нам завезли ленту DECUS (кто знает, тот поймёт), где была и компьютерная игра EMPIRE. Она была собрана для FIS. Исходников не было, почему-то. И на машинах с FPP она не шла (invalid processor instruction execution), хоть ты убейся.

        Пришлось привлечь знание операционной системы. В бинарном образе игры были найдены адреса (они были достаточно стандартные, где-то в начале секции кода), отвечающие за прерывание по выполнению неверной команды. Также, стек для задач MOOS 1600 (она же ОС РВ, она же RSX-11) выделялся при сборке и находился в самом начале образа задачи. В верхних адресах стека была размещена мини-программа на ассемблере, преобразующая вызовы FIS в вызовы FPP, возвращающая результат в нужном формате float 32 бита. И адрес прерывания по неверной команде был перенаправлен на эту подпрограмму!

        Стек был выделен с запасом и до кода внедрённой подпрограммы никогда не доходил.
        И модифицированная программа заработала и на болгарских и на немецких машинах)))

        P.S. Были ещё приключения по переводу бинарных образов программ с VT52 на VT100, но это уже другая история. Не для Кармака :o)


        1. Videoman
          13.12.2022 18:12

          На БК0010(01)/11/11M - на базе PDP-11 - не было целочисленных mul и div. op-коды были, но аппаратно команды были не реализованы. Даже сдвиг битовый был только одинарным: asl r0 - сдвинуть на один бит влево и вся роскошь. Чего уж тут говорить о Floating Point.


          1. odissey_nemo
            15.12.2022 11:13

            Всё верно. MUL и DIV - это тоже были дополнительные команды. Входящие в состав EIS (Extended Instruction Set).
            А БК, будучи микрокомпьютером, поддерживал только базовый набор команд, от самых первых PDP-11 моделей.
            На машинах 80-х такого не застал, там уж был везде какой-то, да процессор с плавающей запятой и EIS.
            Но следы эпохи до EIS ещё виднелись в инсталляторе. В исходниках, а ОС поставлялась в исходниках и компилировалась под каждую конкретную машину,
            была условная компиляция для машин до EIS, где MUL и DIV эмулировались подпрограммами, реализованными простыми командами, наподобие упомянутых Вами ASR и ASL в т.ч. Помню, что это были очень короткие подпрограммы, 5-10 строк ассемблера, не более.

            И сдвиги были принципиально только однобитовые, система команд была простая и красиво построенная, оптимизациями набора команд DEC не занимался принципиально.
            И это было правильно, мне кажется. Их набор команд был чем-то средним между RISC и CISC. И был он - приятен и очень внятен.
            С ним можно было программировать в кодах! Думаю, что безусловный JMP и сегодня смогу в оперативной памяти составить, после освежения в мозгу :o)
            Только восьмеричная система записи чисел иногда мешала, особенно при переходе с байта на байт в 16-битовых словах.

            Эх, зря DEC не попробовала свой микропроцессор сделать, совместимый по командам с PDP. Можно было бы UNIX на него поставить, а не убогую MS-DOS!
            Но она начала использовать Intel 8086 или 8088(?) в своём "Rainbow" (аналог PC у DEC).
            Учитывая огромную популярность PDP и количество наработанного софта, DEC PC составил бы реальную сильнейшую конкуренцию тогдашнему Intel. Тем более, что 32-битовый вариант системы команд у них уже был опробован, на VAXе.
            Правда, на стороне Intel выступала тогда IBM с Биллом Гейтсом и Полом Алленом. Это и определило "рыночный выбор", похоже.


  1. shiru8bit
    12.12.2022 15:56
    +16

    отказ от музыки в пользу окружающих шумов (идея Кармака),

    Всё же стоит наверное хотя отдалённо иметь представление о предметах статьи. Музыкальный саундтрек Doom один из самых узнаваемых в истории видеоигр. А окружающие шумы с совершенно другой музыкой были в версии для PS1, разработанной другими людьми, и это было спорное решение, которое той версии до сих пор припоминают.


  1. Zara6502
    12.12.2022 17:10
    +11

    я зануда, поэтому не люблю когда для несведущих пишутся статьи с заголовками в стиле "Стив Джобс придумал первый компьютер" или "Стив Джобс придумал первый смартфон".

    Кармак в вольфе и думе реализовал кучу фишек - это правда, он можно сказать открыл направление игр - FPS, таким, какой он есть до сих пор. Но в 1993 3D шутер не был чем-то особенным, такие игры делали уже 10 лет. Вопрос тут как раз в подаче - до Кармака не было шутера где нужно было стрелять в бегающих фантастических монстров, а так же не было движка, который бы мог в таком виде реализовать это без аппаратных фишек специализированного ускорителя, которые в то время ставились в ПК (тут под ПК я понимаю не IBM PC совместимое, а вообще персоналки тех лет.

    Это кстати определило визуальную разницу в играх например на C64 и ZX, первый имел отличный чип для работы с графикой, а последний - нет, поэтому программисты под спектрумы тоже как Кармак превозмогали и писали такое, что иной раз просто поражаешься

    Поэтому ничуть не умоляя профессионализма Кармака давайте не будем ему приписывать те вещи, которые он не совершал (Как в описанном ранее о Стиве Джобсе).


    1. excoder
      12.12.2022 19:52

      Недавно поспорил с Хабром, что это не Стив Джобс изобрёл айфон, но проиграл ???? ... Так что пойду спать в спальнике в офисе твиттера под столом, чтобы стать успешным... Ой, или это из другого персонажа? Кстати, о персонажах. На мой взгляд, характерная черта Кармака и других гениальных создателей (не псевдосоздателей) в том, что они способны вот так вот глубоко погружаться в задачу, при этом свободно игнорируя всё остальное. У меня сложилось впечатление, что похожие люди часто очень токсичны, а иногда и просто злы. Но кажется, это не про Кармака, а наоборот создаёт впечатление приятного в общении человека. Или мне кажется?


      1. Ktator
        12.12.2022 20:45
        +1

        Но кажется, это не про Кармака, а наоборот создаёт впечатление приятного в общении человека. Или мне кажется?

        Это в интервью. В книге "Повелители DOOM" (она заканчивается примерно 2000 годом) пишут, что не очень приятного.

        Полное название

        Д. Кушнер. Повелители DOOM. Как два парня создали культовый шутер и раскачали индустрию видеоигр.


        1. chelovek-jpeg
          12.12.2022 22:08
          +1

          насколько помню из книги, он как начальник был очень требовательный/строгий. Но начальство редко бывает хорошим)


        1. cher-nov
          13.12.2022 07:04
          +1

          Кармак отдал свою кошку на усыпление в приют, потому что мешала ему программировать. :)


          1. Ada_Belotserkovskaya
            13.12.2022 13:27
            +2

            Так развечиваются кумиры детства)


      1. Zara6502
        13.12.2022 05:06

        Болезненная тема для многих, но мои фразы про Джобса несколько иные, всё же iPhone это детище Apple и не важно какая именно роль была у Джобса. Мы же знаем что и Apple I не он спаял, от этого его роль меньше не становится, всё же Возняк в одного Apple не создал бы, другой тип личности.

        Другой вопрос в чем конкретно фишка iPhone, так как лично по моим наблюдениям - это доступность для обывателя, всё же смартфоны с 80-х еще были (и по факту позиционировались) как устройства для бизнеса, для активного делового человека, а Джобс предложил балалайку для домохозяек, где котики и подружки. И так как рынок реально выстрелил, то появилась благодатная почва для инноваций, хотя лично я считаю интерфейс с икноками - пережитком нулевых, а тач-скрины - одним из самых неудобных интерфейсов в истории, НО!!!!!! ВАЖНО понимать, что тач даёт ультра-гибкость управления и при отсутствии кривых рук (а пока эта эпоха не наступила) заточенный софт под такое управление.

        Касательно Кармака - мне никогда не было интересно у людей, которых я могу оценить как профессионалов чего-либо, узнавать их личные качества. Для меня Кармак-программист и Кармак-личность - два разделяемых объекта. И при интересе к программерским фишкам у меня напрочь отсутствует интерес к его личной жизни и качествам.


        1. Dr_Faksov
          13.12.2022 06:56

          Тачскрин - это постоянное разглядывание грязного экрана. Почти мазохизм.


          1. Zara6502
            13.12.2022 07:45
            -1

            отчасти, но я скорее о том, что нажатие на кнопку, физическую - это механический процесс с фиксацией факта нажатия, а тач - это набор алгоритмов, который пытается на основании вашего профиля работы с устройством предсказывать и интерпретировать ваши касания. У меня нет и не было айфонов, не знаю как там (говорят неплохо), но в андроид устройствах с этим всё очень плохо.

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


            1. K0styan
              13.12.2022 10:48
              +2

              WinPhone пытался парадигму сменить, буквально представляя экран как маленькое окошко, которое пользователь двигает по большому плакату с разными данными. Не оценили.


              1. Zara6502
                13.12.2022 11:40
                +1

                с помощью Square Home я сделал почти такое же на андроиде, но все равно это не то. Вообще UI на современных системах, особенно в вэб исполнении если что-то универсальное - это такой вырвиглаз. Особенно доставляют пустые белые квадраты где чтобы что-то ввести нужно ткнуть в экран и попасть в поле для ввода, визуально оно никак не отличается от самой формы, а так же исчезающие или вовсе непоказывающиеся полоски скролла.


          1. K0styan
            13.12.2022 10:45
            +2

            Совмещение телефона с постоянно носимым информационным терминалом - уже разглядывание грязного экрана: не ладонью, так ухом...

            Но вот принять это и целенаправленно поработать с проблемой, добавив олеофобное покрытие, до Apple никто не удосужился.


            1. Zara6502
              13.12.2022 11:20

              Ну справедливости ради экраны не были никогда особо заляпанными, они были матовые в основном и без стекла. При этом встретить старый КПК с разбитым экраном было весьма трудно, а сегодня это — норма. Разница именно в том кто этими устройствами пользуется. Олеофобность покрытия нивелируется необходимостью клеить защитное стекло, а без такого стекла можно огрести проблем. Я телефоны не роняю почти, отношусь бережно, при этом уже сменил 3 стекла, супруга — 2. А так это были бы экраны, а целесообразность замены экрана для многих телефонов просто отсутствует.
              Поэтому, как я и заметил ранее, Эпл тут только фаворит в том, что предложили аппарат для домохозяек.


              1. K0styan
                13.12.2022 13:03

                А это и есть способ сделать продукт, который оценят и домохозяйки - внимание к мелочам. Иногда бывают проколы типа anntennagate, но в целом подход такой.


                1. Zara6502
                  13.12.2022 17:30

                  так вроде я сам об этом и сказал, речь про тот факт что Джобс не был первым кто сделал смартфон, он был первым кто сделал iPhone с теми характеристиками, которые его отличали от конкурентов. Мы же не говорим что Маск придумал электромобили, они вообще-то были еще в 19 веке.


    1. mpa4b
      12.12.2022 20:10

      Пока возможностей VIC'а в C64 хватало -- конечно игры были веселее на C64. Как только перестало хватать -- сразу оказалось, что на спектруме, например, есть R-Type нормальный и динамичный, а на C64 какой-то треш. Или что fps (frames per second) в Fairlight на спектруме как-то сильно побольше, чем на C64. Так что -- превосходство C64 такое себе.


      1. Zara6502
        13.12.2022 04:53

        например, есть R-Type нормальный и динамичный

        в данном случае это дело вкуса, я не перевариваю спековский способ отображения цвета и вырвиглазную фиксированную палитру, в 90-е я тупо убирал цвет и играл в оттенках серого.

        а на C64 какой-то треш

        О данной игре ничего не знал, зашёл посмотреть на ютуб, пардон конечно, но спековская версия ужасна, как по цветовому оформлению, так и по тормозам.

        Или что fps (frames per second)

        Вы надеюсь в курсе, что FPS у C64/AtariXL_XE/NES фиксирован на 50/60 Гц в зависимости от региона? А вот на спеке fps для многих игр всегда гуляет, если посмотреть на тот же R-Type то это видно по динамичным сценам.

        Так что -- превосходство C64 такое себе

        Ну и всё же стоит внимательно читать что пишут люди, а не зацикливаться на том что у кого болит. Я написал что "Это кстати определило визуальную разницу в играх например на C64 и ZX, первый имел отличный чип для работы с графикой, а последний - нет, поэтому программисты под спектрумы тоже как Кармак превозмогали и писали такое, что иной раз просто поражаешься" и если бы вы были внимательны, то из моих слов можно вынести две мысли и только две: 1) Наличие специализированного чипа в C64 давало визуальную разницу в играх в сравнении со спеком, 2) Есть масса отличных игр на спектруме и масса разработчиков (в том числе современных), перед которыми я склоняю голову.

        Я вообще не даю оценок "лучше/хуже", так как это скорее дело вкуса и глупо отрицать влияние ZX на мир пк и игр в целом. Для меня это второй ПК после Атари 130ХЕ, за спеком я провёл 4 года. Меня обвинять в унижении или принебрежении к ZX это прям фуфуфу. Я рассматривал объективные аппаратные возможности и аспекты с ними связанные, будьте внимательны в попытках устроить холивар.


        1. mpa4b
          13.12.2022 18:52

          Вы надеюсь в курсе, что FPS у C64/AtariXL_XE/NES фиксирован на 50/60 Гц в зависимости от региона? А вот на спеке fps для многих игр всегда гуляет, если посмотреть на тот же R-Type то это видно по динамичным сценам.

          Вы, надеюсь, посмотрели в ютубе fairlight там и там? Где фпс не гуляет? Где он больше?

          r-type на комоде отличается крайне небольшим размером и количеством спрайтов, в то время как на спектруме и (программные) спрайты больше и их количество.

          На комоде упёрлись в аппаратные возможности VIC'а (8 спрайтов 24x21, можно переиспользовать), а на спектруме изначально был программный рендеринг более-менее быстрым (по сравнению с 6502 в комоде) процессором Z80. Вот тут-то спектрум и выигрывает.

          Меня обвинять в унижении или принебрежении к ZX это прям фуфуфу.

          А это уже попытка приписать то, чего не говорилось :)


  1. aMster1
    12.12.2022 21:12
    +3

    Если подходить чисто технически, то начинал он в 20 веке. И имя себе сделал в 20.

    P. S. Один мой хороший знакомый, в разделе благодарности своего диплома, поблагодарил именно Кармака. Как он рассказывал, момент когда один из членов комиссии добрался до этого места он отлично увидел :) НГУ, 2000й год.


  1. chelovek-jpeg
    12.12.2022 22:04

    Забавное совпадение, только вчера читал статью с его участием https://alenacpp.blogspot.com/2005/09/quakecon-2004.html


  1. Alcpp
    12.12.2022 23:08

    "Кармак действительно использовал кучу нестандартных приёмов вроде конверсии указателей или выхода за границы объектов, чтобы в циклах получать доступ к другому объекту, который гарантировано идёт следом."

    Это используется в арифметике указателей, которую к тому времени уже изучали на уроках computer science.


  1. Jeditobe
    13.12.2022 10:38

    Двоичное разбиение пространства и BSP-деревья были впервые применены специалистами компании LucasArts в начале 80-х годов. 


  1. 0Bannon
    13.12.2022 11:32
    -1

    Круто. Спасибо. Понравилась статейка.


  1. beremour
    13.12.2022 14:45

    На слабеньких 486SX, без видеокарт

    Это вы прям перескочили :-) Первый wolf у меня игрался на AT-286 с памятью 1М


  1. gsaw
    13.12.2022 16:42
    +1

    Его сильной стороной была сосредоточенность. 

    Тогда не было ни хабра, ни тик-тока прастигоспади, ему просто не на что было отвлекаться ))

    Но да, это не про меня.

    С другой стороны, какая же это была боль в начале 90-х, без доступа к информации пытаться учиться программировать по хелпу к FoxPro и Турбо Паскалю. За книгами надо было ехать в соседний большой город.

    Кармак крут.


    1. msdos9
      13.12.2022 19:28

      какая же это была боль в начале 90-х, без доступа к информации пытаться учиться программировать по хелпу к FoxPro и Турбо Паскалю.

      Верно. Боль.

      Но те, кто прошёл эти испытания, практически наверняка становился профессионалом... ????????‍♂️


  1. victor-homyakov
    13.12.2022 17:44
    +1

    кучу нестандартных приёмов вроде конверсии указателей или выхода за границы объектов, чтобы в циклах получать доступ к другому объекту, который гарантировано идёт следом

    Так и не увидел в статье описания кучи нестандартных приёмов и хаков, написано только про BSP.


  1. Boris3000
    13.12.2022 18:52
    -3

    "Кармак действительно использовал кучу нестандартных приёмов"

    Времена меняются -- нынче такие приёмы называются индусским кодом.


  1. alliumnsk
    13.12.2022 21:47

    Оффтоп (смотрю фото) А как горб лечить-то? У Кармака есть метод предложить?


  1. Joric
    14.12.2022 00:23
    +4

    Ализар себя переализарил тут. Хоть бы посмотрел как Carmack пишется. И "джон-движок", что? Статья позорная абсолютно.