• Как научить нейросеть воспроизводить игровую физику

    • Translation
    Практически в любой современной компьютерной игре наличие какого-либо физического движка является обязательным условием. Развевающиеся на ветру флаги и кролики, бомбардируемые шарами, ― всё это требует надлежащего исполнения. И, конечно, пусть не все герои носят плащи… но те, кто носят, действительно нуждаются в наличии адекватной симуляции развевающейся ткани.



    И всё же полное физическое моделирование таких взаимодействий часто становится невозможным, поскольку оно на порядки медленнее необходимого для игр в реальном времени. Данная статья предлагает новый метод моделирования, который может ускорить физические симуляции, сделать их в 300-5000 раз быстрее. Цель его состоит в том, чтобы попытаться научить имитации физических сил нейронную сеть.
    Читать дальше →
    • +43
    • 6.8k
    • 5
  • Функциональное программирование — это не то, что нам рассказывают

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



      Хотя люди обычно признают удобства ФП фич, ведь намного приятнее писать:


      int Factorial(int n)
      {
          Log.Info($"Computing factorial of {n}");
          return Enumerable.Range(1, n).Aggregate((x, y) => x * y);
      }

      чем ужасные императивные программы вроде


      int Factorial(int n)
      {
          int result = 1;
          for (int i = 2; i <= n; i++)
          {
              result *= i;
          }
          return result;
      }

      Так ведь? С одной стороны да. А с другой именно вторая программа в отличие от первой является функциональной.


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

      Читать дальше →
    • Как Надя стала Надеждой Михайловной

        Мы возобновляем цикл очерков из истории нашего университета НИТУ «МИСиС» под названием «Красный Хогвартс». Сегодня — о людях хороших и спорах в Сети.



        Как там было у классика? «Я взглянул окрест меня — душа моя страданиями человечества уязвленна стала».

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

        Хотите расскажу реальную историю жизни одного реального человека? Как у меня часто бывает — неполную, урезанную, но оттого не менее показательную.

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

        image

        Ничего особенного — обычная переписка двух петербургских подруг, одна из которых уехала на лето с папой в тогда еще не курортный Железноводск, а вторая скучает на собственной — что редкость — даче в Келломяки.

        Июнь 1908 года, шесть лет до великой войны, девять лет до великой революции. Надя Стуколкина отправляет открытку с видом Келломяки Наде Сергеевой:
        Читать дальше →
      • Теория программирования: Вариантность

          Здравствуйте, меня зовут Дмитрий Карловский и я… хочу поведать вам о фундаментальной особенности систем типов, которую зачастую или вообще не понимают или понимают не правильно через призму реализации конкретного языка, который ввиду эволюционного развития имеет много атавизмов. Поэтому, даже если вы думаете, что знаете, что такое "вариантность", постарайтесь взглянуть на проблематику свежим взглядом. Начнём мы с самых основ, так что даже новичок всё поймёт. А продолжим без воды, чтобы даже профи было полезно для структурирования своих знаний. Примеры кода будут на псевдоязыке похожем на TypeScript. Потом будут разобраны подходы уже нескольких реальных языков. А если же вы разрабатываете свой язык, то данная статья поможет вам не наступить на чужие грабли.


          а вдруг там лис?

          Читать дальше →
        • Город засыпает, просыпаются хабровчане

            Если количество комментариев под статьёй стремительным домкратом приближается к 1000, будьте уверены — независимо от заявленной автором темы внутри бушует срач: очаги возгорания политоты, окружённые диванными экспертами по всем вопросам, психиатрические диагнозы на расстоянии по аватарке и никнейму, переходы на личности, саркастические выпады, едкость которых превышает таковую у крови ксеноморфов, и, конечно же, обязательное в таких случаях блюдо — взаимные обвинения в том, что ваш визави с вами дискутирует исключительно за вознаграждение и\или по долгу службы. Которая, видимо, и опасна и трудна, и на первый взгляд как будто не видна, а тридцать серебренников на дороге не валяются.

            Самое забавное в такой ситуации это то,
            Читать дальше →
          • Личный ад писателя Фраермана, или Повесть о первой любви

              В детстве я, наверное, был антисемитом. И все из-за него. Вот он.

              image

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

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

              А Паустовский… Паустовский был крутой. Реально крутой писатель, я почему-то это еще ребенком понимал.

              А уж когда вырос и узнал про три номинации на Нобелевскую премию, международную славу и Марлен Дитрих, публично вставшую на колени перед любимым писателем, я зауважал его еще больше.

              image

              А уж как я его зауважал, когда, поумнев, перечитал его книги… Паустовский не только многое видел и многое понял в этом мире — он был мудрым. А это очень редкое качество. Даже среди писателей.

              Особенно среди писателей.

              Примерно тогда же я понял и почему он тусил с Фраерманом.

              А после недавнего рассказа о демонах Гражданской войны, решил рассказать и вам.
              Читать дальше →
            • За что я люблю именно Mithril (он же MithrilJS)

              Здравствуйте, дорогие читатели. Если вы открыли этот пост, значит, паутинная разработка переднего края (то есть, веб фронтэнд девелопмент, я хотел сказать) трогает вас за живое. И прежде, чем вы начнете кидать помидоры благодарить рассказчика, прошу дочитать… хотя бы до середины.


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

              Читать дальше →
            • Только не говорите, что вы таким не были или мой взгляд на обучение

              Всем привет. Я хотел бы рассказать свое мнение по поводу современного обучения программированию. В статье речь пойдет про PHP, немного про фреймворки и немного про велосипеды. Но я думаю, что к любому языку программирования это применимо. Начнем.


              Помните свой первый код на PHP?


              Нет, не этот:


              <?
                  echo "Hello world"; // и в браузере у нас скачивается index.php :)
              ?>

              А вот этот:


              <?
                  include "db.php";
                  if ($_GET['id'] > 0){
                      mysql_query("SELECT * FROM `posts` WHERE id = {$_GET['id']}");
                  }else{
                      mysql_query("SELECT * FROM `posts` ORDER BY `id` DESC");
                  }
              ?>
              Читать дальше →
            • Вычисление целочисленного квадратного корня

                Возникла нужда проверить, является ли целое число квадратом, и если да, то вычислить корень. Причем хочется сделать это в целочисленной арифметике. Понятно, что можно реализовать метод Ньютона в целых числах, но он требует деления на каждом шаге. А нельзя ли по другому? Найти квадратный корень по модулю степени двойки, и проверить, а не будет ли он обычным квадратным корнем.
                Читать дальше →
              • Как работает альфа-композитинг

                • Translation
                image

                Возможно, прозрачность не кажется какой-то интересной темой. Формат GIF, позволявший некоторым пикселям просвечивать сквозь фон, опубликован более 30 лет назад. Почти в каждом приложении для графического дизайна, выпущенном за последние два десятка лет, поддерживается создание полупрозрачного контента. Эти понятия давно перестали быть чем-то новым.

                В своей статье я хочу показать, что на самом деле прозрачность в цифровых изображениях намного интереснее, чем кажется — в том, что мы воспринимаем как нечто само собой разумеющееся, есть невидимая глубина и красота.
                Читать дальше →
              • Android для радиоинженера (и не только)

                  С того самого момента, когда я приобрел свой первый смартфон, работающий под ОС Android, я искал приложения под эту ОС, которые бы помогли мне делать несложные рабочие расчеты «на ладошке». Об одном из таких приложений и пойдет речь.

                  Читать дальше →
                • Как я не стал программистом в 35 лет


                  С самого начала сентября широким потоком хлынули на Хабр публикации об успешном успехе на тему «Детство программиста», «Как стать программистом после N лет», «Как я ушёл в IT из другой профессии», «Путь в программирование» и так далее. Подобные статьи пишут постоянно, но вот сейчас они пошли как-то особенно кучно. Каждый день пишут то психологи, то студенты, то ещё кто-нибудь.

                  И в каждой статье звучит знакомая песня: главное, что советуют авторы — «стараться», «не сдаваться», «не бояться» и «идти к своей мечте»; а в комментариях очень часто можно встретить мнение, что ежели ты с самого детства любил компьютеры, то работа с ними в итоге неудивительна. Я хотел бы на примере своей биографии подвести читателей к мысли о том, что начальные условия могут быть важнее, чем приложенные усилия. Вера в справедливый мир способствует психологическому комфорту, но не очень-то корректно отражает реальность.
                  Читать дальше →
                • Как заглянуть в глаза Кассандре и не потерять при этом данные, стабильность и веру в NoSQL

                  image

                  Говорят, в жизни все стоит попробовать хотя бы раз. И если вы привыкли работать с реляционными СУБД, то познакомиться на практике с NoSQL стоит в первую очередь хотя бы для общего развития. Сейчас в силу бурного развития этой технологии очень много противоречивых мнений и горячих споров на эту тему, что особенно подогревает интерес.
                  Если вникнуть в суть всех этих споров, то можно увидеть, что они возникают из-за неправильного подхода. Те, кто использует NoSQL базы именно там, где они нужны, довольны и получают от данного решения все его плюсы. А экспериментаторы, уповающие на данную технологию как панацею там, где она не применима вовсе, испытывают разочарование, потеряв сильные стороны реляционных баз без приобретения весомых выгод.


                  Я расскажу про наш опыт внедрения решения, основанного на СУБД Cassandra: с чем пришлось столкнуться, как выкручивались из трудных ситуаций, удалось ли нам получить выигрыш от использования NoSQL и где пришлось вложить дополнительные усилия/средства.
                  Исходная задача — это построение системы, записывающей звонки в некое хранилище.


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


                  image

                  Почему выбрали Кассандру вполне понятно — она пишет как пулемет, легко масштабируема, отказоустойчива.


                  Читать дальше →
                  • +19
                  • 5.3k
                  • 8
                • Люди на Луне. Источники



                    50 лет назад впервые человек шагнул в лунный реголит. Это стало результатом фантастического прогресса науки и техники, космической гонки, политического противостояния двух стран: США и СССР. Полет человека на Луну стал настолько невероятным событием, что сегодня немало людей отрицает сам факт такого полета. К счастью, благодаря интернету мы имеем доступ к огромному объему материалов и научных данных, которые открывают возможность самостоятельно выяснить подробности этой сложнейшей программы.
                    Читать дальше →
                  • «Сгоревшие» сотрудники: есть ли выход?

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

                      Но в твоём коллективе есть Грустный Игнат. Игнат всегда мрачный, циничный и уставший. Он отличный специалист, давно работает в компании и знает, как всё устроено. Игнату все хотят помочь. Особенно ты, ведь ты его менеджер. Но, поговорив с Игнатом, ты и сам начинаешь чувствовать, как много вокруг несправедливости. И тоже начинаешь грустить. Но особенно страшно, если грустный Игнат — это ты.

                      Что же делать? Как работать с Игнатом? Добро пожаловать под кат!


                      Читать дальше →
                    • Как id Software создавала Wolfenstein 3D на основе технологий из Commander Keen

                      • Translation
                      image

                      Данная статья является фрагментом книги Game Engine Black Book: Wolfenstein 3D — подробного исследования, посвящённого истории, коду и разработке оказавшего огромное влияние на игровую отрасль шутера от первого лица про уничтожение нацистов.

                      В этой главе раскрываются истоки игры и рассказывается о том, как она была построена на фундаменте успеха и технологий игры Commander Keen, которая сама была построена из останков неудачной попытки продать Nintendo порт Mario 3 для PC.

                      Полную книгу, написанную автором и программистом Фабьеном Сангларом, можно приобрести в бумажном или цифровом виде.

                      В 1990 году небольшая компания Softdisk из Шривпорта (штат Луизиана) успешно вела дела на рынке shareware.

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

                      Они думали, что им хватает умений увеличить масштаб и они хотели это доказать. Они создали новый способ программирования сайд-скроллинга и назвали эту технологию адаптивным обновлением тайлов (adaptive tile refresh). Она позволяла выполнять аппаратный скроллинг (прокрутку экрана) на PC, благодаря чему компьютер мог соперничать с NES. В начале 1990 годов они безостановочно работали по выходным над воссозданием Super Mario 3 на PC, чтобы продемонстрировать свои навыки Nintendo.
                      Читать дальше →
                    • Workflow 3D-художника. Как не утонуть в тонне информации. Часть 1

                      Всем привет, Хабр сообщество! Хочу сегодня рассказать Вам о workflow 3D-художников, как в это вникнуть и остаться со стабильной нервной системой. Статья нацелена на новичков в данной области, опытные акулы могут предаться ностальгии, вспомнить, как все начиналось.
                      Читать дальше →
                    • Сериал «Чернобыль»: смотреть и думать

                        Горький опыт сериалов, которые хорошо начинаются и разочаровывающе заканчиваются, удерживал меня от написания восторженного обзора на сериал «Чернобыль» до этой недели. И сейчас, когда вышла последняя, пятая серия, к сожалению, я вынужден сказать, что это отличный сериал, это прекрасный повод узнать больше о чернобыльской катастрофе, его обязательно стоит посмотреть, если вы еще не, но, если первые три серии, на мой взгляд, поднимаются до уровня моего самого любимого фильма «Аполлон-13», то две последние, опять же, по моему мнению, оказываются заметно похуже.


                        Кадр из сериала

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



                          Привет! Мы тут сейчас делаем игру про викингов, и пока я узнавал про них, вскрылась пара неочевидных деталей. Но пока важное:

                          • Они дошли до Африки с набегами и поздними поселениями.
                          • Есть норманская теория основания Руси — мол, это наши предки. Она спорная, куда больше свидетельств о постоянном сотрудничестве народов (читай: почти все варяги = викинги, а Тор и Перун на самом деле почти тот же мужик).
                          • Эти парни делали самые крутые корабли и самую крутую навигацию седьмого-десятого веков, и уже знали явление поляризации света (вернее, не знали, но использовали).
                          • Они же ввели прямую демократию, которая потом стала альтингом (и до сих пор работает в Исландии).
                          • Очень много вещей в быту совпадает или похоже на то, что делали наши славянские предки.

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

                          Отправной точкой поисков было другое: парень из Новой Зеландии, упоровшийся по викингам, сделал крутую игру. Так вот, правильно ли он смог передать сеттинг?
                          Читать дальше →
                        • Советские мечты о будущем



                            Помните очаровательного котика, которые чихал в заставке советского мультфильма? Мы помним, и нашли его — вместе с ворохом другой рисованной фантастики. В детстве она пугала и обескураживала, поскольку поднимала серьезные, взрослые темы. Настала пора пересмотреть старые мультфильмы, чтобы узнать, о каком будущем мечтали в той стране.
                            Читать дальше →