На прошлой неделе на курсе по CS прошла финальная сдача индивидуальных курсовых работ. Но на этом приключение на курсе ещё не заканчивается.
Дело в том, что этот поток был абсолютно уникальным по формату: помимо лекций, домашних заданий и курсовых, в нём я создаю с нуля — без каких-либо движков или фреймворков — игру.
Смысл этого проекта в том, чтобы на практике показать применение тех самых алгоритмов и паттернов, которые мы проходили на курсе. Например, в темах CS много времени уделяется использованию типизированных массивов для построения своих структур данных и оптимизации работы GC и кэша. А в игре как раз используется R-дерево для расчёта коллизий, которое работает так: каждый его узел занимает ровно одну кэш-линию, а за счёт использования арен сборщик мусора игнорирует операции с нашей структурой и позволяет работать с минимальными задержками.
А самое классное — этот проект живой, его разрабатываю я. Я делаю ошибки, я рефакторю архитектуру, и каждая итерация — это рефакторинг того, что есть. Для ребят это наглядный процесс развития, а не мем с рисованием совы. А для меня — любимое хобби и кайф от разработки. Не скрою, что программирование сейчас является одним из тех маяков, которые позволяют преодолеть те трудности и испытания, с которыми я столкнулся.
Лор игры тоже донасытился с момента начала разработки: он повествует об одном из последних инженеров в будущем, где победил ИИ. Но победил не как в «Терминаторе», а через иную форму подчинения — людей подсадили на иглу ИИ и отучили думать самостоятельно, и человек постепенно деградировал до полного рабского состояния. Но есть и сопротивление — инженеры, которые ушли в подполье. За одного такого мы и играем.
Но ситуация усложняется тем, что в голове главного героя находится уникальный прототип локального ИИ. Особенность его в том, что он не может переехать в облако и полностью связан с главным героем: умрёт он — умрёт и ИИ. Это заставляет его учиться работать в тандеме с человеком, хотя каждый обладает своим сознанием. И я планирую, что в дальнейшем это приведёт как к множеству курьёзных случаев, так и к большому конфликту каждого — с попыткой осознать, кто он: человек или машина.
Конечно, многие тут увидят отсылки к «Терминатору» или «Удачи, веселья, не сдохни» — так и есть. Я не сценарист и не писатель, я просто делаю игру, в которую мне самому будет интересно играть. Посмотрим, что из этого выйдет.