Quake 3 beta на WebGL



    Брэндон Джонс, являющийся активным WebGL-разработчиком, выпустил новую beta-версию игры Quake 3 для браузеров. По заявлением разработчика, в релизе сделано несколько изменений, которые ускорили работу игры: обновлен glMatrix, полностью убран jQuery из проекта, началась работа над полноэкранном режимом. И действительно, игрушка показывает отличный показатель fps. Но главным отличием Брендон называет появившуюся поддержку геймпада. Хоть разработчик и не уверен, что побегать можно будет с любым устройством, однако проделанная работа впечатляет.

    Конечно, проект еще находится в ранней стадии, ведь даже пострелять нельзя, но зато можно в полной мере насладиться возможностями WebGL.

    Попробовать можно тут.

    Similar posts

    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 82

      +2
      Красиво, ИМХО
        +2
        Все это клево. Единственное что портит игру — это управление… нет мауслука… для управления взглядом приходится кнопку нажимать.
          +3
          Автор демки уже интегрировал кое какое управление с дойстика, но из-за зоопарка браузеров и незаконченого API у меня с логитековским рулем не заработало.
            +46
            В quake3 с рулём это сурово!
              +2
              помнится в своё время, когда ку3 только вышел — его многие ругали, называя не иначе как NFS с рейлганом из-за намного большей динамики относительно предшественника ку2
                +2
                отличная динамика такая, могу вам сказать. особенно когда стрейфишь со скоростью порядка 1.5к ups и одним прыжком перепрыгиваешь расстояние как q3tourney4 в ширину.
                  +1
                  всецело могу вас поддержать) просто вспомнилось как раньше олдфаги негодовали по этому поводу. а теперь ку3 легенда, и до сих пор популярен, хотя и немного в другом формате: quakelive.com/
                    0
                    в quake 4 динамика ещё круче.
              +2
              Если нажать кнопку и увести мышь за пределы окна а потом отжать — получаете урезанный мауслук)
                –1
                Мауслук? Так зажми ЛКМ и верти как хочешь. Всё есть ;)
                  0
                  Жду, когда появится возможность захвата мыши мыши в таких приложениях.
                  Причем сначала будет запрашиваться разрешение у пользователя (по аналогии с определением местоположения, полноэкранного режима и т.д.).
                    0
                    Уже пилиться, кстати.

                    Кое-какая инфа:
                    Pepper and JavaScript apps can programmatically obtain mouse lock after full screen has been entered
                    For trusted sites, full screen is entered without a user prompt to confirm.
                    For untrusted sites full screen is entered and the user is prompted (see strings below). Mouse lock will not be possible until the user confirms fullscreen.
                    Attempts to lock the mouse prior to this will immediately fail.
                    0
                    Единственное, что портит игру:

                    1. Грузится 10 минут.
                    2. Ещё 10 минут она компилит чего-то там.
                    3. Страшно дрыгается экран, как в бешеном припадке.
                    4. На моём браузере она не работает, приходится качать (устанавливать и енаблить WebGL) на более другом.

                    Резюме: для просто попробовать WebGL подходит, для реального коммерческого применения — нет.

                      0
                      К чему это я? К тому, что банальный Unity3D (и даже Flash) даст 100500 очков вперёд этому костылю на JS.
                    0
                    FF 10 Win 7 не работает.
                      0
                      В 12-ой Aurora все отлично :).
                        0
                        работает
                        media.tojicode.com/q3bsp/?tesselate=2
                        0
                        В лисе не заработала правда, а в хроме вроде ниче. Графика понравилась!
                        А это он так в портал прыгнул ссылка :))
                          0
                          А у меня не прыгает в портал вобще :-)
                          +1
                          Браузер не умеет хватать мышь. Тут нужно или установка её координат яваскриптом или круговое замыкание пространства. Пока это не будет — с шутерами на webGL будет хреново. Но явно введут уже хотя бы для этого.
                          А в квейке этом какая-то полная жопа с коллизиями. В хроме раз 5 респаунился из-за того что не мог выйти из стены.
                            0
                            А если на body повешать mousemove, м? :) не спасёт?
                              +1
                              Нет.
                              +1
                              Эту проблему решает Mouse Lock API. Кажется, в Хроме он уже работает.
                                0
                                В этом квейке ничего кроме графики не портанули, поэтому коллизии, идиотское перемещение и т.д.
                                0
                                Прикольно, но с мышкой еще надо поработать. Ну и поддержку в частности кваки этой не только хромом хотелось бы.
                                  –13
                                  Жуть какая. 30-40 фпс в маленьком окошке, в то время как нативный квейк в 1920х1200 выдает под 400 фпс.
                                  Я вот не понимаю: неужели неочевидно, что джаваскрипт не годится для таких тяжелых вещей?
                                    –7
                                    А вы про nodejs когда-нибудь слышали? А слышали-ли вы, то что можно на таком nodejs поставить?
                                      +3
                                      Странные у вас сравнения. В nodejs большую часть процессорного времени занимает работа, которая выполняется таки в нативном коде, как пример — регулярные выражения и общение с БД. Вы же не пишете на джаваскрипте парсер регулярок?
                                      А тут как раз таки все вычисляется на js. Я думаю, глупо спорить с тем, что скриптовые языки в разы (а иногда, как в данном случае — почти на порядок) оказываются медленнее грамотного кода на С, на котором был написан ку3
                                        0
                                        Ну а ядро nodejs поставлено на чём? Оно поставлено на браузерном JS движке. Я думаю, что вы не допонимаете того, что делает браузер с JS, он работает с кодом точно так-же как и nodejs.
                                          +1
                                          Где я утверждал обратное? Я к тому, что на nodejs никто не реализует сложные алгоритмы — это попросту нерационально.
                                            0
                                            Помоему мы друг друга недопонимаем. Я к тому, что и у nodejs и в браузере один и тот-же (V8) JS движок, который компилирует код в нативный код, для той или инной машины. Поэтому утверждать, что скорость JS медленна я бы нестал. Причина может быть в ботлнеках на разных уровнях архитектуры или по другим причинам.
                                              0
                                              Да, компилирует в нативный код. Но этот код по производительности в подметки не годится оптимизированному коду на С. Хотя и оверхедов тут дофига, не спорю
                                        +5
                                        И это только прототип. Если сделать полный порт и поставить в игру несколько ботов, то фпс спокойно и до 15-20 опустится, полагаю. Ну и кому такое надо? Вот Гугл это понял и пилит свой NaCl, за что им респект и уважуха. Ибо, право, поднадоело портирование всего чего ни попадя на js с многократным падением производительности
                                          –3
                                          Вы правы, что производительность меньше гораздо, но компьютеры совершенствуются все быстрей, через пару лет, я думаю, можно будет спокойно портировать скайрим на js и он не будет тормозить на современных компьютерах. Вот, например, эта квака дает у меня стандартные 60 фпс. Конечно скользкий вопрос — «зачем???», но и на него найдутся ответы :-)
                                        +5
                                        Вы так говорите, как будто они выпустили новую великолепную игру и продают её за бешеные деньги, но написали на JS. Это ведь делается только для демонстрации возможностей, ну и just for fun.
                                          –1
                                          Я говорю о перспективах js (и WebGL) в геймдеве в целом. И эта демка — очень показательный пример. Как just for fun — безусловно интересная работа, хоть и безсмысленная
                                            +1
                                            Вы сноб.
                                              0
                                              Нет, я просто не понимаю лютого восторга в посте и комментах, типа «игрушка показывает отличный показатель fps». Это ведь банальная неправда.
                                                –5
                                                У меня стабильные 63 FPS. Работает плавно, четко, без тормозов. В браузере. Без Flash. Это вызывает восторг. А вы — сноб.
                                                  +1
                                                  И вас ни разу не смущает, что оно работает в 8-10 медленнее, чем нативная версия? Пост у меня тоже вызвал восторг, до тех пор, пока я демку не запустил. Даже падение фпс в 2-3 раза я бы простил, но это уже за гранью добра и зла, а в реальной баталии от ваших 63 фпс осталось бы и того 20, что совершенно никуда не годится. Нормальных сетевых шутеров вроде того же квейка на js не предвидится именно по этой причине, а не потому, что я такой сноб и зануда. Не надо игнорировать факты просто потому, что вам так нравится идея работы этой демки без инсталляции и флеша. Не зря ведь Quake Live работает с помощью плагина в нативном коде
                                                    –9
                                                    У меня уже из слов остались только маты. Вы сделайте также, а потом глотку рвите.
                                                      +8
                                                      Сперва добейся, ага. У вас аргументы есть иные, кроме как «это круто»? Я довольно много времени в прошлом провел с программированием 3Д и прекрасно представляю, о чем говорю. 63 фпс при рендеринге голой карты с простыми коллизиями — это медленно. Адски медленно.
                                                        –8
                                                        Вот приходите вы на собеседование в %companyname% как JS-dev и говорите: «Я тут игрушку сделал, вот можете посмотреть. Возьмете меня работать?». Вы думаете, что вам ответят «Нет, 63 FPS — это медленно»?
                                                          +3
                                                          Ну во-первых, это лишь демка рендеринга карты — выдраный из контекста кусок. Игрой тут не пахнет и близко, реальная игра покажет фпс еще раза в 3 меньше.
                                                          По сути вопроса — не скажут, еонечно же, ведь это неплохая демонстрация способностей как js-программиста. Кто ж виноват, что единственный доступный инструмент не очень подходит для такого рода проектов? Собственно, как я писал веткой выше, всю эту проблему можно решить внедрением во все браузеры чего-то типа NaCl. И тогда всем будет хорошо — и высокие фпс, и работа в браузере без посторонних примочек
                                                            0
                                                            Какая разница какой язык? Всё-равно основные вычисления ложатся на видяху и OpenGL API, а там хоть Asm, хоть Си, хоть JavaScript, хоть QBasic.
                                                            А квака работала хорошо в силу кучу мелких оптимизаций. Человек просто написал игру. Если по ней нескольким людям пройтись пару раз профайлером, то получим пятикратное ускорение и скорость, приближающуюся к Си-шному варианту.
                                                              +1
                                                              Всё-равно основные вычисления ложатся на видяху и OpenGL API

                                                              С каких это пор? Все вычисления и обработка происходит на стороне CPU. Видеокарта в данном случае тупо рисует массив треугольников с наложенными на них текстурами. Если бы всё было так, как вы говорите, то производительность была бы гораздо больше. Квейк3 вообще был довольно простой и прямолинейный в плане рендеринга. А тут это выливается в очень большие оверхеды на общение между JS и OpenGL API.
                                                              И да, еще раз — он не написал игру. Он нарисовал рисовалку карт формат Квейка 3, не более. Это на несколько порядков более простая задача, чем написать игру
                                                                0
                                                                Ложатся ложатся.
                                                                Просто во времена Ку3 никаких шейдеров не было, и во времена Дума3 их тоже по сути еще не было.
                                                                Сейчас многое можно сделать по другому.
                                                                А 63 кадра для JS это очень хорошо.
                                                                Даже 20 кадров — это очень хорошо.
                                                                Уж больно много тупняков сидит в самих браузерах мешающих js работать.
                                                                  0
                                                                  И какие же такие вычисления тут, по вашему мнению, ложатся на видеокарту?
                                                                    0
                                                                    А их тут по сути два — T&L+Кривая анимация моделей ку3(keyframe+скелет) — уходят полностью.
                                                                    BSP можно загрузить и выкинуть сразу. Деревья на js не работают.
                                                                    Остается тупой брутальный рендер.
                                                                      0
                                                                      И вы думаете, T&L тормозит весь процесс на современных видеокартах? В 99 году и то проблем не было.
                                                                      А в чем проблема с реализацией BSP-дерева на js?
                                                                        0
                                                                        Я не говорил что тормозит. Я на самом деле намекал что рендер уровня Q3 может состоять из двух комманд.
                                                                        1. Настройка матрицы
                                                                        2. Вызов displayList
                                                                        Про BSP, как и _любые_ другие деревья я скажу просто — без возможности влиять на расположение нод в памяти нет возможности сделать быстрое дерево.
                                                                        mm_prefetch и другие 16 байтные офсеты на листья.
                                                                        В частности я не знаю ниодной реализации деревьев на js которые «имели бы смысл»
                                                                          0
                                                                          В уровнях Q3 дофига всяких динамических текстур. И они пересчитываются всё время. Небо то же… Так что вычислений на JS там предостаточно, и тупо поместить всю геометрию, скажем, в VBO, не выйдет
                                                                            0
                                                                            Кто пересчитывается?
                                                                            Где?
                                                                            Какой атрибут в шейдере( для публики — файл описания материала в Q3) за это отвечает?
                                                                              +1
                                                                              Ну вот например
                                                                                      {
                                                                              		clampmap textures/sfx/bullseye.tga
                                                                                              tcMod stretch sin .8 0.2 0 .2
                                                                                              tcmod rotate 200
                                                                                              blendFunc add
                                                                                              rgbGen identity
                                                                              	}
                                                                              


                                                                              Тут — вращение (rotate) и расстягивание (stretch) текстуры. а glRotate и glScale выполняются целиком на CPU даже на видеокартах с аппаратным блоком T&L
                                                                                0
                                                                                Вы чуть выше говорили что они «они пересчитываются всё время»
                                                                                А тут простите на VS текстурные координаты на матрицу помножить.
                                                                                Не интересно в общем.
                                                                                  0
                                                                                  Ну если бы на VS… Наличие glmatrix.js в коде демки вас не смутило?
                                                                                  У этого же автора есть демка уровня Quake 2. А там, как известно, карта абсолютно статична. И у меня эта демка выдает 200 фпс, что гораздо больше 40 фпс, выдаваемых демкой из поста
                                                      0
                                                      > И вас ни разу не смущает, что оно работает в 8-10 медленнее, чем нативная версия?

                                                      Наверняка в WebGL версии тупо включен VSync.
                                                        +3
                                                        Кстати да, судя по многочисленным комментам, фпс лимитирован 60. Реально он выше, я полагаю.
                                                          +1
                                                          Потенциально, а не реально, конечно же )
                                                            +1
                                                            bruce прав, в Chrome Flags включил Disable GPU VSync и фпс сразу за 100+ поднялся
                                                  0
                                                  Вы сноб.

                                                  Сноб — это совершенно другое. ZimM не сноб, а зануда.
                                                0
                                                За возможность играть в игры, не возясь с установкой многие склонятся в сторону JS. Сейчас браузеры делают то, что так и не сумела сделать Java, Flash и все остальные технологии — стать по-настоящему кросс-платформенной.
                                                  +1
                                                  Для простеньких казуалок JS — это действительно классно. Но не для динамичных шутеров, в которых FPS — залог играбельности, особенно в мультиплеере.
                                                  А в чем, по-вашему, выражается неполная кроссплатформенность Java и Flash? Вроде как они есть везде, где можно
                                                    0
                                                    Покажите мне deb'ку для java. Раньше были в дистрибутиве, но усилиями oracle по смене лицензии — теперь их нет. На офф. сайте deb'ок тоже нет.

                                                    Кросс-платформенное, да. Кое-как, со скрипом. Мне легче виндовое приложение запустить под wine'ом, чем возиться с ихним тарболом под линукс.

                                                    «FPS залог играбельности» — вопрос только в том, как оно написано и как быстро железо. И то и то устранимо. До выхода quake3 была масса 3D шутеров с меньшими требованиями и они были более чем успешны.

                                                    В этих условиях лично моё убеждение — как только проблемы роста закончатся, игры стремительно начнут переползать в браузеры. Хотя бы потому, что это тот самый легендарный SaaS, который должен будет решить проблемы пиратства, проблемы совместимости с железом и системами и т.д.
                                                      +1
                                                      Вот только они не были чисто сетевыми. До этого был Квейк 2, но он сносно работал даже в режиме программного рендеринга.
                                                      А синглплеере я лично проходил Дум 3 на 15-20 фпс и был этому счастлив — там не нужна большая скорость реакции
                                              0
                                              Ну, Crysis пока, наверное, не получится, а вот вместо флешовых казуалок — самое то. Например для Chrome есть годная гоночка на WebGL + злые птички для Кроума тоже на вебгл вроде.
                                              +1
                                              Прикольно, но имхо поиграть в такое не получится, много проваливался в текстуры, поворачивать не удбно. Тестировал за слабым компом (обычный квейк нормально идёт) увидел fps 4. WeGl хорошая вещь но имхо пока сыровата для полноценных игр
                                                +4
                                                Блин, вот почему прижилось «провалиться в текстуры», текстура — это же картинка, логичнее было бы провалиться в геометрию уровня :)
                                                  0
                                                  Это уже устоявшееся выражение )
                                                0
                                                Следующим шагом, надеюсь, будет порт Half-life на WebGL :)
                                                  0
                                                  Порт движка source от этого же автора — github.com/toji/webgl-source
                                                  Демо карты из TeamFortress2
                                                    0
                                                    Вряд ли. Исходники Source и GoldSource закрыты, увы. Разве что сама Valve захочет что-то такое сделать
                                                      +1
                                                      Есть open-sorce реализация GoldSource, называется Xash3d, прошёл на нём весь Half-Life и глюков не заметил.
                                                        0
                                                        Ухты, не знал. Спасибо.
                                                    +1
                                                    Видел эту демку полтора года назад и изменений кроме улучшенной производительности не заметил.

                                                    У Брендона еще есть карта из Quake2 и анимированная модель из Doom3.
                                                      +1
                                                      За 7 минут так и не загрузилось. Устал ждать :)
                                                        0
                                                        На FF что-то не прёт, пробуйте на Chrome.
                                                          0
                                                          Спасибо, по свободе попробую. Сейчас ждут дела домашние :)
                                                        +3
                                                        Вы шутите? Выглядит впечатляюще и работа хорошая, но Quake 3 здесь и не пахнет, по факту это всего лишь перемещение камеры по трехмерному миру, чем-то напоминающему Quake 3. Ни квейковского движка, ни оружия, ни пуль, никаких эффектов.
                                                          0
                                                          60 FPS, судя по кулеру, загрузка меньше 30%
                                                          Погонял на Logitech 510. Единственное что иногда заклинивает, и приходится респаунится.
                                                            0
                                                            Сколько раз на разных браузерах и разных системах ни пробовал, виснет на tesselating face 157 of 3358. Куда нажать?

                                                            Only users with full accounts can post comments. Log in, please.