Pull to refresh
-1
0.1

User

Send message

Мечтают ли нейроовцы о генеративных трубах? Кратко о процедурной генерации контента (PCG) в контексте игровой индустрии

Level of difficulty Medium
Reading time 16 min
Views 5.7K

Привет, Хабр! Меня зовут Владимир Садовский и я трудоголик (вялые аплодисменты) работаю программистом инструментария в Nau Engine. А ещё — обожаю игры. С детства. Компьютер у меня появился, когда мне было восемь. Предполагалось, что для учебы, но на глаза мне попалась Carmageddon, и дальше всё как в тумане. Потом были Command & Conquer: Generals, Fallout 2, и, кажется, сотни других. Детское увлечение со временем превратилось в карьеру. 

Увлекаться PCG я начал ещё в вузе (ИТМО). Тогда меня интересовало, как процедурная генерация контента помогает создавать игры с открытым миром и влияет на реиграбельность. Когда я стал игровым разработчиком, то заметил, что даже профессионалы часто путают процедурную генерацию и генеративный ИИ. 

Про GAI поговорим как-нибудь в другой раз (потому что эта огромная интересная тема тоже заслуживает отдельного материала), а сегодня разберёмся, с чем едят процедурную генерацию контента, и как не подавиться как она используется в игровой индустрии. А заодно немного окунёмся в историю PCG (а она почти вдвое старше меня), рассмотрим популярные инструменты и обсудим самые перспективные алгоритмы. 

Погнали!

Читать далее
Total votes 27: ↑27 and ↓0 +27
Comments 3

Интерполяция — мать анимации — Твинеры в Unity

Reading time 9 min
Views 10K

Одним из неотъемлемых элементов игровых приложений, обеспечивающих красочный пользовательский опыт, является анимация. Основным компонентом Unity для анимации является "Mecanim", имеющий более привычное название "Аниматор". Это очень мощный инструмент, позволяющий управлять сложнейшими системами объектов, совместимый со скелетными анимациями, экспортируемыми из 3D-пакетов, с инструментами для работы с IK, смешивания анимаций или частичного их проигрывания. И как только ты уверишься в том, что пробовал в аниматоре все, будь уверен - на следующий день ты найдешь новую функцию, с которой не сталкивался ранее. И это будет та самая функция, которой тебе так не хватало. Но не всегда...

Читать далее
Total votes 6: ↑5 and ↓1 +4
Comments 6

Контейнерные запросы в CSS

Reading time 9 min
Views 13K

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

О контейнерных запросах запомнилось много шуток, но они, наконец, здесь. Специально к старту нового потока курса по Frontend разработке, делимся с вами статьей, в которой рассказывается зачем нам нужны контейнерные запросы, как они облегчат нашу жизнь, и, самое важное, ваши компоненты и макеты станут мощнее. Если вы взволновались так же, как и я, давайте углубимся в тему. Вы готовы?

Читать далее
Total votes 13: ↑11 and ↓2 +9
Comments 7

Как написать «нанимающее» резюме для разработчика

Reading time 9 min
Views 13K

Привратники

Ваше резюме будут читать 3 типа людей:

HR или рекрутер

Первый человек, который видит ваше резюме, и скорее всего не технарь. У него есть только один вопрос:

Надо ли показать резюме этого человека техническому специалисту?

Как он это определяет? Для этого ему надо понять, есть ли у этого кандидата нужные навыки. Но HR не является программистом, поэтому ваш разговор может закончиться так:

Простите, но вы нам не подходите. Нам нужен человек с опытом JavaScript, а я вижу что вы программировали только на Angular JS и jQuery.

Читать далее
Total votes 16: ↑13 and ↓3 +10
Comments 11

Как удалить «неудаляемые» приложения со смартфона

Reading time 5 min
Views 246K


Чтобы увеличить привлекательность смартфонов, производители ставят на них как можно больше разных программ. Это понятно. Просто берём и удаляем ненужное… Стоп.

Оказывается, некоторые программы невозможно удалить. Например, на отдельных моделях Samsung невозможно удалить Facebook (есть только опция 'disable'). Говорят, на Samsung S9 вдобавок предустановлены «неудаляемые» приложения Microsoft.

