Объявлено (https://hacks.mozilla.org/2014/06/playcanvas-goes-open-source/) об открытии (https://github.com/playcanvas/engine) под свободной лицензией MIT игрового движка PlayCanvas (https://playcanvas.com/), нацеленного на создание переносимых многоплатформенных 3D-игр, создаваемых с использованием web-технологий и ориентированных для запуска в браузерах с поддержкой HTML5 и WebGL (Chrome, Firefox, Safari, браузеры Android и iOS), без установки дополнительных плагинов. Основателями проекта являются Will Eastcott, бывший технический директор Activision (http://ru.wikipedia.org/wiki/Activision), и Dave Evans, ранее возглавлявший разработку PlayStation Home. Проект развивается при поддержке Mozilla, ARM и Activision.
<center><a href="https://hacks.mozilla.org/wp-content/uploads/2014/06/swoop-g... src="http://www.opennet.me/opennews/pics_base/0_1401957188.png" style="border-style: solid; border-color: #e9ead6; border-width: 15px;max-width:100%;" title="" border=0></a></center>
Основные возможности и особенности движка:
- Графика: система 3D-рендеринга на базе WebGL, различные виды освещения (рассеянный, точечный, направленный свет, попиксельное освещение), скелетная анимация, статические и Skinned-мэши, маппинг теней, постпроцессинг;
- Средства бесшовного импорта моделей и материалов, подготовленных в Maya, 3DS Max, Blender;
- Библиотека PostFX с реализацией типовых визуальных эффектов;
- Полная интеграция с движком симуляции физических процессов ammo.js (https://github.com/kripken/ammo.js/) (JavaScript-версия Bullet, скомпилированная при помощи Emscripten и работающая с использованием Asm.js). По производительности ammo.js отстаёт от нативной версии физического движка Bullet всего в полтора раза;
- Движок генерации пространственного звука, использующий Web Audio API;
- Определение игровой логики на языке JavaScript;
- Высокоуровневая объектная модель, позволяющая создавать игровые объекты из готовых функциональных блоков, как конструктор Лего. Например, изображённая на скриншоте демонстрация проскакивающего через стенку из кубиков мяча занимает всего 100 строк кода (http://codepen.io/playcanvas/pen/ctxoD);<center><a href="https://hacks.mozilla.org/wp-content/uploads/2014/06/playcan... src="http://www.opennet.me/opennews/pics_base/0_1401958543.jpg" style="border-style: solid; border-color: #e9ead6; border-width: 15px;max-width:100%;" title="" border=0></a></center>
- Простая система загрузки ресурсов;
- Встроенный набор компонентов для рендеринга моделей, анимации, типовых физических процессов (столкновения, деформация и т.п.), задействования 2D и 3D источников звука, изменение громкости в зависимости от удалённости от источника звука;
- Поддержка мыши, клавиатуры, сенсорных экранов и пультов Gamepad.- Ориентация системы рендеринга на достижение максимально возможной в браузере производительности. Например, команды отрисовки сортируются по материалам для сокращения числа вызовов WebGL, минимизируется число динамических операций с памятью и учитывается работа сборщика мусора;
- Для упрощения разработки игр предлагается специальная web-ориентированная облачная среда совместной разработки, доступная через сайт playcanvas.com (https://playcanvas.com/);
<center><a href="http://blog.playcanvas.com/wp-content/uploads/2014/06/play-c... src="http://www.opennet.me/opennews/pics_base/0_1401957144.jpg" style="border-style: solid; border-color: #e9ead6; border-width: 15px;max-width:100%;" title="" border=0></a></center>
URL: http://blog.playcanvas.com/playcanvas-goes-open-source/
> минимизируется число динамических операций с памятью и учитывается работа сборщика мусора;Сначала создадим себе проблемы, а потом будем их героически решать. Дон-кихоты 2.0 :).
Проблема сильно преувеличена. Сборщик мусора может быть полностью исключён из работы, если не выделять ресурсы каждый кадр. Между прочим, это справедливо и в случае C/C++, частые вызовы malloc и new сильно "просаживают" производительность.
не путайте теплое с мягким. сборщик мустора и malloc/free -- слегка разные вещи. выделение и освобождение памяти, внезапно, есть и в случае сборщика мусора. ровно как и фрагментация памяти.
> если не выделять ресурсы каждый кадр.А в случае JS как-то gc лучше програмера знает когда возбухнуть и что прибить. Знание интимных особенностей gc - превращает программирование в кластерфак, когда приходится онриентироваться на некие недокументированные и/или никем не гарантированные особенности. В сях/сях++ по крайней мере все просто и понятно - когда и что. GC делает этот процесс намного менее детерменированным, а изучение свойств gc - весьма отдельный рокетсайнс.
> Между прочим, это справедливо и в случае C/C++, частые вызовы malloc
> и new сильно "просаживают" производительность.Между прочим, там никто их лишний раз и не дергает. И вообще там возможна уйма стратегий, вплоть до полностью статического распределения ресурсов на старте. При этом память вообще никогда не выделяется и не освобождается. Что критично для ответственных применений, например. Тебе же не понравится если у твоего авто при наезде на кирпичную стену подушки безопасности не выпадут "потому что памяти не хватило", правда? :)
и так браузер тормозит из-за жаба скриптов, дак еще и этоможно еще завернуть все в ява машину и пару виртуалочек, а то оверхеда не хватает
За последнее время джаваскрипт достиг производительности, сопоставимой с нативной. Хороших результатов добиться достаточно легко, особенно если правильно назначать типы и исключать чрезмерное выделение/освобождение ресурсов.
> За последнее время джаваскрипт достиг производительности,
> сопоставимой с нативной.Да, "всего" в три раза сливает, если в ластах и на гамаке в костюме химзащиты поизвращаться с ним как следует.
> Хороших результатов добиться достаточно легко,
Ага, оно и видно: в сях просто пишем что хотели. В js засоряем мозг кучей хлама типа знаний о gc, asm.js, как, где и почему оно тормозит и так далее.
Эта тормозила долбанулась на своем JS. Если уж надо скорость - пример надо с гугли брать. С их PNaCl-ом. Вот так оно даже будет работать быстро и без выноса програмеру мозга всякой совершенно левой буитой.
> особенно если правильно назначать типы
...чего в JS изначально вообще не было предусмотрено.
> и исключать чрезмерное выделение/освобождение ресурсов.
...для чего надо шарить в механике работы рантайма и вообще работе компьютеров сильно поболее чем это умеет большинство JS-скриптеров.
Ждем не отключающихся 3d порнобаннеров, выжигающих десктопное железо
>нацеленного на создание переносимых многоплатформенных 3D-игри пополнения ожоговых центров поклонниками мобильного железа в металлических корпусах.
Спасибо, посмеялся.
> Ждем не отключающихся 3d порнобаннеров, выжигающих десктопное железоПоверьте, их производительность будет не намного ниже флеша.
> и пополнения ожоговых центров поклонниками мобильного железа в металлических корпусах.думаете игра, написанная на джаве сильно быстрее? Там тот же самый сборщик мусора, и те же проблемы с потреблением памяти. Как вы думаете почему iPhone такой быстрый?
> Поверьте, их производительность будет не намного ниже флеша.Того самого флеша, который блокируется в большинстве браузеров, или запирается под значок? С HTML5 так не поступишь. Вылечить такой банер можно только полной блокировкой js.
> думаете игра, написанная на джаве сильно быстрее? Там тот же самый сборщик
> мусора, и те же проблемы с потреблением памяти.Игра, написанная на жабе - это штука сугубо добровольная. Ее можно включить, когда обернешь руки полотенцем или воспользуешься прихваткой. А вот баннер может появиться внезапно.
> Как вы думаете почему iPhone такой быстрый?Я думаю, iPhone "быстрый" потому, что в нем приоритет на отрисовку графики. Этот фокус в свое время провернул гугл с хромом, когда он сначала рисовал окно, а потом начинал остальные процессы (сеть и стартовая страница), фаерфокс в то же время делал наоборот, и подавал пользователю окно приложения в последнюю очередь, когда настройки сети были прочитаны. Из-за такого трюка запуск хрома, казался более быстрым, хотя реально подача готового к использованию браузера была одинаковой по времени.
>С HTML5 так не поступишь.Почему-же. В любом браузере WebGL отключается в настройках, если кому-то понадобится, со временем сделают более удобное дополнение.
>Игра, написанная на жабе - это штука сугубо добровольная. Ее можно включить, когда обернешь руки полотенцем или воспользуешься прихваткой. А вот баннер может появиться внезапно.Это сейчас, несколько лет тому назад Java-апплеты запускались без предупреждения. Да и вообще, пропаганда уязвимостей в Jav-е и флеше активно ведётся именно производителями браузеров. Раньше всем было на это наплевать.
>Я думаю, iPhone "быстрый" потому, что в нем приоритет на отрисовку графики.Возможно, но с тех пор и андроид занялся оптимизацией. Реальность такова, что количество памяти в самом современном iPhone 5s 1 гиг, в Xperia Z2 - 3 гига. Всё это из-за того, что эпл в своё время выпилил сборщик мусора под корешок. Его нет даже в их новомодном полу-динамическом Swift. В условиях, когда ширина шины ограничена, избыток память никогда не приводит к увеличению производительности, скорее наоборот.
> С HTML5 так не поступишь. Вылечить такой банер можно только полной
> блокировкой js.Есть такой чудный аддон к Firefox - называется NoScript. То что доктор прописал.
> А вот баннер может появиться внезапно.
См. выше.
> Я думаю, iPhone "быстрый" потому, что
...потому что маркетинговый булшит у эппла хорош, в отличие от технического исполнения.
Мощный многоядерный процессор надо.
Никогда на планшетах эта технология не приобретёт большой популярности.
> Мощный многоядерный процессор надо.
> Никогда на планшетах эта технология не приобретёт большой популярности.На горизонте >2 ГГц 14 нанометровый проц и 4 гига оперативы. А теперь сравните эти спеки с Xbox 360 или PS3.
>планшеты и прочие недопк в одной куче.Архитектуры разные, как тут можно сравнивать мегагерцы?
Кстати было бы интересно увидеть тесты аля сжатие файла на этих фоторамках и каком-нибудь старом пентиуме c частотой ниже 2Mhz.
Поиграл в демку Swoop. Миленько так.
http://apps.playcanvas.com/will/doom3/gangnamstyleМонстры зажигают! :)