Комментарии 63
В свое время понравилось, как он решал проблемы создания очков виртуальной реальности, и возмущался, что мы можем получать сигнал с другого устройства на другой точке земного шара быстрее, чем передать этот сигнал через метровый кабель от самого устройства до телевизора.
И, что интересно, революции в этом так и не произошло, и все эти 240 герц это не сколько про отклик сколько про плавность
На слабеньких 486SX, без видеокарт (!)
Это не так. Видеоадаптеры тогда существовали именно как карты расширения, их единственное отличие от видеокарт - отсутствие специализированного сопроцессора (GPU). Но своя собственная память и регистры управления у них были уже тогда, и эффективная работа со всем этим требовала особых умений и квалификации ничуть не меньше, чем сейчас.
отказ от музыки в пользу окружающих шумов (идея Кармака)
В Doom не было музыки? А мужики-то и не знают. Даже в первом Quake она ещё была.
И во втором, и в третьем
Видеокарты это был кусок памяти(frame buffer) либо просто линейный, либо с переключением банков (если совсем древние). Единственная задача была перегнать туда данные. Настройка режима и других параметров обычно производилась через прерывания VESA биоса. Самое сложное по скорости это был 3д растеризатор реализованный на cpu.
И тем не менее, видеокарты (!) были. Не было 3D-ускорителей для PC.
Ну, не так всё просто. На том же 486SX и ISAшной Trident 9000 DOOM у меня бегал в окне 50% от исходного, иначе это было слайдшоу. А на PCIной S3 Trio всё просто летало в фуллскрине.
Тут скорее проблемы с шиной, у ISA были жалкие 16 бит на 8 МГц, а у PCI уже 32х33
Зависит от шины и скорости памяти, s3 trio умело в плоский буфер в 32 битном режиме, было pci и относительно быстрая память. Trident висела на isa и доступ к памяти фреймбуфера был bank switched.
PS: у меня как раз были такая же эволюция железок в конце 90х 486/Trident, Pentium/S3 Trio, и я писал для них крутящиеся кубики, когда временами прогуливал школу.
Какое отношение плоский буфер, и bank-switch имеют к Doom, который работал в 13 -о режиме, который 320х200 и занимал чуть меньше одного сегмента памяти?
Это было про большие разрешения и Quake в частности. По поводу DOOM он работал в 32 битном режиме. Сегментация и bank switch ортогональные концепции, можно было иметь плоскую память в 32 битном защищенном режиме, но видюха все равно была bank-switched. В случаи 320x200 фрэймбуфер умещался в один сегмент/банк.
в первой кваке музыка была записана на диск как audioCD и плеилась как в обычном CD проигрывателе, минуя цпу. собственно многие потом в музыкальных центрах и слушали саундтрек к игре.
Нет, это эмоциональная стабильность и отсутствие выброса стрессового микса в кровь из-за проблем, от которых ты не помрешь и от которых не нужно прямо сейчас бежать по саванне с копьем. Это и вызывает основную усталость и потом выгорание. Умеешь с этим работать - всё прекрасно в твоей жизни, ты эффективен.
Красивый комп у Кармака. Очень стильно.
На слабеньких 486SX, без видеокарт (!) они выдали настоящий 3D-шутер без лагов
Doom успешно бегал на 386DX с 4 мегами оперативки. Это были минимальные требования. Ну а Wolf 3D и на 286-х шел с 640 кБ оперативки. 486-й (даже SX) - это уже роскошь.
Ооооо... 386й и 4метра памяти! У меня первый дум "бегал" только если уменьшить экран на 1 шаг, иначе тормозил.
В статье восклицательный знак не там. Я бы его поставил 486SX(!) - вот так. Потому что 486SX бомжеватая версия нормального 486, без FPU. Молодому поколению может диким показаться что процессор может не иметь модуля по работе с плавающей точкой - FPU (float point unit). Потому, что начиная с пентиума эта всегда часть CPU.
486SX были сравнимы по цене 386DX. И где-то DX и клал на лопатки, за счет наличия FPU. А бывало, что-то даже не запускалось, или запускалось с просадкой по производительности за счет софтовой эмуляции этих самы float point вычислений. Не могу привести пример, у меня был доступ к 486sx в старших классах школы, очень давно, году так 93-94.
Процессор с плавающей точкой - это была роскошь, не везде доступная. В конце 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)
На БК0010(01)/11/11M - на базе PDP-11 - не было целочисленных mul и div. op-коды были, но аппаратно команды были не реализованы. Даже сдвиг битовый был только одинарным: asl r0 - сдвинуть на один бит влево и вся роскошь. Чего уж тут говорить о Floating Point.
Всё верно. 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 с Биллом Гейтсом и Полом Алленом. Это и определило "рыночный выбор", похоже.
У троек DX/SX различается шириной шин, а не наличием или отсутствием fpu как для 486
отказ от музыки в пользу окружающих шумов (идея Кармака),
Всё же стоит наверное хотя отдалённо иметь представление о предметах статьи. Музыкальный саундтрек Doom один из самых узнаваемых в истории видеоигр. А окружающие шумы с совершенно другой музыкой были в версии для PS1, разработанной другими людьми, и это было спорное решение, которое той версии до сих пор припоминают.
я зануда, поэтому не люблю когда для несведущих пишутся статьи с заголовками в стиле "Стив Джобс придумал первый компьютер" или "Стив Джобс придумал первый смартфон".
Кармак в вольфе и думе реализовал кучу фишек - это правда, он можно сказать открыл направление игр - FPS, таким, какой он есть до сих пор. Но в 1993 3D шутер не был чем-то особенным, такие игры делали уже 10 лет. Вопрос тут как раз в подаче - до Кармака не было шутера где нужно было стрелять в бегающих фантастических монстров, а так же не было движка, который бы мог в таком виде реализовать это без аппаратных фишек специализированного ускорителя, которые в то время ставились в ПК (тут под ПК я понимаю не IBM PC совместимое, а вообще персоналки тех лет.
Это кстати определило визуальную разницу в играх например на C64 и ZX, первый имел отличный чип для работы с графикой, а последний - нет, поэтому программисты под спектрумы тоже как Кармак превозмогали и писали такое, что иной раз просто поражаешься
Поэтому ничуть не умоляя профессионализма Кармака давайте не будем ему приписывать те вещи, которые он не совершал (Как в описанном ранее о Стиве Джобсе).
Недавно поспорил с Хабром, что это не Стив Джобс изобрёл айфон, но проиграл ? ... Так что пойду спать в спальнике в офисе твиттера под столом, чтобы стать успешным... Ой, или это из другого персонажа? Кстати, о персонажах. На мой взгляд, характерная черта Кармака и других гениальных создателей (не псевдосоздателей) в том, что они способны вот так вот глубоко погружаться в задачу, при этом свободно игнорируя всё остальное. У меня сложилось впечатление, что похожие люди часто очень токсичны, а иногда и просто злы. Но кажется, это не про Кармака, а наоборот создаёт впечатление приятного в общении человека. Или мне кажется?
Но кажется, это не про Кармака, а наоборот создаёт впечатление приятного в общении человека. Или мне кажется?
Это в интервью. В книге "Повелители DOOM" (она заканчивается примерно 2000 годом) пишут, что не очень приятного.
Полное название
Д. Кушнер. Повелители DOOM. Как два парня создали культовый шутер и раскачали индустрию видеоигр.
Болезненная тема для многих, но мои фразы про Джобса несколько иные, всё же iPhone это детище Apple и не важно какая именно роль была у Джобса. Мы же знаем что и Apple I не он спаял, от этого его роль меньше не становится, всё же Возняк в одного Apple не создал бы, другой тип личности.
Другой вопрос в чем конкретно фишка iPhone, так как лично по моим наблюдениям - это доступность для обывателя, всё же смартфоны с 80-х еще были (и по факту позиционировались) как устройства для бизнеса, для активного делового человека, а Джобс предложил балалайку для домохозяек, где котики и подружки. И так как рынок реально выстрелил, то появилась благодатная почва для инноваций, хотя лично я считаю интерфейс с икноками - пережитком нулевых, а тач-скрины - одним из самых неудобных интерфейсов в истории, НО!!!!!! ВАЖНО понимать, что тач даёт ультра-гибкость управления и при отсутствии кривых рук (а пока эта эпоха не наступила) заточенный софт под такое управление.
Касательно Кармака - мне никогда не было интересно у людей, которых я могу оценить как профессионалов чего-либо, узнавать их личные качества. Для меня Кармак-программист и Кармак-личность - два разделяемых объекта. И при интересе к программерским фишкам у меня напрочь отсутствует интерес к его личной жизни и качествам.
Тачскрин - это постоянное разглядывание грязного экрана. Почти мазохизм.
отчасти, но я скорее о том, что нажатие на кнопку, физическую - это механический процесс с фиксацией факта нажатия, а тач - это набор алгоритмов, который пытается на основании вашего профиля работы с устройством предсказывать и интерпретировать ваши касания. У меня нет и не было айфонов, не знаю как там (говорят неплохо), но в андроид устройствах с этим всё очень плохо.
из того что я реально одобряю - это ввод через рисование линий от символа к символу, по буквам я текст не набираю уже очень давно. В механическом исполнении такое невозможно.
WinPhone пытался парадигму сменить, буквально представляя экран как маленькое окошко, которое пользователь двигает по большому плакату с разными данными. Не оценили.
с помощью Square Home я сделал почти такое же на андроиде, но все равно это не то. Вообще UI на современных системах, особенно в вэб исполнении если что-то универсальное - это такой вырвиглаз. Особенно доставляют пустые белые квадраты где чтобы что-то ввести нужно ткнуть в экран и попасть в поле для ввода, визуально оно никак не отличается от самой формы, а так же исчезающие или вовсе непоказывающиеся полоски скролла.
Совмещение телефона с постоянно носимым информационным терминалом - уже разглядывание грязного экрана: не ладонью, так ухом...
Но вот принять это и целенаправленно поработать с проблемой, добавив олеофобное покрытие, до Apple никто не удосужился.
Поэтому, как я и заметил ранее, Эпл тут только фаворит в том, что предложили аппарат для домохозяек.
А это и есть способ сделать продукт, который оценят и домохозяйки - внимание к мелочам. Иногда бывают проколы типа anntennagate, но в целом подход такой.
Пока возможностей VIC'а в C64 хватало -- конечно игры были веселее на C64. Как только перестало хватать -- сразу оказалось, что на спектруме, например, есть R-Type нормальный и динамичный, а на C64 какой-то треш. Или что fps (frames per second) в Fairlight на спектруме как-то сильно побольше, чем на C64. Так что -- превосходство C64 такое себе.
например, есть 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 это прям фуфуфу. Я рассматривал объективные аппаратные возможности и аспекты с ними связанные, будьте внимательны в попытках устроить холивар.
Вы надеюсь в курсе, что FPS у C64/AtariXL_XE/NES фиксирован на 50/60 Гц в зависимости от региона? А вот на спеке fps для многих игр всегда гуляет, если посмотреть на тот же R-Type то это видно по динамичным сценам.
Вы, надеюсь, посмотрели в ютубе fairlight там и там? Где фпс не гуляет? Где он больше?
r-type на комоде отличается крайне небольшим размером и количеством спрайтов, в то время как на спектруме и (программные) спрайты больше и их количество.
На комоде упёрлись в аппаратные возможности VIC'а (8 спрайтов 24x21, можно переиспользовать), а на спектруме изначально был программный рендеринг более-менее быстрым (по сравнению с 6502 в комоде) процессором Z80. Вот тут-то спектрум и выигрывает.
Меня обвинять в унижении или принебрежении к ZX это прям фуфуфу.
А это уже попытка приписать то, чего не говорилось :)
Если подходить чисто технически, то начинал он в 20 веке. И имя себе сделал в 20.
P. S. Один мой хороший знакомый, в разделе благодарности своего диплома, поблагодарил именно Кармака. Как он рассказывал, момент когда один из членов комиссии добрался до этого места он отлично увидел :) НГУ, 2000й год.
Забавное совпадение, только вчера читал статью с его участием https://alenacpp.blogspot.com/2005/09/quakecon-2004.html
"Кармак действительно использовал кучу нестандартных приёмов вроде конверсии указателей или выхода за границы объектов, чтобы в циклах получать доступ к другому объекту, который гарантировано идёт следом."
Это используется в арифметике указателей, которую к тому времени уже изучали на уроках computer science.
Круто. Спасибо. Понравилась статейка.
На слабеньких 486SX, без видеокарт
Это вы прям перескочили :-) Первый wolf у меня игрался на AT-286 с памятью 1М
Его сильной стороной была сосредоточенность.
Тогда не было ни хабра, ни тик-тока прастигоспади, ему просто не на что было отвлекаться ))
Но да, это не про меня.
С другой стороны, какая же это была боль в начале 90-х, без доступа к информации пытаться учиться программировать по хелпу к FoxPro и Турбо Паскалю. За книгами надо было ехать в соседний большой город.
Кармак крут.
кучу нестандартных приёмов вроде конверсии указателей или выхода за границы объектов, чтобы в циклах получать доступ к другому объекту, который гарантировано идёт следом
Так и не увидел в статье описания кучи нестандартных приёмов и хаков, написано только про BSP.
"Кармак действительно использовал кучу нестандартных приёмов"
Времена меняются -- нынче такие приёмы называются индусским кодом.
Оффтоп (смотрю фото) А как горб лечить-то? У Кармака есть метод предложить?
Ализар себя переализарил тут. Хоть бы посмотрел как Carmack пишется. И "джон-движок", что? Статья позорная абсолютно.
книгу Стивена Леви «Хакеры. Герои компьютерной революции»
Данную книгу перевел иркутянин Лукин Алексей в 2001г. WebArchive сохранил копию сайта с данным переводом https://web.archive.org/web/20031003204959/http://cooler.it/hackers/
Кармак - красаучег, что бы не говорили
i = 0x5f3759df - ( i >> 1 );
Величайшие программисты 21 века. Джон-Движок Кармак