← 모든 글

엔지니어링 철학: John Carmack, 도덕적 기예로서의 성능

id Software의 프로그래머이자 공동 창업자 John Carmack

핵심 요약

  • Carmack은 성능을 최적화 단계가 아니라 도덕의 문제로 다룹니다. 여러분의 코드와 하드웨어의 물리적 한계 사이의 간극은 낭비이며, 그 낭비는 여러분이 내린 선택입니다.
  • 그의 방법은 덜어내는 방식입니다. 문제를 근본까지 이해하고, 빠르고 단순한 핵심만 남긴 뒤, 그 핵심을 느리게 만드는 기능은 모조리 거부합니다.
  • 밑바탕에 깔린 문제 자체가 바뀌면, 그는 처음부터 다시 작성합니다. Quake는 id를 유명하게 만든 엔진을 버렸습니다. 진짜 3D는 3D인 척하는 것과는 전혀 다른 문제였기 때문입니다.
  • 그는 공개적으로 작업했습니다. 매일 쓴 .plan 기록을 거쳐 엔진을 오픈소스로 풀었는데, 그 바탕에는 하나의 확신이 있었습니다. 공개할 코드는 더 정직하게 작성하게 된다는 것입니다.

원칙

“빛의 속도는 형편없다.” – John Carmack1

농담이지만, 동시에 그의 철학 전부이기도 합니다. Carmack은 이 말을 네트워크 지연을 두고 했습니다. 패킷이 대륙을 가로지르는 속도에 걸린, 물리적으로 단단한 바닥 말입니다. 하지만 이 정서는 그가 쓴 모든 코드 줄에 스며 있습니다. 기계는 물리 법칙의 지배를 받고, 엔지니어의 일은 문제가 허락하는 한도 안에서 그 물리적 한계에 최대한 가까이 다가가는 것입니다. 그저 충분히 가까운 정도가 아닙니다. 물리 법칙이 허용하는 만큼 가까이 가는 것입니다. 사용자와 빛의 속도 사이에 놓인 모든 것은 낭비이며, 그 낭비는 여러분이 내린 선택입니다.

Carmack은 성능을 최적화 단계가 아니라 도덕의 문제로 다룹니다. 대부분의 소프트웨어는 집에 잡동사니가 쌓이듯 느려집니다. 한 번에 하나씩, 합리적인 결정을 내리고, 각각은 변명이 되지만, 그 총합은 변명의 여지가 없습니다. Carmack의 규율은 이 누적을 거부하는 것입니다. 문제를 근본까지 이해하고, 빠르고 단순한 핵심만 남기고, 그것을 출시합니다. 성능은 더하는 기능이 아니라 잃지 않아야 하는 속성이라는 주장의 밑바탕에도 같은 확신이 깔려 있습니다. 느린 시스템을 빠른 시스템으로 최적화하는 것이 아니라, 처음부터 빠르게 만들고 그것을 지켜내는 것입니다.

그리고 그는 자신의 작업 과정을 공개했습니다. 10년이 넘는 세월 동안 Carmack은 매일의 엔지니어링 기록, 즉 .plan 파일을 공개 인터넷에 올렸고, finger 클라이언트만 있으면 누구나 읽을 수 있었습니다.2 1990년대의 가장 어려운 3D 렌더링 문제들이 공개된 자리에서, 거의 실시간으로 풀렸습니다. 공개적으로 작업한 것은 마케팅이 아니었습니다. 그것은 코드 그 자체와 똑같은 본능이었습니다. 숨겨진 상태가 없고, 들여다볼 수 없는 것이 없다는 것입니다.

배경

John D. Carmack은 1970년 8월 21일 캔자스주 쇼니 미션에서 태어났습니다.3 미주리–캔자스시티 대학교를 두 학기 다닌 뒤 자퇴하고 소프트웨어를 써서 생계를 꾸렸습니다. 정식 도제 과정도 학위도 없었습니다. 그는 데모신이 그랬던 방식으로 그래픽 프로그래밍을 익혔습니다. 하드웨어 매뉴얼을 읽고, 칩이 실제로 무엇을 하는지 측정하고, 숫자가 맞게 나올 때까지 어셈블리를 작성하면서 말입니다.

