Aquahawk
0
Наконец-то кто-то это написал нормально. Мы именно так и решали это на нескольких проектах, но так руки и не доходили это нормально написать, теперь есть хорошая дока на которую всех сбрасывать можно. Из дополнений только то, что в WebGl например сжатие текстур поддерживается только DXT3 и DXT5, а они не поддерживают премультиплаед альфу, а экономия видеопамяти в 4 раза стоит того. В итоге приходится делать экструзию(то что в статье предлагается делать через soldify-b) граничных пикселей на этапе экспорта ресуров. В нашем случае пришлось реализовать это самим руками, не так сложно как кажется.
Aquahawk
0
не возражаю
Aquahawk
0
Google trends неожиданно хорошо себя показывает в плане оценки активности вокруг технологии
Aquahawk
0
Всё вышеперечисленное да кроме «специфичных job board» Что вы под этим подразумеваете?
Aquahawk
0
Вы бы написали как хорошо искать, особенно когда требования специфичны и требуется высокая квалификация. Стандартный постинг вакансий по сайтам типа hh почти не работает. Мне нужен человек на работу во внутренностях компилятора TypeScript. Т.е. он должен прекрасно знать JS и как минимум нормально TypeScript, хоть немного представлять себе как устроены компиляторы, стандарты семейства EcmaScript 262-3-4-5, и хотеть этим заниматься. А делать предстоит конвертер с одного языка в другой. И при том что у меня уже есть наброски и понимание как это делать, т.е. не совсем с нуля начинать. Так вот, куда такое постить?
Aquahawk
+2
Аббревиатуре IoT, S означает security.
Aquahawk
+1
Не обещаю на неделе, но может к выходным и напишу.
Aquahawk
0
Такие мелкие штуки нельзя так тестить и в функцию заворачивая, там скорее всего вообще всё будет выброшено, нужно уже подробно смотреть что там наджитилось, а лучше бенчмаркать реальную задачу которая занимает какое-то ненулевое время, чтобы она долго выполнялась.
Aquahawk
+2
такой тест в корне невалиден. Вот тут как раз мой доклад про бенчмарки доступен, там частично раскрыта тема того почему так бенчмаркать нельзя https://habrahabr.ru/company/superjob/blog/325512/
Aquahawk
+3
Михаил Бусырев, Crazy Panda это я. Если есть вопросы, задавайте. Вполне вероятно что статьёй оформлю переработанный доклад.
Aquahawk
0
это я видел. А тесты производительности. Вы их ставили?
Aquahawk
0
что происходит например при транспайлинге es6 --> es5

