Книга Икона DOOM. Жизнь от первого лица. Автобиография - Джон Ромеро
Шрифт:
Интервал:
Закладка:
Главный герой по имени Квейк – всемогущий и крутой.
Средневековый мир, отражающий наши приключения в D&D, которые происходили на открытых пространствах в насыщенной обстановке.
Мощный молот Квейка, который после броска возвращался обратно.
Небольшая внепространственная сущность, куб Адских Врат, который вращается вокруг Квейка и атакует врагов. Также он способен отправиться на разведку местности.
Интеграция серебряного дракона, хотя бы эстетическая.
Еще я хотел сосредоточиться на этих новых функциях, чтобы показать остальным, какие у Кармака планы на движок.
Экшен-ролевая игра с фэнтезийной эстетикой, где характеристики персонажей и забота о них не в приоритете, а может, статы и вовсе отсутствуют.
Продолжение правила дизайна № 8: если уровень можно сделать в DOOM II, значит, он недостаточно хорош для Quake. Дизайн должен быть передовым, как и наш движок. Поворот камеры вверх и вниз должен стать столпом дизайна уровней.
Многопользовательский геймплей, в котором особое внимание уделяется кооперативу или схватке между двумя или более игроками. Модель клиент-сервер позволяет иметь в игре более четырех пользователей, нужно изучить, что мы можем с этим сделать.
Помимо этих функций существовала масса зависимостей между кодом и дизайном, позволяющая копнуть еще глубже. Как руководитель разработки, я хотел предельно четко понимать ключевые особенности движка Кармака, поэтому с нетерпением ждал наших бесед. Для игр вплоть до 1990-х метание между дизайном и кодом воплощало собой вопрос о курице и яйце. В случае с готовым движком, например, актуальным сегодня Unreal Engine, большая часть геймплея или хотя бы его предполагаемая оптимальная часть уже встроены в инструментарий, поэтому команда выбирает лучший вариант для заранее определенной работы с дизайном. Unreal Engine, к примеру, используется во многих шутерах, потому что он изначально создавался для шутеров. Но когда нет технологии, возникает вопрос: что первично – дизайн или движок? В нашем случае сначала появилось только ядро движка (трехмерного с моделью клиент-сервер), а затем благодаря дизайну он стал расти. Мы с Кармаком сформировали совместный процесс, где одна идея перекликалась с другой.
Непросто объяснить всю сложность ситуации людям, которые в то время не занимались разработкой игр, но вот пример: посмотрите на функции последней версии Unreal Engine. Теперь избавьтесь от всех, кроме онлайна и трехмерности. Вот с этого мы начали, при этом понятия не имея, куда двигаться дальше. Каждая задумка, которую мы обсуждали с Кармаком, обтачивалась другими, чтобы проверить, смогут ли они работать вместе. Движок все еще оставался просто идеей трехмерного пространства. В нем не существовало даже таких базовых вещей, как физика и движение. Оружия и врагов тоже не было. Заложенные в дизайн функции влияли на код, и наоборот. По сути, мы одновременно создавали мир и то, что в этом мире можно делать, путем различных компромиссов. Целью этого совместного партнерства было одно: код должен помогать создавать дизайн ровно настолько, насколько дизайн – игровые возможности.
Сидя в кабинете Кармака, мы оба хотели поскорее начать изучение возможностей Quake. Мы все еще использовали NeXTSTEP для разработки, а для скорости взяли язык C, а не C++ (Objective-C использовался только для созданных мной инструментов). Что касается графики, то мы заимели новую рабочую станцию Silicon Graphics Indigo, которую планировалось использовать для 3D-моделирования. Разумеется, разработка игр изменчива. Я понимал: ничего из того, что мы здесь обсуждаем, не выбито в камне. Но я надеялся уйти с этой встречи с пониманием базового дизайна движка. Знание, как Кармак его спроектирует, позволит дизайнерам сделать более продвинутую игру.
– Итак, я хочу сделать движок на новой сетевой модели, в которой клиент подключается к серверу, – начал Кармак. – Несколько клиентов Quake смогут подключиться к серверу Quake для синглплеера, дезматча или ко-опа. В синглплеере сервер и клиент будут работать на одном PC. Пользователь может создать многопользовательскую игру на своем PC, и другие PC смогут к ней подключиться.
Самое крутое в модели клиент-сервер то, что пользователи не будут ограничены скоростью сети других игроков Quake, подключенных к тому же серверу. В DOOM всем участникам мультиплеера приходилось разделять скорость геймера с самым медленным соединением, потому что требовалась идеальная синхронизация. В Quake это ограничение исчезло[82]. Люди обязательно это оценят. В то время технология клиент-сервер считалась новой. Единственным нашим опытом работы с сетевыми моделями в играх в то время была DOOM и ее P2P. В экшенах клиент-сервер еще не использовал никто: в основном ее применяли в медленных, преимущественно текстовых играх.
– Более того, никто не сможет читерить, потому что сервер остается главенствующим звеном, – продолжил Джон. – Весь код обрабатывает сервер, а клиенты просто отражают состояние игры. Все, что они могут, – это отправить на сервер команду.
– Получается, сначала тебе надо написать такой код? – полюбопытствовал я. Возможности команды разработчиков напрямую завесили от порядка, в котором он будет его писать.
– Да, мне нужно оживить сетевую архитектуру, чтобы передавать информацию между клиентом и сервером и симулировать игру. Затем я смогу заняться клиентской архитектурой и рендерером.
Я кивнул. Клиент-серверный код влиял на все запланированные нами элементы. Мы обсудили технические детали архитектуры и размышляли, как она сможет повлиять на геймплей, в частности на дезматч. Несмотря на то что целью встречи считалось обсуждение разработки Quake, мы получали удовольствие от разговоров про новые технологии. Уже не терпелось начать обсуждение трехмерного движка, потому что он должен был открыть массу новых геймплейных возможностей.
– Я тут придумал сцену, где игрок стоит на вершине холма и смотрит вниз на какого-нибудь врага, которого хочет уничтожить, – поделился я. – Тут к нему сзади подкрадывается еще один игрок и – БАМ! – бьет его молотом по башке. И вот тот уже летит вниз с холма, а весь его обзор вращается вокруг своей оси, как было бы в реальной жизни.
Во время этих пояснений я размахивал руками как дирижер.
– Или представь себе зону-хаб, откуда идут пути в разные стороны. Один из них патрулирует какой-то огромный безумный монстр, а другие либо пусты, либо возле них слоняются мелкие враги. Тут можно реально ощутить себя сраным всемогущим Квейком – просто влететь с двух ног и начать меситься с боссом, эмоции с