Doom engine

Поделись знанием:
Перейти к: навигация, поиск
id Tech 1
Игровой движок (Список)
Разработчик id Software
Ключевой программист Джон Кармак
Часть серии движков id Tech
Предыдущий движок серии Wolfenstein 3D engine
Следующий движок серии Quake engine
Аппаратные платформы ПК, Macintosh, Amiga, SNES, Sega 32X, Sega Saturn, 3DO, PlayStation, Game Boy Advance, Atari Jaguar и другие
Поддерживаемые ОС DOS, Linux, FreeBSD, другие UNIX-подобные
Написан на языке Си, язык ассемблера
Лицензия до 1997 года — Коммерческое ПО
после 1997 года — Свободное ПО: лицензия GNU GPL
Первая игра на движке Doom / 10 декабря 1993 года
Последняя игра на движке Strife / 31 мая 1996 года

Doom engine («движок Doom»), также известный как id Tech 1 — псевдотрёхмерный игровой движок, разработанный американской компанией id Software и применяемый в компьютерных играх Doom, Heretic, HeXen, Strife, HacX и других играх, созданных по лицензии. Создан Джоном Кармаком, вспомогательные функции были написаны Майком Абрашем (англ. Mike Abrash), Джоном Ромеро (англ. John Romero), Дэйвом Тэйлором (англ. Dave Taylor) и Полом Райдеком (англ. Paul Radek). Первоначально написан на компьютерах NeXT, затем, для первого релиза Doom был портирован под DOS, а позднее ещё на несколько игровых консолей и операционных систем.





Отличия от Wolfenstein 3D engine

  • Пол и потолок могут иметь любую высоту.
  • Стены не обязательно ориентированы в направлении «север-юг» или «запад-восток».
  • Изменяющаяся освещённость, повышавшая реалистичность графики.
  • Лифты, дистанционно открывающиеся двери, опускающиеся и придавливающие потолки, поднимающиеся ступеньки и другие движущиеся элементы.
  • Персонажи могут прыгать, падать с крыш и летать по воздуху (впрочем, пройти под летящим врагом или пролететь сверху в прыжке всё равно невозможно).
  • Звуковая подсистема поддерживала стереозвук и микширование до 8 эффектов одновременно.
  • Персонаж при движении покачивался вверх-вниз, что создало бо́льшую иллюзию ходьбы (в Wolfenstein точка обзора находилась на постоянной высоте примерно на уровне живота, игрок словно ехал в инвалидной коляске).
  • Разрешалось (хоть и не поощрялось) подключение дополнительных модулей (WAD-файлов) с уровнями, графикой и звуками. Идея расширяемости пошла от Джона Кармака, который сам модифицировал игры и хотел, чтобы другие это делали.

Ограничения

  • Лабиринт имеет горизонтальный пол с потолком и вертикальные стены.
  • Две комнаты не могут находиться одна над другой. Таким образом, карта уровня является совершенно двумерной.
  • Во всей игре масштаб спрайтов и текстур постоянный. Поэтому, например, невозможно установить высокодетализированный плакат на менее детальной стене.
  • Авторы так и не проработали вертикальные столкновения объектов. Поэтому нельзя, например, пробежать под летящим какодемоном или, разогнавшись на какой-нибудь крыше, перепрыгнуть через факел. (Исправлено в Heretic и Hexen, так как в них это было необходимо из-за подбираемой магической возможности полёта игрока.)
  • Игра не делала и других проверок по оси Z — например, рыскающий в подвале имп вполне мог нанести повреждения игроку, находящемуся в паре сотен метров выше, на чердаке, а взорвавшаяся у основания здания ракета наносила урон монстру на крыше. Игрок мог использовать переключатели вне зависимости от высоты (например, всё ещё можно активировать ушедший под землю выключатель на уровне MAP01 Entryway в Doom 2).
  • Особая структура уровня (так называемое двоичное разбиение пространства) требовала сборки перед испытанием уровня. Сборка происходит автоматически, на компьютерах того времени менее чем за минуту — тем не менее, это мешало просматривать уровень в реальном времени прямо по ходу редактирования (в отличие от Build Engine). К тому же двоичное разбиение делило стены на «отрезки» (англ. segs) — это усложняло геометрию уровня. Duke Nukem 3D версии 1.3 успешно работал на компьютерах класса Pentium-100 на разрешении 640×480 — ни один порт Doom не способен на такое.К:Википедия:Статьи без источников (тип: не указан)[источник не указан 4298 дней]
  • По этой же причине лифты и платформы могут двигаться вверх-вниз, но не в горизонтальной плоскости. Ограниченное горизонтальное движение (так называемые полиобъекты) в Hexen не могло сравниться в мощи с вагончиками Duke Nukem 3D.
  • Высота текстуры, если та повторяется по вертикали, должна всегда равняться 128 текселям. Для неповторяющихся текстур (подступёнков, решёток и т. д.) это не требуется. Исправлено в многочисленных портах Doom.

Технические особенности

Движок был написан на Си на рабочих станциях NeXT в операционной системе NEXTSTEP. Изначально использовался компилятор Intel C, но в дальнейшем был использован Watcom C. Утилиты были написаны под NeXT на Objective-C. Движок Doom был прогрессивным для своего времени. Несмотря на то, что Си — язык процедурного программирования, движок Doom написан в явно выраженном объектном стиле.

Устройство уровней[1]

Внутреннее представление уровня Doom

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

Уровень состоит из десяти блоков .WAD-файла; из них пять (VERTEXES, LINEDEFS, SIDEDEFS, SECTORS и THINGS) непосредственно редактируются пользователем, ещё пять (SEGS, SSECTORS, NODES, REJECT и BLOCKMAP) — вычисляются BSP-построителем.

Уровни строятся по субтрактивному принципу: всё пространство заполнено непроходимой материей, и автор уровня «прорубает» в этой материи туннели. Основой уровня являются вершины (англ. vertices) — точки в двухмерном пространстве. Между вершинами проводятся отрезки (англ. linedefs). Отрезок может иметь одну или две стороны (англ. sidedefs). Текстуры задаются не для отрезков, а для сторон, так что отрезок может быть покрыт с разных сторон разными текстурами.

Вершины и отрезки образуют плоский граф; каждая его грань может быть или непроходимым пространством (например, колонной) или сектором (англ. sector). Иногда структуру секторов намеренно нарушают — на этом основаны спецэффекты наподобие невидимых мостов. Каждый сектор имеет в плане произвольную форму (не обязательно выпуклую или односвязную). У сектора всегда горизонтальные пол с потолком и постоянная освещённость. Односторонние отрезки являются глухими стенами, двусторонние — образуют переходы между секторами.

