Pull to refresh
0
0
Send message

UniRx — Rx для Unity3d

Reading time 7 min
Views 72K
Всем привет! Давно уже хотел написать статью о UniRx на Unity3d. Начнем с небольшой философии RX программирования. Например, разрабатывая игру, мы создаем кнопку, наблюдаем событие клика этой кнопки и реагируем на это каким нибудь кодом.

Реактивное программирование — это всё то же самое, только на стероидах, то есть мы можем создавать потоки данных всего. И также наблюдать за ними и реагировать. Update, OnCollisionEnter, Coroutine, Event, Mouse input, Keyboard input, Joystick input — все это потоки.
Все что нас окружает это потоки.

image
Читать дальше →
Total votes 16: ↑15 and ↓1 +14
Comments 26

Ошибки в разговорном английском, которые можно (и нужно) допускать

Reading time 4 min
Views 53K
Беглая и живая речь отличается от литературной фонетическими, лексическими и грамматическими нюансами. В то же время, она остается лучшим средством неформального общения наряду с вычурным языком Шекспира.

Сегодня расскажем, какие слова и фразы допустимо упрощать и какие правила можно нарушать в разговорном английском без потери смысла.
Читать дальше →
Total votes 31: ↑26 and ↓5 +21
Comments 107

За пять дней я прошел собеседования в пяти компаниях Силиконовой долины и получил пять предложений о работе

Reading time 12 min
Views 118K
За пять дней, с 24 по 28 июля 2017 года, я прошел собеседования в LinkedIn, Salesforce Einstein, Google, Airbnb и Facebook; все пять компаний предложили мне работу. Это был замечательный опыт и я понимаю, как мне повезло, что мои усилия оправдали себя, поэтому решил написать об этом. Здесь я расскажу о том, как готовился к собеседованиям, как они проходили и какое впечатление произвели на меня компании.



Как все началось


Я отработал в Groupon почти три года. Это моя первая работа, там были и прекрасные люди, и отличные проекты. Мы делали всякие интересные штуки, вводили перемены внутри компании, публиковали материалы и все в таком духе. Но со временем я стал ощущать, что темп моего самообразования стал затухать (попросту говоря, замедляться), мне не хватало пищи для ума. К тому же, как и всякого разработчика ПО из Чикаго, меня тянуло в Область залива Сан-Франциско — ведь там столько известных компаний.

Жизнь коротка, а профессиональная жизнь еще короче. Обговорив все с женой и заручившись ее полной поддержкой, я решил сделать решительный шаг и в первый раз в жизни поменять работу.
Читать дальше →
Total votes 95: ↑88 and ↓7 +81
Comments 98

Интегрирование уравнений движения

Reading time 9 min
Views 39K
image

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

Темой этой статьи как раз и будет реализация такого интегрирования.

Интегрирование уравнений движения


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

$F = ma$


Преобразуем это уравнение и увидим, что ускорение равно силе, делённой на массу. Это соответствует нашим интуитивным ожиданиям, потому что тяжёлые объекты труднее бросать.

$a = F/ma = F/m$


Ускорение — это темп изменения скорости от времени:

$dv/dt = a = F/m$



Аналогично, скорость — это темп изменения позиции от времени:

$dx/dt = v$


Это значит, что если мы знаем текущие позицию и скорость объекта, а также приложенные к нему силы, то сможем проинтегрировать, чтобы найти его позицию и скорость в определённый момент времени.
Читать дальше →
Total votes 26: ↑26 and ↓0 +26
Comments 12

Дизайн классов в играх: не только RPG

Reading time 14 min
Views 21K
image


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

Для начала нам нужно ответить на вопрос: что же такое класс? Определение этого термина в играх достаточно расплывчато, и правильных ответов можно дать несколько. В таких RPG, как Dungeons & Dragons классы определяются правилами и представляют собой список способностей, которые может иметь персонаж игрока.

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

Поэтому при обсуждении классов мы говорим не только о стандартных классах и расах из RPG, но и об армиях в Starcraft, персонажах Street Fighter и даже машинах из Mario Kart. Кажется странным засовывать их всех в одну категорию, но у них у всех есть нечто общее: выбор, который игрок делает за пределами игры, определяет его возможности в игровом процессе.
Читать дальше →
Total votes 18: ↑16 and ↓2 +14
Comments 6

Правила английского, которые нарушают ваши иностранные коллеги

Reading time 4 min
Views 61K


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

Двойное отрицание


