Pull to refresh
2
0
Станислав @ArtStea1th

Wargaming, WoT, Computer game developer

Send message

Паттерн конечные автоматы для Ash Entity System фреймворк

Reading time10 min
Views8.1K
Два года назад познакомился с замечательнейшим фреймворком для разработки игр на Actionscript Ash (почти сразу после знакомства с ним, пришло понимание, что фреймворк подойдет под любой язык. А еще чуть-чуть позже появились порты фреймворка под другие языки — на момент написания перевода имеется 7 штук). Некоторое время распирало желание поделиться находкой с русскоязычным сообществом, пока меня не опередили переводом на Хабре. Теперь вдогонку хочу выложить перевод касательно реализации почти незаменимого паттерна Finite-State Machine для Ash Entity System фреймворка.
Подробности
Total votes 4: ↑3 and ↓1+2
Comments1

Что такое Entity System Framework и зачем он нужен в геймдеве?

Reading time18 min
Views50K
На Хабре уже есть очень много интересных статей про создание игры с нуля, но мало статей, описывающих что делать, чтобы своя любимая поделка не превратилась во Франкенштейна и дошла до вменяемого состояния. Автор оригинальной статьи рассказывает, как эволюционировал код игрового движка от кучи хлама в основном цикле к продуманной, расширяемой архитектуре, использующей Entity Component System. В статье много кода, который почти весь часто повторяется — но я не стал его выбрасывать, поскольку с ним будет понятнее, какие изменения вносит автор и как это отражается на всей структуре. Статья рассчитана на новичков, вроде меня, которые уже настрочили несколько «гениальных» прототипов, но теперь не знают, как разобраться в их коде.
Читать дальше →
Total votes 19: ↑19 and ↓0+19
Comments12

Unity, ECS и все-все-все

Reading time7 min
Views107K


Сколько уже было мануалов "Как сделать игру на Unity за 3 часа", "Делаем Counter-Strike за вечер" и т.п.? Низкий порог входа — это, несомненно, главный плюс и минус Unity. Действительно, можно накидать “ассетов”, дописать несколько простых “скриптов”, обмотать синей изолентой и это даже будет как-то работать. Но когда проект обрастает игровыми механиками, сложной логикой поведения, то проблемы при подобном подходе нарастают как снежный ком. Для внедрения новых механик требуется переписывание кода во многих местах, постоянная проверка и переделывание префабов из-за побившихся ссылок на компоненты логики, не говоря уже об оптимизации и тестировании всего этого. Разумеется, архитектуру можно продумать изначально, но на практике это всегда недостижимая цель — дизайн-документ довольно часто меняется, какие-то части выкидываются, добавляются абсолютно новые и никак не связанные со старой логикой поведения. Компоненты в Unity — это шаг в правильном направлении в виде декомпозиции кода на изолированные блоки, но особенности реализации не позволяют достичь необходимой гибкости, а самое главное, производительности. Разработчики придумывают свои фреймворки и велосипеды, но чаще всего останавливаются на ECS (Entity Component System). ECS – одно из решений, продолжающее идею компонентной модели Unity, но придающее ей ещё больше гибкости и сильно упрощающее рефакторинг и дальнейшее расширение приложения новым функционалом без кардинальных изменений в текущем коде.

Читать дальше →
Total votes 27: ↑26 and ↓1+25
Comments30

Как и почему мы написали свой ECS

Reading time13 min
Views37K
В прошлой статье я описал технологии и подходы, которые мы используем при разработке нового мобильного fast paced шутера. Т.к. это была обзорная и даже поверхностная статья — сегодня я копну глубже и подробно расскажу, почему мы решили написать собственный ECS-фреймворк и не стали использовать существующие. Будут примеры кода и небольшой бонус в конце.

Читать дальше →
Total votes 37: ↑36 and ↓1+35
Comments48

2021: основные настройки

