Pull to refresh
0
0
Георгий @GunBlade

User

Send message

Kubernetes в духе пиратства: наш путь к микросервисам и готовый шаблон для внедрения

Reading time7 min
Views10K


Привет, я Юрий Буйлов, занимаюсь разработкой в CarPrice, а также внедряю практики DevOps, микросервисы и Kubernetes. Хочу рассказать про Kubernetes в духе пиратства — только не про управление большим красивым кораблем на парусах, а, скорее, про флот маленьких неприглядных рыбацких лодочек, местами ржавых, но очень быстрых, шустрых и опасных.

Будет интересно тем, кто разрабатывает или переводит инфраструктуру на микросервисы, внедряет DevOps поверх Kubernetes и всячески идет в cloud native. Расскажу про наш путь, в конце статьи поделюсь нашими наработками окружения для микросервисов — дам ссылку на шаблон, который будет удобен для разработчиков и тестировщиков.

Эта статья — по видео выступления на конференции @Kubernetes Conference by Mail.ru Cloud Solutions, если не хотите читать, можно посмотреть.
Читать дальше →
Total votes 37: ↑35 and ↓2+33
Comments2

Создаём процедурные глобусы планет

Reading time4 min
Views11K
Искажения, бесшовный шум и как с ними работать.

image

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


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

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

Из этих трёх лично я предпочитаю Open Simplex Noise, который использую в своих личных проектах. Стоит заметить, что в текущей реализации OpenSimplexNoise для получения простого доступа к масштабу, октавам и порождающим значениям потребуется дополнительная работа. В Интернете есть множество информации о том, что делает каждый из этих элементов, и я крайне рекомендую вам её изучить. Однако в своей статье я буду говорить не об этом.
Читать дальше →
Total votes 38: ↑38 and ↓0+38
Comments7

После прочтения применить. 25 книг для игрового разработчика

Reading time8 min
Views118K
Предлагаю подборку всегда актуальных книг по программированию, геймдизайну и концепт-арту для новичков и бывалых бойцов геймдева. Конечно, во главе профессионального развития стоит практика, но эти книги сэкономят ваше время и позволят не выдумывать велосипед заново.


Читать дальше →
Total votes 15: ↑14 and ↓1+13
Comments7

Работа с освещением в Unity — теория и практика

Reading time13 min
Views177K
В видеоиграх красивое освещение в реальном времени сильно бьёт по производительности, что особенно заметно на мобильных устройствах. Таким образом, разработчики вынуждены искать методы обхода этой проблемы. Lightmapping — технология, сохраняющая информацию об освещении в текстуру, что позволяет высвободить вычислительные ресурсы под другие нужды.
В этой статье я познакомлю читателя с теорией освещения в играх, опишу процесс создания “лайтмапа” в Unity 5 и поделюсь рядом советов.
image
Читать дальше →
Total votes 38: ↑38 and ↓0+38
Comments18

Создание искусственного интеллекта для игр — от проектирования до оптимизации

Reading time32 min
Views139K

Сегодня – первое сентября. А значит, многие читатели хабры начинают прохождение нового уровня одной древней известной игры – той самой, в которой требуется прокачать интеллект, и, в итоге, получить магический артефакт – аттестат или диплом, подтверждающий ваше образование. К этому дню мы сделали реферативный перевод статьи про реализацию искусственного интеллекта (ИИ) для игр – от его проектирования до оптимизации производительности. Надеемся, что она будет полезна как начинающим, так и продвинутым разработчикам игр.
Читать дальше →
Total votes 44: ↑42 and ↓2+40
Comments3

Реализация волнового алгоритма нахождения кратчайшего пути к динамически движущимся объектам в unity3d на C# в 2d игре

Reading time9 min
Views92K
В данной статье я хочу показать как реализовать волновой алгоритм и мою модификацию его для работы с динамическими объектами в unity3d.

Область применения


Данный метод подходит для 2д игр. А его модификация для нахождения пути к движущимся объектам. Область применения очень обширная и затрагивает множество игровых жанров и ситуаций, например:
  1. Игры жанра ТД. Где игровые локации удобно представлять в виде матрицы проходимости, к примеру 0 — участок по которому можно перемещаться, -1 — область недоступная для перемещения, -2 — ловушка и т.д.;
  2. Стратегические игры, особенно пошаговые. Например бои в серии игр “Герои Меча и Магии”;
  3. Платформеры;
  4. Шашки, шахматы, змейка и другие.

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