그는 루이지애나주 슈리브포트에 있던 소프트웨어 겸 디스크 잡지 회사 Softdisk에 들어가, Gamer’s Edge라는 게임 구독 서비스 일을 했습니다. 거기서 John Romero, Tom Hall, 그리고 Adrian Carmack(동명이인일 뿐 친척 아님)을 만났습니다. 1990년 9월, Carmack은 PC에서는 불가능했어야 할 데모를 만들어냈습니다. EGA 하드웨어 위에서 콘솔급의 매끄러운 좌우 스크롤을 구현한 것입니다. 1990년의 IBM PC는 매 프레임마다 화면 전체를 다시 그렸는데, 스크롤 게임에는 너무 느렸습니다. Carmack의 기법인 적응형 타일 갱신(adaptive tile refresh)은 잘 알려지지 않은 EGA 하드웨어 기능을 활용해 이미 그려진 화면을 밀어내고, 새로 드러난 가장자리만 다시 칠했습니다.4 팀은 이를 증명하기 위해 닌텐도 슈퍼 마리오 브라더스 3의 첫 번째 스테이지를 PC 데모로 다시 만들었습니다. 닌텐도는 거절했습니다. 팀은 그 엔진을 간직했습니다.

1991년 2월, 그들은 Softdisk를 떠나 id Software를 세웠습니다. 패턴은 이미 정해져 있었습니다. 아무도 풀지 못한 문제를 찾아, 하드웨어 수준에서 해결하고, 그 해법 위에 제품을 쌓아 올리는 것입니다. Carmack은 텍스처 매핑된 3D로, 그다음에는 진짜 폴리곤 3D로, 또 그다음에는 가상현실로 같은 일을 거듭하게 됩니다. 그를 둘러싼 환경 – Michael Abrash의 Graphics Programming Black Book, 사이클 수를 세는 데모신의 문화 – 은 프로세서를 근사하는 대상이 아니라 정확히 이해해야 할 대상으로 여겼습니다. Carmack은 그 문화를 유명하게 만들었습니다.

1990년대 초 id Software 사옥 앞에서 페라리와 함께 선 John Romero(왼쪽)와 John Carmack, DOOM 도장을 입힌 레이스카도 보인다

작업

Commander Keen과 Doom: 빠른 핵심 (1990–1993)

Don Ivan Punchatz가 그린 DOOM(1993)의 표지 -- 악마 무리 위에 선 해병

Commander Keen in Invasion of the Vorticons(1990년 12월)은 적응형 타일 갱신 위에 만들어진 최초의 상업용 게임이었습니다. 게임으로서보다는 하나의 증명으로서 더 중요했습니다. 하드웨어를 꼼꼼히 읽어내면 범용 PC와 전용 콘솔 사이의 간극을 메울 수 있다는 증명 말입니다. 매끄러운 스크롤은 그 위에 덧입힌 그래픽 트릭이 아니었습니다. 그것이 엔진이었습니다.

Doom(1993)은 Carmack의 방법을 보여주는 정전과도 같은 사례입니다. 1993년 PC에서 환경을 충분히 빠르게 렌더링하기 위해 그는 이진 공간 분할(binary space partitioning) – BSP 트리 – 을 채택했습니다. Carmack이 직접 찾아내 응용한 1980년 학술 논문에서 정식화된 기법으로, 벽을 그려야 할 순서를 미리 계산해 엔진이 나중에 가려질 픽셀을 결코 덧그리지 않도록 했습니다.5 Doom은 진짜 3D가 아닙니다. 입체적으로 느껴질 만큼 충분히 영리하게 렌더링된 2D 지도입니다. 바로 그 구분이 요점입니다. Carmack은 가장 범용적인 시스템을 만들지 않았습니다. 그는 당시 존재하던 하드웨어에서 빠르게 돌아가는 시스템을 만들었고, 핵심 루프를 느리게 만들 모든 기능을 거부했습니다. 빠르고 단순한 핵심을, 출시한 것입니다.