Reading time7 min
Views13K
2020 год смёл все прогнозы: кроме своих базовых опций, он нехило приложился к бизнесу. Пострадали не только «официально пострадавшие» отрасли: экономика штука взаимосвязанная, поэтому штормило всех, у кого-то был драматический рост, у кого-то не менее драматическое падение. Айтишникам повезло чуть больше остальных: мы входим в 2021 потрепанными, но живыми и готовыми к изменениям и новым вызовам. Этот пост — небольшой традиционный прогноз того, что нас ждёт в новом году. В этот раз поговорим о том, что произойдёт с нашими специалистами в ближайшем будущем.

Малый бизнес выходит из 2020 в 2021
Читать дальше →
Total votes 22: ↑15 and ↓7+18
Comments8

COBOL — древний код, который управляет вашими деньгами

Reading time19 min
Views89K
image

Язык программирования COBOL старше Игоря Николаева. Люди, умеющие им пользоваться, часто того же возраста. Он лежит в основе целой финансовой системы и его нельзя оттуда убрать. Мы расскажем о том, как компьютерный язык управляет финансовой жизнью мира.

Когда Томас начинал программировать, на дворе стоял 1969 год. Он был обычным парнем, только что выпустившимся из старшей школы в Торонто, не имея особых целей в жизни. Его отец был плотником, но в двери его семьи постучалась удача: оказалось, что руки у Томаса растут не из того места. «Мой отец знал, что я даже не смогу приколотить одну доску к другой», — смеётся он.

Поэтому его мать предложила нечто странное и новомодное: как насчёт… программирования компьютеров?

В 1969 году компьютеры всё ещё были странными новыми диковинками размером с большой шкаф. Но по всему миру компании начали понимать, что эти устройства бесценны для всех задач, требующих мгновенных бухгалтерских расчётов, например, подсчёта зарплат. Вакансии предлагались любому, кто хотя бы немного умел кодить. Поэтому Томас нашёл «небольшую школу-однодневку» в деловом центре Торонто и за следующие два месяца изучил самый популярный на то время компьютерный язык: COBOL (Common Business-Oriented Language).
Читать дальше →
Total votes 24: ↑20 and ↓4+25
Comments66

Как увидеть ℼ? Нужно швырнуть ℼ в стену

Reading time2 min
Views48K
Лучший способ объяснить школьникам и самому себе, что такое фазовое (конфигурационное) пространство.

image


Дано: Два блока массой 1 кг и 100 (10 000, 1 000 000,… 100x) кг. Трение в системе отсутствует, удары абсолютно упругие (потерь энергии нет). Более массивный блок ударяет менее массивный и тот отскакивает от него, а потом от стенки слева. Справа стены нет, тела могут двигаться в бесконечность.

Вопрос: Сколько столкновений совершит маленький блок, пока система не придет в состояние, когда столкновения невозможны (скорость маленького тела меньше скорости большого, двигающегося в бесконечность)?

Ответ невероятен:

image


В очередной раз поражаюсь изящности объяснений от 3Blue1Brown. Предлагаю читабельный конспект с небольшими сокращениями и дополнениями.
Total votes 163: ↑154 and ↓9+197
Comments111

Хеш-функции на основе клеточных автоматов

Reading time3 min
Views4.9K

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

Читать далее
Total votes 10: ↑8 and ↓2+13
Comments8

Вам не нужны юнит-тесты

Reading time7 min
Views28K

Да, вы не ослышались – именно так! В IT-сообществе прочно укоренилось мнение, что все эти тесты вам хоть как-то помогают, но так ли это на самом деле? Вы сами пробовали мыслить критически и анализировать это расхожее мнение? Хипстеры придумывают кучу парадигм – TDD, BDD, ПДД, ГИБДД – лишь чтобы создать иллюзию бурной деятельности и хоть как-то оправдать свою зарплату. Но задумайтесь, что будет, если вы (либо ваши программисты) начнете все свое время уделять исключительно написанию кода? Для тестирования есть отдельное направление и целые подразделения. Вы же не заставляете программистов писать требования, так? Тогда почему они должны писать тесты? Всех согласных и несогласных прошу проследовать внутрь поста, где я вам наглядно покажу, что юнит (и интеграционные) тесты – великое зло!