В интернете достаточно много статьей по работе с алгоритмами нахождения кратчайшего пути, но при этом все равно постоянно создают темы на форумах, задают вопросы “как найти путь до объекта”. Я выделил несколько причин почему эта статья имеет право на существование:
  1. Для unity3d реализовано много алгоритмов нахождения кратчайших путей в виде ассетов, то есть готовых решений. Но иногда стоит не брать готовое решение, а написать свое, оптимальное конкретно к вашему случаю. Тем более если в игре много объектов, то плохая реализация алгоритма может сильно повлиять на производительность. И тем более производительность пострадает если этих объектов много и они меняют свое местоположение;
  2. Стандартный вариант волнового алгоритма — не самый оптимальный вариант для динамических объектов, поэтому я хочу показать его модификацию, которую разработал во время работы над своей стратегической игрой;
  3. В интернете нету хороших, простых, статей на тему реализации волнового алгоритма в unity3d.

Читать дальше →
Total votes 20: ↑15 and ↓5+10
Comments12

RAII и делегирующие конструкторы в C++11

Reading time4 min
Views29K
В этом посте пойдет речь об одной интересной фичи в C++11, которая называется делегирующие конструкторы (delegating constructors): почему она интересна, и как ее можно применить для более эффективного управления ресурсами, т.е. реализации идиомы RAII.

Читать дальше →
Total votes 70: ↑68 and ↓2+66
Comments39

DeepDream — Визуализатор работы нейросети

Reading time1 min
Views59K

С месяц назад в блоге Google research появилась запись про визуализацию работы нейросети — мол, как она видит изображения при обработке, пестрящая картинками типа этой.
Народу стало интересно как такое можно сделать самостоятельно и спустя пару недель появилась новая запись с исходниками на гитхаб, которые позволяют все проделать самостоятельно.
Но нашлись те, кому быстро стало скучно, так что осторожно, подкатом психодел.
Читать дальше →
Total votes 45: ↑44 and ↓1+43
Comments35

Три месяца использования планшета Samsung ativ smart pc xe700t1c

Reading time13 min
Views64K
Уже лет как пять я хотел с собой таскать планшет, который бы позволял мне в любое время получить максимально возможную замену моему домашнему компьютеру. Но как я ни крутился ценовой диапазон ниже 50тр. никак не опускался причем в любое время — два года назад, год назад, сейчас… год вперёд :) С течением времени окружающие меня друзья обзавелись, порой достаточно мощными, планшетами/читалками на Android, я же упорно выкручивался телефоном на Android, периодически облизываясь на планшеты с перьевым вводом. И вот судьба отнеслась ко мне благосклонно и, случайно зайдя в комиссионный магазин, я случайно (вывожу правило для алгебры случайной логики: две случайности дают неслучайность) увидел планшет Samsung ativ smart pc xe700t1c-A02RU. Естественно сильно заюзаный. Без GSM. Без GPS. Без NFC. Без док-станции. Просто планшет на Windows 8 c Wi-Fi, парой видеокамер и датчиком положения. Ничего примечательного вроде бы. Но с четырехядерным Core i5-3317U, 4Gb RAM, 128Gb SSD и поддержкой технологии WACOM (естественно перо в наличии). Я не выдержал и купил.
Что из этого получилось
Total votes 33: ↑31 and ↓2+29
Comments21

Navigation Drawer в стиле Material Design за 5 минут

Reading time9 min
Views115K
imageВ данной статье я расскажу, как быстро добавить в ваше приложение для Android боковое меню (aka Navigation Drawer) в стиле Material Design. Для этого мы воспользуемся библиотекой, любезно предоставленной Mike Penz.

У вас получится Navigation Drawer, который:

  • Соответствует последним рекомендациям по дизайну (Google Material Design Guidelines);
  • Поддерживает использование нескольких Drawer (можно выдвигать второй справа);
  • Поддерживает использование бейджей;
  • Имеет простой и понятный интерфейс (API);
  • Может выползать как под, так и поверх Status Bar;
  • Позволяет менять иконки, цвета, бейджи во время выполнения;
  • Использует AppCompat support library;
  • Работает, начиная с API 14.

Помимо этого, новички обучатся интеграции сторонних библиотек в свой проект, что крайне полезно, учитывая их грандиозное разнообразие на Github.

Читать дальше →
Total votes 24: ↑20 and ↓4+16
Comments21

