Бесплатные игровые движки на HTML5 и JavaScript. В чем разница платных и бесплатных CMS

Последние пять выпусков «Игромании» мы с вами прицельно учились созданию сложных и многофункциональных сайтов. Разобрали самые популярные CMS, испытали на прочность форумные движки, научились делать несложные блоги и даже освоили основные способы раскрутки. По сути, незатронутой осталась лишь одна серьезная тема - инструментарий для оформления веб-галерей. А ведь с их помощью можно как делать полностью самостоятельные фотобанки, так и прикручивать галереи к уже готовым порталам. В поле нашего зрения попало более десятка подобных движков, но в итоге мы остановились на четырех самых лучших: они довольно легко устанавливаются и настраиваются, а главное - прекрасно защищены от хакерских атак. Впрочем, различий тоже хватает.

Обратите внимание, все сайты мы, как обычно, разместили на нашем тестовом сервере Condor.ru (на нем же установлены все движки, которые мы рассматривали в статье «CMS калейдоскоп» из «Игромании» №1"2008), куда всегда можно зайти, посмотреть, какой движок подходит именно для вашего сайта, и только после этого делать окончательный выбор.

Gallery 2 - в шаге от идеала

Gallery (мы тестировали последнюю на момент написания статьи версию - 2.2.2) - кроссплатформенный движок с открытым исходным кодом. С его помощью можно создавать галереи абсолютно любой сложности, даже число альбомов ничем не ограничено, что зачастую приходится наблюдать в других, более простых движках. При этом Gallery 2 распространяется совершенно бесплатно. Есть, правда, лицензия GPL, но она не ограничивает, а, наоборот, расширяет ваши права - никто не мешает переписывать движок и даже продавать его модификации за деньги (собственно, GPL и была разработана, чтобы никто не мог привлечь к ответственности программистов, переписывающих исходные коды различных программ).

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

Еще один козырь системы - возможность полной двусторонней интеграции интернет-галереи с наиболее популярными движками сайтов, блогов и форумов. Gallery 2 отлично ладит с WordPress (что это за движок и как сделать на нем сайт буквально за полчаса, читайте в прошлом выпуске «Игромании»), phpBB 2 , Mambo/Joomla , PHP-Nuke , Invision Power Board (IPB) , Drupal , PostNuke и vBulletin .

В Gallery вживлен специальный фильтр, который блокирует спам, а главное, препятствует регистрации на сайте спам-ботов. Принцип работы фильтра основан на интеллектуальном тесте Тьюринга (использование искусственно искаженных случайных литер и цифр). Не позабыли разработчики и о защите изображений от незаконного копирования. В Gallery используется собственная технология цифровых водяных знаков. Любителей поэкспериментировать наверняка порадует возможность подключения к системе новых модулей и тем оформления, а также наличие огромного числа предустановленных «шкурок» и плагинов.

Еще один довод в пользу Gallery - загружать контент на сайт можно самыми разными способами. Через браузер, с помощью мастера публикации Windows, компактного Java-апплета или специальной клиентской программы Gallery Remote (скачать ее можно по ссылке http://gallery.menalto.com/wiki/Gallery_Remote ). Разрешено даже импортировать изображения с мобильного телефона или веб-камеры.

Управлять Gallery 2 тоже очень удобно. Администратор галереи может устанавливать определенные дисковые квоты для каждого из зарегистрированных пользователей или их групп, выполнять массовое редактирование элементов одного типа (скажем, альбомов или фотографий), менять уровень вложенности альбомов, просматривать и редактировать профили пользователей.

Из мелких отличий: встроенные модули для отладки и отслеживания ошибок, мощный поисковый движок (есть далеко не во всех галереях), ЧПУ (человекопонятные урлы, то есть логичные названия всех внутренних страничек: например, форум, согласно ЧПУ, должен проживать по адресу www.название сайта.ru/forum , а не www.название сайта.ru/d97fd9f7sdf97sdf145 ), функция слайд-шоу, поддержка нескольких типов баз данных, удобный веб-инсталлятор, а главное - соответствие всем современным веб-стандартам (в том числе XHTML 1.0 Strict ).

Устанавливается Gallery 2 следующим образом. Прежде всего, распакуйте архив с дистрибутивом движка в любой каталог. Далее загрузите все системные файлы и папки веб-галереи из директории \gallery2 (всего их 13 , не считая англоязычного мануала по работе с программой) на удаленный веб-сервер провайдера (в корневую папку сайта, например, \condor01.ru ) с помощью FTP-клиента, скажем, FileZilla . Запустите браузер и введите в адресной строке имя ресурса, который указывает на директорию с Gallery 2 (в нашем случае - www.condor01.ru ). Загрузится страничка с простенькой серверной программой для настройки галереи (создание аккаунта суперадминистратора, установка хранилища и добавочных модулей, инсталляция ядра). Всего вам предстоит проделать 11 последовательных шагов - не пугайтесь, в большинстве случаев нужно лишь кликать на кнопочку Далее . При необходимости вы можете в любой момент вернуться к предыдущему этапу и внести необходимые поправки - например, изменить логин и пароль или параметры подключения к базе данных MySQL , так что можете поэкспериментировать с разными вариантами.

В заключение буквально несколько слов о стабильности работы движка. Все интернет-галереи, сделанные на основе Gallery 2, загружаются в среднем за 3-5 секунд (пропускная способность нашего тестового канала - 10 Мб/с), практически не нагружают сервер и базы данных и, что самое главное, не сбоят. Каких-либо недостатков при тестировании движка мы не обнаружили. В общем, почти идеал.

ОЦЕНКИ «МАНИИ»:

- Легкость установки: 4/5

- Удобство работы: 5/5

- Функционал: 5/5

- Надежность: 5/5

4images - функционал превыше всего

Следующий участник нашего обзора попроще, чем Gallery 2, но не менее популярен. Это движок 4images . Он используется не только простыми пользователями, но и крупными организациями, правда, им приходится платить: 4images бесплатен только для частного некоммерческого использования. Таким образом, если захотите сконструировать на основе 4images платный онлайн-сервис для хранения фотографий, придется раскошелиться на 99 евро.

По набору функций система очень похожа на Gallery 2. Здесь есть все, что нужно для комфортной работы, - и пользовательские аккаунты, и защищенный паролем админ-центр, и различные счетчики, и RSS-ленты, и незамысловатая поисковая система, и даже удобный веб-инсталлятор. Движок поддерживает все современные графические библиотеки (ImageMagick , GD , NetPBM ) и, как следствие, позволяет производить простейшие манипуляции над изображениями, загруженными на сайт, - изменение размеров, поворот картинок, автоматическая генерация превью. Зарегистрированные в системе пользователи могут оставлять комментарии к выбранным файлам и обмениваться личными сообщениями.

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

Плавно переходим к разбору отличительных особенностей 4images. Первое, что бросается в глаза, - поддержка огромного числа различных форматов. Движок отлично справляется с обработкой файлов JPG , GIF , AIF , PNG , AU , AVI , MID , MOV , MP3 , MPGM , WAV , RA , RM , PD , 3GPP и даже PSD . К тому же никто не мешает вам самостоятельно расширить линейку поддерживаемых расширений - написать и подключить к галерее плагины для обработки документов определенного типа, скажем, OGG . Что у нас там дальше по списку? Уникальная возможность генерации поздравительных открыток. С помощью 4images вы буквально в несколько кликов сможете создать фирменную электронную открытку на базе выбранного арта и отправить ее близкому (или не очень) родственнику, знакомому или просто пользователю, зарегистрировавшемуся на вашем сайте. Следующее несомненное достоинство 4images - прекрасная защищенность. Взломать или вывести из строя движок практически невозможно. Но последнюю роль в этом сыграли защищенные по современной технологии CAPTCHA формы ввода и вывода данных и панель администрирования, а также надежные алгоритмы кодирования данных. Вдобавок в 4images интегрирована мощная система резервного копирования данных, которая присутствует далеко не во всех современных хранилищах фотографий. Мы честно попытались заселить систему троянами, вышедшими за последние несколько месяцев (только теми, что уже описаны «Лабораторией Касперского»), ни один из них не смог укорениться в движке.

А вот за что можно пожурить 4images, так это за чересчур простой интерфейс. Никаких наворотов в виде выпадающих окон и сочных вебдванольных панелек, одни только невзрачные кнопочки. К тому же в некоторых меню наблюдается довольно странная группировка параметров; так и хочется взять их и поставить в правильном порядке, но такой возможности нет.

ОЦЕНКИ «МАНИИ»:

- Легкость установки: 4/5

- Простота использования: 4/5

- Удобство работы: 4/5

- Функционал: 5/5

- Надежность: 5/5

WR-Gallery - проще некуда

Официальный сайт (он же сайт русской поддержки): www.wr-script.ru

WR-Gallery - простецкий, но крайне оригинальный и удобный в обращении скрипт интернет-галереи отечественного розлива. Движок написан на PHP и не требует наличия базы данных MySQL (для хранения информации используются простые текстовые файлы с расширением.dat). Если выражаться более понятным языком, этот движок можно использовать как для создания небольших онлайновых галерей на сильно загруженных бесплатных хостингах, где отсутствует поддержка баз данных, так и для мощных хранилищ фотографий. WR-Gallery не перегружает сервер, на котором установлен, выдерживает любой наплыв пользователей и, что самое важное, не сбоит (за весь период существования WR-Gallery 1.3 не было зафиксировано ни одного падения системы).

Если такие функции, как сортировка картинок по рейтингу, количеству комментариев, дате загрузки и размеру, давно стали стандартом де-факто, то вот возможность загружать изображения без предварительной регистрации есть далеко не у всех галерей.

Буквально несколько слов об установке движка. Чтобы проинсталлировать WR-Gallery 1.3, достаточно скопировать все файлы и каталоги движка на веб-сервер и установить права доступа на определенные папки и отдельно взятые исполняемые файлы.

ОЦЕНКИ «МАНИИ»:

- Легкость установки: 5/5

- Простота использования: 5/5

- Удобство работы: 4/5

- Функционал: 3,5/5

- Надежность: 4/5

Wallist - совершенная эргономика

Wallist умеет автоматически наносить надписи на все загружаемые картинки.

Последний участник нашего тестирования - активно развивающаяся отечественная фотогалерея Wallist , разработанная силами одного-единственного человека - Андрея Пикина. Вся необыкновенность движка заключается в том, что он состоит из нескольких информационных блоков (новостная лента, графический счетчик посещений, подсказки) и умеет необычайно быстро генерировать веб-страницы (за 0,05-0,1 секунды).

По возможностям Wallist не уступает таким профессиональным движкам, как Gallery и 4images. Судите сами. Пользователи могут регистрироваться на сайте, добавлять в сформированные администратором фотоальбомы собственные изображения, комментировать выбранные записи, проставлять рейтинги. Не забыл автор системы и о таких приятных мелочах, как функция нанесения цифровых водяных знаков (копирайтов) на поверхность артов и скрытие старых файлов, хранящихся на сервисе больше месяца. Администратору разрешается редактировать любые параметры движка - формировать списки запрещенных литер, слов и выражений, которые должна вырезать система, блокировать доступ к определенным рубрикам и разделам сайта, модифицировать максимальный размер закачиваемых на сервер картинок, удалять выбранные пользовательские фотографии. К недостаткам движка можно отнести не очень удобную панель управления, а также слабую защищенность - опытный хакер сможет вывести сайт из строя.

Установить Wallist 1.2 на веб-сервер хостинг-провайдера сможет даже начинающий. Загружаете все файлы и папки движка по FTP-протоколу, формируете новую базу данных для галереи и настраиваете систему с помощью симпатичного веб-инсталлятора.

ОЦЕНКИ «МАНИИ»:

- Легкость установки: 4/5

- Простота использования: 4/5

- Удобство работы: 3/5

- Функционал: 4/5

- Надежность: 3/5

* * *

Если вы решили создать по-настоящему мощную, надежную и красивую веб-галерею, обратите пристальное внимание на профессиональный движок Gallery - лучший программный пакет в своем классе. Если лишние навороты вам ни к чему, но функционал все же должен быть на уровне, не проходите мимо 4images и Wallist. Что касается WR-Gallery, это настоящая находка для начинающих веб-мастеров, а также всех тех, кто пользуется услугами сильно загруженных бесплатных хостингов.

Здравствуйте, уважаемые читатели блога сайт. Сегодня я хочу поговорить про такое понятие, как движок сайта или же, говоря «по научному», CMS (системы управления контентом).

По сути, это программы для web-сервера, которые существенно упрощают создание и поддержание работы сайта. Ну, а сам по себе вебсайт позволит вам (если вы его создадите сами и не будет тратиться на его продвижение).

Если захотите и свой ресурс добавить в этот рейтинг, то не примените воспользоваться соответствующей кнопкой справа над таблицей.

Кстати, если вы посчитаете, что вам будет сложновато, то можете посмотреть рейтинг веб-студий , расположенный на этом же ресурсе. Там вы сможете увидеть созданные данной студией проекты, щелкнув по ссылке в колонке «Работ».

Примерно так выглядит статистика по используемым пользователями рунета движкам (тут не только Joomla, но и вообще все популярные Цмс) в разрезе того, какая именно версия CMS используется — новая или уже устаревшая:

На Joomla, кроме обычных сайтов, создается довольно много , благодаря имеющемуся расширению магазина под названием .

Наверное, самый простой в освоении бесплатный движок — это WordPress . Конечно же, в основном его используют для довольно узкой ниши (создания и введения блогов), но при желании на нем можно реализовывать и сайты, и форумы, и галереи. Но прежде всего WordPress — это очень функциональная блоговая CMS.

сайт работает именно под управлением Вордпресса (но это секрет, ибо используемый движок и его версию нужно скрывать, судя по озвученному выше совету Яндекса). Про тонкости и нюансы работы с этим движком я писал и продолжаю писать в рубрике , а про расширения для него — в рубрике .

Судя по приведенному чуть выше графику скорости работы CMS, WordPress гонки, но лично я этого не ощущал. А вообще, WordPress вполне можно заставить быстро бегать и не создавать при этом запредельной . Правда, для этого придется немного потратить на это время, но зато ваш блог может стать очень быстрым и очень легким. Об увеличении я писал в одноименной рубрике.

Сейчас мой блог размещается на и при нагрузке в 20-25 тысяч посетителей в сутки скоростью работы Вордпресса я пока что доволен, особенно после доработки шаблона и оптимизации всего, что только можно оптимизировать. Хотя при использовании большого количества плагинов, без и без дополнительной оптимизации, WordPress становится довольно-таки тяжеловесным монстром.

Понятно, что существует еще масса бесплатных CMS, которые применяются для тех или иных целей. Это все тот же Drupal или DLE (DataLife Engine), и для многих случаев их использование будет оправдано, ибо идеальной ЦМС не существует, но упомянутые чуть выше WordPress и Joomla являются самыми популярными. Причиной может служить их довольно простое устройство и понятность именно для начинающих пользователей.

Какие из платных движков являются наиболее интересными

В качестве не очень дорогой и достаточно быстрой платной ЦМС можно привести еще в пример S.Builder . Для понимания того, как создавать сайты на этом движке, скорее всего, у вас уйдет не очень много времени, т.к. он обладает достаточно низким порогом вхождения (что называется, интуитивно понятна). Эта система написана для конечного пользователя — абсолютно не подготовленного и не имеющего опыта вебмастеринга (в Ворде умеет работать и ладно).

S.Builder довольно гибок и с помощью него можно сделать практически все, но, скажем, в отличии от Drupal (на котором тоже можно сделать практически все), на S.Builder можно все это сделать вообще не залезая в код (имеется мощный конструктор модулей под ваши нужды).

Ну, и как я уже упомянул, эта CMS является одним из самых быстрых движков и довольно хорошо держит нагрузку, хотя он тоже написан на PHP. Связано это, скорее всего, с хорошей чистотой кода (он писался с нуля) и хорошей работой кеширования.

S.Builder можно бесплатно попробовать в работе как онлайн, так и офлайн. В первом случае вам нужно будет перейти на страницу «Демо-версия on-line» и вам создадут временный сайт на этой ЦМС, где будут доступны все модули для «пробы пера». Если онлайн тестирование вас не устраивает, то можете скачать со страницы «Скачать CMS » полнофункциональную и абсолютно бесплатную офлайн версию этого движка (как будто бы вы ) — «Пробная версия ЦМС для установки на локальном компьютере».

Напоследок хочу привести вам мнение профессионального оптимизатора из очень известной Seo компании «Ашманов и партнеры», который дал довольно-таки развернутый ответ на вопрос — Какая ЦМС лучше :

P.S. Иногда возникает желание узнать, на каком именно движке работает тот или иной сайт . Оказывается, что сделать это можно довольно просто и изящно. В статье я как раз упоминал о таком плагине — Wappalyzer . Весьма любопытная вещица.

Статья обновлена 18.01.2018 и является полностью актуальной.
Практически каждый новичок сталкивался с вопросом выбора CMS для своего сайта или блога. Оно и понятно, ведь невозможно знать все заблаговременно. Да и различных систем управления содержимым уже появилось достаточно много. В данном обзоре собраны только бесплатные решения. Они ничем не уступают платным аналогам, а иногда даже выгодно отличаются на их фоне. Ведь вносить поправки в открытый код гораздо проще, следовательно все найденные уязвимости исправляются быстрее. А так же все новые и смелые идеи первыми появляются именно здесь.

Для начала следует условно разделить системы по их направленности. Существуют CMS предназначенные исключительно для создания блогов, а также более гибкие системы, позволяющие создавать полноценные сайты и медиапорталы. При этом блоговые системы могут быть предназначены для создания целой серии проектов, например, для целого предприятия. Стоит так же отметить срок разработки платформы (чем он больше, тем система лучше проработана и содержит меньше ошибок), наличие сообщества (оно поможет при возникновении трудностей в установке, отладке или использовании системы), производительность (не все системы подходят для высоконагруженных проектов). итак, Теперь рассмотрим каждую CMS более подробно.

Официальный сайт .

Это один из достаточно старых и хорошо зарекомендовавших себя движков. Он отлично подходит для электронной коммерции и продаж товаров через сеть Интернет. Множество плагинов, таких как VirtueMart позволяют открыть магазин очень быстро и в сжатые сроки. Правда, чтобы разобраться во всем с нуля, придется немного посидеть за мануалами, чтением документации и форумов. К счастью, у Joomla очень хорошая поддержка и огромное сообщество на нескольких языках, в том числе русском.

К достоинствам системы можно смело отнести наличие следующих функций «из коробки»:

  • аутентификция пользователей, в том числе через OpenID;
  • визуальный редактор статей;
  • удобное управление файлами;
  • система комментариев и защита от спама в них;
  • менеджер плагинов и расширений.

На самом деле, достоинств гораздо больше, просто перечислить все их в одной статье очень сложно. Именно поэтому она занимает лидирующие позиции в рейтингах и топах CMS. Но, не обошлось и без минусов: благодаря своей гибкости и множеству настроек, новичку придется потратить не один день на то, чтобы разобраться во всем этом многообразии. Также ее функциональность может оказаться избыточной для многих простых сайтов-визиток. Зато подойдет для интернет магазинов и витрин товаров.

TYPO3

Официальный сайт .

Не так давно в интернете начала набирать популярность достаточно старая CMS — TYPO3 и сейчас она плотно засела в ТОП 5. Структура сайта здесь представлена деревом страниц. На каждой из них могут располагаться стандартные элементы содержимого: текст, картинки, таблицы и прочее. Эта система управления контентом основана на шаблонах, которые можно либо скачать готовые, либо писать самостоятельно на TypoScript.

Плюсы TYPO3:

  • возможность тонкой настройки прав пользователей;
  • легкость ведения нескольких сайтов одновременно;
  • возможность использовать расширения из TER (TYPO3 extension repository);
  • высокие требования к безопасности;
  • продвинутый редактор текста с проверкой орфографии, предпросмотром, историей изменений.

Недостатки данной системы:

  • сложность редактирования структуры сайта с помощью шаблонизатора;
  • медленный рендеринг больших страниц с разнообразным контентом (таблицы, картинки);
  • мало готовых решений для интернет магазинов

Рекомендуется использовать внутри крупных промышленных компаний и банков. Молодым и небольшим сайтам скорее всего не подойдет или же затраты на разработку и поддержку будут несоизмеримы с плюсами от использования.

Drupal

Официальный сайт .

Также очень популярная и распространенная CMS, которая используется для создания сайтов очень крупными предприятиями, например, Sony Music. Они выбирают Drupal из за большого набора функций для построения сразу внутренних и внешних сайтов для корпоративной сети. Имеется огромная база инструментов для управления единой базой пользователей. Хорошо подходит для организации системы блогов, форумов. Drupal имеет очень активное сообщество разработчиков, огромную базу знаний, живой форум. Достаточно просто можно найти ответы на вопросы об установке, развертывании сайтов и модулей.

Достоинства Drupal:

  • отличная поддержка сообществом пользователей и разработчиков;
  • более 6000 модулей, облегчающих расширение функционала;
  • легко управлять правами пользователей, создавать коллективные блоги и форумы.

Недостатки системы:

  • может оказаться чрезмерно сложной для простых сайтов;
  • тотальная нехватка красивых и функциональных тем;
  • сложность в освоении для неподготовленного пользователя.

Для сайтов-визиток выбирать эту CMS категорически не рекомендуется, а вот для организации средних и крупных порталов, где пользователи будут добавлять свой материал и комментировать его, Друпал подойдет как никто другой.

MODX

Официальный сайт .

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

WordPress

Официальный сайт .

Если кто-то еще сомневается в том, что Вордпресс уже давно перерос стадию «система для ведения блогов», то следует отбросить эти сомнения. На этой CMS разрабатывается великое множество сайтов, в том числе и социальные сети, сайты компаний, Интернет магазины и витрины товаров, форумы, а также простые сайты-визитки.

Благодаря тысячам готовых тем, плагинов и даже готовых сборок под разные нужды, WordPress занимает заслуженное место в ТОП 5. Имеется активное сообщество разработчиков, которое генерирует уроки и информационные материалы.

Достоинства WordPress:

  • большое сообщество разработчиков и хорошо структурированная документация;
  • тысячи бесплатных плагинов и тем оформления для сайта;
  • удобная админка.

Недостатки WordPress

  • стартовый функционал сразу после установки достаточно скромен, нужно дополнять его как минимум 4-5 плагинами;
  • после простой установки нужна доработка в плане безопасности.

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

При ответе на вопрос «какую CMS выбрать для сайта» следует обратить внимание на то, что популярные движки постоянно находятся под атакой. Их код открыт для использования всем, в том числе и не совсем честным людям, которые могут искать в нем уязвимости и применять их в своих корыстных целях. Опасности можно избежать, если своевременно обновлять движок до последней версии. В то же время, если использовать мало распространенную систему управления контентом, то при возникновении трудностей вам, возможно негде будет найти помощь и надеяться можно будет только на себя. Учтите и этот фактор. Успехов!

HTML5 вместе с CSS3 и JavaScript дают разработчику широкие возможности создания игр с использованием 3D, анимации, Canvas, математики, цветов, звука, WebGL. Одно из наиболее очевидных преимуществ HTML5 заключается в его независимости и от платформы, и в общем случае от аппаратной начинки.

При детальном рассмотрении можно выявить предоставляемые движками дополнительные возможности: упрощение некоторых часто встречающихся задач или подгрузка ресурсов, оформленный ввод, физика, звук, bitmap’ы (таких, конечно же, немного). Есть и довольно слабо оформленные движки, а есть и те, которые предоставляют в пользование разработчику редактор 2D уровней и инструменты отладки.

Предполагается, что большинство движков служат для сокращения временных затрат на разработку полноценной игры. Однако многие разработчики предпочитают создавать свой проект полностью с нуля, чтобы лучше представлять его устройство. Существует немного JavaScript-HTML5 движков, которые действительно чего-то стоят, однако и у них может быть один большой недостаток: они более не поддерживаются или близки к прекращению поддержки. Поэтому, выбирая движок, остановите свой выбор на тех продуктах, поддержка которых будет длиться достаточно продолжительное время.

Итак, вот, собственно, сами движки.

Crafty

Идеально подойдет для реализации 2D спрайтовых аркад в ретро-стиле и головоломок вроде Судоку. Он имеет готовый к использованию самозапускающийся игровой цикл. Поддерживаются мышь и клавиатура. Отлично документирован, и главным недостатком можно считать только отсутствие поддержки звуков.

lycheeJS

Кросс-браузерный опенсорсный , написанный полностью на JavаScript. Созданный с нуля для того, чтобы быть максимально гибким, он имеет обширный API и использует самые новые фичи современных браузеров. Этот фреймворк предназначен, чтобы делать все за вас: ваша идея – его реализация с помощью самых часто используемых инструментов.

GameJS

Для формирования страницы используются JavaScript и CSS. Вместе они работают достаточно уверенно и слаженно. Разработан для новичков, обучающихся азам программирования видеоигр. Вам будет проще, если у вас уже есть какие-то навыки работы с CSS.

ClanFX

Портированный с iPhone графический 2D HTML5-движок на JavaScript. Позволяет быстро создавать 2D игры и графические приложения, которые могут работать на всех современных устройствах без установки дополнительных плагинов.

Привет, Хабр! Представляю вашему вниманию перевод статьи Inside a super fast CSS engine: Quantum CSS (aka Stylo) автора Лин Кларк .


Вы возможно слышали о Project Quantum… Это проект по существенной переработке внутренностей Firefox с целью ускорить браузер. По частям мы внедряем наработки нашего экспериментального браузера Servo и значительно улучшаем остальные элементы движка.


Проект сравнивался с заменой самолетного двигателя на лету. Мы вносим изменения в Firefox компонент за компонентом, так что оценить их эффект можно в очередном релизе браузера сразу по готовности.



Прим. переводчика: под катом много иллюстраций. Все они кликабельные (для просмотра в большем разрешении). Если Вы наткнетесь на неточности перевода и другие ошибки - буду благодарен, если сообщите об этом в комментариях или в личку.


И первый крупный компонент из Servo - новый CSS-движок Quantum CSS (ранее известный как Stylo) - теперь доступен для тестирования в ночной сборке Firefox (прим. переводчика: в комментариях подсказали, что уже и в stable 55 есть) . За его включение отвечает опция layout.css.servo.enabled в about:config .


Новый движок воплощает лучшие инновации из других браузеров.



Quantum CSS использует преимущества современного железа, распараллеливая работу между всеми ядрами процессора, что дает ускорение вплоть до 2, 4 или даже 18 раз.


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



Но чем конкретно занимается CSS-движок? Для начала давайте рассмотрим что такое движок CSS в целом и каково его место в браузере, а после разберём, как Quantum CSS все это дело ускоряет.

Что такое CSS-движок?

CSS-движок - это часть движка рендеринга браузера. Движок рендеринга принимает HTML и CSS файлы сайта и превращает их в пиксели на экране.



Каждый браузер имеет движок рендеринга. У Chrome это Blink, у Edge - EdgeHTML, у Safari - WebKit, ну а у Firefox - Gecko.


Чтобы переварить файлы в пиксели, все они делают примерно одно и то же:


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



2) Определение внешнего вида элементов. Для каждого узла DOM движок CSS выясняет, какие CSS-правила применить. Потом он определяет значение для каждого свойства CSS. Стилизирует каждый узел в DOM-дереве, прикрепляя рассчитанные стили.



3) Определение размеров и положения для каждого узла. Для всего, что должно быть отображено на экране, создаются блоки (boxes). Они представляют не только узлы DOM, но и то, что может быть внутри них. Например, строки текста.



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



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