Проследовать
Total votes 72: ↑41 and ↓31+25
Comments193

Энтузиаст добавил в ретроконсоль трассировку лучей

Reading time2 min
Views15K

Разработчик и энтузиаст Бен Картер добавил в Super NES аппаратный трассировщик лучей. Напомню что самой консоли уже 30 лет.

Читать далее
Total votes 30: ↑30 and ↓0+30
Comments23

Как я древо семьи строил

Reading time7 min
Views22K

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

Читать далее
Total votes 19: ↑18 and ↓1+24
Comments82

15 лучших наборов данных для обучения чат-бота

Reading time4 min
Views17K
Чтобы быстро решать вопросы пользователей без вмешательства человека, эффективный чат-бот требует огромного количества обучающих данных. Однако основное узкое место в разработке чат-бота — это получение реалистичных, ориентированных на задачи диалоговых данных для обучения этих систем с помощью методов машинного обучения. Специально к старту нового потока курса «Машинное обучение» делюсь с вами списком лучших наборов данных разговоров из чатов, разбитых на вопросы и ответы, данные службы поддержки клиентов, диалоговые данные и мультиязычные данные.


Приятного чтения!
Total votes 14: ↑14 and ↓0+14
Comments2

Красота, которая не спасла программиста

Reading time8 min
Views129K
«За что тебя приняли, за то тебя и уволят», гласит старинная мудрость. Меня позвали на этот завод для аудита учета, информационной системы, кода, процессов и т.д. Но начали с того, что у них – плохой программист. Стандартный, заводской, ужасный.

Завод создавал красивые продукты. И сам был красивый. Реально красивый – видимо, в проектировании здания участвовали те же дизайнеры, что рисуют продукцию. В цехах – тоже красота и гармония. Чистота, порядок, всё на своих местах. А главное – весь производственный процесс красиво автоматизирован.
Читать дальше →
Total votes 112: ↑99 and ↓13+119
Comments250

Как приоритизировать фичи в продукте

Reading time4 min
Views6.1K

Приоритизация — секретный ингредиент?


Согласно определению из Википедии: «Приоритизация — понятие, показывающее важность, первенство. Например, приоритет действий определяет порядок их выполнения во времени»
Из определения становится понятно, что основная цель приоритизации — понять, «что важнее чего».

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

Но что делать когда задач больше?

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

Петр выходит из переговорки держа под мышкой свой ноутбук. Облегченный выдох, настроение приподнятое. Только что у Петра закончилось многочасовое совещание с командой по генерации идей и задач на следующий квартал. По началу конечно шло тухло, но вскоре у команды случилось прозрение и идеи полились рекой. “Мы обречены на успех” — подумал Петр, придя на свое место. Теперь осталось только выбрать с чего же начать победоносное шествие. И тут уже энтузиазм заметно падает перед списком:

1) A/B тест лендинга 1 и лендинга 2

2) Дизайн дашборда

3) Интеграция CRM для отдела продаж

4) Добавить базу знаний для пользователей
………

27) Welcome бонус при регистрации пользователя

Что же первое взять в работу? А второе? Ну дальше? Почему не наоборот?

image

Разумеется, реализовать их все вряд ли получится. Все упирается либо во время, либо в деньги. Но как правильно оценивать и отсеивать фичи?

Существует различные подходы к оценки той или иной задачи. Ниже разберем основные из них.
Читать дальше →
Total votes 9: ↑7 and ↓2+12
Comments8

За что получает деньги наемный работник? Не понимаете? Сейчас поймете

Reading time4 min
Views151K
«За что я плачу тебе деньги?» — обычный вопрос работодателя работнику, причем саркастический, как правило.

«За что я тут корячусь на тебя?» — столь же обычный вопрос работника к работодателю.
Разобраться, за что же действительно работодатель платит деньги наемному работнику, поможет моя собственная теория, закодированная в десять букв – «ПЗП – ПЗС – ПЗПИ»

