PDA

Просмотр полной версии : В чем прикол изометрии?


goodguy
22.05.2011, 23:04
Часто вижу игры, созданные с применением изометрической проекции.
Но так и не монял, в чем смысл делать все эти пересчеты, когда точно такого же эффекта можно добиться и не изменяя систему координат

Кто делал такие игры, почему выбирали изометрию?

Лично я пробовал делать изометрическую игру. После чего сделал то же самое, но с простой системой координат. Разницы для игрока никакой

i.o.
23.05.2011, 00:09
потому что проц не грузило смертельно в отличии от 3д.

Bgg
23.05.2011, 00:14
Почему разницы никакой для игрока? На этот вопрос может ответить либо статистика, либо опытный гейм-дизайнер/арт-директор.

GBee
23.05.2011, 00:29
Просто игры какие-то плоскоуровневые, были бы горы да небоскребы, арки и т.п. Кто помнит червяков на Денди, которые вверх стремились. Такую игру видом сверху не реализуешь :о)

goodguy
23.05.2011, 07:17
потому что проц не грузило смертельно в отличии от 3д.

Я о 3д и не говорил.
Почему разницы никакой для игрока? На этот вопрос может ответить либо статистика, либо опытный гейм-дизайнер/арт-директор.
Ни то ни другое не является показателем.
Просто игры какие-то плоскоуровневые, были бы горы да небоскребы, арки и т.п. Кто помнит червяков на Денди, которые вверх стремились. Такую игру видом сверху не реализуешь :о)
Не внимательно вы, товарищи, прочитали тему ;)
Я могу сделать здания, дороги, деревья и т.д. под таким же углом как в изометрии, но при этом использовать обычную систему координат, без всяких заморочек с пересчетом. Так зачем выбирать подход усложнения кода, когда можно сделать все проще?

Psycho Tiger
23.05.2011, 08:02
Артефакты вылезут потом :)

GBee
23.05.2011, 09:56
Не внимательно вы, товарищи, прочитали тему
Я могу сделать здания, дороги, деревья и т.д. под таким же углом как в изометрии, но при этом использовать обычную систему координат, без всяких заморочек с пересчетом. Так зачем выбирать подход усложнения кода, когда можно сделать все проще?

Отнюдь, с плоскими играми, каких большинство во ВКонтакте, то есть нет вторых этажей у зданий, на гору не подняться, нет арочных сооружений, через которые можно пройти, может вы и справитесь. Но все равно думаю, что "Артефакты вылезут потом" (с) Ну, а когда начнете с ними бороться и побеждать, у вас получится свой изометрический движок ;о))

Ну и http://xitri.com/2008/10/17/two-step-isometric.html

goodguy
23.05.2011, 11:05
Артефакты вылезут потом :)

Нет. Уже давно использую, не вылезает никаких артефактов.
Вот так выглядит игра, которую я сейчас делаю:
http://s008.***********/i306/1105/86/d8105196f7b6.jpg
Движок не изометрический. Но игрок этого не поймет. Здания, деревья, траву, какие-то дефекты земной поверхности можно располагать где угодно и практически под любым углом.
Никаких артефактов не всплывает, мосты, арки, многоэтажные здания можно организовать запросто.
Похоже этот движок и правда будет уникальным :D

Ну а если серьезно, по-моему изометрия - это как стадный инстинкт. Все делают, значит и мне надо так же. Читал кучу разных ресурсов и книжек по изометрии, и так и не нашел никаких преимуществ

Zebestov
23.05.2011, 11:22
Прикольный скрин!

Tips and tricks:
Объекты наподобие бункера лучше рисовать с перспективой, пускай и небольшой. Иначе (как видно) происходит эффект обратной перспективы.

Котяра
23.05.2011, 11:26
Если это не изометрия - каким образом вы считаете глубину?

alatar
23.05.2011, 11:28
Но так и не монял, в чем смысл делать все эти пересчеты, когда точно такого же эффекта можно добиться и не изменяя систему координат
Что значит "не изменяя систему координат"?

Zebestov
23.05.2011, 11:32
Котяра, очевидно же — по Y

Добавлено через 6 минут
Что значит "не изменяя систему координат"?
Похоже, что речь идет о том, что система XY при отображении не претерпевает особенных пересчетов — один лишь коэффициент на ось Y. Ну и сортировка теперь зависит лишь от Y, как я писал выше.