Quake: 소프트웨어로 구현한 진짜 3D (1996)

Quake(1996)의 표지 아트 -- 어두운 돌 위의 녹슨 못 모양 Q, id가 진짜 3D로 도약했음을 알린 표지

Quake(1996)는 처음부터 다시 만든 작업이었습니다. Doom이 깊이를 흉내 냈다면, Quake는 진짜 3차원 폴리곤 세계 – 경사진 표면, 위아래로 올려다보고 내려다보기, 실제 기하 구조 – 를 소비자용 3D 가속기가 흔해지기도 전에 소프트웨어만으로 렌더링했습니다.6 이 엔진은 미리 계산한 BSP 가시성을 오프라인 라이트맵, 손으로 다듬은 어셈블리와 결합해, 그 시대 CPU로는 불가능하다는 통념을 뒤집었습니다. id는 이후 OpenGL 렌더러인 GLQuake를 내놓았고, 이는 소비자용 3D 그래픽 카드를 정당화하는 데 도움을 주었습니다.

Quake는 Carmack의 전체 입장이 한눈에 드러나는 작업입니다. 회사를 유명하게 만든 엔진을 버리고, 새로운 문제(진짜 3D)를 근본까지 이해한 뒤 다시 만들었습니다. 재사용을 위한 재사용은 없었습니다. 이전의 해법은 신성하지 않았습니다. 신성한 것은 문제였습니다.

공개된 id 엔진과 .plan 파일 (1997–2011)

Carmack은 자신을 부유하게 만든 코드를 두고 두 가지 이례적인 일을 했습니다. 매일의 작업 기록인 .plan 파일을 공개해 엔지니어링이 일어나는 그대로 읽을 수 있게 했습니다.2 그리고 그 엔진들을 그냥 내주었습니다. id는 1997년에 Doom 엔진을, 1999년에 Quake를 오픈소스로 공개했고, 다음 세대가 출시될 때마다 그 직전 세대 id Tech의 소스를 계속 공개했습니다. Doom 3와 그 이후까지 말입니다.7 그의 논리는 명확했습니다. 오래된 코드를 공개하면 더 젊은 개발자들이 그것이 실제로 어떻게 만들어졌는지 배울 수 있고, “사람들이 가치를 두는 자유 소프트웨어는 세상의 부를 늘린다”는 것입니다.8

그 기꺼움이야말로 성능에 집착하는 대부분의 엔지니어가 끝내 닿지 못하는 부분입니다. Carmack의 기예는 공개된 사적 규율이었습니다. 읽히기를 받아들이는 것 – 누구든 매일의 기록을, 그리고 결국에는 소스까지 들여다보게 허락하는 것 – 자체가 하나의 품질 거래입니다. 공개할 코드는 더 정직하게 작성하게 됩니다.

Oculus VR: 지연의 바닥 (2013–2019)

Carmack의 지연 작업이 겨냥한 소비자 기기, Oculus Rift CV1 가상현실 헤드셋

Oculus에서 Carmack의 평생의 적 – 지연 – 은 문제 그 자체가 되었습니다. 그는 “사용자가 머리를 물리적으로 움직인 순간부터 머리에 쓴 디스플레이에서 갱신된 광자가 눈에 도달하기까지의 지연은 고품질 경험을 제공하는 데 가장 결정적인 요소 중 하나”이며, 지각 가능한 머리 추적 지연은 “시뮬레이터 멀미의 주된 원인 중 하나이기도 하다”고 썼습니다.9 그는 예산을 세웠습니다. 목표는 움직임에서 광자까지(motion-to-photon) 20밀리초 수준이었습니다. 그리고 파이프라인의 모든 단계를 마이크로초를 되찾을 자리로 다루었습니다. 그의 타임워프(timewarp) 기법은 이미 렌더링된 프레임을 디스플레이 직전 마지막 순간에 재투영해, 렌더링 중에 일어난 머리 움직임을 흡수합니다.9 이것은 23년 뒤에 다시 나타난 적응형 타일 갱신입니다. 재사용할 수 있는 것은 다시 그리지 말 것, 그리고 그 결과를 물리적 한계에 견주어 측정할 것.