Лекции Технопарка. 2 семестр. Java

Reading time4 min
Views73K


В эфире очередной выпуск материалов рубрики «Лекции Технопарка». На этот раз вы можете изучить лекции курса, посвящённого углублённому программированию на Java. Цель курса — получение студентами практических навыков создания клиент-серверного приложения на примере разработки сервера простой многопользовательской online-игры в малых группах (4-6 человек).
Читать дальше →
Total votes 39: ↑36 and ↓3+33
Comments6

Как перевести сайт целиком на постоянный HTTPS для всех

Reading time6 min
Views44K

Шифруем всё подряд


Эра незашифрованного веба проходит, и это хорошо. В этой инструкции мы предполагаем, что на вашем сервере работает веб-сервер Nginx. И теперь мы сделаем так, чтобы все посетители сайта пользовались исключительно протоколом HTTPS. Кроме этого мы включим HSTS – это «HTTP Strict Transport Security», когда сайт не только поддерживает HTTPS, но и настаивает на его использовании.

Для этого есть множество способов, но я опишу метод под названием «HTTPS termination». Иначе говоря, мы поставим перед веб-сервером обратный прокси, который и будет обеспечивать HTTPS. Это получается проще и гибче, чем настраивать HTTPS только при помощи возможностей веб-сервера. Возможно, вам покажется контринтуитивным, что добавление ещё одного приложения в стек упростит вашу жизнь – но это действительно так.

Уточним, что данный рецепт подходит для серверов на базе Linux, на которых установлен Nginx.

То, что будет работать прежде всех остальных приложений в стопке – это HAProxy. Это в первую очередь приложение для балансировки – он умеет распределять приходящие запросы между разными физическими серверами. Много высоконагруженных сайтов используют его в этом качестве (тот же reddit), но в последней версии у него появилась возможность выполнять SSL termination. Он умеет устанавливать HTTPS-соединения от имени сервера.

Поэтому мы поставим HAProxy, скормим ему наши сертификаты SSL/TLS, поручим перенапрявлять все HTTP запросы на HTTPS, и покажем ему уже сам веб-сервер в качестве бэкенда.
Читать дальше →
Total votes 63: ↑49 and ↓14+35
Comments38

Уменьшаем количество ошибок с помощью чек-листа Code Review

Reading time3 min
Views30K
В нашей статье об эффективных ревью кода мы рекомендовали использовать чеклист. Чеклисты (контрольные списки) — это великая вещь в ревью: они гарантируют, что ревью действительно прошло через вашу команду. Также они способствуют выявлению и решению общих трудностей.

Исследование, проведенное Software Engineering Institute, показывает, что программисты делают 15-20 распространенных ошибок. Добавив такие ошибки в чеклист, вы можете быть уверены, что заметите их в момент появления и поможете от них избавиться надолго.

Чтобы вам было от чего отталкиваться, вот вам список типичных пунктов:
Читать дальше →
Total votes 26: ↑25 and ↓1+24
Comments13

Режимы смешивания в Unity

Reading time9 min
Views48K
Многие наверняка слышали о режимах смешивания (blend modes), которые присутствуют в большинстве популярных программ для работы с изображениями и видео. Там это — важный инструмент создания контента, давно уже ставший неотъемлемой их частью.

А что же в играх?

Допустим, появилась необходимость использовать Color Dodge смешивание для системы частиц или UI-художник сделал красивую графику для игрового интерфейса, но некоторые его элементы используют какой-нибудь Soft Light. А может, вам понадобилось подвергнуть трёхмерный объект Divide-смешиванию, чтобы получить эффект прямиком из кинокартин Линча?



В данной статье мы рассмотрим принцип работы популярных режимов смешивания и постараемся максимально точно воссоздать их эффект на игровом движке Unity.
Читать дальше →
Total votes 33: ↑30 and ↓3+27
Comments11

Как создать мощную систему игровых достижений

Reading time9 min
Views40K
Признаюсь, раньше я испытывал особую неприязнь к игровым достижениям. Сейчас мне сложно вспомнить откуда растут ноги, но я не исключаю, что из-за ужасной реализации в большинстве игр. Кто старое помянет — тому глаз вон, поэтому просто признаем неоспоримый факт: геймдизайн с тех пор сильно эволюционировал.