Вы же помните, что в предложении на английском достаточно одного отрицания? А потом вдруг слушаем песню Rolling Stones и слышим “I can’t get no satisfaction”. Все дело в том, что это песня, тут можно, скажите вы. И это верно. Но еще стоит упомянуть, что двойное отрицание делает фразу эмоциональнее. Поэтому такие фразы и стали популярны. Но это неформальный способ, так что не увлекайтесь с двойными отрицаниями.
Читать дальше →
Total votes 77: ↑72 and ↓5 +67
Comments 191

Как правильно оформить Open Source проект

Reading time 7 min
Views 53K

В свободное и не свободное время[1] я развиваю несколько своих проектов на github, а также, по мере сил, участвую в жизни интересных для меня, как программиста, проектах.


Недавно один из коллег попросил консультацию: как выложить разработанную им библиотеку на github. Библиотека никак не связана с бизнес-логикой приложения компании, по сути это адаптер к некоему API, реализующему определённый стандарт. Помогая ему, я понял что вещи, интуитивно понятные и давно очевидные для меня, в этой области, совершенно неизвестны человеку делающему это впервые и далёкому от Open Source.


Я провел небольшое исследование и обнаружил что большинство публикаций по этой теме на habrahabr освещают тему участия (contributing), либо просто мотивируют каким-нибудь образом примкнуть к Open Source, но не дают исчерпывающей инструкции как правильно оформить свой проект. В целом в рунете, если верить Яндекс, тема освещена со стороны мотивации, этикета контрибуции и основ пользования github. Но не с точки зрения конкретных шагов, которые следует предпринять.


Так что из себя представляет стильный, модный, молодёжный Open Source проект в 201* году?

Читать дальше →
Total votes 89: ↑84 and ↓5 +79
Comments 135

Создаём собственный физический 2D-движок. Часть 1: основы и разрешение импульсов силы

Reading time 14 min
Views 65K
image


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

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

В этой части туториала мы рассмотрим следующие темы:

  • Простое распознавание коллизий
  • Генерирование простого многообразия
  • Разрешение импульсов силы
Total votes 42: ↑41 and ↓1 +40
Comments 21

Эволюционные вычисления: учим табуретку ходить

Reading time 15 min
Views 37K
image


Этот туториал посвящён эволюционным вычислениям, тому, как они работают и как реализовать их в своих проектах и играх. После прочтения статьи вы сможете овладеть мощью эволюции для поиска решений задач, решить которые вы не способны. В качестве примера в этом туториале будет показано, как эволюционные вычисления можно использовать для обучения простого существа ходьбе. Если вы хотите ощутить мощь эволюционных вычислений в браузере, оцените Genetic Algorithm Walkers.
Total votes 56: ↑56 and ↓0 +56
Comments 15

Геометрия данных 5. Преобразование базиса

Reading time 9 min
Views 11K
Под преобразованием базиса системы координат понимается замена одного набора базовых вершин (реперов) на другой. По сравнению с обычной системой координат на векторах изменение системы координат на точечном базисе имеет особенности, связанные с тем, что базисы могут принадлежать разным пространствам.



В предыдущей части было рассмотрено определение базиса низкой размерности в пространстве высокой размерности и показано, каким образом можно определять дистанции между вершинами, не принадлежащими пространству базиса. При замене базиса требование сохранения метрических свойств системы координат также является ключевым.
Читать дальше →
Total votes 14: ↑14 and ↓0 +14
Comments 0

Обзор алгоритмов кластеризации данных

Reading time 10 min
Views 429K
Приветствую!

В своей дипломной работе я проводил обзор и сравнительный анализ алгоритмов кластеризации данных. Подумал, что уже собранный и проработанный материал может оказаться кому-то интересен и полезен.
О том, что такое кластеризация, рассказал sashaeve в статье «Кластеризация: алгоритмы k-means и c-means». Я частично повторю слова Александра, частично дополню. Также в конце этой статьи интересующиеся могут почитать материалы по ссылкам в списке литературы.

Так же я постарался привести сухой «дипломный» стиль изложения к более публицистическому.
Читать дальше →
Total votes 82: ↑78 and ↓4 +74
Comments 41

Нестандартная кластеризация 5: Growing Neural Gas

Reading time 13 min
Views 18K
Часть первая — Affinity Propagation
Часть вторая — DBSCAN
Часть третья — кластеризация временных рядов
Часть четвёртая — Self-Organizing Maps (SOM)
Часть пятая — Growing Neural Gas (GNG)

