xoposhiy's blog

By xoposhiy, 12 months ago, In Russian

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

Коротко о проекте

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

Почему такое задание?

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

А почему именно игра? Многих программистов в IT привело именно желание делать игры. Это интересная и творческая работа, в которой есть место для самовыражения, но при этом довольно сложная со множеством нюансов. К тому же игра — это наглядный и понятный результат усилий, который можно показать друзьям и родственникам.

Требования к проекту

Мы специально не стали заставлять ребят собирать требования заказчика. Этим они будут заниматься в других курсах дальше. Тут мы хотели дать свободу выбора, чтобы они сами решали, какую игру хотят делать. Хочешь сделать платформер? Вперед! Шутер? Тоже круто!

Однако мы установили несколько технических требований. Так, в каждой игре должно быть:

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

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

В курсе основ программирования (ОП) ребята освоили C#, поэтому и игру они пишут на этом языке. Также перед началом проекта мы показали студентам видеолекции о создании приложений с интерфейсом на WinForms и даже дали пару примеров готовых простых игр на этой технологии. Однако использовать именно WinForms было не обязательно. Несколько команд использовали игровой движок Unity, который в целом облегчает труд разработчика и берет большую часть работы на себя. На WinForms кода приходилось писать больше, однако на курсе мы не учили студентов работать с движками, поэтому с Unity им приходилось разбираться полностью самостоятельно. Каждый выбирал сам чего он хотел — разбираться в движках или писать больше кода самостоятельно.

Командная работа

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

У нас получилось 27 команд, большинство из которых состояли из двух человек. И только в шести командах было по трое участников. Мы намерено начинаем с малых команд, ведь чем больше команда, тем сложнее работать и настраивать коммуникацию. Потом, на старших курсах, у ребят еще будут проекты с большими командами, но тренироваться лучше в маленьких.

Наставники

Весь путь от идеи до готовой игры студенты проходят вместе с преподавателями. Они не вмешиваются в разработку, а только направляют команды: дают советы или делают замечания. Сначала студенты прорабатывают концепцию: решают, что это будет за игра, делают наброски интерфейсов и в качестве домашнего задания готовят первые макеты в Figma (это популярный софт для прототипирования пользовательских интерфейсов). Эту работу оценивают преподаватели по курсу дизайна.

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

Сколько длится проект

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

О набивании шишек

Слушать о трудностях в разработке — одно. Совсем другое — столкнуться с ними на практике и учиться решать проблемы самостоятельно.

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

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

Еще одна проблема — студенческое желание все отложить на последний момент. Мало придумать крутую идею и сложную игровую механику. Чтобы успеть ее реализовать, нужно начать заранее и планомерно над ней работать. Не у всех это получилось.

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

Защита

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

Предзащита

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

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

После показа преподаватели выставляют оценки. На итоговый балл влияют четыре показателя:

  • Геймплей. Преподаватели смотрят, насколько интересно играть, обращают внимание на сложность и оригинальность игровых механик.
  • Удобство и понятность. Игра не должна ставить игрока в тупик, он должен понимать, что нужно делать и как управлять своим героем.
  • Содержание. Тут изучают проработку сюжета и персонажей, а также атмосферу и оригинальность мира игры в целом.
  • Оформление. Какие графику, визуальный стиль и звуковое сопровождение используют студенты? Некоторые рисовали графику и записывали звуки сами, а кто-то подбирал ассеты в открытых источниках. На оценку влияло только то, насколько гармонично сочетаются все элементы.

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

Финал

В финале 11 лучших игр оценивали уже не преподаватели, а настоящие эксперты эксперты игровой индустрии. В этом году в состав жюри вошли геймдизайнер Targem Games Ежи Красовский, организатор Ural Game Jam Глеб Багняк, старший аналитик Targem Games Игорь Кушнарев, а также известный независимый разработчик игр в России Денис Галанин.

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

Еще одно отличие финала от предзащиты — здесь студенты сами представляют свои работы. Они показывают геймплей и параллельно рассказывают о том, как работали над проектом. После презентации члены жюри дают ребятам обратную связь.

В этом году финал конкурса прошел онлайн. К трансляции финала в зуме могли подключиться не только участники финала и члены жюри, но и другие студенты ФИИТ, преподаватели, а также кураторы направления. Каждому зрителю мы дали три голоса, которые можно отдать за любую из игр. С помощью этих голосов мы выбирали победителя в номинации «Зрительские симпатии».

Хотите увидеть обсуждение игр, которые заняли первые три места, а также самую красочную игру? Посмотрите 4 ролика:

1 место. Game #001

2 место. Хэш кот

3 место. Glasses Armies

)

“Зрительские симпатии”: Baldwin’s adventure

А еще в эти игры можно поиграть. Скачать понравившуюся игру можно тут:

FAQ

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

Не простое ли задание для первого курса?

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

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

Можно вписаться в сильную команду, сложить ножки и ничего не делать?

Самостоятельная работа не означает, что преподаватели совсем не следят за студентами. Если один из членов команды пропадет или перестанет работать, преподаватели помогают команду реорганизовать.

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

Что думают о проекте студенты, преподаватели и эксперты

Виктория Браун, команда «Хэшкот»:

«Обычно нам давали небольшие практики с четкими требованиями. Преподаватели следили за всем, оставляли комментарии. А тут дали свободу — разрешили придумать все, что захочется, а потом сделать то, что напридумывали. Да, что-то не получается, постоянно не хватает времени… Но когда ты наблюдаешь за тем, как преподаватель играет в твою игру и хвалит ее — это самое крутое чувство.

Когда мы взялись за игру, ни у меня, ни у девочек из команды опыта с Unity не было. Ориентировались в основном на интернет: изучали статьи, форумы, видео на ютубе, документацию самого движка Unity. Ну и подключали свой игровой опыт. Плюс в процессе разработки преподаватель и одногруппники давали обратную связь, что убрать, что добавить, что поменять».

Степан Юрченко, команда «Tower of Durlag»:

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

Сейчас, оглядываясь назад, мне кажется, что это лучшая домашка. Такой проект дает понимание, что такое разработка и как работать в команде. И время для задания выбрали правильно. С одной стороны, к тому моменту, как мы взялись за работу, у нас уже накопился достаточный багаж знаний и практики. С другой — от нас, как от первокурсников, не ждали сложных технологических идей, что дало определённый простор для фантазии.

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

Александр Панкратов, преподаватель курса «Основы программирования»:

«Такой проект в завершении первого года обучения мотивирует ребят использовать знания, которые они получили на первом году учебы. Эти знания — не мертвые, они нужны уже здесь и сейчас. Да и какой программист откажется написать игру?».

Ежи Красовский, геймдизайнер Targem Games

«Алекс Хирш, автор сериала “Gravity Falls” как-то взял интервью у Джастина Ройланда, автора Рик и Морти.

В нем они говорят важные слова о том, как перестать бояться и начать делать клевые штуки. Если коротко передать суть:

  • Ставьте прикольные достижимые цели каждый месяц;
  • Не бойтесь сделать плохо. Делайте много маленьких проектов — от комикса до маленькой игры, так вы увидите, как прогрессируете — даже если все еще будете недовольны результатом.
  • У вас должны быть зрители — они помогут оценить себя со стороны.

Этот проект идеален, чтобы начать делать клевые штуки. Создание игры — многоплановая задача: код, арт, UX, звук. Студенты узнают в процессе кучу нового. У них может получится “в дизайн”, а может получится настоящий продукт, приносящий удовольствие людям.

В итоге получившийся проект дополнит резюме любого студента. По крайней мере для GameDev».

И что дальше?

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

Хочешь быть в курсе о ФИИТ и стать его частью, вступай в группу ВК и подписывайся на Инстаграм, а подать документы на поступление можно в личном кабинете УрФУ.

 
 
 
 
  • Vote: I like it
  • +12
  • Vote: I do not like it