Как стать автором
Обновить
13
0

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

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

Магические сигнатуры методов в C#

Время на прочтение9 мин
Количество просмотров31K

Представляю вашему вниманию перевод статьи The Magical Methods in C# автора CEZARY PIĄTEK.


Есть определенный набор сигнатур методов в C#, имеющих поддержку на уровне языка. Методы с такими сигнатурами позволяют использовать специальный синтаксис со всеми его преимуществами. Например, с их помощью можно упростить наш код или создать DSL для того, чтобы выразить решение проблемы более красивым образом. Я встречаюсь с такими методами повсеместно, так что я решил написать пост и обобщить все мои находки по этой теме, а именно:


  • Синтаксис инициализации коллекций
  • Синтаксис инициализации словарей
  • Деконструкторы
  • Пользовательские awaitable типы
  • Паттерн query expression
Читать дальше →
Всего голосов 65: ↑64 и ↓1+80
Комментарии70

Вещи, которые я бы хотел знать до начала разработки собственной игры

Время на прочтение6 мин
Количество просмотров27K


Последние два года я в свободное от основной работы время разрабатывал личный проект — игру, которую выпустил в Steam пару месяцев назад. На протяжении всего процесса я делал много ошибок, и вел записи для своего «прошлого я». Этот список может не относиться ни к вашей игре в частности, ни к вашему движку или языку (я использовал Unity и C#). Но я верю, что кому-то эти советы могут помочь. Поехали.
Читать дальше →
Всего голосов 37: ↑26 и ↓11+23
Комментарии24

Как оценить уровень владения английским языком

Время на прочтение4 мин
Количество просмотров126K


На Хабре много статей о том, как самостоятельно изучать английский язык. Но вот вопрос, а как оценить свой уровень при самостоятельном изучении? Понятно, что есть IELTS и TOEFL, но эти тесты почти никто не сдает без дополнительной подготовки и эти тесты, как говорят, оценивают не сколько уровень владения языком, а скорее умение проходить эти самые тесты. Да и использовать их для контроля самообучения будет накладно.

В этой статье я собрал различные тесты, которые проходил сам. При этом я сверяю свою субъективную оценку владения языком с результатами тестов. А также сравниваю результаты между разными тестами.
Читать дальше →
Всего голосов 81: ↑77 и ↓4+91
Комментарии62

PVS-Studio идёт в облака: CircleCI

Время на прочтение11 мин
Количество просмотров2.2K

Picture 2

Мы продолжаем цикл статей по использованию статического анализатора PVS-Studio в облачных CI-системах. Сегодня рассматриваем очередной сервис — CircleCI. В качестве проекта для анализа в этот раз выступит медиаплеер Kodi, в исходном коде которого постараемся найти интересные места.
Читать дальше →
Всего голосов 37: ↑32 и ↓5+27
Комментарии3

Шпаргалка по аббревиатурам C++ и не только. Часть 1: C++

Время на прочтение20 мин
Количество просмотров57K
Когда-то я собеседовался на должность C++ разработчика в одну приличную и даже известную контору. Опыт у меня тогда уже кое-какой был, я даже назывался ведущим разработчиком у тогдашнего своего работодателя. Но на вопросы о том, знаком ли я такими вещами, как DRY, KISS, YAGNI, NIH, раз за разом мне приходилось отвечать «Нет».

Собеседование я с треском провалил, конечно. Но упомянутые аббревиатуры потом загуглил и запомнил. По мере чтения тематических статей и книг, подготовок к собеседованиям и просто общения с коллегами я узнавал больше новых вещей, забывал их, снова гуглил и разбирался. Пару месяцев назад кто-то из коллег небрежно упомянул в рабочем чате IIFE в контексте C++. Я, как тот дед в анекдоте, чуть с печки не свалился и опять полез в гугл.


Читать дальше →
Всего голосов 52: ↑52 и ↓0+52
Комментарии29

Объёмное атмосферное рассеяние света

Время на прочтение31 мин
Количество просмотров29K
image

Если вы прожили на планете Земля достаточно долго, то наверно задавались вопросом, почему небо обычно синее, но краснеет на закате. Оптическое явление, которое стало (основной) причиной этого, называется рэлеевским рассеянием. В этой статье я расскажу, как смоделировать атмосферное рассеяние, чтобы имитировать многие визуальные эффекты, которые проявляются на планетах. Если вы хотите научиться рендерить физически точные изображения чужих планет, то этот туториал определённо стоит изучить.

GIF

Статья разбита на следующие части:

  • Часть 1. Объёмное атмосферное рассеяние
  • Часть 2. Теория атмосферного рассеяния
  • Часть 3. Математика рэлеевского рассеяния
  • Часть 4. Путешествие сквозь атмосферу
  • Часть 5. Атмосферный шейдер
  • Часть 6. Пересечение атмосферы
  • Часть 7. Шейдер атмосферного рассеяния
Читать дальше →
Всего голосов 50: ↑50 и ↓0+50
Комментарии14

Как я почти рейтрейсил в реальном времени в 1997 году

Время на прочтение5 мин
Количество просмотров14K
Я хотел бы поделиться воспоминаниями о своих попытках сделать «3D графический движок» «своими руками» практически в до-интернетную эпоху (он как бы уже где-то там конечно был, но у меня его фактически не было). Никакую Америку открыть не удалось, революции тоже не случилось, но было много старания, мучений и фана. С годами память о многих событиях стирается, исчезают детали, тускнеют впечатления — при многочисленных переездах коробка с дискетами были потеряна и никаких артефактов от описываемых событий не осталось.
Читать дальше →
Всего голосов 41: ↑37 и ↓4+33
Комментарии27

C++ и CMake — братья навек, часть II

Время на прочтение4 мин
Количество просмотров9.5K

Дружба навек


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


В этот раз добавим к нему компилируемую библиотеку, а также поговорим о компоновке модулей друг с другом.


Как и прежде, тем, кому не терпится, могут сразу перейти в обновлённый репозиторий и потрогать всё своими руками.
Читать дальше →
Всего голосов 15: ↑15 и ↓0+15
Комментарии19

Независимый обзор PVS-Studio (Linux, C++)

Время на прочтение5 мин
Количество просмотров16K

Увидел публикацию о том, что PVS таки научился анализировать под Линуксами, и решил попробовать на своих проектах. И вот что из этого получилось.

Читать дальше →
Всего голосов 85: ↑75 и ↓10+65
Комментарии70

Доступное объяснение алгоритма коллапса волновой функции

Время на прочтение9 мин
Количество просмотров36K
Алгоритм коллапса волновой функции (Wavefunction Collapse Algorithm) учит компьютер импровизировать. На входе он получает архетипичные данные и создаёт процедурно генерируемые данные, похожие на исходные.


(Источник)

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


(Источник)

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

Большинство реализаций и объяснений коллапса волновой функции — это полная, оптимизированная по скорости версия алгоритма. Разумеется, все они важны и необходимы, но в них сложно разобраться с нуля. В этом посте я буду объяснять всё понятным я простым языком, сосредоточившись на версии Wavefunction с ограничениями, которую я назвал Even Simpler Tiled Model. Кроме того, я выложил пример реализации ESTM на Github. Код в нём неэффективный и медленный, но очень хорошо читаемый и подробно прокомментирован. Как только вы разберётесь в технологии, лежащей в основе ESTM, то станете ближе к пониманию более сложных версий алгоритма. Если хотите понять алгоритм коллапса волновой функции, то эта статья будет хорошим началом.
Читать дальше →
Всего голосов 56: ↑55 и ↓1+54
Комментарии19

Курс Молодого Геймдизайнера 2: баланс прогрессии и динамики без математики

Время на прочтение8 мин
Количество просмотров24K


Предыдущая статья про баланс персонажей и снаряжения собрала много отзывов и я решил не тянуть с продолжением.

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

Бонусом в конце — несколько ссылок по теме.
Читать дальше →
Всего голосов 42: ↑42 и ↓0+42
Комментарии21

Ошибки, которые не находит статический анализ кода, потому что он не используется

Время на прочтение6 мин
Количество просмотров9.4K
Время от времени читатели наших статей о проверке открытых проектов обращают внимание, что статический анализатор кода PVS-Studio выявляет большой процент ошибок, которые незначительны или вообще не влияют на работу приложения. Это действительно так. Большинство важных ошибок уже поправлены благодаря ручному тестированию, отзывам пользователей и иным дорогим методам. При этом, многие из этих ошибок можно было бы найти ещё на этапе написания кода и исправить с минимальными потерями времени, репутации, денег. В этой статье будет приведено несколько примеров реальных ошибок, которые были бы сразу исправлены, если бы авторы проектов использовали статический анализ кода.

Читать дальше →
Всего голосов 52: ↑48 и ↓4+44
Комментарии44

Курс Молодого Геймдизайнера: как считать баланс персонажей и снаряжения без математики

Время на прочтение6 мин
Количество просмотров55K


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

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

Статья будет полезна тем, кому надо заняться балансом, но не знает с чего начать, а также начинающим геймдизайнерам, которые будут выбирать специализацию. Ну и всем, кто просто интересуется, чем занимаются ГД, когда не придумывают новые виды лутбоксов.
Читать дальше →
Всего голосов 69: ↑67 и ↓2+65
Комментарии38

Создание шейдера травы в движке Unity

Время на прочтение25 мин
Количество просмотров27K

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

Статья описывает поэтапный процесс написания шейдера травы в Unity. Шейдер получает входящий меш, и из каждой вершины меша генерирует при помощи геометрического шейдера травинку. Ради интереса и реализма травинки будут иметь рандомизированные размеры и поворот, а ещё на них будет влиять ветер. Чтобы управлять плотностью травы, мы используем тесселяцию для разделения входящего меша. Трава сможет и отбрасывать, и получать тени.

Готовый проект выложен в конце статьи. В созданном файле шейдера содержится большое количество комментариев, упрощающих понимание.
Всего голосов 53: ↑50 и ↓3+47
Комментарии5

Введение в реверсинг с нуля, с использованием IDA PRO

Время на прочтение5 мин
Количество просмотров25K
Привет, Хабравчане!

Для тех, кто не знает, в своё время я взял на себя ответственность перевести испанский курс Introduccion Al Reversing Con Ida Pro Desde Cero под авторством Ricardo Narvaja на русский язык. Прошло 2,5 года и теперь я могу смело сказать, что курс переведен на русский язык. На данный момент это 67 частей. Но это ещё не всё. В конце 67 части, мы можем увидеть, что нас ждёт продолжение. Сейчас же я бы хотел рассказать, про то как я переводил курс, с чем столкнулся при переводе, что узнал и как всё это было.
Читать дальше →
Всего голосов 36: ↑35 и ↓1+34
Комментарии41

Создаем музыку: когда простые решения превосходят по эффективности глубокое обучение

Время на прочтение9 мин
Количество просмотров27K
Представляю вашему вниманию перевод статьи «Создаем музыку: когда простые решения превосходят по эффективности глубокое обучение» о том, как искусственный интеллект применяется для создания музыки. Автор не использует нейронные сети для генерации музыки, а подходит к задаче, исходя из знания теории музыки, на основе мелодии и гармонии. Другой особенностью статьи является метод сравнения музыкальных произведений на основе матриц самоподобия. Такой подход, конечно, не является исчерпывающим, но он полезен как промежуточный шаг для генерации качественной музыки методами машинного обучения.

Всего голосов 80: ↑74 и ↓6+68
Комментарии37

Медицинская страховка в путешествии: подробная инструкция

Время на прочтение9 мин
Количество просмотров22K


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

Я хочу попробовать обобщить всё то, что должен знать турист о медицинской страховке перед тем, как выезжать за рубеж, и составить что-то вроде подробной памятки:

  • Насколько страховка обязательна и как можно сэкономить.
  • Какие разновидности страховок вообще бывают.
  • Что делать, если ты от души выпил и решил прыгнуть с парашютом в Камбодже.
  • Как не купить репатриацию останков вместо нормальной страховки.
Читать дальше →
Всего голосов 60: ↑58 и ↓2+56
Комментарии41

Unity: бесконечный процедурно генерируемый город, получаемый при помощи алгоритма WFC (коллапс волновой функции)

Время на прочтение7 мин
Количество просмотров26K
Привет, Хабр!

Как законодатели мод по теме Unity на российском рынке предлагаем вам почитать интересное исследование о практическом использовании алгоритма WFC (Wave Function Collapse), построенного по образу и подобию известного принципа квантовой механики и очень удобного при процедурной генерации уровней в играх. Ранее на Хабре уже публиковался подробный рассказ об этом алгоритме. Автор сегодняшней статьи Мариан Кляйнеберг рассматривает алгоритм в контексте трехмерной графики и генерации бесконечного города. Приятного чтения!

Читать дальше →
Всего голосов 46: ↑46 и ↓0+46
Комментарии22

О проектировании гибкой системы способностей персонажей в играх

Время на прочтение3 мин
Количество просмотров11K
Система способностей персонажа пожалуй самая требовательная к гибкости в игре. Невозможно на этапе проектирования предсказать какие заклинания появятся в финальной версии или последующих обновлениях. Этот пост будет о том, как я абстрагировал процесс исполнения способностей.

Сама по себе способность есть ни что иное, как набор действий. Минимальный интерфейс способности состоит из одного метода: «применить», но не всё так просто и о сложностях под катом.

image
Читать дальше →
Всего голосов 22: ↑21 и ↓1+20
Комментарии9

Оптимизация сборки мусора в высоконагруженном .NET сервисе

Время на прочтение16 мин
Количество просмотров31K
Ежедневно в сервисе Pyrus работают десятки тысяч сотрудников из нескольких тысяч организаций по всему миру. Отзывчивость сервиса (скорость обработки запросов) мы считаем важным конкурентным преимуществом, так как она напрямую влияет на впечатление пользователей. Ключевой метрикой для нас является «процент медленных запросов». Изучая ее поведение, мы заметили, что раз в минуту на серверах приложений возникают паузы длиной около 1000 мс. В эти промежутки сервер не отвечает и возникает очередь из нескольких десятков запросов. О поиске причин и устранении узких мест, вызванных сборкой мусора в приложении, пойдет речь в этой статье.


Читать дальше →
Всего голосов 54: ↑54 и ↓0+54
Комментарии28
1

Информация

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