Доброго времени суток, Хабр! Сегодня я бы хотел рассказать об одном интересном, но крайне малоизвестном алгоритме для выделения кластеров нетипичной формы — расширяющемся нейронном газе (Growing Neural Gas, GNG). Особенно мало информации об этом инструменте анализа данных в рунете: статья в википедии, рассказ на Хабре о сильно изменённой версии GNG и пара статей с одним лишь перечислением шагов алгоритма — вот, пожалуй, и всё. Весьма странно, ведь мало какие анализаторы способны работать с меняющимися во времени распределениями и нормально воспринимают кластеры экзотической формы — а это как раз сильные стороны GNG. Под катом я попробую объяснить этот алгоритм сначала человеческим языком на простом примере, а затем более строго, в подробностях. Прошу под кат, если заинтриговал.

(На картинке: нейронный газ осторожно трогает кактус)
Читать дальше →
Total votes 28: ↑28 and ↓0 +28
Comments 5

Почему один процесс NGINX берёт на себя всю работу?

Reading time 7 min
Views 21K

Метод масштабирования TCP-серверов, как правило, очевиден. Начни с одного процесса, когда будет нужно — просто добавь ещё. Так делают многие приложения, включая HTTP-серверы типа Apache, NGINX или Lighttpd.



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

Total votes 29: ↑27 and ↓2 +25
Comments 8

Разработка браузерной онлайн игры без фреймворков и движков

Reading time 15 min
Views 36K

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

В этом посте будет описан процесс разработки онлайн игры на чистом javascript и WebGL (без фреймворков и движков). Будут рассмотрены некоторые алгоритмы, техники рендеринга, искусственный интеллект ботов и сетевая игра. Проект является полностью опенсорсным, в конце поста будет ссылка на репозиторий.
Много картинок и гифок
Total votes 88: ↑88 and ↓0 +88
Comments 42

Дюжина приемов в Linux, которые действительно сэкономят уйму времени

Reading time 9 min
Views 136K


Эта статья также есть на английском.

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

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

Под катом — дюжина приемов в командной строке — из личного опыта.
Читать дальше →
Total votes 128: ↑122 and ↓6 +116
Comments 166

Деловая переписка на английском языке: фразы и советы

Reading time 18 min
Views 597K
Елена Соловьева, менеджер проектов в компании Лаборатория Касперского, специально для блога Нетологии поделилась советами о том, как вести деловую переписку с иностранными коллегами и партнерами на английском языке. Статья участвует в конкурсе.

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

Задача становится сложнее, если вы общаетесь на неродном английском языке с представителями других культур. В статье я поделюсь, на что в этом случае обратить внимание, как избежать ошибок и достичь взаимопонимания с иностранными коллегами и партнерами.
Читать дальше →
Total votes 104: ↑100 and ↓4 +96
Comments 80

Взрывная волна в Unity3D (displacement shader)

Reading time 3 min
Views 30K
Мой телеграм канал: https://t.me/winc0de.
Всем привет, пишу небольшую 2D игру и параллельно хотел бы рассказывать о реализации некоторых вещей в Unity3D.
Программирование графики само по себе очень интересное занятие с безграничным количеством вариаций результата. В этой статье опишу реализацию искажения пространства от взрывной волны.

Читать дальше →
Total votes 30: ↑27 and ↓3 +24
Comments 9

Разбираемся с шейдерами в Unity3D на конкретном примере

Reading time 6 min
Views 141K


Немного теории


Для понимания работы шейдеров, нужно хорошо ориентироваться в том, как видеокарта строит изображение. Общая структура визуализации 3D объекта на экране изображена на рисунке ниже:

Читать дальше →
Total votes 50: ↑43 and ↓7 +36
Comments 11

Построить, накопить, напасть, повторить: история стратегий в реальном времени

Reading time 33 min
Views 63K
Пока мы ждём выхода этой осенью новой Age of Empires, давайте вспомним взлёты и падения жанра RTS.



Расцвет и упадок стратегий в реальном времени был очень странным. Они возникали постепенно, из экспериментов, в которых разработчики пытались объединить скорость и интересность экшн-игр с обдуманностью и глубиной стратегий. Внезапно жанр получил взрывную популярность во второй половине 90-х, а потом так же быстро её потерял (за исключением StarCraft) в середине 2000-х, на фоне стагнации и изменения игрового рынка. Однако одной из наиболее популярных соревновательных игр в мире является RTS, а три из четырёх оставшихся стали ответвлением от жанра стратегий в реальном времени.

В 25-летнем возрасте стратегии в реальном времени остаются преданными своим базовым идеям и наследству. Сегодня, в момент глубокого затишья жанра, самое время исторически исследовать его, как мы в своё время сделали с графическими адвенчурами, Sim-играми, шутерами от первого лица, гонками на картах, играми с открытым миром (перевод на ГТ) и градостроительными симуляторами.
Читать дальше →
Total votes 52: ↑52 and ↓0 +52
Comments 200
1

Information

Rating
Does not participate
Registered
Activity