То есть, перед началом просчёта стилей на входе CSS-движка имеется:

  • DOM-дерево
  • Список правил стилей

И так, он поочередно определяет стили для каждого узла DOM, одного за другим. Значение назначается каждому свойству CSS, даже если оно не задано в таблицах стилей.


Я представляю это себе, как заполнение формы, где все поля обязательны. Нужно заполнить такую форму для каждого узла DOM.



Чтобы сделать это, CSS-движок должен выполнить две вещи:

  • Выбрать правила, которые должны быть применены к узлу (сопоставление селекторов, selector matching)
  • Заполнить все отсутствующие значения стандартными или унаследовать родительские (каскадирование, the cascade)

Сопоставление селекторов

Для начала, мы выбираем все применяемые к узлу правила в список. Поскольку может быть несколько подходящих правил, возможны несколько определений одного и того же свойства.



Кроме того, браузер сам добавляет некоторые стандартные стили (user agent style sheets). Так как же CSS-движок определяет, какое значение использовать?


Вот где нам приходит на помощь "правило конкретности" (specificity rule). Движок CSS создает таблицу определений, которую потом сортирует по разным столбцам.



Правило с наибольшей конкретностью побеждает. Основываясь на такой таблице, CSS-движок вносит все заданные в ней значения в форму.