alatar
23.05.2011, 11:40
очевидно же — по Y
Как при таком подходе разруливается ситуация, когда два объекта находятся на разной высоте и визуально попадают в одни координаты или дальний объект получается выше по y, но перекрывается ближним объектом?

Zebestov
23.05.2011, 11:45
Если я стою перед Эйфелевой башней, я все равно буду нарисован последним — у меня Y больше! :D

goodguy
23.05.2011, 11:45
Если это не изометрия - каким образом вы считаете глубину?
Этим занимается прога для редактирования карт. Расставляю в ней объекты, сразу на нужную глубину. Механизм для этого предусмотрен. Когда карта генерируется, все объекты уже стоят в нужном порядке,а игра на основе XML расставляет их в том же порядке.
Деревья находятся на слое выше. После кучи экспериментов, пришел к выводу, что это самый оптимальный подход в плане производительности.

Прикольный скрин!
Спасибо :)
Графику делаю самостоятельно. Кроме персонажей.

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

Что значит "не изменяя систему координат"?
Как бы это объяснить... В общем не используюя "поворот" всех координат добавляемых объектов на 45 градусов.

Как при таком подходе разруливается ситуация, когда два объекта находятся на разной высоте и визуально попадают в одни координаты или дальний объект получается выше по y, но перекрывается ближним объектом?
Такого движок не допускает. Описание дал выше

GBee
23.05.2011, 11:48
Это не совсем та проекция, но скрин все равно супер. Когда релиз?

alatar
23.05.2011, 11:51
Такого движок не допускает.
Вот и ответ, почему используют :)
В общем не используюя "поворот" всех координат добавляемых объектов на 45 градусов.
Какой поворот? В нормальной изометрии используются 3D координаты и никаких поворотов нет, просто проецируются на 2D плоскость (дешево).
x1 = x – z;
y1 = y * 1.2247 + (x + z) * 0.5;
z2 = (x + z)*0.866 – y * 0.707;
z2 для сортировки.

Zebestov
23.05.2011, 11:52
googguy, но при такой перспективе упрямый мозг рисует "трапецию"... может, как вариант, избегать очевидно параллельных линий? На примере бункера: покоцать бока площадки — война же! :)

etc
23.05.2011, 11:59
goodguy, декартовы на самом деле почти у всех «изометрических» игрушек. Действительно изометрическую ещё поискать нужно, я участвовал в разработке трёх (или четырёх, не помню) подобных игрушек и у всех декартовы.

goodguy
23.05.2011, 12:06
goodguy, декартовы на самом деле почти у всех «изометрических» игрушек.
Ну, я встречал реально изометрические. Там было примерно так, как написал alatar
googguy, но при такой перспективе упрямый мозг рисует "трапецию"... может, как вариант, избегать очевидно параллельных линий? На примере бункера: покоцать бока площадки — война же!

Да это еще не финальный вариант. Просто нужно с чем-то работать, поэтому сделал пока на скорую руку.
Это не совсем та проекция, но скрин все равно супер. Когда релиз?
Тут даже не берусь прогнозировать :D
Надеюсь месяца через 2 - 3 запущу альфу. Она будет полностью онлайновая, в реальном времени. Так что работы выше крыши

dark256
23.05.2011, 12:37
Не понял суть трэда.
Есть вид сверху, и вид в профиль. Все прочее, что не чистое 3Д можно назвать "изометрией"....
Коэффициенты, координаты, глубина - на вкус и цвет...
Глубина - по У, если это ордината... Как развернуть домики относительно положения координатной сетки - дело вкуса. У вас домик , кстати, выглядит некрасиво.

http://cs9538.vkontakte.ru/u43915359/123376192/z_ee5f9115.jpg

Гексагональное поле, изометрией назвать нельзя, но это именно она :)

mooncar
23.05.2011, 12:48
http://cs9538.vkontakte.ru/u43915359/123376192/z_ee5f9115.jpg
Гексагональное поле, изометрией назвать нельзя, но это именно она :)
Почему нельзя-то? Чистая изометрия в контексте игр.

goodguy
23.05.2011, 12:52
Не понял суть трэда.
Суть в том, что я не понимаю, зачем делать подобные расчеты при создании игр с таким видом
x1 = x – z;
y1 = y * 1.2247 + (x + z) * 0.5;
z2 = (x + z)*0.866 – y * 0.707;