а что там происходит? Можно конкретные примеры? Опять же с замерами если можно.
Aquahawk
0
Бремя доказательства лежит на утверждающем.
Про производительность хотел бы посмотреть тесты и методику их постановки. Не то чтобы я не мог их поставить сам, но я не думаю что мне это нужно, всё и так понятно, не бывает бесплатного исполнения дополнительного кода.
Aquahawk
0
это работает только с примитивными типами? Оно же даже массив с объектом отличить не сможет? И это же жесточайший удар по производительности. Нужна типизация? Смотрите на TypeScript или FlowType.
Aquahawk
+1
У дерева в кадрах анимации лежит анимация его срубания, оно при каждом ударе берёт следующий кадр. Т.е. в игре анимация деревьев всегда на паузе и тикает при ударах топором. Тут в демке она просто играется, потому кажется что моргает. Это уже к бизнес логике а не к движку относится, а до бизнес логики я ещё не дошёл в портировании. И да, фрутовые и декоративные деревья не рубят, потому они не мограют. Срубание подразумевают только дикие деревья, там из два видно. Если присмотреться даже видно как оно срубается.
Aquahawk
0
Ага, во флеше так делали. Например люди писали веб клиент к бирже, и клиенты любят открыть по 100 вкладок, чтобы столько сокетных соединений не висело и всё это не тормозило одна флешка была главной и содержала коннект к серверу, в другие по localConnection у неё что нужно забирали. Потом флеш начал стопориться на неактивной вкладке и всё встало. Так вот музыка поднимала fps обработчика event-loop до 8
Aquahawk
+1
Ещё раз перечитал статью. Изучайте не фреймвёрк а технологии. И профайлер советую не только юнитёвый, но и NVIDIA Nsight и Intel Graphics Performance Analyzer.
Aquahawk
+5
Вот демка того самого проекта о котором говорит bfDeveloper Я пишу вообще под webGL.
Да приходится атласы в рантайме собирать из того что есть на сцене. Тут по полной используется z сортировка для экономии на overdraw т.к. всё рисуется с альфа блендингом. Два дроколла потому что вся сцена сначала рисуется спереди на зад с альфаотсечением, и при этом заполняется depth буфер, а потом уже с блендингом сзади на перёд.
Мобилам всё равно недоступен такой уровень количества ассетов на сцене, т.к. у них early z culling не работает. Основная проблема это запись в экранный буфер, большое overdraw не держат ни мобилки ни даже встроенные intel видео карты.
Краткая сводка:
252 типа ассетов на сцене, всего более 7000 типов может быть на участке игрока
9000 инстансов этих ассетов на сцене, рандомно сортированы, худший вариант для батчера
альфа блендинг на каждом ассете
каждый ассет играет рандомную анимацию из тех что у него есть, в своей, рандомной позиции анимации.
2 draw calls per frame (deferred alpha blending).
Полностью gpu анимация. Никакого аплоада буферов на рендере вообще. Только текущее время в юниформ и два дроколла, с установкой ещё одного юниформа для того чтоб сообщить шейдеру альфу отрезать или блендить.
Aquahawk
0
У WebAssembly нет, и как я понимаю, на планируется Garbage Collector, соответственно туда джаваскриптеры не прибегут.
Aquahawk
+1
Да, только я смотрю на то что он генерит. И он генерит примерно то что я бы сам написал. И на es6 он использует нативные классы. А в es3 сделает тоже самое через прототипы.
Aquahawk
+1
Он и подталкивает. Советую посмотреть. Оно не про TS, а про JS. Но многое о чём там говорится проще писать на TS.



