Search
Write a publication
Pull to refresh
4
0
Send message

11 глупых вопросов ортопеду и массажистке о работе за компьютером и не только

Reading time14 min
Views42K
image

У большинства читателей Хабра сидячая работа. 8 часов в сутки на неудобном стуле в неправильной позе могут быстро испортить осанку и добавить проблем с позвоночником и здоровьем в целом. Как устроить всё так, чтобы потом не было больно, вашей дорогой редакции рассказали массажистка Анна Малицкая (collaps) и ортопед Иван Быркэ.
Читать дальше →

Руководство по Git. Часть №1: все, что нужно знать про каталог .git

Reading time4 min
Views61K



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

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

Это первая часть гайда по Git из блога Pierre de Wulf в переводе команды Mail.ru Cloud Solutions
Читать дальше →

Как подготовить игру к портированию на ПК и консоли

Reading time9 min
Views17K
Преимущества кроссплатформенных игр уже долгое время обсуждаются в кругах геймеров, но мало освещаются в среде разработчиков. Существует не так много статей о базовых вещах, необходимых для создания кроссплатформенной игры.

Тем не менее, кроссплатформенность сейчас находится на подъеме. Появляется все больше и больше игр, обладающих этим свойством. Fortnite, Call of Duty, Street Fighter ― все они разных жанров, по-разному реализованы, но в той или иной степени обладают функциями кроссплатформенности.

Андерсен Хоровиц в своем блоге писал о том, что игры исторически сегментировались различными платформами, но теперь с ростом популярности кроссплатформменности количество мультиплеерных игр тоже растет все больше и больше.

Зачем нужно делать игру кроссплатформенной?

Для игроков это здорово: не нужно выбирать, на каком устройстве запускать игру, ― можно беспрепятственно играть с друзьями, не беспокоясь о том, есть ли они в базе игроков.

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



Отлично, так давайте портировать нашу игру на несколько платформ!

Конечно, звучит классно, почему бы и нет. Вот только…

Во «Властелине колец», если вы помните, на совете Элронда герои тоже обсуждали, мол, давайте же просто сделаем, что должны, на что Боромир сказал:



А все потому, что Боромир знает: создание полноценной кроссплатформенной игры ― это не так-то просто.

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

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

Шаблон проектирования Entity-Component-System — реализация и пример игры

Reading time22 min
Views85K
image


В этой статье я хочу обсудить шаблон проектирования «сущность-компонент-система» (Entity-Component-System, ECS). По этой теме можно найти много информации в Интернете, поэтому я не буду глубоко вдаваться в объяснения, а больше расскажу о моей собственной реализации.

Часть 1: Реализация шаблона Entity-Component-System на C++


Начнём сначала. Полный исходный код моей реализации ECS можно найти в репозитории на github.

Entity-Component-System, в основном используемый в играх — это шаблон проектирования, обеспечивающий огромную гибкость в проектировании общей архитектуры программного обеспечения[1]. Такие большие компании, как Unity, Epic или Crytek используют этот шаблон в своих фреймворках, чтобы предоставить разработчикам очень богатый возможностями инструмент, с помощью которого они могут разрабатывать собственное ПО. Прочитать более широкое обсуждение по этой тематике можно в этих постах [2,3,4,5].

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

Reading time6 min
Views27K


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

Настройка UEFI-загрузчика. Самое краткое руководство в мире

Reading time6 min
Views586K

Как устроена загрузка современных ОС? Как при установке системы настроить загрузку посредством UEFI, не утонув в руководствах и ничего не сломав?


Я обещал "самое краткое руководство". Вот оно:


  1. Создаём на диске таблицу разделов GPT
  2. Создаём FAT32-раздел на пару сотен мегабайт
  3. Скачиваем из интернета любой UEFI-загрузчик
    (нам нужен сам загрузчик, это один бинарный файл!)
  4. Переименовываем и кладем этот файл на созданный раздел по адресу /EFI/Boot/bootx64.efi
  5. Создаём текстовый конфиг, кладем его там, где загрузчик ожидает его увидеть
    (настройка и местоположение конфига зависят от конкретной реализации загрузчика, эта информация доступна в интернете)
  6. После перезагрузки видим меню загрузчика
    (Если на диске установлена Windows 8 или 10 — с большой вероятностью это руководство сокращается до пунктов 3 — 5.)

TL;DR не надо прописывать путь к загрузчику в новых загрузочных записях UEFI — надо файл загрузчика расположить по стандартному "пути по-умолчанию", где UEFI его найдет, и вместо загрузочного меню UEFI пользоваться меню загрузчика, которое гораздо проще и безопаснее настраивается

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

Стек технологий Shiro Games

Reading time10 min
Views8.4K

