Комментарии 101
месье знает толк в извращениях.
BFG 9000, предусмотрено?
Алсо, добавьте зеленых титизенов…
Алсо, добавьте зеленых титизенов…
прикольно, значительно лучше, чем в прошлый раз. При ходьбе обнаружил, что можно защелкать анимацию, если быстро нажимать вперед. Ну и, конечно, хотелось бы видеть просто плавное движение.
При ходьбе обнаружил, что можно защелкать анимацию, если быстро нажимать вперед.Это специально предусмотренное действие. Причин несколько:
1. Позволяет преодолевать длинные коридоры, не надо ждать окончания анимации
2. Если анимация вдруг заглючит — её можно сбросить
Unit.prototype.rcFrameRender = function (fn) { if (this.rcInterval) { clearInterval(this.rcInterval); } if (fn) { this.rcInterval = setInterval(fn, 1000/this.maze.cfg.fps); } return this; }
Первая мысль — Wolfenstain 3D
ru.wikipedia.org/wiki/Wolfenstein_3D
ru.wikipedia.org/wiki/Wolfenstein_3D
первая мысль ScreenSaver Win 95
ага. добавил в топик заметку про него. на самом деле большинство примеров Канвас — именно попытка повторить Wolf3d
Опера 10.5 в режиме канвы догоняет хрома, а в режиме HTML оставляет всех позади.
if (!confirm('Вы уверены, что хотите активировать «Читер мод»?')) return false;
if(window.prompt('Нужен пароль') != 1) return false;
:)
if(window.prompt('Нужен пароль') != 1) return false;
:)
Жаль, что мы в разных странах. Я бы предложил вам работу.
Засмотрелся на надписи, заблудился %)
А где монстры?
Я пятнадцать лет назад такую игру делал на паскале, прочитав книжку А. ЛаМота об играх. Подросло новое поколение и делает то же самое новыми средствами. Впрочем, это и есть технический прогресс — спиралевидное аккумулирование маразма )))
Вы действительно не замечаете различие между тем, что вы делали на паскале, и тем, что сделал TheShock?
А что? Есть какое-то офигенное различие? Может с годами математика поменялась, а мужики-то не знают?
Раздница — ЛаМот хорошо описал оптимизацию, которую могли использовать создатели игр.
Можно ускорить этот лабиринт в 2 раза по производительности, если немного разобраться с технологиями, которые использует браузер для рендеринга. :)
Можно ускорить этот лабиринт в 2 раза по производительности, если немного разобраться с технологиями, которые использует браузер для рендеринга. :)
можно и раз в 10, наверное. Только лучше пусть такой оптимизацией браузеры занимаются — оптимизируешь полгода под Opera 10.50, а выходит 10.70, которая шлет твою оптимизацию куда подальше и работает еще медленнее :)
Звучит как: я тут код написал, но он работает медленно на 4х ядерном Core i7, на AMD чуть быстрее, но… оптимизировать я не буду — пусть этим разработчики процессоров занимаются…
неа. Разработчики компиляторов (они этим и занимаются, кстати). Вы же не асме пишете, я надеюсь? :)
Приведу пример:
for( i=0; i<func(n); i++)…
…
k = func(n);
for( i=0; i<k; i++)…
от компилятора скорость никак не зависит…
Оптимизация в первую очередь идёт ПОД компилятор/процессор/браузер… А разработчики браузеров вам всего-лишь предоставляют возможности по оптимизации, которыми вы можете пользоваться, если знаете, умеете и желаете.
for( i=0; i<func(n); i++)…
…
k = func(n);
for( i=0; i<k; i++)…
от компилятора скорость никак не зависит…
Оптимизация в первую очередь идёт ПОД компилятор/процессор/браузер… А разработчики браузеров вам всего-лишь предоставляют возможности по оптимизации, которыми вы можете пользоваться, если знаете, умеете и желаете.
Мы с Вами говорим о разных вещах. Но на уровне браузера, кстати, приведенный код тоже можно оптимизировать. И у меня подозрение, что Chrome/Opera уже это делают.
Одно дело, когда речь идет об оптимизации стандартных конструкций — тут больше зависит от самого разработчика. Другое дело — когда о оптимизации под платформу (IE, Firefox, Opera, Safari). Здесь же от разработчика ничего не должно зависеть — платформа должна максимально под него подстраиваться. Это не означает, что нужно писать как попало — это означает, что не нужно предпринимать дополнитеьных приседаний там, где они излишни.
Одно дело, когда речь идет об оптимизации стандартных конструкций — тут больше зависит от самого разработчика. Другое дело — когда о оптимизации под платформу (IE, Firefox, Opera, Safari). Здесь же от разработчика ничего не должно зависеть — платформа должна максимально под него подстраиваться. Это не означает, что нужно писать как попало — это означает, что не нужно предпринимать дополнитеьных приседаний там, где они излишни.
Если разработчик идиот — то и код будет тормозить, как-бы платформа (браузер) не подстраивалась…
Если вы говорите о гонках скорости интерпретатора JS, то я говорю о том, что вне зависимости от скорости выполнения — есть рекомендации, с помощью которых можно ускорить процесс выполнения программы.
Пример — в PHP ++$i работает быстрее, чем $i++ ;)
Если вы говорите о гонках скорости интерпретатора JS, то я говорю о том, что вне зависимости от скорости выполнения — есть рекомендации, с помощью которых можно ускорить процесс выполнения программы.
Пример — в PHP ++$i работает быстрее, чем $i++ ;)
p.s.s. писал на 3D движок асме лет 12 назад ;)
Автору респект!
По возможности — добавьте стрейф. Для «лабиринтов» очень полезен.
А что такое «Шпилить!»? :)
Ахтунг! Дас киндер дер шуле нихт шпаренгеен!
про старенький проц улыбнуло
НЛО прилетело и опубликовало эту надпись здесь
From freecr.ru/maze/js.php:
))
if ($.browser.opera) {
// Opera sux?
$('table.map').appendTo('body');
}
))
Странный момент. Интересно, что там не так?
впервые проявилось еще в Stage1. Опера не хочет динамически менять стиль границ у таблицы. Таким образом в редакторе карт хотя фактически границы рисуются, но опера их не отображает. Приходится забирать эту таблицу и ставить на ее место её же. Тогда она перерисует её всю. Закомментируйте эту строку и попробуйте поредактировать карту в опере)
Добейтесь абсолютной плавности и производительности во всех современных стандартных браузерах. Если это невозможно, тогда бросайте заниматься идиотизмом. А если уж так хочется писать трехмерные игры, изучайте DirectX.
Если человек сам написал рендерер, то понять D3D для него вряд ли составит какую-то сложность. Обратное верно далеко не всегда.
Возможно и так. Но пока мне кажется, что автор просто ставит перед собой неправильные цели.
В мое время многие даже еще в школе баловались и писали на паскале трехмерные игры. Считаете ли вы рисование 3d родными средствами паскаля (через канву и тому подобное, без сторонних библиотек D3D и OpenGL) осмысленным действом? Нет, это просто детское стремление написать игру с помощью тех инструментов, которыми научились пользоваться. Конечно, это поднимает опыт начинающему программисту. Опытному программисту заниматься этим глупо.
В мое время многие даже еще в школе баловались и писали на паскале трехмерные игры. Считаете ли вы рисование 3d родными средствами паскаля (через канву и тому подобное, без сторонних библиотек D3D и OpenGL) осмысленным действом? Нет, это просто детское стремление написать игру с помощью тех инструментов, которыми научились пользоваться. Конечно, это поднимает опыт начинающему программисту. Опытному программисту заниматься этим глупо.
Автору респект и уважуха
Используется трассировка или растеризация?
интересно, чем они отличаются в контексте Canvas?
Родных средств для построения 3D сцен в Canvas, насколько мне известно, нет, — только работа с обычными битмапами. Поэтому или использовать отдельные либы, или писать визуализацию руками. Тут и встаёт вопрос, какой метод использовать, первый или второй.
Судя по таким комментам в коде:
возможно, трассировка. Автор молчит по этому поводу…
Судя по таким комментам в коде:
// ./lib/rayCaster/unit.js
возможно, трассировка. Автор молчит по этому поводу…
Мда, просто супер. Сколько примерно дней потратили на написание этого чуда?
Бажки:
1. Нарисовал карту tr.im/PrG7 нажал на С пишет что выхода в ней нет, хотя он есть — ради интереса сам прошел.
2. После нажатия на С управление отключается и стрелочки не работают. Приходится обновлять страницу. Chrome.
Бажки:
1. Нарисовал карту tr.im/PrG7 нажал на С пишет что выхода в ней нет, хотя он есть — ради интереса сам прошел.
2. После нажатия на С управление отключается и стрелочки не работают. Приходится обновлять страницу. Chrome.
принято. разберусь)
1. пофиксено)
А на вопрос сколько времени заняло так и не ответили! :)
ой… прошу прощения)))
впринципе, можно посмотреть историю коммитов, согласно которой я приступил к написанию Stage 2 поверх Stage 1 8 февраля и с перерывами исал до сегодня. То есть где-то 10 дней)
Первый Stage я написал за 1-2 дня
впринципе, можно посмотреть историю коммитов, согласно которой я приступил к написанию Stage 2 поверх Stage 1 8 февраля и с перерывами исал до сегодня. То есть где-то 10 дней)
Первый Stage я написал за 1-2 дня
у меня подтупливает, может надо еще точить или это мой браузер Фокс 3.018?
Open Source — это хорошо, конечно. Но OS без единого комментария — это как-то странно. Или Вы считаете, что названия переменных и производимые действия с «магическими константами» все очевидны? :)
Да, как бы снова не началось :) Кстати вот тут можно посмотреть как люди настойчиво придумывали изващенные лабиринты которых почти и не встретишь…
Вот тут
Вот тут
Комментарий #comment_2354084 (Забыл в ссылке указать)
tr.im/Ptt6 но обычно правило руки — хорошо, да)
прошу прощения, tr.im/PtvB
пс. пофиксил алгоритм автопрохождения, теперь, вроде, правильно проверяет) жмите «с»
пс. пофиксил алгоритм автопрохождения, теперь, вроде, правильно проверяет) жмите «с»
Небольшое замечание. У вас проецирование делается «влоб», от этого выходит эффект «рыбий глаз» — горизонтальные линии по стенам выходят искривленными, натянутыми на сферу. Вам бы по тангенсу считать, тогда будет прямо. Это старый прикол, на которые все софт-рендерерописатели наталкиваются.
на самом деле это не совсем так. покажу на примере
первый уровень. идем до первого поворота направо, потом до тупика прямо, поворачиваем направо, делаем один шаг и разворачиваемся на 180 градусов.
Рыбий глаз не убран:
Рыбий глаз убран:
поиск в моём коде строки «removeFish: data.angle»
Проблема, видимо, в том, что я использую очень большой угол — 100 градусов, в то время, как та же игра от Оперы использует 60 градусов. Я осознано пошёл на лёгкую деформацию изображения, чтобы отчётливо было видно есть ли поворот справа и слева.
первый уровень. идем до первого поворота направо, потом до тупика прямо, поворачиваем направо, делаем один шаг и разворачиваемся на 180 градусов.
Рыбий глаз не убран:
Рыбий глаз убран:
поиск в моём коде строки «removeFish: data.angle»
Проблема, видимо, в том, что я использую очень большой угол — 100 градусов, в то время, как та же игра от Оперы использует 60 градусов. Я осознано пошёл на лёгкую деформацию изображения, чтобы отчётливо было видно есть ли поворот справа и слева.
Maze = function () {
[...]
this.cfg = {
angle : 100,
кстати, этот эффект можно использовать в игре. взял какой-то итем — хопа и зрение как рыбий глаз))
Зато видишь на 200 градусов ;)
да, 200 градусов — тоже прикольный эффект, но рыбий глаз — он чуть из другой оперы (как на картинке выше). хотя интересно посмотреть будет на 360 градусов…
нет, автор реализовал угол обзора только до 180 градусов, но даже так выглядит ужасно))
кстати, тут можно увидеть и более грубый эффект размазывания краёв при большом углу)
кстати, тут можно увидеть и более грубый эффект размазывания краёв при большом углу)
Круто конечно но вот webgl и o3d для такого. Благо фокс и вебкит уже позволяют.
вот как надо работу искать =)
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Javascript Pseudo-3d Game. Stage 2