Когда можно использовать обычную декартову систему. В нескольких книжках видел примеры создания изометрических игр, и везде были такие расчеты. Но смысла не понимаю

alatar
23.05.2011, 13:02
Смысл обойти вот это:
Такого движок не допускает.
Плюс, проще расчитывать физику и траектории, проще реализация AI. Проще представить уровень в голове (как трехмерный), даже без редактора уровней. Можно брать готовую анимацию из 3D программ. По-сути, вся работа ведется с обычными тремя измерениями. Движок, только рендерит это на экран.

goodguy
23.05.2011, 13:11
проще реализация AI.
Из-за плиток?
И меня вообще своя система определения объекта на карте, не хуже плиточной. По ней так же можно организовать А*.

Можно брать готовую анимацию из 3D программ
Так в моей игре тоже берется анимация из 3д программ.

Смысл обойти вот это:
Такого движок не допускает.
х.м. Я обошел без изометрии. И не прибегал к каким-то супер ухищрениям

Плюс, проще расчитывать физику и траектории
Ну вот это наверное можно назвать первым плюсом, который я вижу в такой схеме

alatar
23.05.2011, 13:33
Из-за плиток?
Да нет там, по-сути, плиток. Объект может находиться между плитками, "висеть в воздухе", все что угодно. Я имел ввиду, что проще (более реалистично) сделать проверку "враг тебя видит / не видит", расчитать попал / не попал, физически достоверную траекторию пули / снаряда. Т.е. логика строится, как будто у нас честное 3D.
Так в моей игре тоже берется анимация из 3д программ.
Не анимированные картинки, а именно анимацию (тупо координаты объекта во времени).
х.м. Я обошел без изометрии. И не прибегал к каким-то супер ухищрениям
Почему тогда пишешь, что невозможно отсортировать два объекта с одним y, но разных по близости к наблюдателю?

dark256
23.05.2011, 13:34
Почему нельзя-то? Чистая изометрия в контексте игр.

Система рассчета координат хитровыделанная :)

х.м. Я обошел без изометрии. И не прибегал к каким-то супер ухищрениям

А как тогда ваш вид называется? Фронтальная диметрия? :)

goodguy
23.05.2011, 13:53
Почему тогда пишешь, что невозможно отсортировать два объекта с одним y, но разных по близости к наблюдателю?
Где я это писал? С сортировкой там все нормально. Недавно думал как сделать, но в итоге остался с тем, что было раньше (конструкция сэндвич из 2 битмапок), только малость доработал

Да нет там, по-сути, плиток. Объект может находиться между плитками, "висеть в воздухе", все что угодно. Я имел ввиду, что проще (более реалистично) сделать проверку "враг тебя видит / не видит", расчитать попал / не попал, физически достоверную траекторию пули / снаряда. Т.е. логика строится, как будто у нас честное 3D.
Теперь понял =)

А как тогда ваш вид называется? Фронтальная диметрия?
Понятия не имею :D

alatar
23.05.2011, 13:59
Где я это писал?
Вот тут:
Как при таком подходе разруливается ситуация, когда два объекта находятся на разной высоте и визуально попадают в одни координаты или дальний объект получается выше по y, но перекрывается ближним объектом?
Такого движок не допускает. Описание дал выше

expl
23.05.2011, 14:23
Суть в том, что я не понимаю, зачем делать подобные расчеты при создании игр с таким видом
x1 = x – z;
y1 = y * 1.2247 + (x + z) * 0.5;
z2 = (x + z)*0.866 – y * 0.707;

Когда можно использовать обычную декартову систему. В нескольких книжках видел примеры создания изометрических игр, и везде были такие расчеты. Но смысла не понимаю

Я знаю только одну причину - эстетическую.
Тот же бункер красивше бы смотрелся, если его повернуть на 45%
Скалы в Tiberium Sun(изометрия) и строения смотрятся гораздо красивее, чем в Dune II (проекция без поворота на 45%)

Хоть в том же Tiberium Sun солдатов выделять гораздо неудобнее из-за такой перспективы.
Впринципе, если все строения круглые или их можно немного повернуть без ущерба сортировки, нет элементов рельефа, неважно смотрящихся без поворота, ИМХО и прямая проекция сгодится

