Изометрическая графика в компьютерных играх

Поделись знанием:
Перейти к: навигация, поиск

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

Так же используются термины «2.5D» и «псевдо-3D».

С появлением мощных графических систем изометрическая проекция стала менее популярна, будучи замененна перспективной проекцией.





Обзор

В области компьютерных видеоигр использование изометрии стало популярным из-за простоты, с которой 2D спрайт и основанная на тайлах графика может с её помощью имитировать 3D-окружение. Поскольку объекты не меняют своего размера в зависимости от расположения в игровом пространстве, нет необходимости в сложных вычислениях масштабов спрайтов и моделировании визуальной перспективы. Это позволяет отображать большие трёхмерные пространства 8-битным и 16-битным, а также карманным игровым системам. Проблемы с глубиной поможет решить хороший игровой дизайн.

Разница с «настоящей» изометрической проекцией

Проекция, обычно использующаяся в видеоиграх, несколько отличается от «настоящей» изометрии из-за ограничений растровой графики. Линии по осям x и y выглядели бы неаккуратно, если бы были отклонены на 30 ° к горизонтали. Современные компьютеры могут устранить эту проблему, используя сглаживание, но более старые графические системы не поддерживали достаточное количество цветов либо не обладали достаточными вычислительными ресурсами, чтобы сделать это.

Вместо этого, оси x и y отклонялись на 26,565 ° (арктангенс 0.5) от горизонтали, однако игровые системы, не использующие квадратные пиксели, могли отображать любые углы, в том числе и «истинную» изометрию. Поэтому, эту форму проекции можно описать как модификацию диметрической проекции, так как в ней равны только два угла между осями из трёх (116.565 °, 116,565 °, 126,87 °).

Похожие проекции

Термин часто применяется к играм с проекцией, похожей на «настоящую изометрию», включая игры, которые используют триметрическую проекцию (Fallout, SimCity 4), игры, использующие косоугольную проекцию (The Legend of Zelda: A Link to the Past, Ultima Online), а также игры, использующие комбинацию перспективной проекции и вида с высоты птичьего полета (Torchlight[1],, Silent Storm[2]).

Другие примеры игр, использующих косоугольную проекцию: оригинальный SimCity, EarthBound и Paperboy.

История изометрических видеоигр

Хотя в истории компьютерных игр уже в начале 1970-х годов были игры с истинной 3D графикой, первые видеоигры, использующие изометрическую проекцию в значении, описанном выше, появились только в 1980-х и были аркадами.

1980-е годы

Первый случай использования изометрии в видеоиграх — Sega Zaxxon[3][4], выпущенная в январе 1982. Это был изометрический скролл-шутер, в котором игрок управлял самолётом. Так же это был один из первых случаев отображения теней в играх.

Другая ранняя изометрическая игра — Q*bert, которую Уоррен Дэвис и Джефф Ли начали писать в апреле 1982 и выпустили в октябре/ноябре 1982. В игре была представлена статическая пирамида в изометрической проекции, на которую игрок должен был запрыгнуть.

В 1983 году была выпущена изометрическая аркада-платформер Конго-Бонго, работающая на том же оборудовании, что и Zaxxon. Игрок мог перемещаться на больших изометрических уровнях, в том числе подниматься и опускаться по оси Z. То же было возможно и в аркаде Marble Madness 1984 года выпуска.

В это время изометрические игры перестали быть эксклюзивами для аркадных аппаратов и пришли на домашние компьютеры с выпуском Ant Attack для ZX Spectrum в 1983. Игрок мог двигаться в любом направлении, предлагая полную свободу движения, в отличие от Zaxxon. Вид так же мог быть повернут на 90 градусов вокруг своей оси. Журнал ZX Crash присудил ей 100 % в области графики[5].

Год спустя на свет появилась новая игра для ZX Spectrum — Knight Lore, которая определила жанр изометрических игр на годы вперёд. Эта игра породила множество клонов для домашних компьютеров. Другие примеры тех лет: Highway Encounter (1985), Batman (1986), Head Over Heels (1987) и La Abadía del Crimen (1987). Изометрия в те годы не ограничивалась только аркадами — существует, например, стратегическая игра Populous 1987 года.

1990-е и после

В течение 1990-х появляются некоторые очень успешные игры, использующие фиксированную изометрическую перспективу, такие как Civilization II, Diablo и Fallout. Но с появлением 3D ускорителей в персональных компьютерах и игровых консолях игры, до этого использовавшие 2D перспективу, стали поворачиваться к 3D. Эту тенденцию можно проследить и в преемниках вышеупомянутых игр: например, Civilization IV и Diablo III используют настоящее 3D. В то время как Diablo II использовала фиксированную перспективу, как и её предшественник, она дополнительно позволяла масштабировать спрайты, чтобы придать себе эффект 3D[6].

