ebook img

Сюрреализм на JavaScript PDF

226 Pages·2014·11.554 MB·Russian
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Сюрреализм на JavaScript

Алексей Бахирев Сюрреализм на JavaScript Санкт-Петербург СИНЭЛ 2014 УДК 004.432.42 ББК 32.973.26-018.2 БЗО Бахирев А.М. Сюрреализм на JavaScript—Санкт-Петербург: СИНЭЛ, БЗО 2014,- 228 с.: 93 ил. ISBN 978-5-9905660-7-1 Книга о разработке игр и приложений на JavaScript. В книге встречается множество отсылок к авторам различных публикаций и экспертам фронтенд- разработки. Также затрагивается тема кроссплатформенной разработки на JavaScript для различных устройств, XSS атаки, обфуская кода, и конвертирования HTML в EXE, HTA, CHM и т.п. УДК 004.432.42 ББК 32.973.26-018.2 Бахирев Алексей Михайлович Сюрреализм на JavaScript Художник Артем Вадимович Назарчук Верстальщик Наталья Владимировна Лукина Подписано в печать 21.08.2014 Формат 60x90/8. Бумага мелованная. Гарнитура Neris. Печать цифровая. Уел. Печ. л. 28,5 Тираж 2000 экз. Заказ № 2108 Издательство ООО «СИНЭЛ»; Отпечатано в типографии ООО «СИНЭЛ» 194223, Санкт-Петербург, ул. Курчатова, 10 ISBN 978-5-9905660-7-1 Содержание Введение............................................................................................................9 Архитектура игровых движков История.....................................................................................................10 Архитектура............................................................................................15 Стрельба...................................................................................................17 Мини-игры...............................................................................................19 Классы и фабрики...............................................................................20 Стандартизация интерфейсов..........................................................27 Как сохранить и загрузить объекты..............................................30 Разделение рендера............................................................................32 Реализация рендера в игровом движке StalinGrad....................33 Советы по организации рендера....................................................37 Квадратный интерфейс......................................................................38 Рендер кривых......................................................................................41 Работа со спрайтами .........................................................................42 Кэширование и догрузка ресурсов камеры................................45 Реестр элементов.................................................................................47 Работа под нагрузкой .........................................................................49 Сетка и динамические массивы..........................................................49 Создание карты уровня........................................................................52 Рассинхронизация таймеров.............................................................55 Кроссплатформенная разработка История.....................................................................................................60 JS в CHM, HTA, EXE...............................................................................63 4 Содержание Разработка................................................................................................65 API устройств.........................................................................................67 Мобильные телефоны.........................................................................69 Touch-экраны.........................................................................................75 Телевизоры............................................................................................86 Портирование игры с браузера в TV..............................................90 Клавиатура............................................................................................92 Синхронизация устройств..................................................................95 Проблемы разработки под Android..................................................97 Хэш-контроллеры...................................................................................106 Мелкие оптимизации и костыли Уменьшение вложенности...................................................................110 Текстовые вставки в код.......................................................................112 Ресайз.......................................................................................................113 Зачем использовать ЕМ вместо РХ?.............................................114 Вставка CSS через JS..........................................................................115 Конечные автоматы на CSS................................................................116 Правила работы с DOM.........................................................................118 БЭМ............................................................................................................120 JS в PNG...................................................................................................122 Сжатие кода............................................................................................124 Защита от сервера.................................................................................126 Данные через CSS.................................................................................129 Игра в 0 строк кода..............................................................................131 JSON запросов и параметров............................................................134 Модуль colors и консоль.....................................................................140 Теги и костыли, о которых забывают СЕО-теги...................................................................................................144 Теги в head................................................................................................147 Теги полей ввода, ссылки, таблицы.................................................157 Хаки для IE ..............................................................................................160 Верстка писем.........................................................................................164 5 ---------------------------------------- Содержание----------------------------------------- XSS, CSRF и т. п. XSS.............................................................................................................166 Обфускация.............................................................................................171 CSRF..........................................................................................................175 DDOS..........................................................................................................177 Clickjacking...............................................................................................178 Клавиатурные шпионы ........................................................................178 Какие уязвимости стоит искать........................................................180 Пре-продакшн Логика локализации приложения..................................................182 Плохая логика локализации.............................................................187 Классическая сборка .........................................................................188 Заморозка и инкрементальные обновления................................190 Генерация ресурсов...........................................................................191 Автотесты через API фреймворка....................................................193 Offtop Сертификация JavaScript-разработчиков.......................................198 Собеседование JS-программистов....................................................201 Задача на выделение N комментариев...........................................201 Задача на быстрый поиск..................................................................203 Использованные источники.................................................................204 Рекомендуемые материалы.................................................................207 Заключение.............................................................................................209 Приложение Формулы расчета столкновений......................................................210 Вопросы на собеседовании.................................................................216 Ответы на вопросы...............................................................................221 Таблица кодов кнопок клавиатуры..................................................224 Таблицы соответствия размеров в ЕМ и Р Х ................................225 б Введение Эта книга рассчитана, в основном, на опытных веб-разработчиков, которые делают сайты не один год. В книге встречается множество отсылок к авторам различных публикаций и экспертам фронтенд-разработки. Многие темы описаны с расчетом на запас опыта и знаний у читателя. Если вы читаете эту книгу в электронном виде на мобильном устройстве с маленьким дисплеем, возможно, многие иллюстрации и скриншоты будут в ненадлежащем качестве. В таком случае вам следует приобрести печатный экземпляр или найти электронную версию для просмотра на более широком экране. Если вы собрали эту книгу из исходного JSON-файла — поздравляю! Если вы не знали, что книга есть в формате JSON и захотели её собрать — ссылку на файл можно найти в конце. В любом проекте есть баги, а в любой книге — опечатки и ошибочные суждения. Помните об этом, т. к. и эта книга не является исключением из правил. P.S.: Дизайн действительно «подозрительно похож» на журнал «Frontender Magazine» (http://frontender.info/). 9 Архитектура игровых движков История В 1999 году веб только набирал обороты. С одной стороны, к этому времени уже окончилась «война браузеров» 1996- 1998 годов, с другой — вакансия JavaScript разработчика выглядела довольно неперспективной. Но даже в то время было несколько фанатов JS, которые пробовали писать на нем игры. Их звали Masahiko Nitanda и Kazuhiro Moriyama. Эти два парня жили в Японии и делали просто восхитительные вещи на JavaScript'e. Они не только пытались копировать игры с Денди, но даже пытались создавать подобие 3D игр в браузере. Напомню, что дело было в 1999 году, и самым передовым на тот момент считался Internet Explorer 6. Как же им это удавалось? 10 История Ну, во-первых, в основе любой системы, прежде всего, лежит архитектура. Именно архитектура и алгоритмы помогают создавать сложные вещи. Во-вторых, они проявили немалую смекалку, чтобы простыми методами, так или иначе, обойти те или иные ограничения платформы. Давайте разберем несколько их приемов. JS Flanker Рис. 1. Скриншоты игры JS Flanker. В игре вы управляете самолетом и должны сбивать врагов. Битва идет на водной территории. Особенностью игры было вращение уровня горизонта в зависимости от маневра самолета. Рис. 2. Цветом выделены составные элементы интерфейса игры. В то время не было ни CSS-трансформаций, ни элемента canvas. Для имитации вращения использовался набор картинок, четыре из которых были закрашены по диагонали. Растяжением и сжатием этих картинок можно имитировать наклон линии горизонта на разный угол и создавать эффект свободного вращения. Архитектура игровых движков JS Racing Рис. 3. Скриншоты игры JS Racing. В игре вы управляете машиной и должны обогнать соперника. Соревнование проходит на различных уровнях. Особенностью игры была имитация ЗО-движения по дороге. Рис. 4. Цветом выделены составные элементы интерфейса игры. Для создания данного эффекта дорога сделана из набора картинок, которые растянуты по длине. Чем ближе картинка — тем больше она растянута, и наоборот — дальние картинки сжаты по длине. Эти картинки также постепенно смещаются влево или вправо, имитируя поворот дороги. То же самое касается и всех дополнительных объектов, начиная от соседних машин и заканчивая придорожными деревьями. Чем дальше объект, тем больше он сжат в размерах, чем ближе — тем больше растянут. 12

See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.