Джон Кармак вместе с тёзкой Джоном Ромеро стали родоначальниками игрового жанра 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.
В 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).
В качестве потенциального решения предлагалась так называемая «матрица приоритетов»:
Матрица показывает отношения между тремя объектами на основе трёх разделяющих плоскостей и расположения точки обзора камеры — если объект заслоняет объект , тогда запись в матрице будет равна .
Исследователи предложили реализовать матрицу аппаратно и пересчитывать каждый кадр. Основной недостаток заключается в том, что для представления сцены с объектов требуется матрица размером . Поэтому исследователи переходят к изучению вопроса о том, возможно ли представить матрицу окклюзии в виде «списка приоритетов» и использовать плоскости разбиения для упорядочивания объектов в сцене для рендеринга.
Только в 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)
cher-nov
12.12.2022 14:10+15На слабеньких 486SX, без видеокарт (!)
Это не так. Видеоадаптеры тогда существовали именно как карты расширения, их единственное отличие от видеокарт - отсутствие специализированного сопроцессора (GPU). Но своя собственная память и регистры управления у них были уже тогда, и эффективная работа со всем этим требовала особых умений и квалификации ничуть не меньше, чем сейчас.
отказ от музыки в пользу окружающих шумов (идея Кармака)
В Doom не было музыки? А мужики-то и не знают. Даже в первом Quake она ещё была.
screwer
12.12.2022 14:25+3И во втором, и в третьем
chelovek-jpeg
12.12.2022 22:11+7кстати из-за пиратства многие действительно не знали, что в квейках была музыка))
MindPhaser34
15.12.2022 07:23причем огненная музыка =) До сих пор с первыми моментами quake 2 сразу вспоминаются гитарные рифы саундтрека!
thevlad
12.12.2022 14:47+1Видеокарты это был кусок памяти(frame buffer) либо просто линейный, либо с переключением банков (если совсем древние). Единственная задача была перегнать туда данные. Настройка режима и других параметров обычно производилась через прерывания VESA биоса. Самое сложное по скорости это был 3д растеризатор реализованный на cpu.
barbaris76
12.12.2022 16:17+3Ну, не так всё просто. На том же 486SX и ISAшной Trident 9000 DOOM у меня бегал в окне 50% от исходного, иначе это было слайдшоу. А на PCIной S3 Trio всё просто летало в фуллскрине.
vanxant
12.12.2022 16:34+6Тут скорее проблемы с шиной, у ISA были жалкие 16 бит на 8 МГц, а у PCI уже 32х33
thevlad
12.12.2022 16:42+2Зависит от шины и скорости памяти, s3 trio умело в плоский буфер в 32 битном режиме, было pci и относительно быстрая память. Trident висела на isa и доступ к памяти фреймбуфера был bank switched.
PS: у меня как раз были такая же эволюция железок в конце 90х 486/Trident, Pentium/S3 Trio, и я писал для них крутящиеся кубики, когда временами прогуливал школу.
vicsoftware
12.12.2022 19:42Какое отношение плоский буфер, и bank-switch имеют к Doom, который работал в 13 -о режиме, который 320х200 и занимал чуть меньше одного сегмента памяти?
thevlad
12.12.2022 20:07Это было про большие разрешения и Quake в частности. По поводу DOOM он работал в 32 битном режиме. Сегментация и bank switch ортогональные концепции, можно было иметь плоскую память в 32 битном защищенном режиме, но видюха все равно была bank-switched. В случаи 320x200 фрэймбуфер умещался в один сегмент/банк.
vicsoftware
12.12.2022 20:18Запускать Quake на ISA карте - это надо было быть большим любителем боли :)
sidisko
12.12.2022 22:12+5в первой кваке музыка была записана на диск как audioCD и плеилась как в обычном CD проигрывателе, минуя цпу. собственно многие потом в музыкальных центрах и слушали саундтрек к игре.
Jianke
12.12.2022 14:10+5Иммунитет от выгорания?
...возрасте примерно 20–25 лет, за этот период он создал примерно два десятка игр
Это и есть секрет отсутствия выгорания. В этом возрасте организм очень быстро восстанавливается.
Format-X22
12.12.2022 14:19+8Нет, это эмоциональная стабильность и отсутствие выброса стрессового микса в кровь из-за проблем, от которых ты не помрешь и от которых не нужно прямо сейчас бежать по саванне с копьем. Это и вызывает основную усталость и потом выгорание. Умеешь с этим работать - всё прекрасно в твоей жизни, ты эффективен.
AntonPolyakov
12.12.2022 15:32+4На слабеньких 486SX, без видеокарт (!) они выдали настоящий 3D-шутер без лагов
Doom успешно бегал на 386DX с 4 мегами оперативки. Это были минимальные требования. Ну а Wolf 3D и на 286-х шел с 640 кБ оперативки. 486-й (даже SX) - это уже роскошь.
DROS
13.12.2022 10:50Ооооо... 386й и 4метра памяти! У меня первый дум "бегал" только если уменьшить экран на 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.
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)
Videoman
13.12.2022 18:12На БК0010(01)/11/11M - на базе PDP-11 - не было целочисленных mul и div. op-коды были, но аппаратно команды были не реализованы. Даже сдвиг битовый был только одинарным: asl r0 - сдвинуть на один бит влево и вся роскошь. Чего уж тут говорить о Floating Point.
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 с Биллом Гейтсом и Полом Алленом. Это и определило "рыночный выбор", похоже.
shiru8bit
12.12.2022 15:56+16отказ от музыки в пользу окружающих шумов (идея Кармака),
Всё же стоит наверное хотя отдалённо иметь представление о предметах статьи. Музыкальный саундтрек Doom один из самых узнаваемых в истории видеоигр. А окружающие шумы с совершенно другой музыкой были в версии для PS1, разработанной другими людьми, и это было спорное решение, которое той версии до сих пор припоминают.
Zara6502
12.12.2022 17:10+11я зануда, поэтому не люблю когда для несведущих пишутся статьи с заголовками в стиле "Стив Джобс придумал первый компьютер" или "Стив Джобс придумал первый смартфон".
Кармак в вольфе и думе реализовал кучу фишек - это правда, он можно сказать открыл направление игр - FPS, таким, какой он есть до сих пор. Но в 1993 3D шутер не был чем-то особенным, такие игры делали уже 10 лет. Вопрос тут как раз в подаче - до Кармака не было шутера где нужно было стрелять в бегающих фантастических монстров, а так же не было движка, который бы мог в таком виде реализовать это без аппаратных фишек специализированного ускорителя, которые в то время ставились в ПК (тут под ПК я понимаю не IBM PC совместимое, а вообще персоналки тех лет.
Это кстати определило визуальную разницу в играх например на C64 и ZX, первый имел отличный чип для работы с графикой, а последний - нет, поэтому программисты под спектрумы тоже как Кармак превозмогали и писали такое, что иной раз просто поражаешься
Поэтому ничуть не умоляя профессионализма Кармака давайте не будем ему приписывать те вещи, которые он не совершал (Как в описанном ранее о Стиве Джобсе).
excoder
12.12.2022 19:52Недавно поспорил с Хабром, что это не Стив Джобс изобрёл айфон, но проиграл ???? ... Так что пойду спать в спальнике в офисе твиттера под столом, чтобы стать успешным... Ой, или это из другого персонажа? Кстати, о персонажах. На мой взгляд, характерная черта Кармака и других гениальных создателей (не псевдосоздателей) в том, что они способны вот так вот глубоко погружаться в задачу, при этом свободно игнорируя всё остальное. У меня сложилось впечатление, что похожие люди часто очень токсичны, а иногда и просто злы. Но кажется, это не про Кармака, а наоборот создаёт впечатление приятного в общении человека. Или мне кажется?
Ktator
12.12.2022 20:45+1Но кажется, это не про Кармака, а наоборот создаёт впечатление приятного в общении человека. Или мне кажется?
Это в интервью. В книге "Повелители DOOM" (она заканчивается примерно 2000 годом) пишут, что не очень приятного.
Полное название
Д. Кушнер. Повелители DOOM. Как два парня создали культовый шутер и раскачали индустрию видеоигр.
chelovek-jpeg
12.12.2022 22:08+1насколько помню из книги, он как начальник был очень требовательный/строгий. Но начальство редко бывает хорошим)
cher-nov
13.12.2022 07:04+1Кармак отдал свою кошку
на усыплениев приют, потому что мешала ему программировать. :)
Zara6502
13.12.2022 05:06Болезненная тема для многих, но мои фразы про Джобса несколько иные, всё же iPhone это детище Apple и не важно какая именно роль была у Джобса. Мы же знаем что и Apple I не он спаял, от этого его роль меньше не становится, всё же Возняк в одного Apple не создал бы, другой тип личности.
Другой вопрос в чем конкретно фишка iPhone, так как лично по моим наблюдениям - это доступность для обывателя, всё же смартфоны с 80-х еще были (и по факту позиционировались) как устройства для бизнеса, для активного делового человека, а Джобс предложил балалайку для домохозяек, где котики и подружки. И так как рынок реально выстрелил, то появилась благодатная почва для инноваций, хотя лично я считаю интерфейс с икноками - пережитком нулевых, а тач-скрины - одним из самых неудобных интерфейсов в истории, НО!!!!!! ВАЖНО понимать, что тач даёт ультра-гибкость управления и при отсутствии кривых рук (а пока эта эпоха не наступила) заточенный софт под такое управление.
Касательно Кармака - мне никогда не было интересно у людей, которых я могу оценить как профессионалов чего-либо, узнавать их личные качества. Для меня Кармак-программист и Кармак-личность - два разделяемых объекта. И при интересе к программерским фишкам у меня напрочь отсутствует интерес к его личной жизни и качествам.
Dr_Faksov
13.12.2022 06:56Тачскрин - это постоянное разглядывание грязного экрана. Почти мазохизм.
Zara6502
13.12.2022 07:45-1отчасти, но я скорее о том, что нажатие на кнопку, физическую - это механический процесс с фиксацией факта нажатия, а тач - это набор алгоритмов, который пытается на основании вашего профиля работы с устройством предсказывать и интерпретировать ваши касания. У меня нет и не было айфонов, не знаю как там (говорят неплохо), но в андроид устройствах с этим всё очень плохо.
из того что я реально одобряю - это ввод через рисование линий от символа к символу, по буквам я текст не набираю уже очень давно. В механическом исполнении такое невозможно.
K0styan
13.12.2022 10:48+2WinPhone пытался парадигму сменить, буквально представляя экран как маленькое окошко, которое пользователь двигает по большому плакату с разными данными. Не оценили.
Zara6502
13.12.2022 11:40+1с помощью Square Home я сделал почти такое же на андроиде, но все равно это не то. Вообще UI на современных системах, особенно в вэб исполнении если что-то универсальное - это такой вырвиглаз. Особенно доставляют пустые белые квадраты где чтобы что-то ввести нужно ткнуть в экран и попасть в поле для ввода, визуально оно никак не отличается от самой формы, а так же исчезающие или вовсе непоказывающиеся полоски скролла.
K0styan
13.12.2022 10:45+2Совмещение телефона с постоянно носимым информационным терминалом - уже разглядывание грязного экрана: не ладонью, так ухом...
Но вот принять это и целенаправленно поработать с проблемой, добавив олеофобное покрытие, до Apple никто не удосужился.
Zara6502
13.12.2022 11:20Ну справедливости ради экраны не были никогда особо заляпанными, они были матовые в основном и без стекла. При этом встретить старый КПК с разбитым экраном было весьма трудно, а сегодня это — норма. Разница именно в том кто этими устройствами пользуется. Олеофобность покрытия нивелируется необходимостью клеить защитное стекло, а без такого стекла можно огрести проблем. Я телефоны не роняю почти, отношусь бережно, при этом уже сменил 3 стекла, супруга — 2. А так это были бы экраны, а целесообразность замены экрана для многих телефонов просто отсутствует.
Поэтому, как я и заметил ранее, Эпл тут только фаворит в том, что предложили аппарат для домохозяек.K0styan
13.12.2022 13:03А это и есть способ сделать продукт, который оценят и домохозяйки - внимание к мелочам. Иногда бывают проколы типа anntennagate, но в целом подход такой.
Zara6502
13.12.2022 17:30так вроде я сам об этом и сказал, речь про тот факт что Джобс не был первым кто сделал смартфон, он был первым кто сделал iPhone с теми характеристиками, которые его отличали от конкурентов. Мы же не говорим что Маск придумал электромобили, они вообще-то были еще в 19 веке.
mpa4b
12.12.2022 20:10Пока возможностей VIC'а в C64 хватало -- конечно игры были веселее на C64. Как только перестало хватать -- сразу оказалось, что на спектруме, например, есть R-Type нормальный и динамичный, а на C64 какой-то треш. Или что fps (frames per second) в Fairlight на спектруме как-то сильно побольше, чем на C64. Так что -- превосходство C64 такое себе.
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 это прям фуфуфу. Я рассматривал объективные аппаратные возможности и аспекты с ними связанные, будьте внимательны в попытках устроить холивар.
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 это прям фуфуфу.
А это уже попытка приписать то, чего не говорилось :)
aMster1
12.12.2022 21:12+3Если подходить чисто технически, то начинал он в 20 веке. И имя себе сделал в 20.
P. S. Один мой хороший знакомый, в разделе благодарности своего диплома, поблагодарил именно Кармака. Как он рассказывал, момент когда один из членов комиссии добрался до этого места он отлично увидел :) НГУ, 2000й год.
chelovek-jpeg
12.12.2022 22:04Забавное совпадение, только вчера читал статью с его участием https://alenacpp.blogspot.com/2005/09/quakecon-2004.html
Alcpp
12.12.2022 23:08"Кармак действительно использовал кучу нестандартных приёмов вроде конверсии указателей или выхода за границы объектов, чтобы в циклах получать доступ к другому объекту, который гарантировано идёт следом."
Это используется в арифметике указателей, которую к тому времени уже изучали на уроках computer science.
beremour
13.12.2022 14:45На слабеньких 486SX, без видеокарт
Это вы прям перескочили :-) Первый wolf у меня игрался на AT-286 с памятью 1М
gsaw
13.12.2022 16:42+1Его сильной стороной была сосредоточенность.
Тогда не было ни хабра, ни тик-тока прастигоспади, ему просто не на что было отвлекаться ))
Но да, это не про меня.
С другой стороны, какая же это была боль в начале 90-х, без доступа к информации пытаться учиться программировать по хелпу к FoxPro и Турбо Паскалю. За книгами надо было ехать в соседний большой город.
Кармак крут.
msdos9
13.12.2022 19:28какая же это была боль в начале 90-х, без доступа к информации пытаться учиться программировать по хелпу к FoxPro и Турбо Паскалю.
Верно. Боль.
Но те, кто прошёл эти испытания, практически наверняка становился профессионалом... ????????♂️
victor-homyakov
13.12.2022 17:44+1кучу нестандартных приёмов вроде конверсии указателей или выхода за границы объектов, чтобы в циклах получать доступ к другому объекту, который гарантировано идёт следом
Так и не увидел в статье описания кучи нестандартных приёмов и хаков, написано только про BSP.
Boris3000
13.12.2022 18:52-3"Кармак действительно использовал кучу нестандартных приёмов"
Времена меняются -- нынче такие приёмы называются индусским кодом.
alliumnsk
13.12.2022 21:47Оффтоп (смотрю фото) А как горб лечить-то? У Кармака есть метод предложить?
Joric
14.12.2022 00:23+4Ализар себя переализарил тут. Хоть бы посмотрел как Carmack пишется. И "джон-движок", что? Статья позорная абсолютно.
v1000
В свое время понравилось, как он решал проблемы создания очков виртуальной реальности, и возмущался, что мы можем получать сигнал с другого устройства на другой точке земного шара быстрее, чем передать этот сигнал через метровый кабель от самого устройства до телевизора.
Aquahawk
И, что интересно, революции в этом так и не произошло, и все эти 240 герц это не сколько про отклик сколько про плавность
Gugic
Квест принес людям доступный и хорошо работающий беспроводной PCVR, что, если вдуматься (в сильно повышенные требования к отклику) - очень круто. Я лично теперь никакой проводной VR шлем даже в перспективе не рассматриваю.