Привет, Хабр! В этой статье я расскажу всё, что знаю про Entity-Component-System и попытаюсь развеять различные предубеждения об этом подходе. Здесь вы найдете много слов о преимуществах и недостатках ECS, об особенностях этого подхода, о том как с ним подружиться, о потенциальных граблях, о полезных практиках, а также в отдельном разделе коротко посмотрим на ECS фреймворки для Unity/C#.
Пользователь
Пыль, пылевые клещи и их аллергены. Профилактика и защита
17 мин
67KТуториал
Пыль и пылевые клещи в ней есть практически везде и всегда. Уничтожить их удается возможно только в условиях «чистых комнат» на производстве полупроводников. Приходится с этим мириться, и жить допуская, что все что нам под силу — уменьшить их количество. Считается, что если концентрация клещей < 100 штук на грамм пыли — аллергия у большинства не возникает. После того как пришлось пару-тройку минут чихать без остановки — у меня накопилось достаточно злобы, чтобы рассмотреть, что же представляет из себя пыль в квартире и что и кто в этой пыли живет. А теперь вот нашлось время, чтобы познакомить с «нашими маленькими друзьями» и читателей Хабра. В заметке рассуждения о некоторых особенностях биологии вездесущего домашнего паразита и методикам его контроля. То, что под катом можешь смело давать почитать жене, %username%!
+101
Mkcert: валидные HTTPS-сертификаты для localhost
2 мин
86KВ наше время использование HTTPS становится обязательным для всех сайтов и веб-приложений. Но в процессе разработки возникает проблема корректного тестирования. Естественно, Let’s Encrypt и другие CA не выдают сертификаты для localhost.
Традиционно есть два решения.
+43
Unity3D: Модификация делегата iOS приложения
15 мин
3.8KДумаю, многим в ходе разработке игры для iOS приходилось сталкиваться с тем, что возникает необходимость использовать тот или иной нативный функционал. Касаемо Unity3D, в данном вопросе может возникать очень много проблем: для того, чтобы внедрить какую-то фичу, приходится смотреть в сторону нативных плагинов, написанных на Objective-C. Кто-то в этот момент сразу отчаивается и забрасывает идею. Кто-то ищет готовые решения в AssetStore или на форумах, надеясь на то, что готовое решение уже существует. Если же готовых решений не существует, то самые стойкие из нас не видят другого выхода, кроме как погрузиться в пучину iOS программирования и взаимодействия Unity3D с Objective-C кодом.
Тех, кто выбирает последний путь (хотя, думаю, они и сами знают), ожидает множество проблем на этом нелегком и тернистом пути:
Тех, кто хочет узнать о механизмах взаимодействия Unity3D с iOS приложением, прошу под кат.
Тех, кто выбирает последний путь (хотя, думаю, они и сами знают), ожидает множество проблем на этом нелегком и тернистом пути:
- iOS — абсолютно незнакомая и обособленная экосистема, развивающаяся своим путем. Как минимум придется потратить довольно много времени, чтобы понять как можно подобраться к приложению, и где в недрах автоматически сгенерированного XCode проекта находится код взаимодействия Unity3D движка c нативной составляющей приложения.
- Objective-C — довольно обособленный и мало на что похожий язык программирования. А когда речь заходит о взаимодействии с C++ кодом Unity3D приложения, то на сцену выходит «диалект» этого языка, под названием Objective-C++. Информации о нем совсем немного, большая ее часть древняя и архивная.
- Сам протокол взаимодействия Unity3D с iOS приложением довольно скудно описан. Расчитывать стоит исключительно на туториалы энтузиастов в сети, которые пишут как разработать простейший нативный плагин. Мало кто при этом затрагивает более глубокие вопросы и проблемы, возникающие при потребности сделать что-то сложное.
Тех, кто хочет узнать о механизмах взаимодействия Unity3D с iOS приложением, прошу под кат.
+14
Вивисекция успеха
10 мин
17KВ течение последних 13 лет я работаю в My.Com. Это очень большая компания, состоящая из более чем 10 разнообразных студий, делающих игры, в первую очередь мобильные. Такой масштаб подразумевает большую плотность запусков новых игр, где-то по 3-4 игры в год. Как вы понимаете, работа с таким потоком требует огромного умения оперативно и точно оценивать проекты на каждом этапе их создания.
И здесь главная сложность связана с проектами, демонстрирующими спорные результаты. Если со слабыми/сильными всё понятно, то вот с оценкой последних всегда возникают проблемы, так как задача уходит из плоскости оценки прямых показателей в плоскость оценки возможного потенциала проекта.
+24
typeof(T) vs. TypeOf⟨T⟩
12 мин
21KИногда рефлексивные вызовы дороги в терминах производительности и не могут быть опущены.
В этой статье представлены паттерны, позволяющие существенно повысить производительность множественных рефлексивных вызовов посредством техники виртуализации (кэширования) результатов.
В этой статье представлены паттерны, позволяющие существенно повысить производительность множественных рефлексивных вызовов посредством техники виртуализации (кэширования) результатов.
+7
Иллюзия пространства: как новый Spiderman рендерит помещения без геометрии
5 мин
46KПеревод
В недавно выпущенной игре Marvel's Spider-Man во многих зданиях за окнами есть интерьеры. Они выглядят замечательно, но похоже, что их реализовали с помощью хитрого рендеринга — геометрии интерьеров на самом деле не существует и она сгенерирована шейдером. Я не видел никаких официальных заявлений Insomniac о том, как они это сделали, но исходя из того, как выглядит эффект, здесь с большой вероятностью реализована техника interior mapping, которую я придумал в 2007 году в процессе работы над диссертацией. Раньше я не писал о ней в блоге, поэтому сейчас подходящий момент для объяснения любопытного небольшого шейдера, который я придумал.
Давайте начнём с просмотра геймплея Marvel's Spider-Man. Игра выглядит просто потрясающе. Сайт Kotaku записал отдельный ролик, посвящённый окнам:
Как можно заметить примерно на 40 секунде видео, в самом деле комнаты не являются частью геометрии: там где очевидно должно быть окно, находится дверь. Кроме того, глядя в одну комнату с разных углов здания, мы видим разный интерьер. В некоторых случаях за углом здания даже находится стена. Всё это даёт нам понять, что комнаты имитируются. Тем не менее, с точки зрения перспективы они отображаются правильно и обладают реальной глубиной.
+88
Основные практики обеспечения безопасности iOS-приложений
9 мин
13KПри разработке любого мобильного приложения, обрабатывающего пользовательские данные, важно уделить внимание безопасности. Особенно остро этот вопрос стоит для приложений, где фигурируют ФИО, номера телефонов, паспортов и другая личная информация. Наша компания разрабатывала и продолжает развивать несколько проектов такого рода, в частности приложения для клиентов российских банков. На основе этого опыта мы выработали набор требований безопасности, которым руководствуемся. Естественно, каждый год появляются новые технологии и возможности, а вместе с ними — новые особенности поведения и уязвимости. В этой статье мы зафиксировали основные пункты обеспечения безопасности iOS-приложений, актуальные на начало 2018 года.
+20
Нейронные сети для начинающих. Часть 1
7 мин
1.5MПривет всем читателям Habrahabr, в этой статье я хочу поделиться с Вами моим опытом в изучении нейронных сетей и, как следствие, их реализации, с помощью языка программирования Java, на платформе Android. Мое знакомство с нейронными сетями произошло, когда вышло приложение Prisma. Оно обрабатывает любую фотографию, с помощью нейронных сетей, и воспроизводит ее с нуля, используя выбранный стиль. Заинтересовавшись этим, я бросился искать статьи и «туториалы», в первую очередь, на Хабре. И к моему великому удивлению, я не нашел ни одну статью, которая четко и поэтапно расписывала алгоритм работы нейронных сетей. Информация была разрознена и в ней отсутствовали ключевые моменты. Также, большинство авторов бросается показывать код на том или ином языке программирования, не прибегая к детальным объяснениям.
Поэтому сейчас, когда я достаточно хорошо освоил нейронные сети и нашел огромное количество информации с разных иностранных порталов, я хотел бы поделиться этим с людьми в серии публикаций, где я соберу всю информацию, которая потребуется вам, если вы только начинаете знакомство с нейронными сетями. В этой статье, я не буду делать сильный акцент на Java и буду объяснять все на примерах, чтобы вы сами смогли перенести это на любой, нужный вам язык программирования. В последующих статьях, я расскажу о своем приложении, написанном под андроид, которое предсказывает движение акций или валюты. Иными словами, всех желающих окунуться в мир нейронных сетей и жаждущих простого и доступного изложения информации или просто тех, кто что-то не понял и хочет подтянуть, добро пожаловать под кат.
+50
Бухгалтерский учет для программистов
16 мин
81KВведение
Занимаюсь автоматизацией бухгалтерского учета 17 лет. После универа поработал как программист бухгалтерской программы. Выяснилось, что есть спрос на программистов этой программы. Поменял одну работу, вторую. Начал брать заказы на стороне. Выяснилось (или показалось), что выполнять заказы выгоднее, чем получать зарплату. Стал частным предпринимателем. Выяснилось (или опять показалось), что продавать программу выгоднее, чем программировать. Стал дилером. Оказалось, что выгоднее всего – подписка на обновления и обслуживание. Возможно, еще выгоднее сделать веб-сервис для онлайн-бухгалтерии…
В ходе работы приходилось нанимать программистов и обучать основам бухгалтерского учета. Когда обучал программистов бухучету, мне нравилось за час рассказать им всю базовую теорию. Приятно срывать покровы сложности и таинственности. Оказывается, курсы бухгалтеров никому не нужны. Нет такой науки. Разве что набор терминов, в которых путаются сами бухгалтера…
+51
Ожидания и реальность — наш опыт создания и продвижения мобильной игры
6 мин
12KПривет всем. Меня зовут Ярослав, сегодня я расскажу вам о том, как мы создавали мобильную игру Crazy Shapes Run Adventure — что уже успели прожить, а также самые интересные и полезные вещи, которые помогут вам избежать многих ошибок.
Предыстория
Идея игры появилась еще в 2016 году. Она оказалась хорошей, потому что основателями проекта были Денис и Виктор — первый уже занимался созданием игр, а другой понимал в построении бизнес-процессов и в управлении. В такой связке и начали работать.
Зарождение идеи
Сначала хотели выбрать что-то другое, но остановились именно на идее приключенческого раннера для смартфонов и планшетов, потому что они пользуются огромным спросов во всех странах. И начали претворять задумки в жизнь.
+9
Почему мы не стали делать идеально: как менялась инфраструктура серверов War Robots
5 мин
20KПервый прототип (например, игры в новой для вас нише) часто делается «на коленке» из палок и самизнаетечего. Причем палки, как правило, тоже из этого самизнаетечего. И на то есть несколько причин.
Во-первых, от неудачной идеи будет не так жалко отказаться. А во-вторых, в погоне за перфекционизмом можно забыть о потребностях конечных пользователей или никогда не закончить работу даже над альфа-версией. Но что, если в вашу «глиняную» повозку стало набираться так много людей, что перестраивать её на ходу уже не кажется такой привлекательной идеей? Примерно это с нами и случилось.
Забегу вперед и расскажу, что сейчас DAU в наших проектах около 1,5 млн. Но так было не всегда.
+50
Пара способов отправить уведомления на смартфон со своего сервера
9 мин
87KВ этом туториале я рассмотрю пошагово, как отправлять со своего сервера уведомления на свой (или не свой) смартфон, какие средства для этого понадобятся. Эти способы универсальны и подойдут для любого языка программирования, т.к. напрямую используют API гугла, без использования библиотек. Отправить можно на смартфоны с Android, iOS и в браузеры с поддержкой Push API (на сегодня это Chrome, Firefox и их производные).
В общем всем тем, кто давно хотел отправлять уведомления со своего домашнего сервера на свой смартфон, но не знал с чего начать, посвящается.
В общем всем тем, кто давно хотел отправлять уведомления со своего домашнего сервера на свой смартфон, но не знал с чего начать, посвящается.
+37
Научные способы побороть усталость: ноотропы, кофе и нейротехнологии
17 мин
117KНедавно я заметил, что устал быть уставшим. Но можно ли это исправить? Я часто и много пью кофе – оно помогает, но ненадолго. А есть ли что-нибудь ещё не менее эффективное? В общем, после того как мне пришли эти мысли я решил закопаться в научную литературу: что известно про доказанные инструменты борьбы с усталостью. Как борются с усталостью биохакеры? Здесь я поделюсь личным расследованием того, что публикуют ученые о борьбе с усталостью.
В последние годы проводится всё больше научных исследований, в которых изучается способность различных фармакологических стимуляторов (например, модафинил, метилфенидат) и нейротехнологий (например, электростимуляция мозга) улучшать когнитивные способности человека. Особый интерес представляют те из них, в которых улучшения достигаются не для медицинских целей (лечение деменций, депрессии, Альцгеймера), а на здоровых людях.
Инициаторами таких исследований являются, как правило, вооруженные силы, и первоначально проводятся они для оптимизации профессий, требующих особую собранность и выносливость: летчики, пехотинцы, водители. Существует, однако, целое сообщество биохакеров (или даже – «нейрохакеров»), которые немедленно берут такие технологии «на вооружение» и начинают самостоятельно использовать их в домашних условиях.
+41
Как Angry Birds 2 за год увеличила доход в несколько раз
15 мин
16KПеревод
После выпуска Angry Birds 2 в конце июля 2015 года игра получила смешанные отзывы. И Pocket Gamer, и IGN хвалили игру за превосходную графику и значительно улучшенный дизайн уровней, но корили Rovio за механику жизней в стиле Candy Crush и случайные уровни.
«Постоянно меняющиеся уровни и ограниченное количество жизней сильно портят удовольствие от борьбы со свиньями».
— Из обзора Angry Birds 2 на IGN
Если посмотреть на загрузки, то выпуск Angry Birds 2 стал огромным успехом. К концу 2015 года игра почти достигла рубежа в 50 миллионов загрузок. Однако с точки зрения доходов всё выглядело гораздо мрачнее: игра заработала «всего» около 10 миллионов долларов.
После первого выпуска Angry Birds 2 пошла на спад и в течение нескольких месяцев имела стабильно низкие доходы. Роста удалось добиться благодаря выпуску нескольких важнейших функций, надстраиваемых одна над другой. После выпуска игры не было каких-то значительных пиков установок, что означало устойчивый рост доходов. В дополнение к выпуску важных функций в игру была добавлены новые уровни.
Вместо того, чтобы брать курс на простое добавление уровней, стокгольмский разработчик Angry Birds 2 принялся за работу. Обновления 2016 года добавили в игру несколько базовых механик, такие как повышение уровня птиц и рогатки, ежедневные задания и PvP-арена. В то же время стабильно и постепенно добавлялся новый контент уровней.
+9
WebGL: перевод игры с мобильной платформы на десктопную
6 мин
7.9KСоздание десктопной версии мобильной игры стало настоящей исследовательской миссией для краснодарской студии Plarium. В этой статье мы расскажем, как перешли на технологию WebGL при переносе проекта Vikings: War of Clans на новую платформу.
+10
Как я слил 1000$ в продвижение игры и что из этого получилось
6 мин
60KПриветствую, в этой статье хочу пробежаться по наиболее острому моменту для любого разработчика мобильных игр, а именно — по их продвижению.
Для многих знакома ситуация, делал-делал, а кроме друзей так и никто и не увидел игру, а ведь так старался! Под катом не будет расплывчатых формулировок или предположений по продвижению. Конкретно ссылки — конкретно результат. Поехали!
+80
Использование BSP-деревьев для создания игровых карт
9 мин
26KПеревод
При заполнении области объектами (например, комнатами в подземелье) в случайном порядке вы рискуете тем, что всё будет слишком случайным. Результат может оказаться абсолютно бесполезным хаосом. В этом туториале я покажу, как использовать для решения этой проблемы двоичное разбиение пространства (Binary Space Partitioning, BSP).
Я подробно и по этапам расскажу об использовании BSP для создания простой двухмерной карты, к примеру, схемы подземелья. Я покажу, как создать простой объект
Leaf
, который мы используем для разделения области на маленькие сегменты. Затем мы займёмся генерированием в каждом Leaf
случайной комнаты. И, наконец, узнаем, как соединить все комнаты коридорами.Примечание: хоть код примеров и написан на AS3, концепцию можно использовать практически в любом другом языке.
+20
Пост-эффекты в мобильных играх
8 мин
26KБольшинство публикаций по графике для консолей и десктопов рассказывают о чем-то новом, а для мобильных платформ во главе угла всегда стоит оптимизация уже существующего.
Что касается пост-обработки — её волшебное действие на фотографии было открыто задолго до появления первых компьютеров, а её математический и алгоритмический базис, созданный для цифровой обработки изображений, удачно вписался в программируемый конвейер GPU.
Помимо того, что пост-эффекты (точнее — их не очень грамотное использование) являются предметом ненависти среди игроков, они также едва ли не единственный способ быстро и дешево «оживить» и «освежить» картинку. Насколько качественным получится это «оживление» и не обернется ли оно в результате «свежеванием», зависит по большей части от художников.
+46
J-Bird
4 мин
15KВесна навалилась на Крагуевац и нет покоя от котов и птиц. Птицы, скажете вы, при чем здесь птицы, и потянетесь к магической стреле. Стойте, я объясню…
+30
Информация
- В рейтинге
- Не участвует
- Зарегистрирован
- Активность