Остальные высчитываются за счет каскадирования.

Каскадирование

Каскадирование упрощает написание и сопровождение CSS. Благодаря ему Вы можете установить свойство color у body , и знать, что цвет текста в элементах p , span , li будет таким же (если только Вы не переопределите его самостоятельно).


CSS-движок проверяет незаполненные поля в форме. Если свойство наследуется по умолчанию, то CSS-движок поднимается по дереву и проверяет, задано ли значение этому свойству у родительского элемента. Если ни один из предков значения не определяет, или оно не наследуется, то выставляется значение по умолчанию.



Так что теперь все стили для заданного узла DOM просчитаны, форма заполнена.

Примечание: совместное использование структур стилей

Описанная форма немного упрощена. CSS имеет сотни свойств. Если бы CSS-движок сохранял значение каждого свойства для каждого DOM-узла, он быстро использовал бы всю доступную память.


Вместо этого, движки обычно используют механизм совместного использования структур стилей (style struct sharing). Они сохраняют значения, которые обычно используются вместе (например свойства шрифта) в другом объекте под названием "структура стилей". Далее, вместо хранения всех свойств в одном объекте, объекты рассчитанных стилей содержат только указатель. Для каждой категории свойств существует указатель на структуру стилей с нужными значениями.



Это экономит и память, и время. Узлы с похожими стилями могут просто указывать на те же структуры стилей для общих свойств. И поскольку многие свойства наследуются, родитель может делиться своей структурой с любыми дочерними узлами, которые не переопределяют собственные значения.