방법

이 방법은 30년과 네 개의 문제 영역에 걸쳐 일관됩니다.

문제를 근본까지 이해하라. Carmack은 하드웨어 매뉴얼을 읽고, 실제 동작을 측정하며, 관례가 아니라 제1원리에서 출발합니다. BSP 트리, 라이트맵, 타임워프는 어떤 교본에도 없었습니다. 문제가 실제로 요구하는 것에서 도출해낸 것입니다.

빠르고 단순한 핵심만 남겨라. Doom이 3D가 아닌 이유는 1993년 하드웨어에서 3D처럼 느끼게 하는 데 3D가 필요하지 않았기 때문입니다. 그 규율은 덜어내는 방식입니다. 안쪽 루프를 식별하고, 그것을 빠르게 만들고, 그것을 느리게 할 기능을 거부합니다.

문제가 바뀌면 처음부터 다시 작성하라. Quake는 Doom 엔진을 확장하지 않았습니다. Carmack은 밑바탕의 문제가 옮겨가는 순간 잘 돌아가던 시스템도 버릴 수 있는 것으로 봅니다. 매몰 비용은 논거가 되지 못합니다.

깊고 끊김 없는 집중. Carmack의 마라톤 코딩은 결코 인내 그 자체를 위한 것이 아니었습니다. 엔진 전체를 작업 기억 속에 담아두는 것 – 데이터 레이아웃, 안쪽 루프, 모든 경계 사례를 한꺼번에 – 은 불러들이는 데 몇 시간이 걸리고, 맥락을 전환하는 순간 산산이 부서집니다. 그는 렌더 루프의 사이클을 지키듯 그 상태를 지켰습니다. 작업이 실제로 그 위에서 돌아가는 희소 자원으로 여기면서 말입니다.

후기: C 안에서의 함수형 스타일. Doom 3 시대와 그 이후로, Carmack은 C와 C++에서도 순수 함수를 선호하고 가변 상태를 최소화하게 되었습니다. 유행 때문이 아니라, 숨겨진 상태가 없는 코드는 동작을 예측할 수 있는 코드이고, 그것은 곧 버그가 적다는 뜻이기 때문입니다.10 이것은 .plan 파일과 똑같은 본능입니다. 들여다볼 수 없는 것은 없다는 것.

영향의 사슬

그를 빚은 사람들

Michael Abrash는 이 계보에서 멘토에 가장 가까운 인물입니다. x86 그래픽에 관한 Abrash의 글 – 나중에 Graphics Programming Black Book으로 묶인 – 은 Carmack이 실천한, 사이클을 세고 모든 것을 측정하는 문화를 성문화했습니다. 두 사람은 나중에 id에서, 그리고 훨씬 뒤에 Oculus에서 함께 일했고, 거기서 Abrash는 수석 과학자가 되었습니다. (직접적 영향)

1980년대 후반의 데모신과 어셈블리 최적화 문화는 근본적인 확신을 가르쳤습니다. 프로세서는 정확히 알 수 있는 대상이며, 여러분의 코드와 하드웨어의 천장 사이의 간극은 여러분의 책임이라는 것입니다. (형성적 영향)