Эти смартфоны приведены для примера. Такая же проблема и на других моделях. На многих есть неудаляемые программы от самого производителя.

Всё это надо зачистить.
Читать дальше →
Total votes 190: ↑179 and ↓11 +168
Comments 203

Илья Якямсев: Эффективность не работает

Reading time 19 min
Views 65K
С точки зрения проект-менеджера и с точки зрения управления людьми, люди в депрессии — идеальные работники.

Привет, Хабр.

Недавно посмотрела выступление одного scrum-мастера и stand up комика по совместительству. Выступление оказалось эмоциональное, с большим количеством непечатных слов и долей здравого смысла.

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


Эффективность не работает


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

Я работаю менеджером проекта. Начинал я в Тольятти, в 96 году, на должности «эй, пацан, принеси пиво». С 99 года я начал программировать front, тогда это называлось «верстак». Потом я открыл контору, закрыл ее, многое произошло, и сейчас я менеджер проектов.

Мой доклад называется «Эффективность не работает». И я объясню почему.

Жизнь после 30


Дело в том, что мне сорокет в этом году. Я работаю в основном с людьми помоложе себя, и они у меня часто спрашивают: «Илья, как она жизнь в IT после 30? Ну, то есть, что с ней происходит?». Я отшучиваюсь: как говорится, баб поменьше, детей побольше



Но я всерьез задался этим вопросом, подумал, что случилось со всеми людьми, с которыми я начинал, с которыми продолжаю. Всем моим друзьям около 40, все по-разному живут. Какое у нас общее свойство? О чем стоит рассказать людям? На что им ориентироваться в процессе работы? Каким образом это будет у них? И я вывел то общее, о котором хочу сегодня рассказать.
Читать дальше →
Total votes 157: ↑129 and ↓28 +101
Comments 88

Ограничения 8-битных игр и их точное воссоздание в Unity

Reading time 14 min
Views 27K
image

Ретро-игры с простыми механиками и пиксельной графикой способны пробуждать тёплые воспоминания у опытных игроков, и в то же время вполне доступны для более юной аудитории. Сегодня многие игры называются «ретро», но для создания ностальгического стиля требуются усилия и планирование. Именно поэтому мы пригласили ребят из Mega Cat Studios помочь нам в обсуждении этой темы. В этом посте мы рассмотрим всё необходимое для создания аутентичной графики в стиле игр для NES, в том числе важные параметры Unity, графические структуры и цветовые палитры.

Создание аутентичного арта в стиле NES


Для начала мы рассмотрим основы создания графики для игр, соответствующих ограничениям классической Nintendo Entertainment System. Это поколение консолей накладывает серьёзные ограничения на художников, стремящихся воспроизвести его аутентичную графику. Это ограничения на используемые палитры и на размер и количество объектов на экране. Кроме того, важно учитывать, что разрешение этой консоли составляет 256×240 пикселей.

Палитры


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


Эти цвета невозможно менять, потому что они являются частью самой консоли. Во всех играх NES используются сочетания этих цветов, из которых составляются изображения.
Читать дальше →
Total votes 36: ↑36 and ↓0 +36
Comments 24

Повтор неудачных HTTP-запросов в Angular

Reading time 9 min
Views 11K
Организация доступа к серверным данным — это основа почти любого одностраничного приложения. Весь динамический контент в таких приложениях загружается с бэкенда.

В большинстве случаев HTTP-запросы к серверу работают надёжно и возвращают желаемый результат. Однако в некоторых ситуациях запросы могут оказываться неудачными.

Представьте себе, как кто-то работает с вашим веб-сайтом через точку доступа в поезде, который несётся по стране со скоростью 200 километров в час. Сетевое соединение при таком раскладе может быть медленным, но запросы к серверу, несмотря на это, делают своё дело.

А что если поезд попадёт в туннель? Тут высока вероятность того, что связь с интернетом прервётся и веб-приложение не сможет «достучаться» до сервера. В этом случае пользователю придётся перезагрузить страницу приложения после того, как поезд выедет из туннеля и соединение с интернетом восстановится.

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

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