Так как же мы все это ускоряем?

Так выглядит неоптимизированный процесс расчёта стилей.



Здесь выполняется достаточно много работы. При чём не только в момент первой загрузки страницы. А снова и снова, по ходу взаимодействия со страницей, при наведении курсора на элементы или изменении DOM вызывается перерасчёт стилей.



Это значит, что вычисление CSS стилей - отличный кандидат для оптимизации… И за последние 20 лет браузеры перетестировали множество разных стратегий оптимизации. Quantum CSS пытается совместить лучшие из них для создания нового супер-быстрого движка.


Давайте рассмотрим, как это всё работает вместе.

Распараллеливание

Проект Servo (из которого вышел Quantum CSS) - это экспериментальный браузер, который пытается распараллелить всё в процессе отрисовки веб-страницы. Что это значит?


Можно сравнить компьютер с мозгом. Есть элемент, отвечающий за мышление (АЛУ). Возле него располагается что-то типа краткосрочной памяти (регистры), последние сгруппированы вместе на центральном процессоре. Кроме того есть долгосрочная память (ОЗУ).



Ранние компьютеры могли думать только одну мысль за раз. Но за последние десятилетия процессоры изменились, теперь они имеют несколько сгруппированных в ядра АЛУ и регистров. Так что теперь процессоры могут думать несколько мыслей одновременно - параллельно.