В течение 1990-х изометрическая графика начала использоваться в компьютерных ролевых играх, особенно в тактических ролевых играх, многие из которых используют изометрическую графику и поныне. К концу 1990-х такие игры, как Vandal Hearts (1996), Final Fantasy Tactics (1997) и Breath of Fire III (1997), использовали трёхмерную графику для создания изометрического вида, в котором игрок мог свободно вращать камеру.


Сопоставление координат на экране и в пространстве

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

Типичным примером является определение тайла, находящегося под курсором. Один из методов сделать это использует те же матрицы вращения, что определяли изометрическое представление. Затем, путём деления значения х и у на ширину и высоту тайла и округления до ближайшего меньшего значения мы можем получить координаты х и у в изометрическом пространстве.

Другой способ, который требует меньшего объёма вычислений и подходит, если метод вызывается в каждом кадре, основывается на предположении, что мы имеем квадратную сетку, которая была повёрнута на 45 градусов, а затем сжата пополам, как описано выше. Сперва находятся координаты тайла на виртуальной сетке (линии которой параллельны границам экрана), которые мы называем виртуальным x и виртуальным y. Как видно, координаты тайлов виртуальной сетки на центральной оси совпадают с координатами тайлов на центральной оси изометрического пространства.

Тайл виртуальной сетки, лежащий на одну позицию правее центральной линии, будет иметь соответствие с тайлом изометрического пространства, лежащего на одну позицию меньше по оси y (по сравнению со своим виртуальным аналогом). Можно вывести формулу, которая будет вычислять координату y тайла в изометрическом пространстве, отнимая от виртуального y разницу между виртуальным x центральной линии и виртуальным x искомого тайла.

Пример кода на C (при условии, что переменные имеют правильные значения):

float virtualTileX = screenx / virtualTileWidth;
float virtualTileY = screeny / virtualTileHeight;

 // Некоторые системы дисплеев имеют начало координат в левом нижнем углу, а тайл на карте в левом верхнем углу, так что мы должны перевернуть у
float inverseTileY = numberOfTilesInY - virtualTileY;

float isoTileX = inverseTileY + (virtualTileX - numberOfTilesInX / 2);
float isoTileY = inverseTileY - (virtualTileY - numberOfTilesInY / 2);

Тайл на виртуальной сетке будет содержать более чем один изометрический тайл и в зависимости от того, где нажата кнопка мыши, следует сопоставить с соответствующими координатами. Ключевую роль в этом методе является то, что виртуальные координаты — числа с плавающей точкой, а не целые числа. Виртуальный х и у могут быть, например, (3,5, 3,5), что означает центр третьей плитки.

Напишите отзыв о статье "Изометрическая графика в компьютерных играх"

Примечания

  1. McDougall, Jaz [www.gamesradar.com/pc/torchlight/review/torchlight/a-20091104113625828034/g-2009100517263770009 Torchlight Review]. Games Radar (November 4, 2009).
  2. O'Hagan, Steve [www.computerandvideogames.com/article.php?id=94816 PC Previews: Silent Storm]. ComputerAndVideoGames.com. Future Publishing Limited (7 августа 2008). Проверено 13 декабря 2007.
  3. Bernard Perron & Mark J. P. Wolf (2008), Video game theory reader two, [books.google.co.uk/books?id=oe0zNalKkTgC&pg=PA158 p. 158], Taylor & Francis, ISBN 0-415-96282-X
  4. [www.klov.com/game_detail.php?game_id=12757 Zaxxon] (англ.) на сайте Killer List of Videogames
  5. Krikke, J. (Jul–August 2000). «Axonometry: a matter of perspective». Computer Graphics and Applications (IEEE) 20 (4): 7–11. DOI:10.1109/38.851742.
  6. [findarticles.com/p/articles/mi_pwwi/is_200005/ai_mark15009744 Diablo II Nears Completion As Blizzard Prepares For Final Phase Of Beta Testing], FindArticles, BNET Business Network (May 2000). Проверено 29 сентября 2008. (недоступная ссылка)

Отрывок, характеризующий Изометрическая графика в компьютерных играх