А то что там разные высоты движок не допускает - навряд ли это к нему сложнее прикрутить, чем к изометрическому (в Дюне же летающие транспортировщики были)

goodguy
23.05.2011, 14:27
Вот тут:

Аа. Я тут вопроса не заметил в конце предложения =) Думал это утверждение :D

Тот же бункер красивше бы смотрелся, если его повернуть на 45%
Не не, тут все поворачивается. Это лишь один вид бункера. Есть и повернутые. И не только на 45, а так же на 30, 60, 90 и на те же углы, только отрицательные. С этим все в порядке.

GBee
23.05.2011, 14:46
Деревья находятся на слое выше.

То есть герой за лесом и перед лесом всегда будет над деревьями или под ними? Или он хитро между слоями прыгает?

Вот кстати, лично я изометрией считаю только такой вариант, как на картинке в блоге.
http://www.flasher.ru/forum/blog.php?b=392

goodguy
23.05.2011, 14:47
То есть герой за лесом и перед лесом всегда будет над деревьями или под ними?
Он находится на слое под ними. Но получиться так, что деревья растут у него из головы не может, так как там еще есть система расчета того, где он может ходить, а где нет
В редакторе карт можно задать места, где перемещаться нельзя
http://s55.***********/i147/1105/d7/bd928f29102b.jpg
Если я нарисую это, солдат не сможет зайти на красную зону.
Но в игре это не визуализируется, естественно, в место этого есть массив объектов, типа такого:
[ { a: 1 }, { a: 0 } ]
Солдат проверяет на какой плитке он находится. Алгоритм там простой. Потом в берет номер этой плитки и проверяет соответствующий ему элемент этого массива. Например, если он стоит на клетке номер 0, то проверив этот массив, и значение нулевого индекса "а" он получит резултат 1, то он не пойдет на эту плитку

GBee
23.05.2011, 14:57
То есть головой всегда упирается в нижнюю часть красной плитки и перед лесом впритык к пальме фактически стоять не может?

goodguy
23.05.2011, 15:00
Пока да. Но это я исправлю. Просто еще руки не дошли :D

alatar
23.05.2011, 15:07
Вот кстати, лично я изометрией считаю только такой вариант, как на картинке в блоге.
Изометрия (http://ru.wikipedia.org/wiki/%D0%98%D0%B7%D0%BE%D0%BC%D0%B5%D1%82%D1%80%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%86%D0%B8%D1%8F) (Изометрическая проекция), бывает разная. :)

HardCoder
23.05.2011, 15:09
Если не секрет, редактор карт собственный? И только для конкретной игры или используется и для других разработок?

Добавлено через 27 минут
Вот кстати, лично я изометрией считаю только такой вариант, как на картинке в блоге.
http://www.flasher.ru/forum/blog.php?b=392А какая есть другая изометрия? Если не уточнять: прямоугольная или косоугольная изометрия, то всегда поразумевают прямоугольную. А то что зачастую используют в играх - никак не имеет 120 градусов между осями (с целью удобного создания изображений плиток и сглаживания краев). По крайней мере я других проекций не встречал и всегда использую соотношение: высота ромба = ширина/2.

goodguy
23.05.2011, 15:46
Если не секрет, редактор карт собственный?
Собственный. Только для этой игры.
Других игр я в данный момент не разрабатываю, и на эту времени уходит гора :D

GBee
23.05.2011, 17:21
Изометрия (http://ru.wikipedia.org/wiki/%D0%98%D0%B7%D0%BE%D0%BC%D0%B5%D1%82%D1%80%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%86%D0%B8%D1%8F) (Изометрическая проекция), бывает разная. :)

Да у меня эта ссылка уже открыта была :о) Но, как уже говорил, змейки у меня эталон http://media.giantbomb.com/uploads/0/3009/275367-snake_rattle__n_roll_nes_005_super.png

terbooter
09.06.2011, 10:55
goodguy, у тебя не изометрия, а аксонометрия.
Смотреть скрин http://cad.kurganobl.ru/assets/images/rucad/doc/axonom/clip0001.gif
Вспомнилось с уроков черчения =)
В аксонометрии, понятно, z сортировка = сортировке по y.

Игру делаешь в свободное время? Графику рисуешь сам?

alatar
09.06.2011, 11:06
terbooter, изометрическая проекция это разновидность аксонометрической проекции. И сортировать все проекции можно разными способами.