Обновить
0
0

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

Отправить сообщение

Моделирование гидродинамики: Lattice Boltzmann Method

Время на прочтение16 мин
Охват и читатели56K
Извержение вулкана
Моделирование извержения вулкана
с помощью Lattice Boltzmann Method. (с) Источник

В этой статье я расскажу о численном методе моделирования гидродинамики Lattice Boltzmann Method, LBM. На русском—метод решёточных уравнений Больцмана. Он превосходит другие известные методы (например, finite element method) в легкости распараллеливания, возможности моделирования многофазных потоков, моделировании потоков в пористых средах. Кроме того, вычислительный алгоритм содержит только простейшие арифметические операции. Метод весьма новый, первые коммерческие продукты на его основе стали появляться около 2010 года.
Читать дальше →

Архитектура клиентского приложения (механизмы структуризации)

Время на прочтение29 мин
Охват и читатели20K

История первая


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

image

Игровая компания немца разрабатывала 3 вида игр:

  1. Флэш-игры для мобильных телефонов с поддержкой технологии J2ME.
  2. Обучающие игры для портативной игровой приставки Nintendo DS. Заказчиками этих игр были европейские издатели, а покупателями — родители, чьи чада имели проблемы с обучением по математике, английскому или немецкому языкам. Подразделение игр для Nintendo DS выпустило много игр. Хотя они и не стали AAA-тайтлами, но окупили свою разработку и принесли небольшую прибыль.
  3. Игры для платформы Nintendo Wii.

В последней команде был я. Команда должна была разработать игру для маленьких девочек по детскому бренду. Бренд был достаточно известен в Германии (это был основной рынок) и в ряде других европейских стран: во Франции и в Великобритании.

Читать дальше →

Векторизуем изображение генетическим алгоритмом

Время на прочтение21 мин
Охват и читатели6.7K
Итак, на выходных мы должны весело отдохнуть, а потому попробуем векторизовать изображение генетическим алгоритмом.
Векторизованный доктор Хаус
Хочу знать как!

Метод оптимизации Нелдера — Мида. Пример реализации на Python

Время на прочтение5 мин
Охват и читатели76K


Метод Нелдера — Мида — метод оптимизации (поиска минимума) функции от нескольких переменных. Простой и в тоже время эффективный метод, позволяющий оптимизировать функции без использования градиентов. Метод надежен и, как правило, показывает хорошие результаты, хотя и отсутствует теория сходимости. Может использоваться в функции optimize из модуля scipy.optimize популярной библиотеки для языка python, которая используется для математических расчетов.
Читать дальше →

Интересный этюд Factorio: симулятор завода

Время на прочтение5 мин
Охват и читатели88K
Эта игра — очередная очень интересная с точки зрения механики бета, представляющая заодно своеобразный язык программирования.



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

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

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

Процедурно генерируемые карты мира на Unity C#, часть 4 (трафик)

Время на прочтение9 мин
Охват и читатели32K
image

Это последняя статья из цикла о процедурно генерируемых с помощью Unity и C# картах мира. Осторожно, под катом 7 МБ картинок.
Читать дальше →

Автоэнкодеры в Keras, Часть 1: Введение

Время на прочтение11 мин
Охват и читатели104K

Содержание



Во время погружения в Deep Learning зацепила меня тема автоэнкодеров, особенно с точки зрения генерации новых объектов. Стремясь улучшить качество генерации, читал различные блоги и литературу на тему генеративных подходов. В результате набравшийся опыт решил облечь в небольшую серию статей, в которой постарался кратко и с примерами описать все те проблемные места с которыми сталкивался сам, заодно вводя в синтаксис Keras.

Автоэнкодеры


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



Кому интересно, добро пожаловать под кат
Читать дальше →

Алгоритм «diamond-square» для построения фрактальных ландшафтов

Время на прочтение12 мин
Охват и читатели123K
Карта игры Minecraft, созданная с помощью приложения CartographДумаю, многие знакомы с весьма необычной игрой Minecraft (справа — пример сгенерированной в ней карты), в которой игрок находится на (практически) бесконечной поверхности Земли и может исследовать окружающий мир с минимальными ограничениями.

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

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

Читать дальше →

Введение в алгоритм A*

Время на прочтение10 мин
Охват и читатели214K
При разработке игр нам часто нужно находить пути из одной точки в другую. Мы не просто стремимся найти кратчайшее расстояние, нам также нужно учесть и длительность движения. Передвигайте звёздочку (начальную точку) и крестик (конечную точку), чтобы увидеть кратчайший путь. [Прим. пер.: в статьях этого автора всегда много интерактивных вставок, рекомендую сходить в оригинал статьи.]


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

Реализация алгоритма A*

Время на прочтение30 мин
Охват и читатели89K


Эта статья является продолжением моего введения в алгоритм A*. В ней я показал, как реализуются поиск в ширину, алгоритм Дейкстры, жадный поиск по наилучшему первому совпадению и A*. Я стремился как можно больше упростить объяснение.

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

Автоэнкодеры в Keras, Часть 2: Manifold learning и скрытые (latent) переменные

Время на прочтение11 мин
Охват и читатели30K

Содержание






Для того, чтобы лучше понимать, как работают автоэнкодеры, а также чтобы в последствии генерировать из кодов что-то новое, стоит разобраться в том, что такое коды и как их можно интерпретировать.
Читать дальше →

Лекции Техносферы. Инфопоиск. Часть 1 (весна 2017)

Время на прочтение4 мин
Охват и читатели13K


В эфире новый выпуск видеолекций нашего образовательного проекта Техносфера. На этот раз курс посвящён информационному поиску.


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


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

Нейронные сети в детектировании номеров

Время на прочтение7 мин
Охват и читатели59K


Распознавание автомобильных номеров до сих пор является самым продаваемым решением на основе компьютерного зрения. Сотни, если не тысячи продуктов конкурируют на этом рынке уже на протяжении 20-25 лет. Отчасти поэтому сверточные нейронные сети (CNN) не бьют прежние алгоритмические подходы на рынке.

Но опыт последних лет говорит, что алгоритмы CNN позволяют делать надежные и гибкие для применения решения. Есть и еще одно удобство: при таком подходе всегда можно улучшить надежность решения на порядок после реального внедрения за счет переобучения. Кроме того, такие алгоритмы отлично реализуются на GPU (графических модулях), которые значительно эффективней с точки зрения потребления электроэнергии, чем обычные процессоры. А платформа Jetson TX от NVidia так просто потребляет очень мало по меркам современных вычислителей. Наглядное «энергетическое превосходство»:
Читать дальше →

Нейронные сети для начинающих. Часть 1

Время на прочтение7 мин
Охват и читатели1.7M
image

Привет всем читателям Habrahabr, в этой статье я хочу поделиться с Вами моим опытом в изучении нейронных сетей и, как следствие, их реализации, с помощью языка программирования Java, на платформе Android. Мое знакомство с нейронными сетями произошло, когда вышло приложение Prisma. Оно обрабатывает любую фотографию, с помощью нейронных сетей, и воспроизводит ее с нуля, используя выбранный стиль. Заинтересовавшись этим, я бросился искать статьи и «туториалы», в первую очередь, на Хабре. И к моему великому удивлению, я не нашел ни одну статью, которая четко и поэтапно расписывала алгоритм работы нейронных сетей. Информация была разрознена и в ней отсутствовали ключевые моменты. Также, большинство авторов бросается показывать код на том или ином языке программирования, не прибегая к детальным объяснениям.

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

Введение в JavaFx и работа с layout в примерах

Время на прочтение7 мин
Охват и читатели87K
Доброго времени суток. В этой статье я расскажу основы работы с классами пакета javafx.scene.layout.* (BorderPane, AnchorPane, StackPane, GridPane, FlowPane, TilePane, HBox, VBox) и их особенностями в пошаговых примера и иллюстрациях. Также в кратце пробежимся по иерархии классов JavaFx.


Читать дальше →

Каскадная трассировка воксельных конусов в игре The Tomorrow Children

Время на прочтение10 мин
Охват и читатели9.8K

Что: трассировка каскадов воксельных конусов


Для The Tomorrow Children мы реализовали инновационную систему освещения, основанную на трассировке воксельных конусов. Вместо использования традиционных систем прямого или отложенного освещения мы создали систему, освещавшую всё в мире трассировкой конусов через воксели.

Таким способом обрабатывается и прямое, и отражённое освещение. Он позволяет нам рассчитывать на PlayStation 4 три отражения глобального освещения в полудинамических сценах. Мы трассируем конусы в 16 фиксированных направлениях через шесть каскадов 3D-текстур и выполняем поглощение света с помощью направленного затенения в экранном пространстве (Screen Space Directional Occlusion) и сферическими окклюдерами динамических объектов для получения конечного результата. Движок также поддерживает модель сферического освещения на основе гармоник, что позволяет рассчитывать освещение частиц и реализовать спецэффекты, например аппроксимированное подповерхностное рассеяние (approximating subsurface scattering) и преломляющие материалы.

Анализ исходного кода Duke Nukem 3D: Часть 1

Время на прочтение19 мин
Охват и читатели44K
image

Уйдя с работы в Amazon, я провёл много времени за чтением отличного исходного кода.

Разобравшись с невероятно замечательным кодом idSoftware, я принялся за одну из лучших игр всех времён: Duke Nukem 3D и за её движок под названием "Build".

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

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

Сложности при создании изометрической игры в Unity

Время на прочтение4 мин
Охват и читатели27K
Для начала небольшое предисловие. Мы работаем над игрой Empires in Ruins с пререндеренными 3D-моделями, которые перед сохранением в Unity превращаются в спрайты и атласы спрайтов. Если объяснять коротко, то при этом выполняется довольно долгий и медленный производственный процесс, но он позволяет нам использовать текстуры очень высокого разрешения для очень чёткой графики. Такой стиль напоминает стратегические игры 90-х наподобие Age of Empires (и многих других) в смеси с производственным процессом Baldur's gate, дополненным современным стилем и возможностью сильного масштабирования. Нам вообще нравится производить впечатление.



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

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

Введение в Байесовские методы

Время на прочтение6 мин
Охват и читатели185K

В качестве введения


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

2D магия в деталях. Часть вторая. Структура

Время на прочтение19 мин
Охват и читатели31K


Помните небезызвестный мем про "корованы"? Наверное, каждый, кто разрабатывает игры (или хотел бы этим заняться) раздумывает о неком "проекте мечты", где можно будет "грабить корованы" и "набигать". А ещё, чтобы погода менялась динамически, и на грязи следы от сапог оставались, и деревья росли в реальном времени. И ещё, чтобы ...


Понятно, что в реальном игровом проекте такая погоня за хотелками — смерти подобна. А вот в техно-демке — самое то.

Информация

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