Чтобы обеспечить высочайшую на то время интерактивность, применены так называемые теги. Отрезок и сектор имеют особое целое поле — «тэг». Чтобы сделать выключатель, опускающий лифт, отрезку-выключателю задаются код действия «выключатель, опускающий лифт» и какой-нибудь тег (например, 5). Этот же тег присваивается сектору-лифту. При активации отрезок будет выполнять указанное действие на всех секторах с этим тегом.

Наконец, на уровне расставляются объекты (things). При этом набор характеристик объекта в Doom оказался довольно беден: например, не было Z-координаты, наземный объект в начале игры всегда стоял на полу, а воздушный — висел под потолком. Нельзя сделать, чтобы объект был только в одиночной игре, или только в deathmatch, или только в кооперативной (был лишь флаг «только в сетевых играх»).

Игра

Все вычисления проводятся в фиксированной запятой 16,16, с машинной единицей, равной одному текселю (рост игрока 56 текселей[2][3] — значит, 1 тексель примерно равен 3 см). Для угловых величин применяется фиксированная запятая, в которой 232 = 360°[2]. Впрочем, большинство угловых расчётов были грубее — например, повороты игрока рассчитываются с точностью в 360° = 216 = 65536, а тригонометрическая таблица состояла всего из 8192 (213) величин[2].

Запись демо-роликов и сетевая игра основаны том, что на цифровой ЭВМ один и тот же код с одними и теми же данными приводит к одному и тому же результату, а поведение целочисленной арифметики жёстко заспецифицировано и не зависит от модели процессора. Игра записывает в демо-ролик (и передаёт по сети) команды управления[2][4][5]; если в игре нет грубых ошибок, различные машины, интерпретируя одни и те же команды управления, получают один и тот же результат. Впрочем, ошибки, приводящие к рассинхронизации, в игре всё-таки есть: в частности, если в одиночной игре зайти в меню, игра останавливается, но ролик продолжает писаться[6]. Недостаток такого подхода — невозможность перемотать ролик; его можно только проиграть с начала.

В режиме записи демо-роликов точность поворотов снижалась до 256 на 360 градусов[2][7]; внимательный игрок может заметить, что в режиме демозаписи наводка становится грубее. Это служит исключительно для экономии памяти в демо-роликах.

Каждый игровой такт (1/35 секунды) игра проводит цикл управления каждым монстром. Чтобы сэкономить процессорные такты, существует битовая матрица REJECT[8]: для любых двух секторов, если ни из одной точки сектора А не видна никакая точка сектора Б, на этом месте в матрице ставится единица. Если на пересечении строки, соответствующей сектору игрока, и столбца, соответствующего сектору монстра, стоит 0, проводится проверка, видит ли монстр игрока; если 1 — монстр гарантированно не видит игрока. Матрица REJECT очень сложна для построения, и большинство пользовательских редакторов заполняли её нулями (существовало очень мало утилит, которые строили её; основные — RMB и ZENNODE).

Структура BLOCKMAP применяется физическим движком, чтобы ускорить проверку столкновений объектов с отрезками.

Построение изображения

Для ускорения отображения используется BSP-дерево[9] (в отличие от порталов в Duke Nukem 3D). Объекты изображаются в виде спрайтов, в отличие от Quake.

Движок рекурсивно проходится по BSP-дереву, отрисовывая стены от ближних к дальним[10]:

 функция ПроходПоДереву(узел)

   если ОхватывающийПрямоугольник(узел) не в конусе видимости
     то выход

   если узел является развилкой

     то   // узел является развилкой - рекурсивно пройти
       если камера слева от секущей плоскости
         то ПроходПоДереву(узел.левый); ПроходПоДереву(узел.правый)
         иначе ПроходПоДереву(узел.правый); ПроходПоДереву(узел.левый)

     иначе // узел является подсектором
       нарисовать(узел)

Здесь и задействованы оставшиеся три блока. Секторы разбиваются секущими на выпуклые элементы, именуемые подсекторами (SSECTORS), отрезки — на сегменты (SEGS). Сама структура дерева (охватывающие прямоугольники, секущие, указатели на «сыновей») хранится в блоке NODES. В этом цикле рисуются только глухие стены (то есть, средние текстуры для односторонних стен, и верхние и нижние — для двусторонних). Объекты, полы и решётки записываются в отдельные массивы и отрисовываются на более поздних стадиях. Массив, в котором хранятся полы, сделан довольно малым, и у самодеятельных конструкторов довольно часто случалось переполнение и выход с сообщением «No more visplanes!».

После того, как отрисованы стены, по строкам рисуются полы, записанные в visplanes.

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

Текстуры стен и спрайты хранятся в .WAD-файле по столбцам, текстуры полов и потолков — простой массив 64×64.

Doom для DOS работал в режиме VGA 320×200[11] с тройной буферизацией, для Linux — использовал обычный режим VGA 13h. При этом величина разрешения была закодирована в ассемблерных процедурах в двух местах; версии игры, которые использовали переменное разрешение, либо имели несколько функций под разные разрешения[12], либо динамически модифицировали код, подставляя нужное разрешение[13]. Впрочем, в частях игры, которые к движку не относятся, встречалось крайне много магических чисел, связанных с разрешением экрана и экранными координатами различных объектов, поэтому первые порты Doom страдали «расползающейся» в SVGA-режимах графикой меню[14].

Длительная загрузка

Doom известен своей длительной загрузкой (больше минуты на компьютерах своего времени). Основная часть времени тратилась на инициализацию «демона перерисовки Doom» (англ. Init Doom refresh daemon).

Doom распространялся на дискетах и через BBS, важен был каждый байт. Чтобы уменьшить размер, сделали такой механизм. Каждая из текстур для стен состояла из фрагментов (англ. patches): например, стена с выключателем может состоять из картинки стены и картинки выключателя, или плиточная стена — из трёх-четырёх плиток, хаотически разбросанных по большой текстуре. Текстуры, как сказано выше, рисуются по столбцам. Doom проходился по всем столбцам всех текстур и проверял, какие фрагменты покрывают тот или иной столбец; строилась соответствующая структура данных. Эту структуру можно было закэшировать, или строить при загрузке уровня, достраивая динамически по мере надобности — в этом случае Doom загружался бы намного быстрее[15].

Сетевой код

Doom основан на модели «равный с равным». Как было сказано выше, синхронность игры на всех машинах обеспечивается тем фактом, что один и тот же код с одними и теми же данными возвращает один и тот же результат. С каждым пакетом передаётся «свёртка синхронизации» — обычно координата одного из игроков; если полученная с пакетом свёртка не совпадает с локально вычисленной, игра прекращает работу с сообщением о рассинхронизации. Никаких средств противостояния задержкам передачи нет; если средний пинг превышает 1/35 секунды, замедляется реакция игры на управление. Игра может запрашивать потерянные пакеты и дублировать их, чтобы запросы повторной передачи шли как можно реже. Входа в начатую игру нет.

