Как стать автором
Обновить
@BX442 read-only

Пользователь

  • Публикации
  • Комментарии

Быстрый поиск касательных и пересечений у выпуклых многоугольников

Алгоритмы *Математика *

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


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

Читать дальше →
Всего голосов 25: ↑25 и ↓0 +25
Просмотры 5.5K
Комментарии 21

Пишем бот для пазл игры на Python

Python *Искусственный интеллект
Из песочницы
Давно хотел попробовать свои силы в компьютерном зрении и вот этот момент настал. Интереснее обучаться на играх, поэтому тренироваться будем на боте. В статье я попытаюсь подробно расписать процесс автоматизации игры при помощи связки Python + OpenCV.

image

Всего голосов 9: ↑9 и ↓0 +9
Просмотры 4.9K
Комментарии 0

DevOps’ный C++ и «кухонные войны», или Как я начал писать игры во время еды

Блог компании Luxoft C++ *C# *Unity *DevOps *
«Я знаю, что ничего не знаю» Сократ

Для кого: для IT-шников, которые плевали на всех разработчиков и хотят поиграть в свои игры!

О чем: о том, как начать писать игры на C/C++, если вдруг вам это надо!

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

Привет, меня зовут Андрей Гранкин, я DevOps в компании Luxoft. Разработка приложений — это не моя рабочая специализация, но я стараюсь каждую неделю программировать. Потому что люблю игры!

Индустрия компьютерных игр огромна, по слухам, сегодня даже больше, чем индустрия кино. Игры писали с начала развития компьютеров, используя, по современным меркам, сложные и базовые методы разработки. Со временем стали появляться игровые движки с уже запрограммированной графикой, физикой, звуком. Они позволяют сосредоточиться на разработке самой игры и не заморачиваться по поводу ее основания. Но вместе с ними, с движками, разработчики «слепнут» и деградируют. Само производство игр ставится на конвейер. А количество продукции начинает преобладать над ее качеством.
Читать дальше →
Всего голосов 18: ↑18 и ↓0 +18
Просмотры 7.2K
Комментарии 9

Elite: Dangerous и CosmosDB

.NET *C# *Microsoft Azure Игры и игровые приставки
Из песочницы

image


o7 cmdr!


Теплым карантинным вечером, в одном из телеграмных чатиков по Elite: Dangerous разгорелась дискуссия на тему: а у какого типа звезд чаще всего встречаются землеподобные планеты?


Дело в том, что исследование планет является одной из основных механик игры. А в иерархии полезности планет, землеподобные стоят на самом верху. Но и редкость их довольно высока. Так что командеры захотели узнать: на какие звезды прежде всего обращать внимание, при перемещении по млечному пути?


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

Читать дальше →
Всего голосов 53: ↑53 и ↓0 +53
Просмотры 12K
Комментарии 23

Сбер выложил русскоязычную модель GPT-3 Large с 760 миллионами параметров в открытый доступ

Блог компании Сбер Блог компании SberDevices Машинное обучение *Искусственный интеллект Natural Language Processing *
Последнее десятилетие в области компьютерных технологий ознаменовалось началом новой «весны искусственного интеллекта». Впрочем, ситуацию в индустрии в наши дни можно, наверное, охарактеризовать уже не как весну, а полноценное «лето ИИ». Судите сами, за последние неполные 10 лет только в области обработки естественного языка (Natural language processing, NLP) произошли уже две настоящие технологические революции. Появившаяся в результате второй из них модель GPT-3 произвела настоящий фурор не только в технологических медиа, но стала знаменитой далеко за пределами научного сообщества. Например, GPT-3 написала для издания «The Guardian» эссе о том, почему ИИ не угрожает людям. GPT-3 сочиняет стихи и прозу, выполняет переводы, ведёт диалоги, даёт ответы на вопросы, хотя никогда специально не училась выполнять эти задачи. До недавних пор все возможности GPT-3 могли по достоинству оценить лишь англоязычные пользователи. Мы в Сбере решили исправить эту досадную оплошность. И сейчас расскажем вам, что из этого получилось.


Источник изображения
Читать дальше →
Всего голосов 165: ↑160 и ↓5 +155
Просмотры 125K
Комментарии 237

Как ухаживать за мозгом

Блог компании Dodo Engineering Научно-популярное Лайфхаки для гиков Мозг Здоровье
🔥 Технотекст 2020
Эх, люблю свои мозги! Каждый день забочусь о них, как о самом важном. В этой статье мой опыт поддержания здоровья мозга переплетён с последними результатами научных исследований. Под катом рассказ, как сделать так, чтобы мозг работал эффективно и сохранял ясный ум (завтра и через 30 лет), был готов принимать решения, концентрироваться на задачах и при этом не старел.