Quantum CSS использует эти преимущества, разделяя вычисление стилей для разных узлов DOM по разным ядрам.


Может показаться, что это легко… Всего лишь разделить ветви дерева и обрабатывать их на разных ядрах. На самом деле всё гораздо сложнее по нескольким причинам. Первая причина в том, что DOM-деревья часто неравномерные. То есть, одни ядра получат значительно больше работы, чем другие.



Чтобы распределить работу более равномерно Quantum CSS использует технику под названием "воровство работы" (work stealing). Когда узел DOM обрабатывается, программа берет его прямые дочерние элементы и разделяет их на одну или несколько "единиц работы" (work unit). Эти единицы работы ставятся в очередь.



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



В большинстве браузеров будет сложно реализовать это правильно. Параллелизм - это заведомо сложная задача, а CSS-движок достаточно сложный и сам по себе. Он также находится между двумя другими самыми сложными частями движка рендеринга - DOM и разметки. В общем, ошибку допустить легко, и распараллеливание может привести к достаточно трудноотловимым багам, под названием "гонки данных" (data races). Я описываю эти баги подробнее в другой статье (есть и перевод на русский).


Если Вы принимаете правки от сотен тысяч контрибьюторов, как Вы можете применять параллелизм без страха? Для этого у нас есть Rust .