John Romero, id에서의 그의 동업자는 스승이라기보다 보완재였습니다. Romero의 디자인과 레벨 작업은 Carmack의 엔진에 돌릴 만한 가치가 있는 무언가를 주었습니다. 이 동업 관계는 빠른 핵심이 필요조건이지 충분조건은 아니라는 사실을 일깨웁니다. 엔진은 플레이되기 위해 존재합니다.

그가 빚은 것들

게임 엔진 산업 전체. BSP 가시성, 라이트맵, 그리고 성숙한 엔진의 오픈소스화는 기본 관행이 되었습니다. 한 세대의 엔진 프로그래머들이 Carmack이 공개하기로 선택한 id Tech 소스를 읽으며 3D 렌더링을 배웠습니다.

소비자용 3D 그래픽 하드웨어. Quake의 OpenGL 경로는 3D 가속기 카드에 대한 초기의 상업적 논거였고, GPU를 주류 PC로 끌어들이는 데 일조했습니다.

현대의 가상현실. 타임워프와 집요한 지연 예산은 이제 모든 VR 파이프라인에서 표준 어휘가 되었습니다. Carmack이 쫓았던 20밀리초 목표가 바로 오늘날의 헤드셋이 사람을 멀미하게 하지 않는 이유입니다.

관통하는 줄기

Andrej Karpathy는 신경망을 처음부터 다시 만듭니다. 이해는 양도할 수 없기 때문입니다. 직접 도출해내야만 합니다. Carmack도 같은 방식으로 자신의 렌더러를 도출합니다. 프레임워크가 아니라 하드웨어와 문제에서 말입니다. 그리고 Linus Torvalds가 “좋은 취향” – 특수 사례가 일반 사례로 녹아드는 것 – 를 높이 산다면, Carmack은 물리 법칙이 허락하는 한 가장 적게 일하는 안쪽 루프를 높이 삽니다. 둘은 옷만 다르게 입은 같은 확신입니다. 올바른 구조는 문제 위에 얹은 장식이 아니라, 올바르게 본 문제 그 자체라는 것입니다. (시리즈 가교)

내가 여기서 얻는 것

내가 간직하는 교훈은 성능이 곧 정직이라는 것입니다. 느린 시스템은 대개 그 작성자가 문제를 빠른 핵심을 찾아낼 만큼 충분히 이해하지 못한 시스템입니다. 그들은 돌아갈 때까지 추상을 쌓아 올렸고, “돌아간다”는 지점에서 멈췄습니다. Carmack은 대신 물리적 한계에서 멈춥니다. 그것은 품질이 유일한 변수라는 것과 똑같은 기준입니다. 질문은 결코 “이게 출시할 만큼 충분히 빠른가?”가 아니라 “내가 이게 왜 이렇게 느린지 정말로 이해하고 있는가?”입니다.

지금 내가 만드는 세계 – 에이전트, 도구 루프, AI 시스템 – 에서 유혹은 Carmack의 규율과 정반대입니다. 프레임워크를 쌓고, 모델 호출을 더 늘려 지연을 덮어버리고, 시스템이 실제로 무엇을 하는지 결코 읽지 않는 것입니다. Carmack식의 수는 루프를 프로파일링하고, 지배적인 부분을 찾아, 그것을 근본까지 이해하고, 나머지는 덜어내는 것입니다. 그 확신 – 취향은 측정할 수 있는 기술 시스템이지 우겨대는 분위기가 아니라는 것 – 이 1990년의 EGA 스크롤 트릭에서 2026년의 에이전트 하니스까지 관통하는 줄기입니다.

자주 묻는 질문

John Carmack의 엔지니어링 철학은 무엇인가요?

Carmack은 성능을 뒤늦게 챙기는 것이 아니라 도덕의 문제로 다룹니다. 그 규율은 문제를 근본까지 이해하고, 빠르고 단순한 핵심만 남기고, 그 핵심을 느리게 하는 기능을 거부하며, 밑바탕의 문제가 바뀌면 처음부터 다시 작성하는 것입니다. 그는 여기에 공개적으로 작업하는 태도 – 매일의 엔지니어링 기록을 공개하고 성숙한 엔진을 오픈소스로 푸는 것 – 를 짝지웁니다. 들여다볼 수 있는 코드가 더 정직하게 작성된 코드라는 확신에서 말입니다.28