Наш игровой движок Heaps.io и набор инструментов и технологий, на котором он основан, являются результатом опыта, накопленного за двадцать лет, посвященных созданию игр: сначала в компании Motion-Twin (создатели Dead Cells), а с 2012 года в Shiro Games (Evoland, Northgard и Darksburg).
Названные игры (2D и 3D) были созданы с использованием стека библиотек и инструментов, исходный код которых был открытым с самого начала, и которые продолжают развиваться и поддерживаться.
Так как меня часто спрашивают о том, как мы создаем игры, то я подумал, что было бы неплохо поделиться подробностями обо всех элементах технологического стека Shiro Games. Он прекрасно подходит для наших задач, так что возможно он может подойти и другим компаниям.


image

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

Реалистичный боевой ИИ для 2D-игры

Reading time6 min
Views14K
image

Хотя Close Quarters преимущественно является многопользовательской игрой, в ней всё равно должны присутствовать сложные ИИ-боты, чтобы игроки продолжали играть при плохом Интернет-соединении или отсутствии других онлайн-игроков. Кроме того, боты играют важную вспомогательную роль в некоторых режимах игры. Поэтому они должны вести себя правдоподобно и демонстрировать набор сложных поведений, в том числе использование укрытий, применение предметов в подходящее время, обход с флангов, бросание гранат и убегание от них.

Окружение и ограничения


Игровое окружение состоит из полигонов. Большинство полигонов блокирует движение, область видимости и стрельбу, однако есть и «низкие» полигоны, только блокирующие движение. Окружение плотно заставлено препятствиями и укрытиями.

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

Создание roguelike в Unity с нуля: генератор подземелий

Reading time13 min
Views18K
image

На этот раз мы погрузимся в реализацию алгоритма генератора подземелий. В прошлой статье мы создали первую комнату, а теперь сгенерируем остальной уровень подземелья.

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

Помните созданный нами класс Position? Вообще-то в Unity уже имеется встроенный класс, выполняющий точно такие же функции, но с немного более качественным управлением — его проще объявлять и обрабатывать. Этот класс называется Vector2Int. Поэтому перед началом мы удалим из MapManager.cs класс Position и заменим каждую переменную Position на переменную Vector2Int.


Это же надо проделать в нескольких местах скрипта DungeonGenerator.cs. Теперь давайте приступим к остальной части алгоритма.
Читать дальше →

Поднимаем свой полноценный игровой Minecraft сервер с мини-играми. Часть 2. Устанавливаем карту для лобби сервера

Reading time5 min
Views31K


Часть 1. Выбираем и устанавливаем сервер

Часть 3. Устанавливаем мини-игры

Посмотреть, что в итоге получилось у меня: mc.piratebayserver.net
По любым вопросам пишите в Discord.

После публикации первой части статьи по установке своего Minecraft сервера, ко мне обратился один читатель Хабра. В письме он написал, что по неосторожности показал мою статью своим детям и ему пришлось пообещать сделать все, как написано. Теперь я, как отец двух детей, просто не имею морального права не закончить серию этих статей. Поэтому поехали.
Читать дальше →

Поднимаем свой полноценный игровой Minecraft сервер с мини-играми. Часть 1. Выбираем и устанавливаем сервер

Reading time5 min
Views84K


Часть 2. Устанавливаем карту для лобби сервера

Часть 3. Устанавливаем мини-игры

tl;dr;
И так, что будет сделано в конце всего туториала?

  • создадим основной сервер, так называемое лобби — место, куда попадают все игроки, только что подключившиеся к серверу
  • запустим второй сервер, на котором установим популярную мини-игру Murder Mystery
  • установим и настроим прокси сервер, который соединит игровой клиент и запущеные серверы таким образом, что игроки не заметят, что они переходят с одного сервера на другой
  • создадим игрового персонажа, который будет перенаправлять нас на сервер с мини-игрой
  • Установим еще одну популярную мини-игру SkyBlock
  • Добавим внутриигровое меню на основе предметов инвентаря игрока
  • Добавим внутриигровые деньги
  • Создадим магазин
  • … и многое другое

Посмотреть, что в итоге получилось у меня: mc.piratebayserver.net
По любым вопросам пишите в Discord.

Поехали!
Читать дальше →

Вирус и антибиотики: нежный ликбез для паникующих

Reading time12 min
Views112K

Эта няшка — пушистый мимивирус с размером кода 2,5 Мегабазы (бит четвертичной системы)

Мы тут мониторили каналы, чатики и форумы по поводу текущей обстановки в разных странах. Я просто офигевал от того, что люди могут придумать в панике и безграмотности. Поэтому ликбез. Не про коронавирус. Просто про вирусы. Маленьких «нанороботов». И антибиотики. Которые не надо кушать просто так.

Ликбез мы подготовили вместе с инфекционистом Викторией Валиковой, руководящей клиниками в Гватемале и Никарагуа. Естественно, он полон грубых упрощений.

Кто такие вирусы?


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

  1. Переработкой клеток на свои копии.
  2. Путешествиями в поиске новых клеток.