Rust позволяет статически удостоверится, что гонки данных отсутствуют. То есть, Вы избегаете сложноотловимых багов, не допуская их в Ваш код изначально. Компилятор просто не разрешит Вам это сделать. Я напишу об этом подробнее в будущих статьях. Также Вы можете посмотреть вступительное видео о параллелизме в Rust или этот более детальный разговор о "воровсте работы" .


Всё это сильно упрощяет дело. Теперь почти ничего не останавливает Вас реализовать вычисление CSS стилей эффективно параллельно. Это значит, что мы можем приблизиться к линейному ускорению. Если Ваш процессор 4-х ядерный, то распараллеливание даст прирост в скорости почти в 4 раза.

Ускорение перерасчёта с помощью дерева правил

Для каждого DOM-узла CSS-движок должен пройтись по всем правилам и выполнить сопоставление селекторов. Для большинства узлов соответствующие селекторы скорее всего будут меняться не очень часто. К примеру, если пользователь наводит указатель мыши на какой-то элемент, то соответствующие ему правила могут измениться. Нам необходимо пересчитать стили для всех его потомков, чтобы обработать наследование свойств. Но правила, соответствующие этим потомкам, вероятно не изменятся.


Было бы неплохо запоминать, какие правила соответствуют этим потомкам, чтобы не пришлось сопоставлять селекторы снова… И дерево правил, пришедшее из предыдущих версий Firefox, делает именно это.


