Tag Archive for 'IDE'

va.lent.in

vИтак, представляю на суд общественности бету моего последнего персонального проекта. Счетчик FPS еще повисит какое-то время. http://va.lent.in.

Я часто загораюсь всякими странными навязчивыми идеями, вот так и с доменом lent.in и далее сайтом на нем. Сайт я делал долго и по кусочкам. В какой-то момент надо было эти кусочки собрать и первая версия получилась каким-то уж совсем abomination. Пришлось перекраивать и перестраивать концепцию.

Эффект IDE я показывал уже давно, и вдохновением для него послужил некоторый реальный продукт и некоторый еще не вышедший продукт. И вот я подумал, а почему бы сайт программиста не сделать в виде кода. Ага! И код будет на фоне печататься руками в темной комнате. Сеттинг был положен и какое-то время я прикидывал возможные исполнения.

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

Сперва, этот IDE изнутри весьма забавен и очень легко конфигурируем. Все синтаксические конструкции из базовых блоков задаются через XML, можно задавать цвет, вложенность любых блоков в любые конструкции. Узким местом оказался список используемых блоков, но что-то добавлять туда мне пришлось всего несколько раз и в самом начале. Очередь печати букв и создания конструкций по шаблонам задается в определенный момент и потом в течение какого-то время выполняется. Для адресации блоков сделал разбор адресов, который вышел весьма кривым, но по крайней мере не медленным. В общем, сама по себе поделка получилась интересная.

Дальше, я получил скилл работы в After Effects, где я собрал и отредактировал видео ряд сайта. Получилось, конечно, не идеально, но мне очень нравится. Особенно, если видеть исходный материал. Ну и стоит упомянуть, что нормально снять-то получилось раза с пятого.

Интересный “эффект подергивания” со смещением RGB каналов претерпел много серьезных изменений. В самом начале, он был на AS, полностью все изображение (в данном случае код рисуется в BitmapData) так красивенько искривлялось, но уже на немного больше небольшого объема текста начинало все ужасно тормозить. Тормозило даже подергивание всей картинки без особого искривления. Сделал тот же эффект на Pixel Bender, но честно говоря на больших картинках особо прироста производительности не заметил. В итоге получился интересный компромисс — маленькими участками (20 пикселей в высоту) сдвигается изображение в рандомной точке со сползанием вверх/вниз. Довольно забавно и гораздо менее ресурсоемко.

Эффект перелистывание картинок тоже мне нравится, хотя и косячит.

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

Но, самым важным полученным опытом я считаю знакомство с Flex Profiler. Я с ним просидел не один день, высматривая наплодившиеся объекты и вызываемые функции. Я обычно всегда задумываюсь о производительности и стараюсь что-то оптимизировать. Но на этот раз оптимизация прошла какого-то вселенского масштаба. К концу проекта, новые компоненты уже писались, учитывая весь прошлый опыт, и оптимизировался каждый символ. Код, правда, от этого получился весьма зубодробительный. Инлайны, фактори объектов, всякие ухищрения по ускорению просчета и отрисовки. Конечно же, я сильно уперся в возможности плеера. Фулскрин видео и постоянная перерисовка почти всего экрана отжирают сразу чуть ли не 70% используемого процессорного времени. Все, на что я раньше не обращал внимание, дало о себе знать сразу же. ФПС за ФПСом я отвоевывал у чертового плагина. Я перестал доверять флэшовой событийной модели. Оно толпу событий перекидывает туда-сюда очень уж медленно. Отказавшись от огромного числа лишних событий, удалось поднять производительность заметно выше.

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

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