Про «форму жизни» есть холивар, потому что вирион (транспортное состояние вируса, частица без клетки) — это просто кусок кода ДНК или РНК + оболочки + некий аналог порта-коннектора. В этом состоянии вирус почти ничем не напоминает жизнь, а, скорее, похож на набор инструкций. И ведёт себя именно, как распечатка инструкций: пока не найдётся кто-то, кто их выполнит, они неактивны.

Если инструкция говорит вам, как использовать ксерокс, чтобы самоскопироваться, можно ли считать её живой?
Читать дальше →

Методы организации взаимодействия между скриптами в Unity3D

Reading time10 min
Views152K

Вступление


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

Unity3D: Автоматический агрегатор скриптов-менеджеров

Reading time4 min
Views3.3K

Вступление


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

Задачи


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

Что в Белизне тебе моей или Справочное пособие по гипохлориту натрия («хлорке»)

Reading time31 min
Views233K
Не передать, насколько мне приятно это писать. Данная статья полностью профинансирована подписчиками канала LAB66. Ни один производитель описанных в тексте средств -  своего участия не проявил, так что никакой скрытой рекламы, чиcтый альтруизм и потребительский интерес :)

Сегодня читаем о самом простом, самом доступном и самом действенном антисептике — про гипохлорит натрия (он же «Белизна»). Совместимость с различными материалами, техника безопасности, свойства и эффективность не только против коронавируса, но и против страшной плесени и ее микотоксинов. В качестве «вишенки» — контрольная закупка магазинных отбеливателей и оценка их состава. Чтобы узнать как в эпоху пандемии нас дурят производители бытовой химии и прочий «менеджерский брат» — идем под кат. И обязательно закидываем в закладки. Эта информация пригодится еще не раз ;)


Даешь нормальную Белизну!

Реализация эффекта акварели в играх

Reading time10 min
Views5.9K
image

Введение


Когда в январе 2019 года мы начали обсуждать нашу новую игру tint., то сразу решили, что важнейшим элементом будет эффект акварели. Вдохновлённые этой рекламой Bulgari, мы понимали, что реализация рисования акварелью должна соответствовать высокому качеству остальных ресурсов, которые мы планировали создать. Мы обнаружили интересную статью исследователей из Adobe(1). Описанная в ней техника создания акварели выглядела замечательно, а благодаря своей векторной (а не пиксельной) природе она могла работать даже на слабых мобильных устройствах. Наша реализация основана на этом исследовании, мы изменили и/или упростили отдельные его части, потому что наши требования к производительности были другими. tint. — это игра, поэтому кроме самого рисования нам нужно было в одном кадре рендерить всё 3D-окружение и выполнять игровую логику. Также мы стремились к тому, чтобы симуляция выполнялась в реальном времени и игрок сразу видел нарисованное.
Читать дальше →

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

Reading time8 min
Views257K

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


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

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

Как я изготовил респиратор KN95 в домашних условиях из подручных материалов. Подробная инструкция

Reading time4 min
Views138K
На фоне всей этой ситуации с коронавирусом, неделю назад я решил приобрести несколько респираторов. Дома у меня был один, KN95, класса ffp1, я хотел прикупить еще несколько с выпускным клапаном и повыше классом. Но обойдя несколько строительных магазинов, я не нашел там вообще ничего – все раскупили еще месяц назад.

В итоге я решил направить усилия в другую сторону и делать респиратор своими силами из подручных материалов.

Нормальную инструкцию по изготовлению респиратора в интернете я не нашёл. Была только статья на Хабре, как изготовить хирургическую маску и еще ролики на ютубе как пошить маску из ткани.

Взвесив свои возможности, я понял, что респиратор с выпускным клапаном я в домашних условиях изготовить не смогу. Из подручных материалов нормальный клапан изготовить было нереально. Была мысль напечатать на 3Д принтере, но т.к. нужно было делать чертеж, экспериментировать с материалами, а это все время, я от этой затеи отказался.
Процесс изготовления респиратора

Как разрабатываются моды для Unity-игр: внедряемся в код игры

Reading time15 min
Views23K

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


В этой статье мы рассмотрим, какие методы используется для того, чтобы игра, написанная на Unity, могла запускать сторонние моды: модификации библиотек игры и самого движка, подмена адресов в таблице импорта dll, вмешательство в загрузку Mono Runtime и другие.


Освободи свой Android — алаверды

Reading time5 min
Views34K

О чём это?


Данная статья написана в качестве продолжения статьи Освободи свой Android. Зачем? Очень просто — та статья очень подробно и хорошо описывает, как перешить смартфон на LineageOS. Но она просто требует продолжения о том, как потом с этим перешитым смартфоном жить. Некий отчёт из реальной жизни просто необходим. Вот такой отчёт я и хочу здесь предоставить.
Читать дальше →

Information

Rating
Does not participate
Registered
Activity