Search
Write a publication
Pull to refresh
18
0
Журат Максим @ChessMax

User

Send message

Что у ECS под капотом

Reading time6 min
Views11K

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

В данной статье я опишу общий принцип "подкапотной" работы ECS фреймворков и некоторые проблемы, с которыми столкнулся при написании своего.

Когда я только начал узнавать про ECS, всё это казалось очень красивым, но только на бумаге, и нужно было начать что-то на нём реально писать, чтобы на собственном опыте проверить всё, о чём пишут. Успел попробовать несколько фреймворков на разных движках и языках. В основном это был великолепный entt, который я прикручивал к Godot, и LeoECS на Unity. Родной Unity фреймворк я пробовать не стал, потому что, когда начинал своё знакомство, API у него менялось чуть ли не раз в месяц, что меня отпугнуло. 

В общем, получил достаточно опыта в использовании ECS на практике, но меня всё никак не покидал вопрос о том, как же оно работает под капотом. Есть пара хороших блогов о разработке ECS (от автора entt - https://skypjack.github.io/ и от автора flecs - https://ajmmertens.medium.com/), но все они давали мне недостаточно понимания как это можно сделать самому. В итоге я решил что лучший способ что-то понять — сделать это самому, поэтому мне пришлось писать свою ECS, как завещал старина Бендер =)

Читать далее

Язык программирования типов, скрытый в TypeScript. Utility Types

Reading time5 min
Views16K

TypeScript — это язык, расширяющий JavaScript, добавляя в последний типизацию. Правда, так как TypeScript не имеет runtime-а (почти), он транслируется в JavaScript, в процессе чего, вся типизация теряется. Такую типизацию можно назвать лишь инструментом статического анализа кода. Тем не менее — это очень мощный инструмент. К тому же, помимо проверки кода, типизация также и документирует его.

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

Читать далее

Игра мечты, которую я делаю вместе с женой (Часть 0)

Reading time3 min
Views34K

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

Читать далее

Unity «Best» Practices

Reading time11 min
Views28K

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

Что такое AssetPostprocessor и чем Animation отличается от Animator? Почему не стоит доверять OnTriggerExit и зачем вам CanvasGroup? Чем хорош GameObject.Find и как вас спасут Property?

Далее в статье обсудим это, а также другие «особенности» работы с движком Unity.

Читать далее

Оформляем README-файл профиля на GitHub

Reading time14 min
Views263K

Летом 2020 года GitHub позволила пользователям создавать персональные README-файлы и с их помощью кастомизировать свои профили. Сама платформа при создании подобного файла предлагает уже готовый шаблон, в который можно вписать свои данные. Но о какой кастомизации может идти речь, если у всех будут одинаково оформленные профили? За почти два года сообщество придумало множество различных способов выделиться и особенно оформить свою страницу на GitHub.

Читать далее

Как правильно подобрать момент публикации страницы игры в Steam

Reading time3 min
Views4.8K

Ради бога, не объявляйте о своей игре и на заводите для неё страницу в Steam, как только приступите к разработке.

В прошлом году я много размышлял о наилучшей стратегии объявления новой игры. Похоже, на это есть две противоположные точки зрения. С одной стороны, Майк Роуз выступил на GDC с подробным докладом о том, как эффективно запускать страницу: Steam Wishlists GDC.

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

С другой стороны, специалист по маркетингу Крис AdventureMtn написал статью «Да, вам нужно прямо сейчас создать страницу в Steam», в которой он, по сути, рекомендует опубликовать страницу, как только вы начнёте писать об игре в Твиттер, даже когда в ней нет финальной графики и т. п.: Yes you need to create a Steam page right now.
Читать дальше →

Самый крутой бесплатный ресурс по обучению программированию с нуля

Reading time3 min
Views93K
image


Куинси Ларсон, основатель бесплатной образовательной платформы для программистов freeCodeCamp

Куинси Ларсон


Путь Куинси Ларсона в программирование был замысловатым. Он 6 лет был директором школы и вдруг ему захотелось повысить эффективность системы образования, поэтому стал учиться программированию. Куинси Ларсон проанализировал, какие были учебные программы (буткэмпы) на тот момент и понял, что ни о какой доступности и открытости нет речи, и тогда решил сделать свой инклюзивный-диверсити-бесплатный образовательный лагерь в 2014 году. Куинси Ларсон хотел помочь начинающим программистам, чтобы те не шли таким корявым путем как он сам. Благодаря freeCodeCamp теперь никто больше не должен есть стекловату и смотреть в бездну. Узнав про мотивацию Куинси Ларсона, я обрадовался, ибо не один я такой странный и хочу собрать концентрат, Ontol, самых полезных бесплатных материалов в одном месте.

Помимо работы над freeCodeCamp, Куинси Ларсон борется за свободный интернет, контрибьютит в open-source и играется со своими двумя детишками.

freeCodeCamp


Образовательной платформой FreeCodeCamp пользуются 350 000 студентов в день из 160 стран. За 2021 год студенты провели за обучением 2,1 млрд минут или 4000 лет. 217 000 учеников считают себя выпускниками этой школы, 40 000 получили работу ИТишника впервые, после обучения тут.

А еще, говорят, что можно зайти на этот сайт с полным 0, а выйти уже трудоустроенным (дело за малым — разрешение на работу). Ах да, надо же знать английский (или очень хотеть его выучить).

На русском языке про FreeCodeCamp нет странички в Википедии (хотя есть на сербском, албанском, португальском, манипури, румынском, малаяльском языках), зато есть сотни более кривых «пересказов» их курсов на русском языке, но не бесплатно, а за 150к+
Читать дальше →

Как я самостоятельно раскрутил закрытую группу в Facebook и что из этого получилось

Reading time9 min
Views6.3K

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

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

Читать далее

Как инди-разработчику найти художника для своей игры и сэкономить $500

Reading time5 min
Views10K


Моим первым в жизни «фрилансом» была роспись самоваров на заказ. Тогда я еще не знала, что фриланс называется фрилансом, правки бывают бесконечными, а заказчик может кинуть. Я хотела бы знать, как сотрудничают нормальные люди, в тот момент, когда бесплатно создавала эскизы с «Астана-Байтерек» и без предоплаты расписывала третий поднос подряд.

Вот, кстати, самовары, если интересно (простите за качество фото)
Один из самоваров, что я расписывала:


Еще вместе с самоваром обычно поднос и чайник берут. Чайника не нашла, а поднос вот:


А мой самоварчик в процессе росписи:


Недавно нашла самовар, который расписала под космос (для себя, заказчики скучные, им хохлому подавай). Жаль, правда, что недоделала его.



Я бы хотела, чтобы те, кто работают на фрилансе / с фрилансерами, увидели этот пост. Перевод ниже про сотрудничество инди-разработчика и художников-иллюстраторов, но в нём есть общие этические правила, которые сгодятся для фриланса в целом.

Еще я веду канал в Telegram: GameDEVils, делюсь там клевыми материалами про геймдизайн, разработку и историю игр.
Читать дальше →

Базовые подходы к парсингу

Reading time4 min
Views33K

Вступление

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

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

Хочу подметить, что хоть в моих жилах течет дотнет, в этом примере я буду использовать Node JS, потому что так быстрее, и удобнее в плане парсинга. Чем именно удобней - я расскажу позже в статье.

Можем ли мы спарсить?

Да, к сожалению (или счастью) веб - он не однообразен, и каждый ресурс может быть уникален по своему, но в нашем деле, ключевым моментом будет то, есть ли на этом ресурсе Server-Side Rendering (SSR), или там Client-Side Rendering и важная для нас информация подтягивается позже с помощью JS.

К примеру, нативные апки на React или тот же Angular by default есть CSR. И что бы прикрутить там SSR нужно порой очень сильно попотеть.Тем не менее, большинство сайтов с топ серч результатов любой поисковой системы будут поддерживать именно SSR, потому что таков мир SEO-оптимизаций.

Читать далее

Использование NavMesh для навигации ИИ в Unity

Reading time12 min
Views55K

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

Читать далее

Big O нотация в Swift

Reading time3 min
Views14K

Данная статья поможет начинающим iOS разработчикам разобраться в производительности алгоритмов в Swift.

Обозначение Big O нотация (или просто Big O) — это способ оценки относительной производительности структуры данных или алгоритма, обычно по двум осям: времени и пространству.

Читать далее

Как получить онлайн магистратуру по CS от американского университета по цене кофе

Reading time9 min
Views38K


Поговорим о: 1) том как я попал в магистратуру по Computer Science от Georgia Tech пока жил и работал в Воронеже, 2) требованиях к поступлению, 3) стоимости, 4) моих впечатлениях от курсов, которые мне читают, 5) почему я все еще продолжаю учиться после того, как начал работать в FAANG и переехал в UK.

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