Поддержка того или иного сетевого протокола не включена в Doom. Для того, чтобы запустить игру по сети, игроки вызывают внешнюю программу — сетевой драйвер, который налаживает связь между машинами и вызывает .EXE-файл Doom. Такая конструкция позволяет писать внешние драйверы для других сетевых протоколов — или программы запуска Doom’а по сети, более удобные, чем имеющиеся.

Каждый из игроков имеет свой цвет: первый — зелёный, второй — серый, третий — коричневый, четвёртый — красный. Номера игроков (и, соответственно, цвета) раздаются сетевым драйвером, а не игрой. В игре по IPX через программу IPXSETUP отдаваемые игрокам цвета зависят от MAC-адресов сетевых плат, в игре по модему или кабелю через SERSETUP — от случайных факторов.

Интересной недокументированной функцией версий 1.0 и 1.1 была одиночная игра на трёхмониторной системе: один показывает то, что спереди от игрока, второй — то, что слева, третий — то, что справа. Поскольку видеоплат с таким количеством мониторов на то время не существовало, для такой игры нужны были три компьютера, соединённых сетью. Впрочем, эта функция существовала лишь в зачатке: чтобы загрузиться с сохранения, требовалось на всех трёх компьютерах перезапустить игру.

Игры на движке Doom

Движок Doom продавался другим компаниям. На нём был сделан ряд игр. Среди них:

  • Heretic: добавлен обзор вверх-вниз;
  • HeXen: добавлены прыжки, элементы нелинейности; три разных главных персонажа, некоторые монстры могут появляться также из воды или из-под земли; новые визуальные эффекты (брызги воды, искры, туман), возможность свободно перемещаться между уровнями в рамках одного эпизода, а также так называемые «полиобъекты» — то есть двери и стены, двигающиеся по горизонтали (ранее движок позволял движение только по вертикали);
  • Strife: добавлены элементы ролевой системы — игрок мог говорить с персонажами, выполнять задания. Игрок мог свободно перемещаться почти между всеми уровнями, а их доступность менялась по мере прохождения игры. Например, после смерти одного из боссов («Программиста») уровень «Замок» заменялся на «Новую фронтовую базу».

Также фанатами игры создавались пользовательские моды, полностью преображавшие игру. Первый из таких модов — Alien Doom — был сделан по фильму «Чужой». Впоследствии появились моды и по другим фильмам: «Охотники за привидениями», «Бэтмен» и «Секретные материалы». См. Моддинг Doom’a.

Открытие исходного кода

В 1994 году открыли исходные тексты сетевых драйверов. Энтузиасты начали разрабатывать собственные драйверы: например, для LPT-кабеля (PARSETUP) и даже для цепочки COM-кабелей (HX8).

В декабре 1997 года случилась беспрецедентная (на то время)К:Википедия:Статьи без источников (тип: не указан)[источник не указан 4298 дней], акция: полный исходный текст Doom для Linux был опубликован под несвободной бесплатной лицензией (версия для DOS не публиковалась из-за платной звуковой библиотеки DMX). Чи Хоан (англ. Chi Hoang) был первым)К:Википедия:Статьи без источников (тип: не указан)[источник не указан 4298 дней], , кто сумел в январе 1998 года выпустить порт Doom для DOS — DosDoom.

Пионерами расширения Doom были Ли Киллоу (Boom — расширенная версия Doom, в которой были исправлены все ошибки оригинальной игры, а также серьёзно, почти в 1,5 раза, был ускорен движок))К:Википедия:Статьи без источников (тип: не указан)[источник не указан 4298 дней], Денис Фабрис и Борис Перейра (Doom Legacy — версия Doom с качественным пользовательским интерфейсом)К:Википедия:Статьи без источников (тип: не указан)[источник не указан 4298 дней] и поддержкой высоких разрешений), а также Брюс Льюис — создал glDoom, первый порт Doom под OpenGL.

После полугода разработки авария на жёстком диске Льюиса поставила крест на glDoom: резервной копии не было. Из-за этого Кармак перелицензировал исходные тексты под GNU General Public License: если бы лицензия не была такой ограничивающей, исходный текст обязательно нашёлся бы у кого-то[16]. Остальные ресурсы так и остаются платными. Спустя 12 лет исходный код нашёлся — у друга, к которому Льюис ходил с диском.

В Doom было найдено огромное количество ошибок[17]. Физический движок и рендерер по-разному определяли, является плоскость «небесной» или нет: ракета могла ударить в небо и взорваться[18], и наоборот, могла «улететь», не взрываясь, через глухую стену[19]. Монстры застревали в дверях[20], а Arch-Vile, воскрешая раздавленный труп, одновременно делал его неуязвимым и способным проходить через стены[21]. Обычно порты проверяли версию демо-ролика: ошибки включались, если ролик записан исходной версией игры, и выключались, если портом. Подобные ошибки на некоторых пользовательских уровнях были критичны для прохождения — поэтому в Boom и производных портах их можно было включить через меню.