Материал, перевод которого мы сегодня публикуем, посвящён разбору нескольких способов повторения неудачных запросов в Angular-приложениях.
Читать дальше →
Total votes 31: ↑30 and ↓1 +29
Comments 6

Сборка библиотеки angular-компонентов в виде веб-компонентов

Reading time 6 min
Views 5.7K
Про Angular Elements сейчас пишут много статей и регулярно читают доклады. Мол, больше не нужно разворачивать несколько полноценных ангуляров — достаточно собрать веб-компоненты и использовать их на своей странице.

Но, как правило, эти материалы ограничиваются рассмотрением довольно утопичной ситуации: мы делаем отдельный проект, создаем angular-компонент, настраиваем проект на сборку Elements и, наконец, компилируем несколько JS-файлов, подключение которых к обычной странице даст нам необходимый результат. Ура, компонент работает!..

image

На практике же возникает потребность вытащить несколько компонентов из готового работающего angular-проекта, да еще желательно так, чтобы не влиять на его текущую разработку и использование. Эта статья получилась как раз благодаря одной из таких ситуаций: я хотел не просто собрать отдельные элементы проекта, а сделать процесс компиляции целой UI-библиотеки на Angular в набор файлов с нативными веб-компонентами.
Читать дальше →
Total votes 19: ↑17 and ↓2 +15
Comments 0

22 совета Angular-разработчику. Часть 2

Reading time 7 min
Views 16K
Сегодня мы публикуем вторую часть перевода статьи, которая содержит набор рекомендаций для Angular-разработчиков. В предыдущей части были представлены 11 советов, в этой мы рассмотрим ещё столько же.


Читать дальше →
Total votes 28: ↑25 and ↓3 +22
Comments 1

22 совета Angular-разработчику. Часть 1

Reading time 10 min
Views 29K
Автор статьи, первую часть перевода которой мы публикуем, говорит, что он уже около двух лет работает над крупномасштабным Angular-приложением в Trade Me. В течение последних нескольких лет команда разработчиков приложения постоянно занимается совершенствованием проекта — как в плане качества кода, так и в том, что касается производительности.


В этой серии материалов речь пойдёт о подходах к разработке, используемые командой Trade Me, которые выражены в виде более чем двух десятков рекомендаций, касающихся таких технологий, как Angular, TypeScript, RxJS и @ngrx/store. Кроме того, определённое внимание здесь будет уделено универсальным техникам программирования, которые направлены на то, чтобы сделать код приложений чище и аккуратнее.
Читать дальше →
Total votes 30: ↑27 and ↓3 +24
Comments 23

Пример организации кода для сложного Angular проекта

Reading time 3 min
Views 13K

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



(Изображение взято из статьи "12 Things to Help Large Organizations Do Angular Right" )