Хотя игровые достижения не должны быть основной целью в вашей игре, это не мешает им существенно влиять на поведение игрока и его вовлеченность. Давным-давно, на одном из крупных проектов передо мной поставили масштабную задачу: создать мощную систему игровых достижений. В течении следующих 30 месяцев, я, как раб на галерах, провел за проектированием и тестированием различных систем достижений в сотнях игр. Меня поглотила бесконечная обработка данных: игровых комментариев, постов на форумах, непосредственное общение с игроками, изменения в игровых рейтингах. Я совершил и продолжаю совершать кучу ошибок, но я также усвоил несколько бесценных уроков. И эти знания нельзя держать в секрете…
Перейти к урокам
Total votes 34: ↑28 and ↓6+22
Comments23

Лекции Технопарка. 1 семестр. С/С++

Reading time6 min
Views110K
Мы продолжаем наши еженедельные публикации учебных материалов Технопарка. Предыдущие лекции были посвящены web-технологиям в целом, а также алгоритмам и структурам данных. В третьем блоке лекций рассказывается о языках С и С++.

Лекция 1. Язык С. Основы организации и использования оперативной и сверхоперативной памяти


Лекция начинается с введения в язык С: рассказывается об истории его появления, особенностях, преимуществах и недостатках, о сферах применения. Описываются основы препроцессорной обработки, рассматриваются вопросы управления памятью (модели управления памятью, области видимости объектов хранения) и производительность программ на языке С. Обсуждается связывание объектов хранения и их инициализация. Затем рассказывается о классах памяти в языке С. Следующая часть лекции посвящена проблематике указателей, а также работе с одномерными массивами. В заключение рассматривается стандарт POSIX и вопросы переносимости.


Читать дальше →
Total votes 72: ↑70 and ↓2+68
Comments83

10 вещей, которых вы не знали о Java

Reading time8 min
Views105K
Итак, вы работаете на Java с самого её появления? Вы помните те дни, когда она называлась «Oak», когда про ООП говорили на каждом углу, когда сиплюсплюсники думали, что у Java нет шансов, а апплеты считались крутой штукой?

Держу пари, что вы не знали как минимум половину из того, что я собираюсь вам рассказать. Давайте откроем для себя несколько удивительных фактов о внутренних особенностях Java.
Читать дальше →
Total votes 93: ↑91 and ↓2+89
Comments55

Комментарии к «Интерстеллар» – кто такие высшие существа?

Reading time4 min
Views43K
image

Примечание 0: посвящается выходу фильма на торрентах оптических носителях.

Примечание 1: если вы ещё не смотрели фильм, то в этом переводе есть спойлеры!

Примечание 2: это перевод выдержки из книги Кипа Торна «Наука Интерстеллар». В отрывке обсуждаются существа, которых в оригинале называют «bulk beings». В русском переводе эту фразу никак, насколько я понял, не перевели, да и в фильме их упомянули всего один раз. По смыслу – это существа, эволюционировавшие до высших измерений, т.е. до измерений, больших, чем 4 (3 пространственные + время). Так что я решил перевести название как «высшие существа».


Все персонажи фильма убеждены в существовании высших существ, хотя используют это слово очень редко. Обычно персонажи говорят об этих существах «Они». В начале фильма Амелия Брэнд говорит астронавту Куперу: «Кто бы Они ни были, Они, по-видимому, заботятся о нас. Эта чёрная дыра позволит нам добраться до других звёзд. Она появилась тогда, когда мы в ней нуждались».
Читать дальше →
Total votes 60: ↑39 and ↓21+18
Comments84

Дайджест новостей игровой индустрии: февраль-март

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


Читать дальше →
Total votes 23: ↑16 and ↓7+9
Comments6

Пишем компонент движения для RTS в Unreal engine 4

Reading time9 min
Views58K
image

Привет, меня зовут Дмитрий, я программист. Только что закончил рефакторинг компонента движения кораблей для проекта тактической игры в реальном времени, в которой игроки могут собрать свой собственный космический флот и повести его в бой. Компонент движения переписывался уже три раза, от релиза до начала разработки альфа версии. Было собрано множество граблей, как архитектурных, так и сетевых. Постараюсь подбить весь этот опыт и рассказать вам о Navigation Volume, Movement component, AIController, Pawn.
Читать дальше →
Total votes 30: ↑30 and ↓0+30
Comments25
1
23 ...

Information

Rating
Does not participate
Location
Екатеринбург, Свердловская обл., Россия
Date of birth
Registered
Activity