Aquahawk
0
Вот сегодняшний кейс. Пишу на TypeScript, кода много, пишу на нормально типизированном языке, со всем современными фишками, при этом спокойно выбираю таргет. Всегда сидел на es3 таргете, потому что нужно было кое что для ie8 поддержать.
Скомпилил свои тесты из es3 в котором обычно сидел в es6, так протестить. Билжусь в один файл, никаких webPack и Babel нет.
Абсолютно идентичный код, просто много регулярок и много вызовов функций (парсер юзер агентов)
image
внимание на скорость в ms. Chrome 56.
Aquahawk
+4
Человек который не понял как попасть на главную никогда не придёт вам писать обратную связь. Обратная связь работает только когда посетитель мотивирован на получение вашей услуги и ваше предложение достаточно уникально, если вы один из десяти магазинов где я хочу купить товар, то я(и не только я) просто скипну все странные сайты и всё. Почитайте https://ru.wikipedia.org/wiki/%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F_%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D0%B0_%D0%B2%D1%8B%D0%B6%D0%B8%D0%B2%D1%88%D0%B5%D0%B3%D0%BE
Aquahawk
+1
Проводил, десятками. Все оценки строго по p value. 90% тестов даже весьма смелых, статистически значимого эффекта не выявляют, или выявляют прямой эффект, но не целевой. Пример: В туторе игры тестируем как ставить здания: сразу автоматом, за пользователя, или дать ему поставить самому. Так вот, если ставить за него, он немного дальше проходит по игре, но ретеншн следующего дня не меняется значимо. Вообще повлиять в первой сессии на ретеншн крайне сложно.
Aquahawk
0
Чем меньше изменение тем лучше. Целиком механики можно тестить, но гораздо сложнее.
Aquahawk
+5
А нефиг тестировать скругление кнопки. Ценообразование прекрасно тестируется. И да строго в разрезе источников трафика и соцдема. Масштабность наград в играх тоже. И чтобы получить вменяемое p-value (мы же на него смотрим) часто нужно очень много трафика, поэтому стартапам на ранней стадии AB не подходит совсем.
Aquahawk
0
Ошибка в том что работали с ВК. Они не любят таких штук со стороны. Ну и 150 к это не много.
Aquahawk
+5
Блин, только я хотел порадоваться тому что у нас есть программисты которые так разбираются в глубину, как понял что это перевод.
Aquahawk
+1
http://glmatrix.net/ для линейной алгебры
Aquahawk
0
Ага, только первые шаги в программировании я делал на паскале а потом на си где очень нужна концепция указателей, и потом вся моя карьера игродела строилась и строится на понимании и эксплуатации фундаментальных принципов, может и через фреймвёрки но с глубоким пониманием того что там происходит.
Aquahawk
0
Нет экспортёр адоба корявый напрочь. Ручками растеризую сам на флеше, готовлю графику в правильных форматах под самопал движок. У нас графика собрана по удачному стечению обстоятельств очень удобным способом, таком что это очень хорошо ложится на железо в gl. В итоге анимации анимируются вертексным шейдером. Но проблемы с колоссальным overdraw, т.к. много прозрачных наложений, иногда до 100(сотня) доходит overdraw каждого пикселя на огромной площади экрана.
Aquahawk
0
Релизов два в неделю а не в день, ошибся.
Aquahawk
+1
Честно, минусов вам не ставил. Игра http://crazypanda.ru/products/household там по соц сетям потыкать можете, где она есть. Вряд ли вы в такое играете. Да таким играм нужен хороший движок, топовые участки реально сложные и там всё совсем не тривиально. Сколько зарабатывает — секрет, компания частная, но достаточно чтобы делать примерно два релиза с акциями и обновлениями в день и переводиться на 10 языков и чтобы ещё оставалось.
Aquahawk
+12
Вот сижу я сейчас и пилю новый движок для игры которая уже 5 лет зарабатывает деньги, и надеюсь будет зарабатывать ещё много лет, и мне грустно читать такие статьи. А движок, третий по счёту пилится очень скрупулёзно т.к. старые тормозят, а требования растут. И очень мало людей кто умеет писать серьёзные вещи и мало материалов. А все пилят проекты за месяц на гейм мейкере или за три на юнити толком не понимая как вообще это рисуется…
Aquahawk
0
Вот на прошлой неделе у меня знакомый где-то в европах не мог привязать интернет банк(банк неизвестен мне) к местной симке именно из за +7 захардкоженой. Он утратил РФ симку, и остался в очень неудобном положении из за этого. Хоть и имея евро симку какую-то.
Aquahawk
0
Вообще хотелось сказать автору большое спасибо, писать такие вещи нужно и полезно.
Aquahawk
0
И как Вы находите те самые 20% кода, которые выполняются 80% времени?

Профилировщиком. Он даже в IE11 есть
Aquahawk
0
Не, я просто делаю игру, там вообще нет DOM, чистый webGL и иногда нормальная математика (поиски пути всякие, рейкасты, моделинг каких-либо процессов)
Aquahawk
0
Я последние несколько месяцев фуллтаймово пишу на typescript. По сравнению с чистым js он прекрасен. Но проблема есть в том что никакие новые js не позволяют писать более производительный код для современных браузеров чем es3. Т.е. реально я ставлю таргетом es3 и не теряю в скорости. Да пришлось отказаться от геттеров и ещё некоторых конструкций но хуже не стало. Это очень печально. Язык ничего не делает для того чтобы стать более быстрым.
Aquahawk
0
Нет качественного контента. Есть качественная журналистика, есть исследования, есть обзоры, зависимые и независимые, есть user generated content. Не может копирайтер написать «контент». Т.е. может и это даже сможет засрать главную выдачи гугла. И даже может быть этот сайт заработает что-нибудь. А про качественный контент отлично написано тут: https://habrahabr.ru/company/mosigra/blog/310670/