Движок CSS выбирает селекторы, соответствующие элементу, а потом сортирует их по конкретности (specificity). В результате выходит связанный список правил.


Этот список добавляется в дерево.



CSS-движок пытается минимизировать количество веток в дереве, переиспользуя их, когда возможно.


Если большинство селекторов в списке совпадает с существующей веткой, он проследует по ней. Но он может достичь точки, где следующее правило в списке не совпадает с правилом из существующей ветки. Только в таком случае создается новая ветка.



DOM-узел получит указатель на то правило, которое было добавлено последним (в нашем примере, div#warning). Оно самое конкретное.


При перерасчёте стилей, движок выполняет быструю проверку, может ли изменение в правилах родительского элемента повлиять на правила дочерних. Если нет, то для всех потомков, движок может просто использовать указатель на соответствующее правило в дереве. То есть, полностью пропустить сопоставление селекторов и сортировку.



И так, это помогает сэкономить время при перерасчёте стилей, но начальный расчет все-равно трудоемкий. Если есть 10000 узлов, то необходимо проделать сопоставление селекторов 10000 раз. Но есть способ ускорить и это.

Ускорение начального рендеринга при помощи общего кеша стилей

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


Без оптимизаций CSS-движок должен сопоставить селекторы и рассчитать стили для каждого параграфа отдельно. Но если бы был способ доказать, что стили для всех параграфов совпадают, то движок мог бы просто выполнить эту работу один раз, и из каждого узла просто указывать на тот же рассчитанный стиль.


Именно это делает общий кеш правил, черпающий вдохновение из Safari и Chrome. После обработки элемента, рассчитанный стиль ложится в кеш. Далее, перед началом расчёта стилей следующего элемента, выполняются несколько проверок, чтобы проверить, нельзя ли использовать что-то из кеша.


Проверки следующие:

  • Имеют ли 2 узла одинаковые ID, классы, и т.д. Если да - они будут соответствовать тем же правилам.
  • Имеют ли они одинаковые значения для всего, что не основывается на селекторах (например, встроенные стили). Если да, то вышеупомянутые правила не будут переопределены, либо будут переопределены одинаково для обеих.
  • Указывают ли родители обеих на тот же объект рассчитанных стилей. Если да, то наследуемые значения тоже будут одинаковыми.


Эти проверки были реализованы еще в ранних версиях общего кеша стилей с самого начала. Но существует много мелких ситуаций, в которых стили не совпадут. Например, если CSS правило использует селектор:first-child , то стили двух параграфов могут не совпадать, даже если вышеописанные проверки утверждают обратное.


WebKit и Blink в таких ситуациях сдаются и не используют общий кеш стилей. И чем больше сайтов используют эти современные селекторы, тем менее становится польза от такой оптимизации, поэтому команда Blink недавно удалила ее совсем. Но оказывается, что есть возможность поспеть за всеми этими обновлениями и с общим кешем стилей.


В Quantum CSS мы собираем все те странные селекторы и проверяем, применяются ли они к узлу DOM. Потом мы сохраняем результат этой проверки в виде единиц и нолей для каждого такого селектора. Если два элемента имеют идентичный набор единиц и нолей - мы знаем, что они точно совпадают.



Если DOM-узел может использовать стили, которые уже рассчитаны, то по сути почти вся работа пропускается. Страницы часто имеют много узлов с одинаковыми стилями, поэтому общий кеш стилей экономит память и действительно ускоряет работу.


Вывод

Это первый крупный трансфер технологии из Servo в Firefox. Мы многому научились, о том, как вносить современный, высокопроизводительный код на Rust в ядро Firefox.


Мы очень рады, что большой кусок Project Quantum готов для бета-использования. Будем благодарны, если Вы попробуете его и, в случае ошибок, сообщите о них .

О Лин Кларк

Лин - инженер в команде Mozilla Developer Relations. Она работает с JavaScript, WebAssembly, Rust и Servo. А также рисует code cartoons .

Теги: Добавить метки

Понравилась статья? Поделиться с друзьями: