Pull to refresh
0
0
Михаил Силин @captGreen

User

Send message

Создание игры на Unreal Engine 4 за 150 часов (видео + исходники)

Reading time6 min
Views186K
Приветствую, Хабр! Хотел бы познакомить вас с относительно небольшим проектом, который я сделал c нуля примерно за 150 часов (50 заходов ~3 часа каждый) на Unreal Engine 4. Проект я делал в прямом эфире только на стримах раз в неделю (в общей сложности ушел год), попутно отвечая на вопросы пользователей.

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

  • Планирование и прототипирование проекта
  • Продумывание и реализация архитектуры проекта и отдельных его компонентов
  • Реализация интерфейса пользователя
  • Отладка и исправление ошибок
  • Работа с ассетами и графикой

image

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

Если вам интересны подробности проекта, записи стримов, исходники и прочее, читайте далее.
Total votes 103: ↑99 and ↓4+95
Comments45

Считаем до трёх

Reading time4 min
Views31K

Троичные вычисления


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



Я выбрал сбалансированную троичную систему, в которой один трит может представлять одно из трёх значений -1, 0 или 1. Весьма подробно о ней можно почитать тут.

На любые вопросы из разряда «зачем?!» я отвечаю заранее: «Because I can».


Читать дальше →
Total votes 85: ↑83 and ↓2+81
Comments64

Оцифровка звука на STM32 (АЦП+DMA) и кодирование в Speex для передачи

Reading time7 min
Views47K
image В продолжение своей вчерашней статьи на Geektimes хочу рассказать подробнее про реализацию оцифровки и кодирования звука на микроконтроллере STM32.

В статье покажу как настроить проект в STM32CubeMX, собирать данные с АЦП в два кольцевых буфера посредствам DMA, подключить библиотеку Speex и кодировать данные. Возможно многим материал покажется весьма очевидным, но надеюсь хоть кому-то он будет полезен.

Прошу под кат.
Читать дальше →
Total votes 33: ↑32 and ↓1+31
Comments17

Универсальный грамматический анализатор естественных языков с нуля. Выпуск 1

Reading time13 min
Views13K
Компиляторы, интерпретаторы… Сколько им посвещено книг и проектов! Баста, надоело! А вот сунешся в область анализа естественных языков, и никакой информации! А все что есть как-то очень сложно, непонятно и не универсально. Была у меня идея создать средневековую лингвистическую новеллу. Чтобы можно было разговаривать с персонажами на каком нибудь древнем естественном или вымышленном языке. На Латыни например? И на Квенья. И чтобы они понимали. А почему бы и нет?
Читать дальше →
Total votes 41: ↑37 and ↓4+33
Comments5

LocoLaser: переводим приложения в Google Sheets

Reading time14 min
Views6.5K


На практике часто приходится выпускать приложения сразу на Android и iOS, а иногда и на Windows Phone. В этом случае некоторые разработчики решают проблему локализации напролом, переводя каждую платформу по отдельности. Согласитесь, не самый лучший поход. На момент, когда я задался решением этой проблемы, в сети уже можно было найти утилиты по загрузке строковых ресурсов из Google Sheets, но большая их часть выглядела как минимум топорно. Меня такой расклад категорически не устраивал. В результате на свет появился LocоLaser — простая в использовании, но очень умная утилита на Java. На протяжении пары лет я использовал её исключительно в своих рабочих проектах. За это время она успела обрасти достаточно богатым функционалом, и теперь готова быть представленной на суд общественности.

В этой статье я расскажу о том что из себя представляет LocoLaser и как как интегрировать его в свой проект. Для начала разберем возможности утилиты, а затем перейдем к более конкретным вещам, таким как Gradle плагин для Android и Bash скрипты для iOS. Я достаточно ленивый программист, чтобы из раза в раз делать одни и те же действия, поэтому все сделано так, что после первоначальной настройки ваша дальнейшая работа будет сводиться лишь к запуску нужной задачи, когда это потребуется. Для переводчиков же, перевод выглядит совсем просто, мы расшариваем для них гугл таблицу со строками и они вписывают перевод в соответствующие колонки. Если нужно добавить язык, просто добавляется еще одна колонка с новым языком. Google Sheets позволяет индивидуально настроить доступ к редактированию таблицы, поэтому каждый переводчик имеет доступ только к колонкам со своими языками.
Читать дальше →
Total votes 12: ↑12 and ↓0+12
Comments0

Пишем Lisp-интерпретатор на Java

Reading time7 min
Views13K


Некоторое время назад мне захотелось написать свой небольшой интерпретируемый скриптовый язык, просто ради фана, не ставя перед собой каких-либо серьезных задач. Я тогда активно читал известную волшебную книгу SICP (Структура и интерпретация компьютерных программ), и мне захотелось реализовать описываемые в ней абстракции — функции как объекты первого класса, замыкания, макросы и т.п. Параллельно я интересовался языком Haskell, и решил совместить приятное с приятным, и написать интерпретатор языка на нем. В моем языке должна была быть строгая семантика с вызовом по значению и мутабельные переменные. Получившийся язык Lisp-семейства я в своем локальном окружении связал с именем Liscript, полная реализация которого уместилась в примерно 250 строк, включая парсер, ядро и консольный/файловый ввод-вывод. Этого более чем хватало, чтобы ради интереса решать любые задачки, какими обычно мучают студентов, которых угораздило изучать Lisp по учебной программе.

По прошествии времени мне захотелось сделать к интерпретатору кроссплатформенный GUI-интерфейс с перспективой портирования на Android, поэтому я реализовал второй вариант интерпретатора на Java, внешний вид которого вы можете видеть на картинке выше. Да, он поддерживает графический вывод и вообще interoperability с Java, и этот Тетрис написан на Liscript, видна часть его кода. Кому интересны подробности — прошу под кат.
Читать дальше →
Total votes 22: ↑22 and ↓0+22
Comments13

Как внедряется система безопасной печати на ближайшее к пользователю устройство (follow-me printing)

Reading time7 min
Views36K

Предположим, вы банк, нефтяная компания или просто параноик. Вам хочется, чтобы:
  • Уборщицы, враги и рептилоиды не забирали документы из принтеров.
  • Память принтера надёжно очищалась после печати.
  • Нецелевая печать отсутствовала.
  • Большие задания автоматически перенаправлялись на устройства с дешёвым отпечатком.
  • При отправке на печать задания 50 раз (как часто делает паникующий пользователь) выползало только одно.
  • Чтобы тексты фильтровались по стоп-словам, а картинки — распознавались и тоже не печатались, если содержат конфиденциальные данные (есть не у всех решений).
  • В редких случаях — ну и ещё чтобы в документах на лету слово «направо» заменялось на «налево» для введения потенциального противника в заблуждение.

Это дорого, но уже давно используется в финансовых учреждениях. Там печать выглядит так: вы отправляете задание на принт-сервер, он обрабатывает файл (если надо — посылает безопаснику на ручное согласование, но такая фича также есть не у всех решений), а потом отдаёт на определённый принтер только тогда, когда вы введёте пин и покажете свой отпечаток пальца непосредственно на устройстве, чтобы документ выпал вам лично в руки. Или не приложите свою смарт-карту вроде личного пропуска в здание.

Расскажу детальнее.
Читать дальше →
Total votes 22: ↑22 and ↓0+22
Comments21

Математическая модель восприятия (Часть 1)

Reading time10 min
Views25K
Часть 2
Часть 3

Введение (Языковая природа абстрактных понятий)


Цель этой работы показать, как языки наподобие английского, в качестве естественного и эффективного метода могут возникнуть на различных уровнях процесса восприятия. Попутно затронуты вопросы механизмов, позволяющих нам и животным видеть, классифицировать по форме цветовые пятна, составлять представление о местах, предметах и их геометрических свойствах. Несколько слов посвящено чисто языковым проблемам: тому, какие понятия и методы должны присутствовать в любом достаточно выразительном описательном языке среди первоначальных, а какие, в качестве производных, из первоначальных могут быть получены.
Каким же образом мог бы участвовать язык, например, в процессе зрительного восприятия? Каждый из нас привык говорить о своей способности видеть дерево, слышать пение птиц и чувствовать тепло, держа руку над свечой. Тем не менее нашему
Читать дальше →
Total votes 20: ↑18 and ↓2+16
Comments40

Z-Desk — геометрические построения в пространстве

Reading time7 min
Views16K
Привет, Хабр. Хочу рассказать об одной своей разработке в области 3D-графики, которую назвал Z-Desk.

Z-Desk. Гиперплоскость.

Предыстория


Мои родители – инженеры. У нас дома была чертежная доска. Было что-то волшебное, когда на нее закреплялась бумага, а на бумаге с помощью нехитрых инструментов создавался чертеж. Школьное черчение стало моим любимым предметом. В институте появилась вообще срывающая голову дисциплина — начертательная геометрия. С помощью простых правил можно было делать сложнейшие пространственные построения.
Читать дальше →
Total votes 19: ↑19 and ↓0+19
Comments9

Как работает реляционная БД

Reading time51 min
Views534K
Реляционные базы данных (РБД) используются повсюду. Они бывают самых разных видов, от маленьких и полезных SQLite до мощных Teradata. Но в то же время существует очень немного статей, объясняющих принцип действия и устройство реляционных баз данных. Да и те, что есть — довольно поверхностные, без особых подробностей. Зато по более «модным» направлениям (большие данные, NoSQL или JS) написано гораздо больше статей, причём куда более глубоких. Вероятно, такая ситуация сложилась из-за того, что реляционные БД — вещь «старая» и слишком скучная, чтобы разбирать её вне университетских программ, исследовательских работ и книг.

На самом деле, мало кто действительно понимает, как работают реляционные БД. А многие разработчики очень не любят, когда они чего-то не понимают. Если реляционные БД используют порядка 40 лет, значит тому есть причина. РБД — штука очень интересная, поскольку в ее основе лежат полезные и широко используемые понятия. Если вы хотели бы разобраться в том, как работают РБД, то эта статья для вас.
Читать дальше →
Total votes 232: ↑229 and ↓3+226
Comments134

Дополненная реальность на Qt

Reading time8 min
Views37K


Сейчас дополненная реальность – это одно из самых интересных направлений. Поэтому я и взялся за ее изучение, а результатом этого стала собственная реализация кроссплатформенной безмаркерной дополненной реальности на Qt. Речь в этой статье пойдет о том, как это было реализовано (или же как это реализовать самому). Под катом можно найти демку и ссылку на проект на гитхабе.
Читать дальше →
Total votes 39: ↑38 and ↓1+37
Comments12

Визуализация кристаллических 3d-структур в браузере без плагинов

Reading time5 min
Views18K
Привет, Хабр! В этой статье я сравню четыре открытых движка визуализации кристаллических структур в формате CIF (Crystallographic Information File), популярном в кристаллохимии и материаловедении. Речь пойдёт о современном JavaScript (включая транскомпиляцию Java и C в JavaScript), о кристаллохимии и физике твёрдого тела. Мы телепортируемся из мира Шрёдингера и Ландау в мир Бернерса-Ли и Джобса, а затем обратно. Итак, поехали.

Water adsorption on perovskite surface

Читать дальше →
Total votes 15: ↑15 and ↓0+15
Comments1

C# — Моделирование «разумной» жизни на базе нейронных сетей

Reading time4 min
Views84K
Данная статья посвящена исследованию возможностей нейронных сетей при их использовании в качестве основы для индивидуального разума моделируемого объекта.

Цель: показать, способна ли нейронная сеть (или ее данная реализация) воспринимать «окружающий» мир, самостоятельно обучаться и на основе собственного опыта принимать решения, которые можно считать относительно разумными.

image
Читать дальше →
Total votes 29: ↑26 and ↓3+23
Comments69

Объектный язык ограничений (и немного про метамодели)

Reading time16 min
Views35K
image