Читать дальше →
Всего голосов 78: ↑66 и ↓12 +54
Просмотры 77K
Комментарии 116

Генератор псевдослучайных чисел большой разрядности

Высокая производительность *Информационная безопасность *Криптография *Программирование *Патентование *
Recovery mode
Недавно появилась статья с описанием скоростного генератора случайных чисел (утверждается, что самого быстрого в мире).

Понятно, её автор не читает русскоязычных статей по теме, но если бы читал, то не стал бы утверждать о мировом первенстве своего генератора в скорости работы. Скорость генерации псевдослучайных чисел в 12 ГигаБайт/сек. была достигнута достаточно давно.Этот генератор применяется для выработки ключей шифрования.
Читать дальше →
Всего голосов 16: ↑14 и ↓2 +12
Просмотры 4.4K
Комментарии 3

Домашний интернет-шлюз. Начальная настройка 6-портового мини-компьютера на Ubuntu Server 20.04 LTS

Настройка Linux *Системное администрирование *Серверное администрирование *
Из песочницы

На просторах интернета присутствует бесчисленное количество информации касательно настройки сервера на Ubuntu, но на каждом шагу можно встретить неочевидные для новичка моменты. Я хочу поделиться своим опытом и, возможно, решить чью-то проблему. В статье будет рассказано, как настроить многопортовый сервер (6 портов): Netplan, DHCP-сервер, UFW(Uncomplicated Firewall). А теперь обо всем по порядку.
Читать дальше →
Всего голосов 25: ↑20 и ↓5 +15
Просмотры 24K
Комментарии 48

Как перенести шейдер из игрового движка в Substance Painter

Блог компании Plarium Работа с 3D-графикой *Разработка игр *API *Unity *
Tutorial
Меня зовут Тарас Улейский, я Technical Artist в Plarium Kharkiv. Для оптимизации графики нашей Survival RPG на мобильных устройствах мы использовали свои кастомные шейдеры. Они предполагают использование уникальных текстур и карт, которые не похожи на текстуры и карты в других популярных способах шейдинга. В результате 3D-художникам не совсем понятно, как создавать эти текстуры для ассетов в игре. Чтобы сразу можно было увидеть, как 3D-модель будет выглядеть в движке игры на этапе текстурирования, я перенес шейдер в Substance Painter. Материалов по API в Substance Painter на данный момент практически нет, я изучил эту тему самостоятельно, поэтому решил поделиться своими наработками.

Читать дальше →
Всего голосов 14: ↑13 и ↓1 +12
Просмотры 5.7K
Комментарии 6

Реализация скелетной анимации для трёхмерных моделей

C++ *Работа с 3D-графикой *Разработка игр *
Из песочницы

Здравствуйте! В данный момент на Хабре существует большое количество статей, посвящённых компьютерной графике и реализации различных эффектов, однако текстов на тему реализации скелетной анимации (особенно "с нуля") достаточно немного. Постараюсь восполнить этот пробел с помощью данного текста с описанием технологии и примером несложной реализации на C++ и OpenGL 4.5 (SDL2).


Всего голосов 9: ↑8 и ↓1 +7
Просмотры 9.1K
Комментарии 4

Легкий способ защитить свой Mikrotik от атак

Системное администрирование *Сетевое оборудование
Из песочницы
🔥 Технотекст 2020
Хочу поделиться с сообществом простым и рабочим способом, как при помощи Mikrotik защитить свою сеть и «выглядывающие» из-за него сервисы от внешних атак. А именно всего тремя правилами организовать на Микротике honeypot.

Итак, представим, что у нас небольшой офис, внешний IP за которым стоит RDP сервер, для работы сотрудников по удаленке. Первое правило это конечно сменить порт 3389 на внешнем интерфейсе на другой. Но это ненадолго, спустя пару дней журнал аудита терминального сервера начнет показывать по несколько неудачных авторизаций в секунду от неизвестных клиентов.

Другая ситуация, у Вас за Mikrotik спрятан asterisk, естественно не на 5060 udp порту, и через пару дней также начинается перебор паролей… да да, знаю, fail2ban наше вcё, но над ним еще попыхтеть придется… вот я например недавно поднял его на ubuntu 18.04 и с удивлением обнаружил, что из коробки fail2ban не содержит актуальных настроек для asterisk из той же коробки того же ubuntu дистрибутива… а гуглить быстрые настройки готовых «рецептов» уже не получается, цифры у релизов с годами растут, а статьи с «рецептами» для старых версий уже не работают, а новых почти не появляется… Но что-то я отвлекся…
Читать дальше →
Всего голосов 30: ↑28 и ↓2 +26
Просмотры 82K
Комментарии 81

Алгоритм сжатия Хаффмана