John Carmack은 무엇을 만들었나요?

Carmack은 1991년 id Software를 공동 창업했고, Commander Keen(1990, 적응형 타일 갱신), Wolfenstein 3D(1992), Doom(1993, BSP 기반 렌더링), Quake(1996, 진짜 3D 소프트웨어 렌더링)의 수석 프로그래머였습니다. 그는 두 십 년에 걸쳐 id Tech 엔진들을 오픈소스로 공개했고, Oculus VR의 CTO로서 움직임에서 광자까지의 지연 작업을 이끌었으며, 이후 AI 회사 Keen Technologies를 설립했습니다.5679

적응형 타일 갱신이란 무엇인가요?

이것은 Carmack이 1990년에 IBM PC EGA 하드웨어에서 매끄러운 좌우 스크롤을 구현하기 위해 고안한 기법입니다. 그 하드웨어는 매 프레임마다 화면 전체를 다시 그렸기 때문에 그렇지 않고서는 너무 느렸습니다. 적응형 타일 갱신은 EGA 하드웨어 기능을 활용해 이미 그려진 화면을 밀어내고 가장자리에 새로 드러난 타일만 다시 칠해, 프레임당 작업량을 극적으로 줄입니다. 이 기법은 Commander Keen을 가능하게 했고, 병목을 하드웨어 수준에서 해결한다는 Carmack의 상징적인 수를 확립했습니다.4

Carmack은 왜 .plan 파일을 공개하고 엔진을 오픈소스로 풀었나요?

.plan 파일은 매일의 엔지니어링 기록으로, 원래 finger 프로토콜로 읽을 수 있었고, id의 개발을 거의 실시간으로 기록했습니다.2 Carmack은 이후 각 세대의 id Tech를 후속작이 출시되면 오픈소스로 공개하면서, 오래된 코드를 공개하는 것이 더 새로운 개발자들이 게임이 실제로 어떻게 만들어지는지 배우는 데 도움이 되고, 가치 있는 자유 소프트웨어가 “세상의 부를 늘린다”고 주장했습니다.8 두 관행 모두 그의 코드와 똑같은 원칙을 반영합니다. 숨겨진 상태가 없고, 들여다볼 수 없는 것이 없다는 것입니다.


출처


  1. John D. Carmack, “The speed of light sucks.” Wikiquote, 네트워크 지연에 관하여. 그의 QuakeWorld 시절 네트워킹 작업에서 널리 인용됨. Data Center Knowledge의 논의도 참고. 

  2. Robbie, “The Carmack Plan,” Garbage Collected, 2017년 10월 – .plan 파일, finger 프로토콜, 그리고 공개적으로 작업하기에 관하여. oliverbenns/john-carmack-plan에 보관된 기록은 1996년부터 2000년대까지 걸쳐 있으며, 이 관행이 여러 해에 걸쳐 이어졌음을 기록한다. 

  3. “John Carmack.” DoomWiki. 1970년 8월 21일 캔자스주 쇼니 미션 출생. 미주리–캔자스시티 대학교, Softdisk, id Software 창립. 

  4. David Kushner, Masters of Doom: How Two Guys Created an Empire and Transformed Pop Culture (Random House, 2003), 3장 – Carmack의 매끄러운 스크롤 돌파구와 하룻밤 사이의 슈퍼 마리오 브라더스 3 재현을 1990년 9월 Softdisk에서의 일로 기록한다. Romero의 협업자 John Anderson의 “The Saga of Dangerous Dave,”가 이를 뒷받침하며, “Dangerous Dave in Copyright Infringement”를 1990년 9월로 기록한다. 기법 세부: “Adaptive tile refresh,” Wikipedia, 그리고 Fabien Sanglard, “Commander Keen’s Adaptive Tile Refresh.” 

  5. “Doom rendering engine,” DoomWiki – BSP 트리는 1993년 5월 알파와 10월 베타 사이에 채택됨. 세그먼트 클리핑을 통한 덧그리기 제거. 기법의 기원에 관하여: Sinclair Target, “How Much of a Genius-Level Move Was Using Binary Space Partitioning in Doom?,” Two-Bit History (2019) – BSP 트리를 Henry Fuchs, Zvi Kedem, Bruce Naylor의 1980년 논문 “On Visible Surface Generation by A Priori Tree Structures”(그리고 그 1969년 미 공군 비행 시뮬레이터 선행 연구)까지 거슬러 올라가며, Carmack이 이를 Doom에 맞게 응용했음을 기록한다. 

  6. “Quake engine.” Wikipedia. 소프트웨어로 구현한 진짜 3D 폴리곤 렌더링(1996), 미리 계산한 가시성, 라이트맵, C와 어셈블리로 작성됨, 이후 OpenGL 경로. 

  7. “id Tech,” Wikipedia – 소스 공개를 기록한다: Doom 엔진 1997년(1999년 GPL 재라이선스), Quake 엔진 1999년, Quake II 2001년, Quake III 2005년, 그리고 마지막 GPL 공개인 Doom 3(id Tech 4) 엔진 2011년. 개요: “A graphical history of id Tech,” PC Gamer. 

  8. Brad Cook, John Carmack 인터뷰, Apple.com(보관본), Wikiquote에 인용됨. “코드를 공유하는 것은 그저 옳은 일처럼 느껴진다… 사람들이 가치를 두는 자유 소프트웨어는 세상의 부를 늘린다.” 다음도 참고: TechRadar, “id’s John Carmack sings praises of open source.” 

  9. John Carmack, “Latency Mitigation Strategies” (보관본; 원래 2013년 2월 게시). 원문: “사용자가 머리를 물리적으로 움직인 순간부터 머리에 쓴 디스플레이에서 갱신된 광자가 눈에 도달하기까지의 지연은 고품질 경험을 제공하는 데 가장 결정적인 요소 중 하나다,” 그리고 “머리 움직임에 대한 반응에서 지연을 지각하는 것은 시뮬레이터 멀미의 주된 원인 중 하나이기도 하다.” 이 글은 타임워프 재투영 기법을 설명한다. VR 지연 목표 맥락: PCGamesN, “John Carmack’s battle for 20 millisecond latency.” 

  10. John Carmack, “In-Depth: Functional Programming in C++,” Gamasutra/Game Developer, 2012년 4월 30일: “소프트웨어 개발에서 결함의 상당 부분은 프로그래머가 자기 코드가 실행될 수 있는 가능한 모든 상태를 온전히 이해하지 못하는 데서 비롯된다. 함수형 스타일로 프로그래밍하면 코드에 제시되는 상태가 명시적으로 드러난다.” 버그를 줄이기 위해 순수 함수를 선호하고 가변 상태를 최소화하는 것에 관하여. 

관련 게시물

엔지니어링 철학: Thompson과 Ritchie, 하나를 제대로 하라

Thompson과 Ritchie는 하나의 보편적 인터페이스, 즉 텍스트 스트림과 파이프로 엮인 작고 날카로운 도구들로 Unix와 C를 만들었습니다. 기능보다 단순함입니다.

12 분 소요

엔지니어링 철학: 레슬리 램포트, 코딩 전에 생각하라

레슬리 램포트는 분산 시스템을 과학으로 만들었습니다. 시간은 전역적이지 않고, 실재하는 것은 인과이며, 코드를 쓰기 전에 설계를 명세합니다.

12 분 소요

The Shader Gallery That Lied: Debugging 216 WebGL Presets

A user said the shader playground looked broken. Pixel-readback testing found 30 dead presets, 11 that never compiled, a…

11 분 소요