Данная публикация есть практическое осмысление статей "12 Things to Help Large Organizations Do Angular Right" (Victor Savkin, Co-founder of Narwhal Technologies (nrwl.io) и "Angular: Understanding Modules and Services" (Michele Stieven, Web Developer & JS enthusiast) через призму собственного опыта работы с фреймворком.

Читать дальше →
Total votes 13: ↑13 and ↓0 +13
Comments 4

Internet Archive запустил проект по сохранению старых игр на портативных приставках

Reading time 3 min
Views 9.5K


У детей бывшего СССР огромной популярностью пользовалась портативная «консоль», где волк ловил яйца в корзину, не давая им разбиться. Не менее популярными были игровые устройства схожей конструкции у детей и взрослых из других стран. К сожалению, сейчас многие из них являются музейной редкостью, так что поностальгировать, играя, не получится.

Но проблему снимает Internet Archive. Команда этой организации, кроме старых игр под MS-DOS и консольные игры для Atari и ColecoVision решила добавить виртуальные копии приставок с ЖК-экраном. Например, это Mortal Kombat от Tiger Electronics, Burger Time от Bandaib и некоторые другие. Всего в базу планируется добавить около 200 таких приставок. Некоторые из них (на момент написания статьи — 74) есть уже сейчас, так что можно не ждать, а начать игру.
Читать дальше →
Total votes 30: ↑30 and ↓0 +30
Comments 6

Полный цикл создания модели персонажа для игры

Reading time 3 min
Views 175K
Процесс создания in-game модели персонажа от эскиза до релиза.

image

Доброго времени суток. Меня зовут Ivan. Сегодня я поделюсь с вами деталями разработки игр, а именно расскажу о полном цикле создания персонажа. Итак, поехали!
Читать дальше →
Total votes 54: ↑51 and ↓3 +48
Comments 38

Типичное использование Observable объектов в Angular 4

Reading time 5 min
Views 78K

Представляю вашему вниманию типичные варианты использования Observable объектов в компонентах и сервисах Angular 4.



Подписка на параметр роутера и мапинг на другой Observable


Задача: При открытии страницы example.com/#/users/42, по userId получить данные пользователя.


Решение: При инициализации компоненты UserDetailsComponent мы подписываемся на параметры роутера. То есть если userId будет меняться — будер срабатывать наша подписка. Используя полученный userId, мы из сервиса userService получаем Observable с данными пользователя.


// UserDetailsComponent

ngOnInit() {
  this.route.params
    .pluck('userId') // получаем userId из параметров
    .switchMap(userId => this.userService.getData(userId))
    .subscribe(user => this.user = user);
}

Читать дальше →
Total votes 21: ↑21 and ↓0 +21
Comments 12

У нас длинные руки: 7 зарубежных площадок, на которых можно найти удалённую работу

Reading time 3 min
Views 132K
Развитие телекоммуникационных технологий — это win-win для работодателей и работников: компании могут находить таланты по всему миру, а люди могут работать откуда угодно, лишь бы был Wi-Fi. И популярность удалённой работы лишь растёт. К примеру, согласно отчёту Gallup, в 2015 году 37% респондентов ответили, что работают удалённо частично или весь рабочий день. Это было на 7 процентных пунктов больше, чем в 2008. И нет причин считать, что эта тенденция сегодня изменилась.

Чем больше людей обращаются к подработке, фрилансу или удалённой работе на полную ставку, тем чаще возникает вопрос: где именно мне найти работу, которая позволит отказаться от поездок в офис? Предлагаем вашему вниманию семь зарубежных площадок, на которых можно найти удалённую работу.
Читать дальше →
Total votes 50: ↑49 and ↓1 +48
Comments 35

Занимательная вёрстка с единицами измерения области просмотра

Reading time 7 min
Views 55K

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



Total votes 16: ↑15 and ↓1 +14
Comments 12

Создаём динамическую обложку ВКонтакте

Reading time 5 min
Views 115K
В последнее время всё большую популярность обретают различные интерактивные способы завлечь аудиторию и привлечь к себе больше внимания. Тут и боты для социальных сетей и мессенджеров, и другие решения, придающие «уникальности». Среди них можно выделить и динамические обложки для сообществ, официально поддерживать которые ВКонтакте начали в марте.

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


На примере моего пустого сообщества-песочницы
Читать дальше →
Total votes 45: ↑42 and ↓3 +39
Comments 46

Все, что вам нужно знать об обнаружении изменений в Angular

Reading time 8 min
Views 83K
Наткнулся на хорошую статью об устройстве Angular'овского механизма обнаружения изменений (change detection). Т.к. тема достаточна важна, но при этом недостаточно глубоко раскрыта даже на англоязычных ресурсах, а найти русскоязычные материалы на эту тему, вообще, не представляется возможным, решил перевести данную статью.
Перевод под катом
Total votes 21: ↑20 and ↓1 +19
Comments 8

Введение в React и Redux для бекенд-разработчиков

Reading time 9 min
Views 58K


Если вы как я долгое время считали, что JavaScript – это такой «игрушечный» язык на котором пишут анимашки для менюшек и падающие снежинки на форумах под новый год, а потом очнулись в 2016 году с мыслями WTF: react, flux redux, webpack, babel,… не отчаивайтесь. Вы не одиноки. Материалов по современному фронтенду в сети много, даже слишком много. Под катом еще одно альтернативное мнение о том, каково это учить JavaScript в 2016 году.
Стань модным
Total votes 45: ↑33 and ↓12 +21
Comments 182

Information

Rating
2,938-th
Location
Оренбургская обл., Россия
Registered
Activity