Блог компании OTUS Алгоритмы *Сжатие данных *
Перевод
В преддверии старта курса «Алгоритмы для разработчиков» подготовили для вас перевод еще одного полезного материала.




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

Мы знаем, что каждый символ хранится в виде последовательности из 0 и 1 и занимает 8 бит. Это называется кодированием фиксированной длины, поскольку каждый символ использует одинаковое фиксированное количество битов для хранения.
Читать дальше →
Всего голосов 12: ↑10 и ↓2 +8
Просмотры 7.4K
Комментарии 6

Игры за деньги: опыт работы в распределенной игровой сети владельца нескольких серверов

Облачные вычисления *Финансы в IT Игры и игровые приставки
image

Недавно увидел на Хабре статью «Распределенная игровая сеть как альтернатива GFN» и решил написать о своем опыте участия в такой сети. Так получилось, что я один из первых участников программы, описанной в статье. И я не геймер, а как раз владелец нескольких производительных ПК, мощности которых используются сетью.

Чтобы сразу понятно было о чем речь — мои сервера используются подключающимися к сети геймерами сервиса облачного гейминга. В статье, о которой говорилось выше, упоминаются SONM, Playkey и Drova. Я опробовал в работе сервис от Playkey и теперь постараюсь рассказать о нюансах распределенной сети и работы в ней.
Читать дальше →
Всего голосов 13: ↑13 и ↓0 +13
Просмотры 8.2K
Комментарии 35

Симуляция эрозии рельефа на основе частиц

Работа с 3D-графикой *Разработка игр *
Перевод

Примечание: полный исходный код проекта, а также пояснения о его использовании и чтении можно найти на Github [здесь].

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

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

В этой статье я расскажу о моей простой реализации на C++ системы гидравлической эрозии в квадратной сетке на основе частиц. Я объясню все физические обоснования, заложенные в основу реализации, и расскажу о математике. Код чрезвычайно прост (всего примерно 20 строк на математику эрозии) и быстр в реализации, поэтому я рекомендую его всем, кто стремится повысить реализм своего рельефа.

Результаты рендерятся при помощи урезанной версии моего движка Homebrew OpenGl Engine, который я модифицировал для рендеринга 2D-массива точек в качестве карты высот. Урезанную версию движка намного проще понять, если вас интересует изучение OpenGL на C++.
Читать дальше →
Всего голосов 24: ↑24 и ↓0 +24
Просмотры 4.7K
Комментарии 2

Реалистичный боевой ИИ для 2D-игры

Разработка игр *Искусственный интеллект
Перевод
image

Хотя Close Quarters преимущественно является многопользовательской игрой, в ней всё равно должны присутствовать сложные ИИ-боты, чтобы игроки продолжали играть при плохом Интернет-соединении или отсутствии других онлайн-игроков. Кроме того, боты играют важную вспомогательную роль в некоторых режимах игры. Поэтому они должны вести себя правдоподобно и демонстрировать набор сложных поведений, в том числе использование укрытий, применение предметов в подходящее время, обход с флангов, бросание гранат и убегание от них.

Окружение и ограничения


Игровое окружение состоит из полигонов. Большинство полигонов блокирует движение, область видимости и стрельбу, однако есть и «низкие» полигоны, только блокирующие движение. Окружение плотно заставлено препятствиями и укрытиями.

ИИ тоже ограничен несколькими техническими факторами. Самый важный из них: сервер, на котором выполняются боты, когда онлайн находится мало игроков, должен быстро работать на недорогом VPS как минимум при десяти ботах. Кроме того, нагрузка на ЦП должна оставаться достаточно низкой, чтобы можно было выполнять несколько инстансов сервера на одном VPS без превышения лимита ЦП, и не при этом вызвать санкций со стороны поставщика услуг VPS.
Всего голосов 40: ↑40 и ↓0 +40
Просмотры 11K
Комментарии 2

Поднимаем свой полноценный игровой Minecraft сервер с мини-играми. Часть 1. Выбираем и устанавливаем сервер

Разработка игр *Тестирование игр *Монетизация игр *Продвижение игр *Игры и игровые приставки


Часть 2. Устанавливаем карту для лобби сервера

Часть 3. Устанавливаем мини-игры

tl;dr;
И так, что будет сделано в конце всего туториала?

  • создадим основной сервер, так называемое лобби — место, куда попадают все игроки, только что подключившиеся к серверу
  • запустим второй сервер, на котором установим популярную мини-игру Murder Mystery
  • установим и настроим прокси сервер, который соединит игровой клиент и запущеные серверы таким образом, что игроки не заметят, что они переходят с одного сервера на другой
  • создадим игрового персонажа, который будет перенаправлять нас на сервер с мини-игрой
  • Установим еще одну популярную мини-игру SkyBlock
  • Добавим внутриигровое меню на основе предметов инвентаря игрока
  • Добавим внутриигровые деньги
  • Создадим магазин
  • … и многое другое

Посмотреть, что в итоге получилось у меня: mc.piratebayserver.net
По любым вопросам пишите в Discord.

Поехали!
Читать дальше →
Всего голосов 18: ↑17 и ↓1 +16
Просмотры 53K
Комментарии 39

Создание простых взаимодействий ИИ с объектами окружения

Разработка игр *Искусственный интеллект
Перевод

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

Эта статья взята из книги Practical Game AI Programming, написанной Микаэлем Даграка и опубликованной Packt Publishing. Эта книга позволяет узнать, как создать игровой ИИ и с нуля реализовать самые современные алгоритмы ИИ.

Визуальные взаимодействия являются базовыми, они не влияют на игровой процесс напрямую, но позволяют усовершенствовать видеоигру и её персонажей, сделав их часть создаваемого нами окружения, что сильно влияет на погружение игрока в игру. Это доказывает нам важность того, чтобы окружение было частью игры, а не просто помогало в заполнении пространства на экране. Подобные взаимодействия всё чаще встречаются в играх, и игроки ожидают их увидеть. Если в игре есть объект, то он должен выполнять какую-то функцию, пусть и не самую важную.
Читать дальше →
Всего голосов 5: ↑5 и ↓0 +5
Просмотры 2.3K
Комментарии 0

Ускорение поиска в Have I Been Pwned до 49 микросекунд (С++)

Поисковые технологии *Open source *C++ *Алгоритмы *
Перевод


Я давно знал о сайте Have I Been Pwned (HIBP). Правда, до недавнего времени никогда там не был. Мне всегда хватало двух паролей. Один из них неоднократно использовался для мусорной почты и пары аккаунтов на странных сайтах. Но пришлось от него отказаться, потому что почту взломали. И, честно говоря, я благодарен хакеру, потому что это событие заставило меня пересмотреть свои пароли — то, как я их использую и храню.

Конечно, я поменял пароли на всех аккаунтах, где стоял скомпрометированный пароль. Затем мне стало интересно, попал ли утёкший пароль в базу HIBP. Я не хотел вводить пароль на сайте, поэтому скачал базу данных (pwned-passwords-sha1-ordered-by-count-v5). База весьма впечатляет. Это текстовый файл на 22,8 ГБ с набором хэшей SHA-1, по одному в каждой строке со счётчиком, сколько раз пароль с данным хэшем встречался в утечках. Я вычислил SHA-1 своего взломанного пароля и попытался найти его.
Читать дальше →
Всего голосов 25: ↑25 и ↓0 +25
Просмотры 12K
Комментарии 20

Zip-файлы: история, объяснение и реализация

Блог компании VK Ненормальное программирование *Совершенный код *Алгоритмы *История IT
Перевод


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

В статье очень подробно объясняется, как работают Zip-файлы и схема сжатия: LZ77-сжатие, алгоритм Хаффмана, алгоритм Deflate и прочее. Вы узнаете историю развития технологии и посмотрите довольно эффективные примеры реализации, написанные с нуля на С. Исходный код лежит тут: hwzip-1.0.zip.
Читать дальше →
Всего голосов 176: ↑175 и ↓1 +174
Просмотры 63K
Комментарии 44

Как получать 100 тысяч за код. Полное руководство для начинающих

Разработка веб-сайтов *Учебный процесс в IT Карьера в IT-индустрии
Tutorial

Сохраните в закладки сейчас, скажите спасибо через год. В конце каждого этапа — ссылки для внеклассного чтения.


Что нужно знать, чтобы получать зарплату 100 тысяч

1. Познакомьтесь с веб-разработкой


Ситуация на 1 этапе

Продолжительность этапа: 1 месяц.


Что изучить на этом этапе.


  1. Структуру HTML.
  2. Отличия фронтенда и бэкенда.
  3. Разметку и оформление текста.
  4. Как размечать страницу по макету.
  5. Как ставить ссылки и вставлять изображения.
  6. Основы CSS — правила, селекторы, свойства и каскадирование.
  7. Хотя бы немного понимать, как работает и где применяется JavaScript.

Сначала будет много непонятных слов, аббревиатур и голова пойдёт кругом. В одном JavaScript десятка три направлений, поэтому нужно понять, ваше ли это вообще. Смотрите видео на Ютюбе или тренируйтесь на интерактивных курсах. Другой вариант — по учебникам, но с ними сложнее всего. Электронные пока держатся, а вот бумажные устарели ещё до публикации.


Ещё 7 шагов
Всего голосов 52: ↑30 и ↓22 +8
Просмотры 42K
Комментарии 91

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность