1287 подписчиков
Работа опытного разработчика (в любой области) чаще всего сводится к решению определённого набора задач, с которыми он ранее сталкивался и, вероятно, успешно преодолевал. Да, могут быть некоторые особенности, но, чаще всего в какой-то момент всё становится более менее стабильным.
Проблемы начинаются в тот самый момент, когда разработчик попадает на новое направление, где либо вообще ничего не понятно, либо есть общее представление о том, как всё должно работать, но практического опыта, увы, нету. И это как раз мой вариант.
Почти два месяца пытался создать обработчик столкновений на Rust (кстати, довольно успешно) пока в определённый момент не понял всей глупости процесса: я понятия не имел, какие именно особенности данного обработчика мне потребуются, а тратил непозволительно много времени и ресурса чтобы сделать то, что мне, возможно, и не пригодится. Привычка фундаментального подхода тут подвела меня.
И вот почему: знакомые задачи легко решать, что называется, в целом, когда код пишется, как бы, с нескольких сторон сразу и потому удивительным образом сходится и почти не требует доработки (проектирование систем в голове налету). Но когда сталкиваешься с задачей принципиально новой, то применение излюбленного подхода не сработает: слишком много неизвестных появляется в этом уравнении и можно решить совсем не те задачи, что надо, а нужные - пропустить.
Для этих случаев очень полезно использовать прототипирование. В данном случае - создание игры, что называется, на коленке в хорошо знакомой среде (т.е. на JS, без необходимости вновь и вновь сверятся с "компасом" компилятора Rust).
И прогресс налицо. Начальная версия уже почти готова (выглядит неказисто, вскрылись некоторые неучтённые варианты поведения обработчика столкновений), зато заняло всего пару дней.
Не стоит недооценивать прототипирование. А про движки напишу как-нибудь позже.
1 минута
12 октября 2022