В вечер 26 го августа и Кутузов, и вся русская армия были уверены, что Бородинское сражение выиграно. Кутузов так и писал государю. Кутузов приказал готовиться на новый бой, чтобы добить неприятеля не потому, чтобы он хотел кого нибудь обманывать, но потому, что он знал, что враг побежден, так же как знал это каждый из участников сражения.
Но в тот же вечер и на другой день стали, одно за другим, приходить известия о потерях неслыханных, о потере половины армии, и новое сражение оказалось физически невозможным.
Нельзя было давать сражения, когда еще не собраны были сведения, не убраны раненые, не пополнены снаряды, не сочтены убитые, не назначены новые начальники на места убитых, не наелись и не выспались люди.
А вместе с тем сейчас же после сражения, на другое утро, французское войско (по той стремительной силе движения, увеличенного теперь как бы в обратном отношении квадратов расстояний) уже надвигалось само собой на русское войско. Кутузов хотел атаковать на другой день, и вся армия хотела этого. Но для того чтобы атаковать, недостаточно желания сделать это; нужно, чтоб была возможность это сделать, а возможности этой не было. Нельзя было не отступить на один переход, потом точно так же нельзя было не отступить на другой и на третий переход, и наконец 1 го сентября, – когда армия подошла к Москве, – несмотря на всю силу поднявшегося чувства в рядах войск, сила вещей требовала того, чтобы войска эти шли за Москву. И войска отступили ещо на один, на последний переход и отдали Москву неприятелю.
Для тех людей, которые привыкли думать, что планы войн и сражений составляются полководцами таким же образом, как каждый из нас, сидя в своем кабинете над картой, делает соображения о том, как и как бы он распорядился в таком то и таком то сражении, представляются вопросы, почему Кутузов при отступлении не поступил так то и так то, почему он не занял позиции прежде Филей, почему он не отступил сразу на Калужскую дорогу, оставил Москву, и т. д. Люди, привыкшие так думать, забывают или не знают тех неизбежных условий, в которых всегда происходит деятельность всякого главнокомандующего. Деятельность полководца не имеет ни малейшего подобия с тою деятельностью, которую мы воображаем себе, сидя свободно в кабинете, разбирая какую нибудь кампанию на карте с известным количеством войска, с той и с другой стороны, и в известной местности, и начиная наши соображения с какого нибудь известного момента. Главнокомандующий никогда не бывает в тех условиях начала какого нибудь события, в которых мы всегда рассматриваем событие. Главнокомандующий всегда находится в средине движущегося ряда событий, и так, что никогда, ни в какую минуту, он не бывает в состоянии обдумать все значение совершающегося события. Событие незаметно, мгновение за мгновением, вырезается в свое значение, и в каждый момент этого последовательного, непрерывного вырезывания события главнокомандующий находится в центре сложнейшей игры, интриг, забот, зависимости, власти, проектов, советов, угроз, обманов, находится постоянно в необходимости отвечать на бесчисленное количество предлагаемых ему, всегда противоречащих один другому, вопросов.
Нам пресерьезно говорят ученые военные, что Кутузов еще гораздо прежде Филей должен был двинуть войска на Калужскую дорогу, что даже кто то предлагал таковой проект. Но перед главнокомандующим, особенно в трудную минуту, бывает не один проект, а всегда десятки одновременно. И каждый из этих проектов, основанных на стратегии и тактике, противоречит один другому. Дело главнокомандующего, казалось бы, состоит только в том, чтобы выбрать один из этих проектов. Но и этого он не может сделать. События и время не ждут. Ему предлагают, положим, 28 го числа перейти на Калужскую дорогу, но в это время прискакивает адъютант от Милорадовича и спрашивает, завязывать ли сейчас дело с французами или отступить. Ему надо сейчас, сию минуту, отдать приказанье. А приказанье отступить сбивает нас с поворота на Калужскую дорогу. И вслед за адъютантом интендант спрашивает, куда везти провиант, а начальник госпиталей – куда везти раненых; а курьер из Петербурга привозит письмо государя, не допускающее возможности оставить Москву, а соперник главнокомандующего, тот, кто подкапывается под него (такие всегда есть, и не один, а несколько), предлагает новый проект, диаметрально противоположный плану выхода на Калужскую дорогу; а силы самого главнокомандующего требуют сна и подкрепления; а обойденный наградой почтенный генерал приходит жаловаться, а жители умоляют о защите; посланный офицер для осмотра местности приезжает и доносит совершенно противоположное тому, что говорил перед ним посланный офицер; а лазутчик, пленный и делавший рекогносцировку генерал – все описывают различно положение неприятельской армии. Люди, привыкшие не понимать или забывать эти необходимые условия деятельности всякого главнокомандующего, представляют нам, например, положение войск в Филях и при этом предполагают, что главнокомандующий мог 1 го сентября совершенно свободно разрешать вопрос об оставлении или защите Москвы, тогда как при положении русской армии в пяти верстах от Москвы вопроса этого не могло быть. Когда же решился этот вопрос? И под Дриссой, и под Смоленском, и ощутительнее всего 24 го под Шевардиным, и 26 го под Бородиным, и в каждый день, и час, и минуту отступления от Бородина до Филей.


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