На наш взгляд, объектный язык ограничений (Object Constraint Language, OCL) должен знать каждый, кто занимается моделированием или кому интересна модельно-ориентированная разработка. Однако, он незаслуженно обделен вниманием в сети вообще, а, уж, в русскоязычном сегменте информации просто мизер. Что это за язык и зачем он нужен, описано в этой статье. Статья не претендует на фундаментальность, полноту охвата, точность определений и т.п. Её задача: 1) на простых примерах познакомить с OCL тех, кто никогда не слышал об этом языке, 2) а для тех, кто о нём слышал, возможно, открыть новые способы его применения.
Читать дальше →
Total votes 16: ↑16 and ↓0+16
Comments20

Построение системы координат по набору расстояний

Reading time5 min
Views17K

Введение


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

Допустим, у нас имеется (n > 2) точек и известны все расстояния между ними. Потенциальная мерность пространства равна (n-1). Надо определить, пространству какой мерности принадлежат заданные точки, а также координаты точек в данном пространстве.
Читать дальше →
Total votes 15: ↑15 and ↓0+15
Comments8

ESP8266: Что внутри «народного wi-fi»?

Reading time3 min
Views298K


Наша первая статья о Wi-Fi-чипе ESP8266 была тепло встречена хабра-сообществом. Не смотря на то, что содержала мало конкретной информации. Тому была веская причина — NDA, подписанное нами для получения SDK от производителя решения, компании Espressif. Именно поэтому мы просто рассказали, «вот, есть такое решение». Чтобы заинтересованные имели возможность обратить внимание.

На днях мы (проект COOLRF, не забудьте подписаться на наше ВКонтакт-сообщество, если вы еще не состоите в нём) получили разрешение производителя чипа на публикацию в наших статьях информации, ранее попадавшей под условия соглашения о неразглашении. Всех, кого интересовали подробности — welcome под кат.
Читать дальше →
Total votes 23: ↑21 and ↓2+19
Comments62

Краткое введение в тензоры

Reading time3 min
Views160K
В заметке Магия тензорной алгебры было дано очень неплохое введение в математику тензоров. Но, как мне кажется, этот текст все-равно несколько сложен для понимания. В нем не до конца понятно, что же это такое тензор и зачем он вообще нужен.

Сейчас я попытаюсь дать совсем простое введение в тензоры. Я не претендую на математическую строгость, поэтому некоторые термины могут употребляться не совсем корректно.
Читать дальше →
Total votes 39: ↑34 and ↓5+29
Comments26

Как опереться на пустоту?

Reading time9 min
Views63K

«Дайте мне точку опоры, и я переверну Землю» — так, по легенде, сказал Архимед, научно объяснив интуитивно понимаемый принцип работы рычага. Но в космическом вакууме опоры нет. А спутникам нужно, чтобы солнечные батареи смотрели на Солнце, антенны — на Землю, камера — на интересный участок Марса, а двигатель для коррекции орбиты — строго в определенную точку пространства. Приходится что-то придумывать, чтобы опереться на пустоту.
Читать дальше →
Total votes 73: ↑73 and ↓0+73
Comments46

Спутник NASA заглянул в глаз тайфуна

Reading time2 min
Views9.6K


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

Спутник NASA, который называется CloudSat, провел детальное изучение тайфуна «Дельфин», который получил 4 категорию. Спутник смог изучить структуру тайфуна, включая и сам глаз. CloudSat, который можно назвать орбитальной обсерваторией, посылает импульсы излучения определенной частоты через атмосферу, улавливая затем отраженное излучение.
Читать дальше →
Total votes 30: ↑20 and ↓10+10
Comments8

Анимация персонажей в Blender 3D — это просто

Reading time3 min
Views178K


Мир open source не стоит на месте и постоянно развивается. Про Blender 3D написано уже много статей, но помимо Blender, существует еще много полезных и бесплатных программ. Одна из них, это MakeHuman. На Хабре упоминания о ней имеются, но какой либо информации по ней нет. Предлагаю вам заглянуть под кат и посмотреть, что анимация персонажей в связке MakeHuman+Blender3D, это действительно просто. Осторожно, много картинок.
Посмотрим...
Total votes 65: ↑64 and ↓1+63
Comments11
1

Information

Rating
Does not participate
Location
Тула, Тульская обл., Россия
Date of birth
Registered
Activity