О шаблонах в С++, чуть сложнее

Reading time40 min
Views39K

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

Потрогать здесь

Android Studio. Kotlin. Сохранение файла в общедоступной папке Download

Reading time6 min
Views20K

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

Виной всей этой сложности - множество факторов. Языковой барьер: русский - английский, Kotlin - Java. Различия в способах копирования в разных версиях Android. Разобраться было не просто. В итоге - пишу этот гайд, чтобы облегчить жизнь тем, кто пойдет за мной следом...

Читать далее

Как обрабатывать состояния загрузки и ошибки с помощью StateNotifier и AsyncValue во Flutter

Reading time8 min
Views4.6K

Состояния загрузки и ошибки очень часто встречаются в приложениях, работающих асинхронно.

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

Читать далее

Перспективные матрицы в графическом API или дьявол прячется в деталях

Reading time10 min
Views63K
В определённый момент у любого разработчика в области компьютерной графики возникает вопрос: как же работают эти перспективные матрицы? Подчас ответ найти очень непросто и, как это обычно бывает, основная масса разработчиков бросает это занятие на полпути.

Это не решение проблемы! Давайте разбираться вместе!
Читать дальше →

3D своими руками. Часть 3: чем дальше в лес, тем меньше дом

Reading time28 min
Views15K

В этой статье мы узнаем что такое камера в 3D пространстве (матрица вида) и как она работает, узнаем как сделать те объекты что дальше - меньшего размера (матрица перспективной проекции). 

Мы продолжим работу над кодом, который у нас получился в финале 2-й части.  И начнем с обсуждения камеры в пространстве (м.б. в 3D игре).

Продолжить обучение

Визуальный редактор логики для Unity3d. Часть 3

Reading time72 min
Views3.9K

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

Добро пожаловать в мир Editor Extensions

LJV: Чему нас может научить визуализация структур данных в Java

Reading time26 min
Views30K

Эта статья является пересказом моего доклада на Java-конференции SnowOne 2021 года. LJV — проект, созданный в 2004 году как инструмент для преподавания языка Java студентам. Он позволяет визуализировать внутреннее устройство структур данных. В этом докладе я запускаю LJV на разных структурах (от String до ConcurrentSkipListMap) в разных версиях Java и разбираю, что там внутри, как оно менялось от версии к версии, и как это всё работает.


image

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

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity

Specialization

Mobile Application Developer
Senior
Flutter
Flutter Bloc
MobX
Mobile
Development of mobile applications