• Кросскомпиляция выполняемых файлов Rust для Windows из Linux

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


    Основная OS у меня Linux, но иногда приходится собирать исполняемые файлы и для Windows. И естественно что перегружаться в Windows только для сборки exe не особо хочется. С языками C и C++ проблем нет, давно существует кросскомпилятор MinGW, который прекрасно с этим справляется. Про Python и Java даже упоминать не стоит, кроссплатформенность в них изначально. Но в прошлом году я решил попробовать такой пока что новомодный язык, как Rust. При сборке исполняемого файла при помощи включённого в дистрибутив Rust пакетного менеджера cargo вроде как достаточно задать ключ --target, при помощи которого указать результирующий процессор, архитектуру и ABI и при сборке из Linux в результате получить exe, который будет являться стандартным исполняемым файлом для Windows. Но пытаясь так сделать:


    cargo build --target x86_64-pc-windows-gnu

    я получил только сообщения об ошибках линкера:


    error: linking with `gcc` failed: exit code: 1
    
    [...]
    
      = note: /usr/bin/ld: unrecognized option '--nxcompat'
              /usr/bin/ld: use the --help option for usage information
              collect2: error: ld returned 1 exit status
    
    error: aborting due to previous error
    
    error: could not compile `foobar`.

    Если кому интересно как я это поборол и теперь спокойно могу кросскомпилировать программы на Rust для Windows, не покидая Linux, добро пожаловать под кат.

    Читать дальше →
  • Разработка хитрого ИИ в тактической игре на основе эвристик и мутаций

      В тактических играх ИИ очень важен. Если ИИ видится как «искусственный идиот», то игру может спасти потрясающий мультиплеер, сюжет, атмосфера и графика (это неточно). Решение очевидное: делай хороший ИИ, в чём тут могут быть проблемы?

      Cat terminator by CoolAI

      В деталях. Ниже описаны мои шаги по конструированию сильного ИИ с характером. Не супер сильного [1], но способного быстро отработать локально в прожорливом браузере любого средне-слабого ПК. Мною применён подход экспертных систем с использованием набора эвристик и мутаций. Описаны 15 шагов постепенного преображения ИИ, каждый из шагов можно пощупать.
      Читать дальше →
    • Введение в архитектуру безопасности 5G: NFV, ключи и 2 аутентификации

      image

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

      Архитектура безопасности 5G — совокупность механизмов и процедур безопасности, реализованных в сетях 5-го поколения и охватывающих все компоненты сети, начиная от ядра и заканчивая радиоинтерфейсами.

      Сети 5-ого поколения являются, по сути своей, эволюцией сетей 4-ого поколения LTE. Самым значительным изменениям подверглись технологии радиодоступа. Для сетей 5-ого поколения была разработана новая RAT (Radio Access Technology) — 5G New Radio. Что касается ядра сети, оно претерпело не такие значительные изменения. В связи с этим, архитектура безопасности 5G-сетей была разработана с упором на переиспользование соответствующих технологий, принятых в стандарте 4G LTE.

      Однако, стоит отметить, что переосмысление таких известных угроз, как атаки на радиоинтерфейсы и уровень сигнализации (signalling plane), DDOS-атаки, Man-In-The-Middle атаки и др., побудило операторов связи разработать новые стандарты и интегрировать совершенно новые механизмы безопасности в сети 5-ого поколения.
      Читать дальше →
    • Создаём процедурные глобусы планет

      • Translation
      Искажения, бесшовный шум и как с ними работать.

      image

      Генерируем планету


      Один из простейших способов генерации планеты — использование шума. Если мы решим выбрать его, то у нас есть пара возможных вариантов. Давайте рассмотрим каждый и определим лучший:

      • Шум Перлина (Perlin Noise) — самый простой вариант. Шум Перлина был разработан Кеном Перлином в 1983 году, он имеет пару недостатков — визуальные артефакты и довольно низкая по сравнению с другими вариантами скорость при генерации больших изображений.
      • Симплекс-шум (Simplex Noise) — разработан Кеном Перлином в 2001 году как попытка устранения недостатков шума Перлина; это вполне достойное и быстрое решение, однако обладающее серьёзным недостатком: использование трёхмерного симплекс-шума защищено патентом, что делает его довольно дорогостоящим.
      • Открытый симплекс-шум (Open Simplex Noise) — был разработан KDotJPG с одной простой целью: создать современную и бесплатную версию симплекс-шума, относительно быструю и без искажений.

      Из этих трёх лично я предпочитаю Open Simplex Noise, который использую в своих личных проектах. Стоит заметить, что в текущей реализации OpenSimplexNoise для получения простого доступа к масштабу, октавам и порождающим значениям потребуется дополнительная работа. В Интернете есть множество информации о том, что делает каждый из этих элементов, и я крайне рекомендую вам её изучить. Однако в своей статье я буду говорить не об этом.
      Читать дальше →
      • +38
      • 6.9k
      • 7
    • Настоящие космические сражения в Children of a Dead Earth, часть 1

        Мейнстрим игр о войне в космосе — это разноцветные “пиу-пиу” лазеры, стрельба в упор, нулевая скорость относительно абсолютного пространства и прочие совершенно нереалистичные вещи. Поэтому симулятор Children of a Dead Earth, моделирующий сражения на доступных сейчас технологиях, дарит совершенно уникальный опыт. А кроме того, что играть просто интересно, он ставит серьезные вопросы о том, как могут проходить настоящие войны в Солнечной системе, и имеет огромное образовательное значение.


        Бой на орбите Марса. Цветные линии — не лазеры, а трассеры снарядов рейлганов
        Читать дальше →
      • Трагикомедия в NaN актах: как мы cделали игру на JS и выпустили ее в Steam

          “Эка невидаль”, — скажете вы, — “В топ-100 вашей игры нет, так что нещитово”. Тоже правда. Зато за год разработки Protolife мы поднакопили какой-никакой опыт, которым можем поделиться с потенциальными будущими игроделами. Ветераны индустрии, боюсь, ничего интересного для себя не найдут. Но, может быть, хоть повеселитесь от души.


          Что за игра-то? И кто “мы”?


          Мы — это команда из трех человек (GRaAL, A333, icxon), волею судеб названная Volcanic Giraffe без какого либо умысла. Работали долгое время вместе, несколько раз втроем участвовали в Ludum Dare (соревнования по написанию игр за выходные), и однажды решившие довести до релиза одну из наших поделок под названием Protolife.

          Если коротко: это необычная tower defense, где надо бегать героем-курсором и выстраивать оборону из блоков против постоянно растущей красной биомассы.
          Остальное под катом - осторожно, тяжелые пиксельартные картинки
        • Как создаются изометрические миры

          • Translation
          • Tutorial
          image

          Все мы играли в потрясающие изометрические игры, будь то первые Diablo, Age of Empires или Commandos. При первой встрече с изометрической игрой можно задаться вопросом: двухмерная она, трёхмерная или нечто совершенно другое. Сам мир изометрических игр обладает волшебной притягательностью для разработчиков. Давайте попробуем раскрыть тайну изометрической проекции и создадим простой изометрический уровень.

          Для этого я решил использовать Phaser с кодом на JS. В результате у нас получится интерактивное приложение HTML5.

          Учтите, что это не туториал по разработке на Phaser, мы просто используем его для удобного ознакомления с базовыми концепциями создания изометрической сцены. Кроме того, в Phaser есть простые способы создания изометрического контента, например, Phaser Isometric Plugin.

          Для упрощения при создании сцены мы будем использовать тайлы.
          Читать дальше →
          • +49
          • 39.9k
          • 7
        • Создание изометрических объектов для игр в Blender



          Статья будет полезна начинающим разработчикам игр. В ней мы рассмотрим преимущества и способы создания и рендеринга трёхмерных объектов для изометрических 2D-игр на примере Blender. В статье не будет каких-то сложных операций, достаточно начальных знаний 3D-редактора. Для примера рендеринга и анимации я взял башню из Dune2, и, чтобы ей было не так скучно одной, дополнил двумя постройками из Desert Strike.
          Читать дальше →
        • Карты из шестиугольников в Unity: вода, объекты рельефа и крепостные стены

          • Translation
          Части 1-3: сетка, цвета и высоты ячеек

          Части 4-7: неровности, реки и дороги

          Части 8-11: вода, объекты рельефа и крепостные стены

          Части 12-15: сохранение и загрузка, текстуры, расстояния

          Части 16-19: поиск пути, отряды игрока, анимации

          Части 20-23: туман войны, исследование карты, процедурная генерация

          Части 24-27: круговорот воды, эрозия, биомы, цилиндрическая карта

          Часть 8: вода


          • Добавляем в ячейки воду.
          • Триангулируем поверхность воды.
          • Создаём прибой с пеной.
          • Объединяем воду и реки.

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


          Вода прибывает.
          Читать дальше →
          • +30
          • 8.4k
          • 2
        • Как я 13 лет делал футбольный симулятор

            2_fview_gameplay


            История, которую я расскажу, началась 13 лет назад на уроке информатики. Мы с друзьями-семиклассниками решили все задачи на Паскале и весело играли в первый Quake. Наша учительница увидела это, подошла ко мне и сказала всего одну фразу, которая перекосила мою картину мира: «Если ты хочешь играть в игры на уроке, пиши их сам». С тех пор я эпизодически делаю игры. Одна из них — футбольный симулятор, о котором и пойдёт речь.


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

            Читать дальше →
          • Пишем платформер на Python, используя pygame

            image
            Сразу оговорюсь, что здесь написано для самых маленькихначинающих.

            Давно хотел попробовать себя в качестве игродела, и недавно выпал случай изучить Python и исполнить давнюю мечту.

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


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

            Одними из моих любимых игр данного жанра являются «Super Mario Brothers» и «Super Meat Boy». Давайте попробуем создать нечто среднее между ними.
            Читать дальше →
          • Как создать Roguelike

            • Translation
            image

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

            У меня есть довольно большой опыт — в течение последних семи лет я работал только в этом жанре (Cogmind, Cogmind 7DRL, POLYBOT-7, REXPaint, X@COM), и в течение последних пяти эта работа была моей основной. К тому же, все эти годы я помогал превращению r/RoguelikeDev в крупнейшее сетевое сообщество разработчиков roguelike.
            Читать дальше →
          • Парсинг telegram каналов для агрегатора контента на PHP

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

            Несколько лет назад я начал разрабатывать свой агрегатор контента, что бы упростить свой серфинг в сети. Изначально я парсил только rss, vk и facebook, но в прошлом году решил сделать полный рефакторинг проекта: отказаться от парсинга на клиенте, сделать нормальный back-end, использовать базу данных для хранения данных и расширить список поддерживаемых ресурсов.

            Помимо стандартного набора из rss, fb, vk, twitter, instagram, youtube я добавил поддержку произвольных открытых каналов из telegram.

            image

            Под катом пошаговая инструкция, как парсить любые каналы в telegram без регистрации и смс.
            Читать дальше →
          • Сохранение «многие ко многим» в Yii2 через поведение

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

            Когда становилось ясно, что в сети еще нет поведений для работы с этим типом связи, тогда нужный код писался на событии «after save» и с напутствием «ну работает же» отправлялся в репозиторий.

            Лично меня не устраивал такой расклад событий. Я решил написать то самое волшебное поведение, которого так не хватает в официальной сборке Yii2.
            Читать дальше →
          • Heatmap Painter

              Heatmap Habr Moscow


              Тепловая карта — картограмма, визуально показывающая интенсивность какого-либо точечного показателя в пределах территории на карте. Интенсивность кодируется цветом и прозрачностью. Наверняка вы не раз видели такие картинки. Так вот, что если вам нужно сделать такую картограмму, а данных на руках у вас нет. Heatmap Painter позволит вам в интерактивном режиме накидать данные на карту и сохранить результат для дальнейшего использования. Штука весьма интересная и может пригодится много кому: разработчикам, аналитикам, дизайнерам. О том как это работает и как использовать читайте далее.

              Читать дальше →
            • Как рекламировать онлайн-игру

              В позапрошлом году я рассказал о том, сколько стоит сделать браузерную игру. И вот запущена одна из игр, о которых я упоминал в той статье. Это бюджетный инди-проект Звездный Воитель. На его разработку от зарождения идеи до релиза ушло чуть более миллиона рублей. Из них на рекламу потрачено ~170К.

              В малых объемах были опробованы известные и доселе неизвестные способы рекламы, доступные игровому онлайн-проекту. Повысив бюджеты, этот опыт можно перенести на крупный проект и влить те самые 9-12 миллионов, которые необходимы для успешного вывода на рынок крупной игры.

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



              Читать дальше →
              • –6
              • 18.2k
              • 4
            • Как написать диздок



                Запрос «как написать диздок», заданный в любой поисковик, даёт немало ответов, представляющих собой как перевод западных статей, так и авторские размышления на эту тему из России, или даже дизайн проекта «Курочка Ряба». В воображении читателя предстает большой единый документ, описывающий идею и геймплей игры с перечислением всех ее фич. Возможно, читатель однажды приходит с такими идеями работать геймдизайнером в крупную российскую или западную компанию, на крупный проект… И обнаруживает, что таких документов больше не существует.
                Читать дальше →
              • Как я изобретал гингву



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

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

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

                  История о том, какие проблемы я решал в попытке изобрести гингву (галактический лингво), находится под катом.
                  Читать дальше →
                • Бесплатная книга «Game Programming Patterns» от программиста Electronic Arts Боба Найстрома

                    Боб Найстром, программист, проработавший восемь лет в компании Electronic Arts, закончил работу над книгой «Game Programming Patterns». Она доступна бесплатно на сайте gameprogrammingpatterns.com. Писать книгу Боб Найстром начал четыре года назад. Большинство книг, посвящённых программированию игр, говорит он во введении, либо подробно раскрывают какой-то из аспектов создания игры — физический движок, графику, искусственный интеллект, либо описывают процесс создания игры в определённом жанре от начала до конца. Ему очень не хватало книги, рассказывающей о решении типовых задач, возникающих перед программистом, книги достаточно универсальной, не привязанной к жанрам или конкретным подсистемам игр. И поэтому он решил написать такую книгу сам.
                    Читать дальше →
                  • Перевод отрывков из книги Роберта Хайнлайна «Заберите себе правительство»

                    Предисловие переводчика


                    С сегодняшнего дня начинаю публикацию переведенных мною с английского языка отрывков из произведения Роберта Хайнлайна «Заберите себе правительство» («Take Back Your Government») – руководства для начинающих политиков, написанного Хайнлайном в конце 40-х годов. Часть этого материала уже опубликована мною в ЖЖ, но, думаю, начинать читать хорошую книгу сразу с середины — неправильно, поэтому начинаю публиковать с начала.

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

                    И, надеюсь, ее прочитают люди, подобные комментаторам статье Про открытую бухгалтерию в украинском Минобрнауки, считающие, что обычных людей нельзя подпускать к процессу принятия важных решений, ибо, как сказал Уинстон Черчилль,— «Демократия несовершенна, но ничего лучше человечество пока не придумало».
                    Читать дальше →