• Почему налоговая не верит в айтишников-индивидуальных предпринимателей?

    Сколько может зарабатывать айтишник на ИП? У ФНС свое мнение


    Когда один человек много зарабатывает и честно платит налоги, налоговики смотрят со стороны и думают: «Как такое возможно? Наверняка у него масса помощников! Пусть и за них налоги заплатит!»

    Рассказываем, как при наличии электронной подписи в пару кликов забыть о подобных притязаниях налоговой.
    Читать дальше →
  • Равномерное перемещение объекта вдоль кривой



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

    Наверное, каждый имеющий отношение к теме знает или, по крайней мере, слышал, про кривые Безье, B-сплайны, сплайны Эрмита и прочие интерполяционные и сглаживающие сплайны и совершенно правильно предложил бы использовать в описанной ситуации один из них, но не всё так просто, как хотелось бы.
    Читать дальше →
  • Мои десять лет в геймдеве

    • Translation
    Привет! Меня зовут Нико Туасон, я разработчик инди-игр из Филиппин. В этом году исполняется десять лет с того момента, как я начал свой путь в геймдеве. Я хотел бы поделиться с вами историей всей моей карьеры – провалами, триумфами, важными жизненными событиями. Надеюсь, вы не пожалеете, что потратили время на чтение.

    2010 год: прыжок в неизвестность


    В начале нового десятилетия декады мне было двадцать три года и я только что оставил работу в местной компании, которая занималась веб-разработкой. Я отработал там около года и получал двадцать две тысячи филиппинских песо в месяц (примерно четыреста сорок долларов). Для вчерашнего выпускника деньги неплохие, но я мало чего добивался профессионально и чувствовал себя недовольным жизнью. К тому же, моя девушка, с которой мы встречались четыре года, усиленно намекала, что не прочь бы выйти замуж, так что двадцати тысяч песо казалось уже маловато.

    Я азиат (да, филиппинцы тоже азиаты) и для моих родителей было бы неприемлемо, если бы я не был занят ни учёбой, ни работой, поэтому я подал документы в магистратуру по специальности «Мультимедиа» в Сингапуре. Они и понятия не имели, что вскоре после этого мне пришло письмо с отказом. Я всё говорил им, что моя заявка, мол, в процессе рассмотрения, а сам втайне работал над проектом «для себя» — своей первой игрой.
    Читать дальше →
  • Магические сигнатуры методов в C#

    • Translation

    Представляю вашему вниманию перевод статьи The Magical Methods in C# автора CEZARY PIĄTEK.


    Есть определенный набор сигнатур методов в C#, имеющих поддержку на уровне языка. Методы с такими сигнатурами позволяют использовать специальный синтаксис со всеми его преимуществами. Например, с их помощью можно упростить наш код или создать DSL для того, чтобы выразить решение проблемы более красивым образом. Я встречаюсь с такими методами повсеместно, так что я решил написать пост и обобщить все мои находки по этой теме, а именно:


    • Синтаксис инициализации коллекций
    • Синтаксис инициализации словарей
    • Деконструкторы
    • Пользовательские awaitable типы
    • Паттерн query expression
    Читать дальше →
  • На что ещё способны шаговые моторы? — Забивать голы в настольном хоккее

    Создавая своего первого робота (Робот для настольного хоккея), а именно механическую часть, узнал много интересного для себя, чем и хочу поделиться.

    Механика робота для настольного хоккея

    Примерно половину знаний я «нагуглил» или подсмотрел на Youtube, а вторую половину получил на практике, методом проб и ошибок в многочисленных экспериментах.

    Расскажу про 4 момента, на мой взгляд заслуживающих особого внимания:

    1. Разгон шагового мотора до максимальных оборотов.
    2. Одновременная работа массива из шаговых моторов через один контроллер.
    3. Охлаждение шаговых моторов и драйверов.
    4. Как избавиться от писка шаговых моторов.

    В настольном хоккее Stiga Play-Off с каждой стороны по 6 игроков (вратарь и 5 на поле). У моего робота для настольного хоккея, в соответствии с количеством игроков — 6 роборук, по одной руке для каждого игрока, и каждую руку приводят в движение 2 мотора. Первый мотор перемещает игрока вперёд и назад, а второй мотор вращает клюшку. Итого задействовано 12 шаговых моторов.

    Почему именно шаговые моторы? Мне понадобилась точность и аккуратность, а шаговый мотор как раз и обладает способностью вращать вал строго на заданное количество градусов/шагов. Но, кроме точности, понадобилась скорость, и тут начались проблемы и поиск решения.
    Читать дальше →
  • Thinking with Portals: создаём порталы в Unreal Engine 4

    • Translation
    image

    В этой статье я расскажу, как создавать порталы в Unreal Engine 4. Я не нашёл никаких источников, подробно описывающих такую систему (наблюдение сквозь порталы и проход через них), поэтому решил написать собственную.

    Что такое портал?


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

    Примеры порталов в играх (GIF)


    Antichamber (2013 год) и Portal (2007 год)


    Prey, 2006 год

    Из трёх игр самой известной, вероятно, является Portal, однако лично меня всегда восхищала Prey и именно её я мечтал скопировать. Однажды я попробовал реализовать собственную версию в Unreal Engine 4, но не особо преуспел, потому что в движке не хватало функционала. Тем не менее, мне удалось провести вот такие эксперименты:


    Однако только в новых версиях Unreal Engine мне наконец-то удалось добиться нужного эффекта:

    Читать дальше →
  • Создание собственной цветовой палитры

    • Translation
    • Tutorial
    Адаптировано из нашей будущей книги «Рефакторинг UI»

    Видели эти модные генераторы цветовой палитры? Когда выбираешь цвет, настраиваешь несколько параметров с музыкальными словечками типа «триада» или «четвёртый мажор» — и получаете пять идеальных цветов для своего веб-сайта?



    Такой вычислительный и научный подход к выбору идеальной цветовой гаммы крайне соблазнителен, но не очень полезен.
    Читать дальше →
  • Слабые события в C#

    • Translation

    От переводчика


    Недавно в проекте, где я работаю, мы столкнулись с проблемой утечки памяти. Прочитав множество статей — от рассказов по управлению памятью в .NET до практических рекомендаций по правильному освобождению ресурсов, я в том числе наткнулся на статью, в которой рассказывается, как корректно использовать события. Ее перевод я и хочу вам представить.
    Это топик из песочницы, с которым я попал сюда на Хабр.

    Читать дальше →
  • Создание разрушаемых мешей

    • Translation
    image

    Часть 1. Знакомство с Marching cubes


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

    Вот пример из No Man’s Sky: видео.

    Аналогичная техника применяется для отображения изображений с МРТ, metaball-ов и для вокселизации рельефа.

    В этой части я расскажу о технике создания разрушаемого рельефа Marching Cubes, а в более общем применении — для создания плавного граничного меша твёрдого объекта. В этой статье мы начнём с рассмотрения двухмерной техники, затем трёхмерной, а в третьей части рассмотрим Dual Contouring. Dual Contouring — это более совершенная техника, создающая тот же эффект.
    Читать дальше →
    • +30
    • 18.2k
    • 3
  • N+6 полезных книг



      Привет! Это шестой пост про книги: мы их читаем и запоминаем, которые были полезны для развития компании и вообще. Поскольку это уже не первая подборка, в неё попало достаточно много странных вещей — классика управления проектами и бизнеса не сильно меняется.

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

      Коллаборация — Мортен Хансен
      Это инструкция по совместной работе и взаимодействию между людьми в команде и командами. Она меня здорово успокоила рядом исследований, например, тем, что вообще-то не надо заниматься нетворкингом, если ты занимаешься делом. Не надо знать 200-400 человек, чтобы найти нужного — надо знать 10 человек, каждый из которых знает по 50-100. А это в разы проще и эффективнее. Нетворкинг для интроверта — это прекрасно.
      Читать дальше →
    • Профилирование: оптимизация

      • Translation


      Это вторая статья из серии статей об оптимизации кода. Из первой мы узнали, как находить и анализировать узкие места в коде, снижающие производительность. Мы предположили, что главная проблема в примере — медленное обращение к памяти. В этой статье рассмотрим, как снизить расходы при работе с памятью, а следовательно, и увеличить скорость программы.

      Читать дальше →
      • +32
      • 7.2k
      • 5
    • Профилирование: измерение и анализ

      • Translation


      Привет, я Тони Альбрехт (Tony Albrecht), инженер в Riot. Мне нравится профилировать и оптимизировать. В этой статье я расскажу об основах профилирования, а также проанализирую пример С++-кода в ходе его профилирования на Windows-машине. Мы начнём с самого простого и будем постепенно углубляться в потроха центрального процессора. Когда нам встретятся возможности оптимизировать — мы внедрим изменения, а в следующей статье разберём реальные примеры из кодовой базы игры League of Legends. Поехали!

      Читать дальше →
      • +23
      • 11.2k
      • 6
    • PLF запуск — как запустить продукт, чтобы об этом кто-нибудь узнал



        Собираюсь запускать несколько продуктов и понимаю, что нужно делать правильный запуск. И это не просто реклама в Директе и SEO-оптимизация, но и какие-то предстартовые действия. В одном из тренингов Лайк Центра я наткнулся на книжку «Запуск» (Launch) Джеффа Уокера. Её анонсировали как уникальный инструмент для успешного запуска продуктов, и я решил попробовать этот инструмент на себе. В нескольких статьях я расскажу, как это выглядит на практике. Но в этой статье только теория, т.е. конспект книги.

        Джефф Уокер разработал уникальную методику запуска. Она состоит в том, что для запуска нужно произвести некоторую последовательность действий, которая поможет продать продукт и обеспечит доверие. Он назвал эту методику PLF: Product Launch Formula — формула запуска продукта. Она состоит из последовательностей, историй и триггеров.

        Кто хочет нутром прочувствовать проблематику, — послушайте песню Uma2rmaH «Зависть».
        Читать дальше →
        • +7
        • 16.7k
        • 1
      • Загрузка реальных ландшафтов в Unity 3D

        • Tutorial


        Введение


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

        По этой теме тоже довольно много разного рода публикаций в сети. Однако, многие из них опираются на использование платных приложений или расширений для Unity. Существуют описания и «дешевых» методов, но основная масса их ориентирована на получение так называемых heightmap — черно-белых квадратных изображений местности, где градациями серого определяется относительных уровень высот в данной точке. Существует ряд способов генерации подобных карт высот с использованием например инструментария GDAL. И такой подход не лишен недостатков, связанных с достаточной громоздкостью процедуры создания карты высот и последующей привязкой к полученной местности. Поэтому, в данной статье будет изложен некий альтернативный подход и интересующиеся приглашаются под кат.
        Читать дальше →
      • Blast-off. От идеи до релиза

          Всем привет! Я хочу рассказать историю разработки игры на Delphi от идеи до релиза.
          Статья больше носит характер истории, без вникания в подробности реализации. Честно говоря, очень хочется написать про то, как мы строим картинку в игре, или локализуем её, как мы делали GUI, но это я выделю в отдельную статью, больше техническую, с кодом. Иначе эта окажется слишком большой. Кода тут не будет, но детали под катом. Прошу!



          Application.Initialize;


          Итак. Игра наша придумана была давно для конкурса разработки игр (джема) IGDC №77 — джампер Это было начало 2012 года. Игру мы делали в состоянии перманентного кранча аж две недели. Код вышел ужасным. Расширять было невозможно, порой возникали необъяснимые глюки, но в целом игра работала и некоторые товарищи умудрялись проводить в ней дни, недели. Пара человек залипали в течение месяца. Стало понятно, что реиграбельность у неё хорошая и надо бы её доделывать. Но, как я сказал выше, код был ужасен из-за скомканных сроков, так что доделок было сделано не очень много и всё благополучно забыто.
          Читать дальше →
        • Многозадачность. Как справиться с призраками посторонних дел

            Автор иллюстрации: John Kenn

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

            О многозадачности, а точнее о том как с ней справиться, в статье и пойдет речь.
            Читать дальше →
          • Как флитком управляет людьми в онлайновой игре с зашкаливающим уровнем паранойи



              — Слышал, Слон флотом теперь командует?
              — В смысле?
              — Ну, помнишь, он админил?
              — Да.
              — Так ты сейчас обсмеёшься, его навыки управления оказались идеальными для управления кланом.

              В общем, мне всегда очень хотелось перенять опыт командира флота в Eve Online. Есть такой феномен: люди объединяются в большие корпорации и альянсы, при этом ничего не получают за игру материально, но каким-то чудом все вместе делают общие задачи. Уроки управления местами покруче MBA. И первый — понимание, что Eve — это не космическая игра, а, скорее, соцсеть, к которой прикручена игра про космос. И вести себя надо именно как в соцсети. То есть управление корпорацией — это правильная подача контента.

              Очень, очень многое у флиткома перекликается c тем, что нужно знать руководителю. И мне очень жаль, что этот диалог у нас не состоялся лет пять назад.
              Читать дальше →
            • «Во все тяжкие 2», Dark Forester — игра на дистанции в маленький плюс

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

                Да и кстати, как это фото связано с Темным Лесником?

                image

                Итак, поехали дальше.

                Горе разработчик очутился у родителей с женой и ребенком, в одной комнатушке в тридцать с лишним лет, не живя, с родителями с 18-ти. Основной компьютер сломан, Unity движок просрочен, куча долгов и безработица.
                Читать дальше →
              • Эффективный расчёт области видимости и линии взгляда в играх

                • Translation
                image

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

                image

                Имея параметры видимости наблюдателя (направление взгляда, расстояние видимости и угол поля зрения), нам нужно найти видимую для него область, т.е. определить область видимости (field of view, FoV). Если препятствия отсутствуют, это будет сектор круга, состоящий из двух граней (радиусов) и соединяющей их дуги (см. Рис. 1). Кроме того, имея заданную точку мира, мы должны быстро определить, видима ли она для наблюдателя, т.е. необходимо обрабатывать запросы линии взгляда (line of sight, LOS) для заданной точки. Обе эти операции можно выполнить достаточно эффективно для использования при рендеринге в реальном времени.
                Читать дальше →