Читать дальше →
Total votes 178: ↑174 and ↓4+226
Comments888

Анализатор C++ на первом курсе: миф, иллюзия или выдумка?

Reading time13 min
Views10K
Для программистов настали тяжёлые времена. Хотя Утечка Памяти была уничтожена valgrind-ом, оставшиеся силы UB преследовали программистов по всей галактике.

Избегая встречи с грозными знаковыми переполнениями, группа борцов за свободу, ведомая Кириллом Бриллиантовым, Глебом Соловьевым и Денисом Лочмелисом, обустроила новый секретный репозиторий.

Тёмная владычица UB неинициализированная переменная, одержимая желанием сломать все программы галактики, разослала тысячи раздражающих ошибок в самые далекие уголки космоса…


Мы — трое студентов бакалавриата «Прикладная математика и информатика» в Питерской Вышке. В качестве учебного проекта во втором полугодии мы решили написать UB-tester — анализатор кода на С++.


Читать дальше →
Total votes 24: ↑23 and ↓1+34
Comments23

Ускоряем на 70% игру на процессоре в 1 МГц

Reading time16 min
Views30K

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

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

Это история об одном из таких трюков.

Я постараюсь припомнить все важные подробности, однако в чём-то могу ошибиться. Если так случится, простите меня, это было очень давно.

Исходные данные


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

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

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

Я посмотрел. Но там нельзя было найти никакой простой оптимизации.
Читать дальше →
Total votes 125: ↑125 and ↓0+125
Comments97

6 ошибок мышления, из-за которых вы остаетесь на нелюбимой работе

Reading time8 min
Views71K

В начале 2020 года специалисты сервиса по поиску работы «Работа.ру» провели социальный опрос и выяснили, что в следующие 12 месяцев 74% россиян хотят заняться вопросом нового трудоустройства. 53% респондентов рассказали, что недовольны текущим уровнем заработной платы. Но почему в итоге ничего не происходит?

Лишь малая часть из тех, кто планирует сменить место работы, в конечном итоге делает это. Оказывается, в большинстве случаев основная причина бездействия — когнитивные ошибки. Мы решили разобраться, что это и из-за каких именно ошибок в мышлении люди отказываются менять карьеру и добиваться новых высот.

Читать далее
Total votes 35: ↑24 and ↓11+30
Comments36

Я принес вам решение проблемы с исключениями в C#. Но вам не понравится

Reading time8 min
Views45K


Я каждый день пишу код на сишарпе, и натыкаюсь на одну проблему: я трачу кучу времени на то, чтобы решить, как быть, если что-то идёт не по плану.

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

Эти размышления меня измучили, и я систематизировал свои знания и идеи по обработке исключительных случаев.
Читать дальше →
Total votes 80: ↑57 and ↓23+51
Comments478

Пишем шеллкод под Windows на ассемблере

Reading time22 min
Views18K
image

В этой статье я хочу показать и подробно объяснить пример создания шеллкода на ассемблере в ОС Windows 7 x86. Не смотря на солидный возраст данной темы, она остаётся актуальной и по сей день: это стартовая точка в написании своих шеллкодов, эксплуатации переполнений буферов, обфускации шеллкодов для сокрытия их от антивирусов, внедрения кода в исполняемый файл (PE Backdooring). В качестве примера я выбрал TCP bind shellcode, т.к. на мой взгляд — это лучший пример, потому что все остальные базовые шеллкоды имеют много общего с ним. Статья будет полезна для специалистов по информационной безопасности, пентестеров, начинающих реверс-инженеров и всем, кто желает разобраться в базовых принципах работы ОС Windows. Плюсом — улучшаются навыки программирования.
Читать дальше →
Total votes 20: ↑18 and ↓2+23
Comments20

Information

Rating
Does not participate
Location
Минск, Минская обл., Беларусь
Date of birth
Registered
Activity