Сейчас существует несколько десятков расширенных версий Doom — от простейших до чрезвычано мощных. Они позволяют играть с более высоким разрешением, чем оригинальный Doom, имеют дополнительные возможности (обзор вверх-вниз, перекрестие прицела), а также расширенную сетевую игру. Наиболее известные из этих версий:

  • Производные Boom, например, Smack My Marine Up, prBoom. Имеют мощные средства разработчика: скриптовый язык FraggleScript, дополнительные типы объектов, язык редактирования свойств объектов (BEX) и т. д. Как правило, у производных Boom совместимость с исходной игрой предельная — вплоть до того, что демо-ролики, записанные в Doom, под Boom никогда не рассинхронизируются.
  • Doom Legacy — имеет качественный пользовательский интерфейс, спортирован на DOS, Windows и Linux. Последние версии ограниченно поддерживают многоэтажные лабиринты. Есть игра вдвоём на одной машине двумя мышами (для второй, подключаемой по COM-порту, в игре есть встроенный драйвер!). Многое что взято из ныне замороженного Smack My Marine Up. Согласно описанию проекта, в нём ставится задача максимально глубокой обратной совместимости всех нововведений, то есть возможности возвращения к оригиналу путём выбора соответствующих настроек.
  • ZDoom — в отличие от большинства расширений Doom, которые написаны на чистом Си, игра полностью переписана на C++. Фокусируется на мультиплеерных возможностях, реализован даже захват флага. В проекте не ставится цель глубокой обратной совместимости, опытный игрок ощущает значительную разницу с оригиналом в геймплее буквально сразу же, но зато многие баги, использовавшиеся авторами модификаций как источники недокументированных эффектов, можно включить при необходимости из меню.
  • ZDaemon — Некогда самый популярный порт для сетевой игры. В настоящее время теряет популярность, уступая более продвинутому порту Skulltag. Основан, в свою очередь, на порте ZDoom.
  • GZDoom — порт, основанный на ZDoom. Поддержка OpenGL, 3D-полов, динамического освещения, расширенных возможностей по редактированию уже имеющихся объектов и созданию новых, поддержка 3D-моделей.Официальный сайт GZDoom [grafzahl.drdteam.org].
  • SkullTag — Является самым популярным портом для сетевой игры. Отличается более качественным сетевым кодом и расширенными возможностями. Основан на портах ZDoom и GZDoom. Поддерживает OpenGL.
  • jDOOM — переводит Doom на трёхмерный движок: графика под управлением OpenGL, трёхмерные модели монстров, оружия и предметов, присутствуют эффекты освещения и обзор мышью вверх-вниз, не приводящий к «эффекту Ельцина» или «эффекту портрета». Одним словом, jDOOM преображает старый 2,5-мерный Doom, визуально превращая его в 3D-игру. Тем не менее, jDOOM нельзя назвать полноценной 3D-игрой — он не поддерживает 3D-полы и наклонные плоскости. Возможности маппинга и моддинга также слабы, на уровне обычного DOOM, т. е. значительно уступают остальным портам. Один из главных недостатков jDOOM на настоящий момент — низкое качество любительских полигональных моделей.
  • Risen3D — порт, основанный на jDOOM. Поддерживает все графические навороты jDOOM, по утверждениям разработчиков (Официальный сайт [risen3d.newdoom.com/]), применены улучшенные алгоритмы OpenGL-рендеринга, быстрее и качественнее отображаются текстуры высокого разрешения и трёхмерные модели. Также поддерживаются наклонные поверхности и 3D-полы. Кроме этого разработчиками этого порта была нарушена лицензия GNU GPL в связи с закрытием исходных текстов. Эта проблема в далёком последствии была урегулирована с разработчиками jDOOM.

В Doom Legacy, ZDoom и SkullTag присутствует возможность игры с ботами.

Менее значимые моды кратко перечислены в списке портов серии Doom.

Файлы данных Doom по сей день остаются платными. Для создания бесплатного IWAD-файла был начат проект FreeDoom. Если к расширенной версии Doom добавить .WAD из FreeDoom, получаем полностью свободную игру.

Напишите отзыв о статье "Doom engine"

