Pull to refresh

Javascript Pseudo-3d Game. Stage 2

Reading time 3 min
Views 5.6K

(Большая картинка)

Здравствуйте, хабрасообщество. Постараюсь быть максимально кратким. Эта статья — продолжение ранее высказанной идеи о псевдо-3d игре на JavaScript. У меня были чуть другие планы, но я учёл пожелания и рекомендации из предыдущего топика и реализовал Stage 2 лучше, чем мог представить этот этап до первой статьи.

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

Рендеринг


У нас есть два режима рендеринга (второй селект) — используя Canvas и используя DOM. Производительность у первого — выше.
Разрешение влияет на производительность. При том — только параметр, отвечающий за ширину, параметр, который отвечает за высоту — чисто эстетичен. Аналогично и с качеством. Если интересны подробности подсчёта — спрашивайте.

Что делают «текстуры» и «объемный свет» — посмотрите сами. Само собой при включении влияют на производительность.

Как браузеры в моем Линуксе с Кедами на стареньком проце 2x Intel® Core(TM)2 Duo CPU E4500 @ 2.20GHz и 2 гигах оперативки реагируют:

Canvas:
Хром даже на высоких настройках летает. Приятно играть. Раскинул по f11 на весь экран и плаваешь.
Фокс для приятной работы хочет средних настроек, Опера — чуть ниже среднего.

HtmlDOM
С этим похуже. Фокс и опера хотят низких настроек. В хроме, если отключить объемный свет (не очень он любит опасити менять) — можно побегать на средне-высоких. Даже Шестой Ослик под Линукс вполне сносно «варит» средне-низкие настройки.

Рекомендую юзать Гуглохром и Канвас.

Рисование карт


Карта рисуется как и прежде. Теперь краткий ман указан прям над полем для рисования. После завершения карты её можно tr.imнуть, чтобы не постить друзьям огромные ссылки. Если хотите попробовать пройти чью-то карту и подозреваете автора в ненадёжности — попробуйте ткнуть кнопку «С», скрипт скажет, проходима ли карта. Ради эксперимента можете порисовать «убийцы проходильщика» — интересно, упадёт ли на чём то мой алгоритм?

Разное


Есть несколько багов, о которых знаю даже я.
Попробуйте во время прохождения лабиринта в конец адреса дописать "&tr"

Почему не Wolf 3d?


Многие, кто занимался подобными вещами — делал это с помощью мана от Оперы по построению канвас-игр.. И я знаю несколько таких «игр», которые созданы ислючительно для демонстрации возможностей ДжаваСкрипт. Что мне в них не нравится:
1. Очень толстые стены, равные по толщине проходам. Я больше предпочитаю классические, тонкие стены
2. Свобода передвижения — это, конечно, круто. Но стабильной работы они так и не добились. Я решил слегка отказаться от свобоы в пользу меньших лагов.
3. Если вкладка открыта в соседнем окне — проц жрет безбожно. У меня процессорное время занимается только во время движения.
4. Я создаю игру, чтобы в итоге сделать её играбельной

Планы


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

Ссылка на лабиринт


Как обычно, open source

Внимание


Я, единоличный автор всего этого, ищу удалённую и стабильную работу JS-, PHP-быдлокодером (могу еще HTML+CSS). Хочу $2000, но готов к диалогу, если у вас есть интересные предложения. Несмотря на слегка вольный стиль статьи, в работе я хорош, серьёзен и надежен. Если вдохновил вас — пишите в личку хабра, на емейл shocksilien[at]gmail.com, icq: 275-405-682, или jabber: shock[at]jabber.com.ua
Tags:
Hubs:
+83
Comments 101
Comments Comments 101

Articles