Примечания

  1. Matthew Fell. [www.gamers.org/dhs/helpdocs/dmsp1666.html The Unofficial Doom Specs v1.666…(англ.) (HTML) (15 декабря 1994 года). — Неофициальная спецификация Doom. Проверено 25 августа 2011.
  2. 1 2 3 4 5 Исходные тексты Doom или первых его портов (например, Doom Legacy 1.11, 1.12)
  3. [doom.wikia.com/wiki/Player Player — The Doom Wiki — Doom, Doom 2, Doom 3, and more]
  4. [doom.wikia.com/wiki/Demo#Technical_information Demo — The Doom Wiki — Doom, Doom 2, Doom 3, and more]
  5. [doom.wikia.com/wiki/Doom_networking_component#Multiplayer_component Doom networking component — The Doom Wiki — Doom, Doom 2, Doom 3, and more]
  6. [doom.wikia.com/wiki/Demo_desyncing_caused_by_menu_access Demo desyncing caused by menu access — The Doom Wiki — Doom, Doom 2, Doom 3, and more]
  7. [doom.wikia.com/wiki/Turning_resolution_is_lowered_when_recording_demos Turning resolution is lowered when recording demos — The Doom Wiki — Doom, Doom 2, Doom 3, and more]
  8. [doom.wikia.com/wiki/REJECT Reject — The Doom Wiki — Doom, Doom 2, Doom 3, and more]
  9. [doom.wikia.com/wiki/Doom_rendering_engine#Node_building Doom rendering engine — The Doom Wiki — Doom, Doom 2, Doom 3, and more]
  10. [doom.wikia.com/wiki/Doom_rendering_engine#Drawing_walls Doom rendering engine - The Doom Wiki - Doom, Doom 2, Doom 3, and more]
  11. [doom.wikia.com/wiki/Aspect_ratio Doom Wiki: Aspect Ratio]
  12. Исходный текст Smack My Marine Up
  13. Исходный текст любой версии Doom Legacy для DOS, функция ASM_PatchRowBytes.
  14. Например, Doom Legacy 1.11, 1.12
  15. Так поступают многие порты Doom — в частности, Doom Legacy и Smack My Marine Up; исходные тексты того и другого свободно доступны.
  16. [doom.wikia.com/wiki/Licences Doom Wiki — Licenses(англ.)
  17. [doom.wikia.com/wiki/Engine_bug Engine bug — The Doom Wiki — Doom, Doom 2, Doom 3, and more]
  18. [doom.wikia.com/wiki/Projectiles_explode_on_impact_with_%22sky%22 Projectiles explode on impact with «sky» — The Doom Wiki — Doom, Doom 2, Doom 3, and more]
  19. [doom.wikia.com/wiki/Bullet_puffs_do_not_appear_in_outdoor_areas Bullet puffs do not appear in outdoor areas — The Doom Wiki — Doom, Doom 2, Doom 3, and more]
  20. [doom.wikia.com/wiki/Monsters_stuck_in_doortracks,_walls_or_hanging_off_lifts Monsters stuck in doortracks, walls or hanging off lifts — The Doom Wiki — Doom, Doom 2, Doom 3, and more]
  21. [doom.wikia.com/wiki/Ghost_monster Ghost monster — The Doom Wiki — Doom, Doom 2, Doom 3, and more]


Отрывок, характеризующий Doom engine

Он перекрестился на передний угол и подошел к Долохову, протягивая черную, небольшую руку.
– Федору Ивановичу! – сказал он, кланяясь.
– Здорово, брат. – Ну вот и он.
– Здравствуй, ваше сиятельство, – сказал он входившему Анатолю и тоже протянул руку.
– Я тебе говорю, Балага, – сказал Анатоль, кладя ему руки на плечи, – любишь ты меня или нет? А? Теперь службу сослужи… На каких приехал? А?
– Как посол приказал, на ваших на зверьях, – сказал Балага.
– Ну, слышишь, Балага! Зарежь всю тройку, а чтобы в три часа приехать. А?
– Как зарежешь, на чем поедем? – сказал Балага, подмигивая.
– Ну, я тебе морду разобью, ты не шути! – вдруг, выкатив глаза, крикнул Анатоль.
– Что ж шутить, – посмеиваясь сказал ямщик. – Разве я для своих господ пожалею? Что мочи скакать будет лошадям, то и ехать будем.
– А! – сказал Анатоль. – Ну садись.
– Что ж, садись! – сказал Долохов.
– Постою, Федор Иванович.
– Садись, врешь, пей, – сказал Анатоль и налил ему большой стакан мадеры. Глаза ямщика засветились на вино. Отказываясь для приличия, он выпил и отерся шелковым красным платком, который лежал у него в шапке.
– Что ж, когда ехать то, ваше сиятельство?
– Да вот… (Анатоль посмотрел на часы) сейчас и ехать. Смотри же, Балага. А? Поспеешь?
– Да как выезд – счастлив ли будет, а то отчего же не поспеть? – сказал Балага. – Доставляли же в Тверь, в семь часов поспевали. Помнишь небось, ваше сиятельство.
– Ты знаешь ли, на Рожество из Твери я раз ехал, – сказал Анатоль с улыбкой воспоминания, обращаясь к Макарину, который во все глаза умиленно смотрел на Курагина. – Ты веришь ли, Макарка, что дух захватывало, как мы летели. Въехали в обоз, через два воза перескочили. А?
– Уж лошади ж были! – продолжал рассказ Балага. – Я тогда молодых пристяжных к каурому запрег, – обратился он к Долохову, – так веришь ли, Федор Иваныч, 60 верст звери летели; держать нельзя, руки закоченели, мороз был. Бросил вожжи, держи, мол, ваше сиятельство, сам, так в сани и повалился. Так ведь не то что погонять, до места держать нельзя. В три часа донесли черти. Издохла левая только.


Анатоль вышел из комнаты и через несколько минут вернулся в подпоясанной серебряным ремнем шубке и собольей шапке, молодцовато надетой на бекрень и очень шедшей к его красивому лицу. Поглядевшись в зеркало и в той самой позе, которую он взял перед зеркалом, став перед Долоховым, он взял стакан вина.
– Ну, Федя, прощай, спасибо за всё, прощай, – сказал Анатоль. – Ну, товарищи, друзья… он задумался… – молодости… моей, прощайте, – обратился он к Макарину и другим.
Несмотря на то, что все они ехали с ним, Анатоль видимо хотел сделать что то трогательное и торжественное из этого обращения к товарищам. Он говорил медленным, громким голосом и выставив грудь покачивал одной ногой. – Все возьмите стаканы; и ты, Балага. Ну, товарищи, друзья молодости моей, покутили мы, пожили, покутили. А? Теперь, когда свидимся? за границу уеду. Пожили, прощай, ребята. За здоровье! Ура!.. – сказал он, выпил свой стакан и хлопнул его об землю.
– Будь здоров, – сказал Балага, тоже выпив свой стакан и обтираясь платком. Макарин со слезами на глазах обнимал Анатоля. – Эх, князь, уж как грустно мне с тобой расстаться, – проговорил он.
– Ехать, ехать! – закричал Анатоль.
Балага было пошел из комнаты.
– Нет, стой, – сказал Анатоль. – Затвори двери, сесть надо. Вот так. – Затворили двери, и все сели.
– Ну, теперь марш, ребята! – сказал Анатоль вставая.
Лакей Joseph подал Анатолю сумку и саблю, и все вышли в переднюю.
– А шуба где? – сказал Долохов. – Эй, Игнатка! Поди к Матрене Матвеевне, спроси шубу, салоп соболий. Я слыхал, как увозят, – сказал Долохов, подмигнув. – Ведь она выскочит ни жива, ни мертва, в чем дома сидела; чуть замешкаешься, тут и слезы, и папаша, и мамаша, и сейчас озябла и назад, – а ты в шубу принимай сразу и неси в сани.
Лакей принес женский лисий салоп.
– Дурак, я тебе сказал соболий. Эй, Матрешка, соболий! – крикнул он так, что далеко по комнатам раздался его голос.
Красивая, худая и бледная цыганка, с блестящими, черными глазами и с черными, курчавыми сизого отлива волосами, в красной шали, выбежала с собольим салопом на руке.
– Что ж, мне не жаль, ты возьми, – сказала она, видимо робея перед своим господином и жалея салопа.
Долохов, не отвечая ей, взял шубу, накинул ее на Матрешу и закутал ее.
– Вот так, – сказал Долохов. – И потом вот так, – сказал он, и поднял ей около головы воротник, оставляя его только перед лицом немного открытым. – Потом вот так, видишь? – и он придвинул голову Анатоля к отверстию, оставленному воротником, из которого виднелась блестящая улыбка Матреши.
– Ну прощай, Матреша, – сказал Анатоль, целуя ее. – Эх, кончена моя гульба здесь! Стешке кланяйся. Ну, прощай! Прощай, Матреша; ты мне пожелай счастья.
– Ну, дай то вам Бог, князь, счастья большого, – сказала Матреша, с своим цыганским акцентом.
У крыльца стояли две тройки, двое молодцов ямщиков держали их. Балага сел на переднюю тройку, и, высоко поднимая локти, неторопливо разобрал вожжи. Анатоль и Долохов сели к нему. Макарин, Хвостиков и лакей сели в другую тройку.
– Готовы, что ль? – спросил Балага.
– Пущай! – крикнул он, заматывая вокруг рук вожжи, и тройка понесла бить вниз по Никитскому бульвару.
– Тпрру! Поди, эй!… Тпрру, – только слышался крик Балаги и молодца, сидевшего на козлах. На Арбатской площади тройка зацепила карету, что то затрещало, послышался крик, и тройка полетела по Арбату.
Дав два конца по Подновинскому Балага стал сдерживать и, вернувшись назад, остановил лошадей у перекрестка Старой Конюшенной.
Молодец соскочил держать под уздцы лошадей, Анатоль с Долоховым пошли по тротуару. Подходя к воротам, Долохов свистнул. Свисток отозвался ему и вслед за тем выбежала горничная.
– На двор войдите, а то видно, сейчас выйдет, – сказала она.
Долохов остался у ворот. Анатоль вошел за горничной на двор, поворотил за угол и вбежал на крыльцо.
Гаврило, огромный выездной лакей Марьи Дмитриевны, встретил Анатоля.
– К барыне пожалуйте, – басом сказал лакей, загораживая дорогу от двери.
– К какой барыне? Да ты кто? – запыхавшимся шопотом спрашивал Анатоль.
– Пожалуйте, приказано привесть.
– Курагин! назад, – кричал Долохов. – Измена! Назад!
Долохов у калитки, у которой он остановился, боролся с дворником, пытавшимся запереть за вошедшим Анатолем калитку. Долохов последним усилием оттолкнул дворника и схватив за руку выбежавшего Анатоля, выдернул его за калитку и побежал с ним назад к тройке.


Марья Дмитриевна, застав заплаканную Соню в коридоре, заставила ее во всем признаться. Перехватив записку Наташи и прочтя ее, Марья Дмитриевна с запиской в руке взошла к Наташе.
– Мерзавка, бесстыдница, – сказала она ей. – Слышать ничего не хочу! – Оттолкнув удивленными, но сухими глазами глядящую на нее Наташу, она заперла ее на ключ и приказав дворнику пропустить в ворота тех людей, которые придут нынче вечером, но не выпускать их, а лакею приказав привести этих людей к себе, села в гостиной, ожидая похитителей.
Когда Гаврило пришел доложить Марье Дмитриевне, что приходившие люди убежали, она нахмурившись встала и заложив назад руки, долго ходила по комнатам, обдумывая то, что ей делать. В 12 часу ночи она, ощупав ключ в кармане, пошла к комнате Наташи. Соня, рыдая, сидела в коридоре.
– Марья Дмитриевна, пустите меня к ней ради Бога! – сказала она. Марья Дмитриевна, не отвечая ей, отперла дверь и вошла. «Гадко, скверно… В моем доме… Мерзавка, девчонка… Только отца жалко!» думала Марья Дмитриевна, стараясь утолить свой гнев. «Как ни трудно, уж велю всем молчать и скрою от графа». Марья Дмитриевна решительными шагами вошла в комнату. Наташа лежала на диване, закрыв голову руками, и не шевелилась. Она лежала в том самом положении, в котором оставила ее Марья Дмитриевна.
– Хороша, очень хороша! – сказала Марья Дмитриевна. – В моем доме любовникам свидания назначать! Притворяться то нечего. Ты слушай, когда я с тобой говорю. – Марья Дмитриевна тронула ее за руку. – Ты слушай, когда я говорю. Ты себя осрамила, как девка самая последняя. Я бы с тобой то сделала, да мне отца твоего жалко. Я скрою. – Наташа не переменила положения, но только всё тело ее стало вскидываться от беззвучных, судорожных рыданий, которые душили ее. Марья Дмитриевна оглянулась на Соню и присела на диване подле Наташи.
– Счастье его, что он от меня ушел; да я найду его, – сказала она своим грубым голосом; – слышишь ты что ли, что я говорю? – Она поддела своей большой рукой под лицо Наташи и повернула ее к себе. И Марья Дмитриевна, и Соня удивились, увидав лицо Наташи. Глаза ее были блестящи и сухи, губы поджаты, щеки опустились.
– Оставь… те… что мне… я… умру… – проговорила она, злым усилием вырвалась от Марьи Дмитриевны и легла в свое прежнее положение.
– Наталья!… – сказала Марья Дмитриевна. – Я тебе добра желаю. Ты лежи, ну лежи так, я тебя не трону, и слушай… Я не стану говорить, как ты виновата. Ты сама знаешь. Ну да теперь отец твой завтра приедет, что я скажу ему? А?
Опять тело Наташи заколебалось от рыданий.
– Ну узнает он, ну брат твой, жених!
– У меня нет жениха, я отказала, – прокричала Наташа.
– Всё равно, – продолжала Марья Дмитриевна. – Ну они узнают, что ж они так оставят? Ведь он, отец твой, я его знаю, ведь он, если его на дуэль вызовет, хорошо это будет? А?
– Ах, оставьте меня, зачем вы всему помешали! Зачем? зачем? кто вас просил? – кричала Наташа, приподнявшись на диване и злобно глядя на Марью Дмитриевну.
– Да чего ж ты хотела? – вскрикнула опять горячась Марья Дмитриевна, – что ж тебя запирали что ль? Ну кто ж ему мешал в дом ездить? Зачем же тебя, как цыганку какую, увозить?… Ну увез бы он тебя, что ж ты думаешь, его бы не нашли? Твой отец, или брат, или жених. А он мерзавец, негодяй, вот что!
– Он лучше всех вас, – вскрикнула Наташа, приподнимаясь. – Если бы вы не мешали… Ах, Боже мой, что это, что это! Соня, за что? Уйдите!… – И она зарыдала с таким отчаянием, с каким оплакивают люди только такое горе, которого они чувствуют сами себя причиной. Марья Дмитриевна начала было опять говорить; но Наташа закричала: – Уйдите, уйдите, вы все меня ненавидите, презираете. – И опять бросилась на диван.
Марья Дмитриевна продолжала еще несколько времени усовещивать Наташу и внушать ей, что всё это надо скрыть от графа, что никто не узнает ничего, ежели только Наташа возьмет на себя всё забыть и не показывать ни перед кем вида, что что нибудь случилось. Наташа не отвечала. Она и не рыдала больше, но с ней сделались озноб и дрожь. Марья Дмитриевна подложила ей подушку, накрыла ее двумя одеялами и сама принесла ей липового цвета, но Наташа не откликнулась ей. – Ну пускай спит, – сказала Марья Дмитриевна, уходя из комнаты, думая, что она спит. Но Наташа не спала и остановившимися раскрытыми глазами из бледного лица прямо смотрела перед собою. Всю эту ночь Наташа не спала, и не плакала, и не говорила с Соней, несколько раз встававшей и подходившей к ней.
На другой день к завтраку, как и обещал граф Илья Андреич, он приехал из Подмосковной. Он был очень весел: дело с покупщиком ладилось и ничто уже не задерживало его теперь в Москве и в разлуке с графиней, по которой он соскучился. Марья Дмитриевна встретила его и объявила ему, что Наташа сделалась очень нездорова вчера, что посылали за доктором, но что теперь ей лучше. Наташа в это утро не выходила из своей комнаты. С поджатыми растрескавшимися губами, сухими остановившимися глазами, она сидела у окна и беспокойно вглядывалась в проезжающих по улице и торопливо оглядывалась на входивших в комнату. Она очевидно ждала известий об нем, ждала, что он сам приедет или напишет ей.
Когда граф взошел к ней, она беспокойно оборотилась на звук его мужских шагов, и лицо ее приняло прежнее холодное и даже злое выражение. Она даже не поднялась на встречу ему.
– Что с тобой, мой ангел, больна? – спросил граф. Наташа помолчала.
– Да, больна, – отвечала она.
На беспокойные расспросы графа о том, почему она такая убитая и не случилось ли чего нибудь с женихом, она уверяла его, что ничего, и просила его не беспокоиться. Марья Дмитриевна подтвердила графу уверения Наташи, что ничего не случилось. Граф, судя по мнимой болезни, по расстройству дочери, по сконфуженным лицам Сони и Марьи Дмитриевны, ясно видел, что в его отсутствие должно было что нибудь случиться: но ему так страшно было думать, что что нибудь постыдное случилось с его любимою дочерью, он так любил свое веселое спокойствие, что он избегал расспросов и всё старался уверить себя, что ничего особенного не было и только тужил о том, что по случаю ее нездоровья откладывался их отъезд в деревню.


Со дня приезда своей жены в Москву Пьер сбирался уехать куда нибудь, только чтобы не быть с ней. Вскоре после приезда Ростовых в Москву, впечатление, которое производила на него Наташа, заставило его поторопиться исполнить свое намерение. Он поехал в Тверь ко вдове Иосифа Алексеевича, которая обещала давно передать ему бумаги покойного.
Когда Пьер вернулся в Москву, ему подали письмо от Марьи Дмитриевны, которая звала его к себе по весьма важному делу, касающемуся Андрея Болконского и его невесты. Пьер избегал Наташи. Ему казалось, что он имел к ней чувство более сильное, чем то, которое должен был иметь женатый человек к невесте своего друга. И какая то судьба постоянно сводила его с нею.
«Что такое случилось? И какое им до меня дело? думал он, одеваясь, чтобы ехать к Марье Дмитриевне. Поскорее бы приехал князь Андрей и женился бы на ней!» думал Пьер дорогой к Ахросимовой.
На Тверском бульваре кто то окликнул его.
– Пьер! Давно приехал? – прокричал ему знакомый голос. Пьер поднял голову. В парных санях, на двух серых рысаках, закидывающих снегом головашки саней, промелькнул Анатоль с своим всегдашним товарищем Макариным. Анатоль сидел прямо, в классической позе военных щеголей, закутав низ лица бобровым воротником и немного пригнув голову. Лицо его было румяно и свежо, шляпа с белым плюмажем была надета на бок, открывая завитые, напомаженные и осыпанные мелким снегом волосы.
«И право, вот настоящий мудрец! подумал Пьер, ничего не видит дальше настоящей минуты удовольствия, ничто не тревожит его, и оттого всегда весел, доволен и спокоен. Что бы я дал, чтобы быть таким как он!» с завистью подумал Пьер.
В передней Ахросимовой лакей, снимая с Пьера его шубу, сказал, что Марья Дмитриевна просят к себе в спальню.
Отворив дверь в залу, Пьер увидал Наташу, сидевшую у окна с худым, бледным и злым лицом. Она оглянулась на него, нахмурилась и с выражением холодного достоинства вышла из комнаты.
– Что случилось? – спросил Пьер, входя к Марье Дмитриевне.
– Хорошие дела, – отвечала Марья Дмитриевна: – пятьдесят восемь лет прожила на свете, такого сраму не видала. – И взяв с Пьера честное слово молчать обо всем, что он узнает, Марья Дмитриевна сообщила ему, что Наташа отказала своему жениху без ведома родителей, что причиной этого отказа был Анатоль Курагин, с которым сводила ее жена Пьера, и с которым она хотела бежать в отсутствие своего отца, с тем, чтобы тайно обвенчаться.
Пьер приподняв плечи и разинув рот слушал то, что говорила ему Марья Дмитриевна, не веря своим ушам. Невесте князя Андрея, так сильно любимой, этой прежде милой Наташе Ростовой, променять Болконского на дурака Анатоля, уже женатого (Пьер знал тайну его женитьбы), и так влюбиться в него, чтобы согласиться бежать с ним! – Этого Пьер не мог понять и не мог себе представить.
Милое впечатление Наташи, которую он знал с детства, не могло соединиться в его душе с новым представлением о ее низости, глупости и жестокости. Он вспомнил о своей жене. «Все они одни и те же», сказал он сам себе, думая, что не ему одному достался печальный удел быть связанным с гадкой женщиной. Но ему всё таки до слез жалко было князя Андрея, жалко было его гордости. И чем больше он жалел своего друга, тем с большим презрением и даже отвращением думал об этой Наташе, с таким выражением холодного достоинства сейчас прошедшей мимо него по зале. Он не знал, что душа Наташи была преисполнена отчаяния, стыда, унижения, и что она не виновата была в том, что лицо ее нечаянно выражало спокойное достоинство и строгость.
– Да как обвенчаться! – проговорил Пьер на слова Марьи Дмитриевны. – Он не мог обвенчаться: он женат.
– Час от часу не легче, – проговорила Марья Дмитриевна. – Хорош мальчик! То то мерзавец! А она ждет, второй день ждет. По крайней мере ждать перестанет, надо сказать ей.
Узнав от Пьера подробности женитьбы Анатоля, излив свой гнев на него ругательными словами, Марья Дмитриевна сообщила ему то, для чего она вызвала его. Марья Дмитриевна боялась, чтобы граф или Болконский, который мог всякую минуту приехать, узнав дело, которое она намерена была скрыть от них, не вызвали на дуэль Курагина, и потому просила его приказать от ее имени его шурину уехать из Москвы и не сметь показываться ей на глаза. Пьер обещал ей исполнить ее желание, только теперь поняв опасность, которая угрожала и старому графу, и Николаю, и князю Андрею. Кратко и точно изложив ему свои требования, она выпустила его в гостиную. – Смотри же, граф ничего не знает. Ты делай, как будто ничего не знаешь, – сказала она ему. – А я пойду сказать ей, что ждать нечего! Да оставайся обедать, коли хочешь, – крикнула Марья Дмитриевна Пьеру.
Пьер встретил старого графа. Он был смущен и расстроен. В это утро Наташа сказала ему, что она отказала Болконскому.
– Беда, беда, mon cher, – говорил он Пьеру, – беда с этими девками без матери; уж я так тужу, что приехал. Я с вами откровенен буду. Слышали, отказала жениху, ни у кого не спросивши ничего. Оно, положим, я никогда этому браку очень не радовался. Положим, он хороший человек, но что ж, против воли отца счастья бы не было, и Наташа без женихов не останется. Да всё таки долго уже так продолжалось, да и как же это без отца, без матери, такой шаг! А теперь больна, и Бог знает, что! Плохо, граф, плохо с дочерьми без матери… – Пьер видел, что граф был очень расстроен, старался перевести разговор на другой предмет, но граф опять возвращался к своему горю.
Соня с встревоженным лицом вошла в гостиную.
– Наташа не совсем здорова; она в своей комнате и желала бы вас видеть. Марья Дмитриевна у нее и просит вас тоже.
– Да ведь вы очень дружны с Болконским, верно что нибудь передать хочет, – сказал граф. – Ах, Боже мой, Боже мой! Как всё хорошо было! – И взявшись за редкие виски седых волос, граф вышел из комнаты.
Марья Дмитриевна объявила Наташе о том, что Анатоль был женат. Наташа не хотела верить ей и требовала подтверждения этого от самого Пьера. Соня сообщила это Пьеру в то время, как она через коридор провожала его в комнату Наташи.
Наташа, бледная, строгая сидела подле Марьи Дмитриевны и от самой двери встретила Пьера лихорадочно блестящим, вопросительным взглядом. Она не улыбнулась, не кивнула ему головой, она только упорно смотрела на него, и взгляд ее спрашивал его только про то: друг ли он или такой же враг, как и все другие, по отношению к Анатолю. Сам по себе Пьер очевидно не существовал для нее.
– Он всё знает, – сказала Марья Дмитриевна, указывая на Пьера и обращаясь к Наташе. – Он пускай тебе скажет, правду ли я говорила.
Наташа, как подстреленный, загнанный зверь смотрит на приближающихся собак и охотников, смотрела то на того, то на другого.
– Наталья Ильинична, – начал Пьер, опустив глаза и испытывая чувство жалости к ней и отвращения к той операции, которую он должен был делать, – правда это или не правда, это для вас должно быть всё равно, потому что…
– Так это не правда, что он женат!
– Нет, это правда.
– Он женат был и давно? – спросила она, – честное слово?
Пьер дал ей честное слово.
– Он здесь еще? – спросила она быстро.
– Да, я его сейчас видел.
Она очевидно была не в силах говорить и делала руками знаки, чтобы оставили ее.


Пьер не остался обедать, а тотчас же вышел из комнаты и уехал. Он поехал отыскивать по городу Анатоля Курагина, при мысли о котором теперь вся кровь у него приливала к сердцу и он испытывал затруднение переводить дыхание. На горах, у цыган, у Comoneno – его не было. Пьер поехал в клуб.
В клубе всё шло своим обыкновенным порядком: гости, съехавшиеся обедать, сидели группами и здоровались с Пьером и говорили о городских новостях. Лакей, поздоровавшись с ним, доложил ему, зная его знакомство и привычки, что место ему оставлено в маленькой столовой, что князь Михаил Захарыч в библиотеке, а Павел Тимофеич не приезжали еще. Один из знакомых Пьера между разговором о погоде спросил у него, слышал ли он о похищении Курагиным Ростовой, про которое говорят в городе, правда ли это? Пьер, засмеявшись, сказал, что это вздор, потому что он сейчас только от Ростовых. Он спрашивал у всех про Анатоля; ему сказал один, что не приезжал еще, другой, что он будет обедать нынче. Пьеру странно было смотреть на эту спокойную, равнодушную толпу людей, не знавшую того, что делалось у него в душе. Он прошелся по зале, дождался пока все съехались, и не дождавшись Анатоля, не стал обедать и поехал домой.
Анатоль, которого он искал, в этот день обедал у Долохова и совещался с ним о том, как поправить испорченное дело. Ему казалось необходимо увидаться с Ростовой. Вечером он поехал к сестре, чтобы переговорить с ней о средствах устроить это свидание. Когда Пьер, тщетно объездив всю Москву, вернулся домой, камердинер доложил ему, что князь Анатоль Васильич у графини. Гостиная графини была полна гостей.
Пьер не здороваясь с женою, которую он не видал после приезда (она больше чем когда нибудь ненавистна была ему в эту минуту), вошел в гостиную и увидав Анатоля подошел к нему.
– Ah, Pierre, – сказала графиня, подходя к мужу. – Ты не знаешь в каком положении наш Анатоль… – Она остановилась, увидав в опущенной низко голове мужа, в его блестящих глазах, в его решительной походке то страшное выражение бешенства и силы, которое она знала и испытала на себе после дуэли с Долоховым.
– Где вы – там разврат, зло, – сказал Пьер жене. – Анатоль, пойдемте, мне надо поговорить с вами, – сказал он по французски.
Анатоль оглянулся на сестру и покорно встал, готовый следовать за Пьером.
Пьер, взяв его за руку, дернул к себе и пошел из комнаты.
– Si vous vous permettez dans mon salon, [Если вы позволите себе в моей гостиной,] – шопотом проговорила Элен; но Пьер, не отвечая ей вышел из комнаты.
Анатоль шел за ним обычной, молодцоватой походкой. Но на лице его было заметно беспокойство.
Войдя в свой кабинет, Пьер затворил дверь и обратился к Анатолю, не глядя на него.
– Вы обещали графине Ростовой жениться на ней и хотели увезти ее?
– Мой милый, – отвечал Анатоль по французски (как и шел весь разговор), я не считаю себя обязанным отвечать на допросы, делаемые в таком тоне.
Лицо Пьера, и прежде бледное, исказилось бешенством. Он схватил своей большой рукой Анатоля за воротник мундира и стал трясти из стороны в сторону до тех пор, пока лицо Анатоля не приняло достаточное выражение испуга.
– Когда я говорю, что мне надо говорить с вами… – повторял Пьер.
– Ну что, это глупо. А? – сказал Анатоль, ощупывая оторванную с сукном пуговицу воротника.
– Вы негодяй и мерзавец, и не знаю, что меня воздерживает от удовольствия разможжить вам голову вот этим, – говорил Пьер, – выражаясь так искусственно потому, что он говорил по французски. Он взял в руку тяжелое пресспапье и угрожающе поднял и тотчас же торопливо положил его на место.
– Обещали вы ей жениться?
– Я, я, я не думал; впрочем я никогда не обещался, потому что…
Пьер перебил его. – Есть у вас письма ее? Есть у вас письма? – повторял Пьер, подвигаясь к Анатолю.
Анатоль взглянул на него и тотчас же, засунув руку в карман, достал бумажник.
Пьер взял подаваемое ему письмо и оттолкнув стоявший на дороге стол повалился на диван.
– Je ne serai pas violent, ne craignez rien, [Не бойтесь, я насилия не употреблю,] – сказал Пьер, отвечая на испуганный жест Анатоля. – Письма – раз, – сказал Пьер, как будто повторяя урок для самого себя. – Второе, – после минутного молчания продолжал он, опять вставая и начиная ходить, – вы завтра должны уехать из Москвы.
– Но как же я могу…
– Третье, – не слушая его, продолжал Пьер, – вы никогда ни слова не должны говорить о том, что было между вами и графиней. Этого, я знаю, я не могу запретить вам, но ежели в вас есть искра совести… – Пьер несколько раз молча прошел по комнате. Анатоль сидел у стола и нахмурившись кусал себе губы.