ym104432846
Вставьте ссылку на видео из Youtube, Rutube, VK видео
Задайте вопрос по видео
Что вас интересует?
00:00:00
Эффективная работа с языковой моделью в разработке игр:
  • Модель должна использоваться как полноценный партнер в проекте, а не просто как чат-бот
  • Необходимо научить модель ориентироваться в контексте конкретного проекта
  • Важно соблюдать порядок в структуре папок проекта для упрощения работы модели
  • Следует предоставлять модели примеры хорошего кода для копирования и использования шаблонов
  • Рекомендуется начинать любую задачу с этапа планирования, прежде чем приступать к написанию кода
  • Контроль за размером контекстного окна модели помогает поддерживать ее эффективность
0: Hey, you всем шар, я довольно давно общаюсь с разработчиками по поводу внедрения я в разработку игр и уже давненько наблюдаю интересную вещь половина ребят пробовавших и агентов часто плевалась, мол, пишет ахинею и проще самому писать код, ну и, соответственно, забрасывала это дело, a2 половина?
1: Используя те же инструменты, ускоряла свою разработку в разы. И обычно разница в том, что первые используют агента как обычный чат. Ну, кинул вопрос, и он там написал какой-то код, а вторые используют его реально как напарника, который живёт в проекте и пишет код по каким-то определённым правилам. И вот это использован.
2: Агента как агента, а не как просто чата, оно не происходит само этому, понятное дело, надо немного научиться. Поэтому сегодня 5 основных вещей, без которых от агента будет толку. Ну, наверное, как от кирпича. И я не буду показывать магию или какие-то там секретные промпт, а реально 5.
3: Пунктов, которых мы придерживаемся в студии разработки и на которые надо обращать внимание, если вы разработчик и хотите, чтобы ii вас ускорял, а не замедлял, да не вставлял палки в колеса и не создавал нервотрёпку и, естественно, всеми необходимыми файликами и наработками из этого видео я
4: Обязательно поделюсь. Поэтому поехали. Смотрите, глобально для нормальной работы с агентом вы должны разобраться с 2 основными вещами. Это так называемый контекст, с которым работает агент и его контекстное окно. Давайте по порядку сначала, что такое вообще контекст? Вот представьте, что
5: Команду к вам пришёл какой-то, не знаю, новый разработчик, он очень умненький, там головастый, но он 1 день работает и ничего вообще не знает про ваш проект. Не знает, какой вы стек используете. Не знает, где у вас там что лежит, какой кодстайл используете, что уже в проекте вообще реализовано. И вот вы, не сказав ему
6: Слово, там говорите, даёте задачу, не знаю, сделай счётчик монет, что он сделает. Ну, он сделает, наверное, её как-то по своему. Возможно, эта задача даже будет работать, но под ваш проект это, скорее всего, не подойдёт. Так вот, агент это Ровно такой же разработчик, и каждый новый чат с ним, это как, ну,
7: 1 день работы для него и весь его опыт это как бы какой-то код из интернета, на котором он обучен. То есть если вы ему не рассказали про проект, то он будет угадывать и делать как-то по своему угадывать по используемым пакетам, угадывать по кодстайлу, угадывать по архитектуре работы вашей игры и так далее.
8: Далее. Соответственно, тут надо принять, что агент не виноват в том, что он не делает то, чего вы хотите, не пишет так, как вы хотите. Он просто, ну, этого не знает. Соответственно, наша задача это рассказать ему про проект, рассказать, чего мы хотим. То есть погрузить его в контекст проекта 2.
9: Понятие это контекстное окно агента. Соответственно, представьте, что этот новый разработчик ещё и с ограниченными возможностями по удержанию информации в голове, да, и по манипулированию ей. То есть он, да, в голове держит, соответственно, правила проекта, открытые файлы, там всю вашу пере,
10: Писку и так далее. Но голова у него не резиновая. И чем больше в ней информации, тем, соответственно, он чаще начинает терять то, о чем вы договаривались, да, начинает путаться, начинает тупеть и так далее. Соответственно, 2 наша задача это не давать голову ему забивать лишним, то есть не дават
11: Забивать контекстное окно под завязку и, соответственно, если мы будем грамотно следить за контекстом и за контекстным окном, то будем получать стабильно хороший результат работы агента. Ну в пределах, скажем так, нормы и будем получать хорошие результаты, но обо всем по порядку шаг
12: 1 и самый базовый это дать знания о проекте и необходимых правилах работы, то есть задать тот самый контекст проекта, как это делается. Ну, обычно у агентов есть некоторый файлик в markdown, формате, который он читает самостоятельно каждый раз при начале работы, без напоминаний, то есть можно сказать, что эта информация
13: У него постоянно находится в контекстном окне, и он её постоянно использует. Вопрос 1 как этот файлик сделать? Я буду все показывать на примере клауд кода. Именно им мы пользуемся в студии, и у него таким файликом является cloud точка мд, который надо положить в корень проекта, выглядит он примерно.
14: Вот таким вот образом, да, как я говорил, маркдаун формате, либо в отрендеренном, скажем так, виде выглядит оно примерно так. Ну как какой-нибудь redmi файлик на гитхабе, я думаю все с таким форматом знакомы, его можно прямо создать ручками и потом заполнить, либо попросить сам клоуд код, создать подобный файлик. И вот что.
15: Что я туда обычно кладу в 1 очередь это стек технологий, то есть версию юнити на чем у вас там сделан геймплей, что вы используете для диай да, для синхронного программирования, там unit, аскии или что-то ещё менеджмент контента на чем сделан и так далее далее и соответственно также можно
16: Казать, что вы явно не используете, если нейронка начинает в каких-то местах глючить. Например, в 1 из проектов мы использовали юни текст пакет для работы с текстом, а не текст мэш про. Поэтому я вот явно указал, что текст мэш про в проекте не надо использовать, ну, чтобы у агента даже мысль в ту сторону, скажем так, не пошл.
17: Также тут стоит указать вообще структуру папок, да, где у вас что находится, где вот живёт ваш код, то есть где у вас там живёт геймплейный код, где находится метаигра. Если вы там серверный код какой-то пишите, то возможно тоже здесь стоит указать какие-то папки и так далее. И также советую указать то
18: Как у вас проект вообще работает и запускается, да, чтобы опять же, агенту клауд коду было проще понять, куда подсасывать там те или иные сервисы, куда засовывать новые классики, куда вставлять инициализацию этого всего дела и так далее. Это, в принципе, довольно важно. И опять же зависит уже от того, как вы рабо
19: Да, как у вас устроен проект? Ну и, кстати говоря, к структуре папок мы ещё сегодня вернёмся чуть попозже в следующих шагах. Это тоже очень важно. Главное задать необходимую информацию вот в корневом клауд мд файлике, чтобы у агента был какой-то контекст вашего проекта. И вот при заполнении этого
20: Стоит учитывать пару моментов. Во первых, не стоит этот файл писать прям полностью руками, да, вот эти вот все оформления, как-то, чтоб агенту было понятно, этого делать не надо. Попросите самого агента сам клод код вам сгенерировать такой файл, просто описывайте ему проект, там весь стек и так далее.
21: Так далее. И говорите, собери мне вот это все в обычный cloud мд файлик, и он все сделает прекрасно, вам там останется только какие-то мелочи подфиксить. Я, кстати говоря, ещё раз скажу, что пример вот клауд мд файлика я прикреплю обязательно в telegram канале, чтобы у вас был, скажем так, какой-то Костяк на основе которог.
22: Можно работать, и вы его там уже поправляли под себя, либо на основе него делали по свой проект клауд мд файл, поэтому обязательно забирайте и используйте у себя. И вот 2 вещь, за которой тоже надо следить, это то, чтобы у вас cloud мд файлик сильно не разрастался. Обычно советуют не больше. Там 200 200.
23: 50 строк задавать просто по той причине, что опять же, нейронке проще будет воспринимать этот файл и проще будет придерживаться правил в нём. Но открою вам секрет. Чаще всего нам все-таки хочется задавать больше правил. Ну, например, нам хочется, не знаю, расписать кодстайл, расписать, как подгружать
24: Сеты, как называть там фичи или системы и так далее далее. И это обычно не умещается, к сожалению, в 200 строк. Поэтому такие правила стоит дробить. То есть общую, какую-то главную информацию мы выносим в клауд мд файл, а все остальные более частные правила разносим по своим файликам.
25: Для этого в cloud code, как на самом деле во многих других агентах, есть такая вещь, как рулс. То есть те самые правила как раз-таки, то есть мы заводим в проекте, в корне, опять же папочку, точка клоуд, она пригождается не только для правил, но для них. Вот в том числе мы, к сожалению, всего сегодня разбирать не будем, но, скажем так вот,
26: Основные вещи пройдём и вот в этой папочке точка клоуд, заводим папочку рус и туда, соответственно, складываем вот такие же в формате маркдаун файлики, которые описывают, ну вот отдельные какие-то более конкретные правила. Ну вот для примера, у меня тут есть такой файлик, кодстайл называется, да, это правило по кодстайлу, где у меня to
27: Расписаны всякие стилистические вещи как именовать переменные, называть классы, что-то по неймспейсам, в общем и так далее. Далее кстати говоря, этот файлик я тоже, если хотите, могу прикрепить в telegram канале, он довольно универсальный, себе заберёте и будете использовать, ну либо что-то там под себя уже доделаете, почему нет.
28: В чем вообще прелесть правил? Они не автоматически подсасываются в контекстное окно агента. То есть, если cloud мд файл, он всегда лежит, скажем так, в контекстном окне агента, то правила подсасываются в зависимости от условий, которые мы задаём следующим образом, а именно с помощью некоторых путей, например, вот для
29: Кодстайла у меня следующее правило, что оно будет распространяться только при работе со всеми файлами, с расширением css, да, то есть когда клауд код будет писать какие-то скрипты, ну, соответственно, в cs файликах, то будет применять вот это вот правило кодстайл и будет его подгружать к себе. И получается таким образом,
30: Мы как бы, опять же, оптимизируем работу с контекстным окном, и у нас не вся, вся информация у него постоянно в голове держится, а только та, которая необходима. Ну вот, в зависимости от условий, основной же cloud мд файлик, он просто может индексировать вот эти правила у себя, да, то есть вот у меня тут указаны все эти правила, и как бы
31: Краткое их описание. И тут самый важный принцип этого всего шага, наверное, состоит в том, чтобы вы не пытались прям все, все, все, все, все заранее сразу описать там все возможные правила, какие вам только в голову взбредут и так далее. То есть старайтесь это делать по нарастающей, по мере поступления проблем. То есть видите, что у ва
32: Там агент с 1 и той же какой-то проблемой повторяет ошибки. Ну вот заведите тогда правила, скорее всего это исправит его косяки, и вы будете действительно наращивать, скажем так, контекст проекта по мере наступания на какие-то реальные грабли, а не по мере того, что вы там напридумывали, потому что ваш
33: Придумки могут совершенно не пригодиться, а время на это все вы, ну, потратите. И вот на самом деле уже 1 этот шаг, да, вот задание некоторого контекста и правил проекта для агента очень сильно повысит ваше качество работы с ii, я бы сказал, в разы, но это ещё далеко.
34: Не все окей. Основной контекст проекта мы дали, но даже идеальное описание стека или описание всего проекта вас не спасёт. Если сам проект это беспорядочная свалка папок. Помните, я говорил о том, что вернусь к структуре папок? Так вот, это действительно важно по 2 причинам, если у вас понятно.
35: Разбиение по папкам, то агенту проще ориентироваться в проекте и находить нужную информацию. Более того, ему проще изолированно работать над определённой задачей. Ну потому что, опять же, ему не надо держать в контекстном окне все папки проекта, потому что у вас там все раскидано фиг, пойми как и соответственно, он будет
36: Стабильнее работать над поставленной задачей. Так что 2 шаг это структура. Старайтесь придерживаться где только можно какого-то стандартного предсказуемого подхода. Понятное дело, у вас там все может быть по разному в проектах, но я дам вот парочку таких небольших универсальных советов, которые, скорее всего, вам подойдут.
37: 1 выделяйте сразу папку project в вашем проекте, где будет лежать только ваш код и ваши ассеты без каких-то сторонних плагинов так, клад код будет как бы проще понимать где вход вот ваш проект, где ему можно что-то делать 2 маленький совет это старайтесь разбивать игровые фичи в какие
38: Изолированные папки. Вот у меня, например, есть некоторая папка gameplay в проекте. И здесь есть папка фичи, где и всякие игровые фичи у меня по геймплею расположены. Ну вот, например, не знаю, фича, бега, фича, таймера, там здоровья. И мало того, внутри каждой папки, внутри каждой фичи я тоже стараюсь придерживаться. Какой т.
39: Систем ну например у меня в Папке фичи должны быть все вьюхи которые необходимы для этой фичи там системы фабрики относящиеся к этой фиче и так далее ну вот например здоровье и у меня здесь есть демедж и к factory или мувмент. И у меня здесь есть какая-то walking вью какие-то системы связанные с мувмент м всегда.
40: Стараюсь делать все примерно одинаково. Соответственно, это вот структура, описание папок и так далее. Потом идут вот у ваш клауд, нд, файлик корневой, где вы описываете, где у вас что лежит, можете даже описать отдельно, там структуру определённых папок, если она у вас повторяется. Ну вот, например, не знаю, папка какой.
41: То фичи, да как у вас там все устроено, как надо создавать, как надо генерировать это все дело. И агенту в таком случае будет намного проще ориентироваться по вашему проекту. И когда вы будете просить его сделать какую-то новую игровую фичу, он не будет изобретать, куда что положить, а он видит. Ага, значит, тут
42: Все фичи устроены так, то, значит, и новую кладу. Также файлы называю также и все делаю. Вот как от меня ожидается. Это прям супер круто. Кроме того, внутри каждой папки можно задавать, скажем так, свои локальные клауд мд файлы, которые будут подтягиваться только тогда, когда агент будет рабо.
43: Работать, ну вот в этой Папке и таким образом можно дополнительную информацию указывать о ваших игровых фичах. Опять же, если вы придерживаетесь, ну вот подобного подхода, ну допустим, вы, не знаю, сделали какую-то навороченную систему способностей, да, завели под неё папочку, и она у вас там, ну, как-то по особенному устроена, потом вы
44: Взяли вот в этой Папке, добавили клауд мд файл и там описали все необходимое по принципу работы этой фичи. Там по добавлению обило по тому, как они используются и так далее. И потом агент сможет вам быстро и точно создавать новые обилки просто по описанию, по запросу улучшать эту систему.
45: Поэтому структура папок и стандартизация подходов к разработке это, ребят, очень важно. Шаг 3. И это, наверное, мой любимый шаг, потому что он самый простой и, наверное, самый недооценённый. Мысль простая агент гораздо лучше копирует, чем придумывает сам. Поэтому, если дать ему хороший образец,
46: То он скопирует паттерн почти идеально. Поэтому вместо того, чтобы там словами расписывать, как у нас принято делать те или иные механики или фичи, я могу ему просто их указать как эталонные, не знаю. Вот, например, скажу мувмент и hell, запомни, как эталонные фичи, делай новые фичи вот похожими на эти, да, или
47: Делай по их примеру, соответственно, потом прям в cloud and файле или в каких-нибудь правилах можно указать эти фичи как эталонные. Ну вот, например, у меня есть тут правило энтити фича. Это то, как агенту тут строить фичи в фреймворке сиэс энтите, это такая пока кастомная, скажем так, наработочка её дораба.
48: Но, тем не менее, вот тут есть эталоны, да, которые я ему привёл, и он на них может ориентироваться и добавлять новые фичи. И вот, например, там, не знаю, у меня есть фича движения, есть фича гравитации, и я его прошу, а добавь-ка ещё, скажем, не знаю, прыжок, да, описываю принцип прыжка, и я не объясняю ему по новой всю
49: Архитектуру, как там сервисы прокидывать, как ввод отлавливать, как папки выстраивать. Он просто идёт, смотрит, как там, не знаю, устроен мувмент, как там разложены компоненты, как названы системы, как это все цепляется в общий пайплайн работы и делает прыжок вот как бы в таком же стиле, как мне надо
50: И вот это довольно удобно, поэтому иногда стоит сделать какой-то просто хороший эталон. Если вы понимаете, что у вас дальше пойдёт, ну плюс минус шаблонная работа в каком-то похожем ключе. И дальше этот эталон скормить агенту, чтобы он его сам анализировал. Можете, не знаю, этот эталон сделать руками, да, все-таки руч.
51: Мы ещё тоже кодим, ну, либо доработать с агентом, это не принципиально. Главное, чтобы какой-то эталон у вас был, не знаю, с обилка и похожая история, да, сделали обилку, встроили её в систему, показали агенту, как вы это сделали, и он новые обилки будет похожим образом встраивать. Так, и вот тут мы, в принципе, на самом деле,
52: 3 шага, скажем так, про контекст закрыли. То есть смотрите, что получилось. У нас должен быть некоторый паспорт проекта, да, это вот клауд мд файл, какая-то предсказуемая стандартизированная структура папок. И также в идеале, если у вас какая-то шаблонная работа намечается, то какие-то живые эталоны
53: Этой работы. И вот это все про 1, про то, чтобы агент знал, как бы куда ему копать. Знал, в чем он вообще варится, в чем он работает. И вот теперь 2 половина ролика, она будет про пару Шагов, про то, как вообще работать с агентом, да, чтобы он выполнял задачи нормально, то есть уже не про
54: Контекст, а скорее про некоторые воркфлоу. Шаг 4. И он уже, наверное, не столько про контекст, сколько про процесс работы. И самая частая ошибка. Тут это работать по пайплайну дал агенту задачу, а он сразу пошёл писать код. И вот он уже тут наворотил кода на пол проекта, а ты смотришь и понимаешь, ну что он вообщ.
55: Вообще делает не то лечится это 1 привычкой. Любую задачу мы начинаем с режима планирования, он есть практически во всех современных агентах. Если вы пользуетесь клауд кодом визуалки, то в этот режим можно перейти легко. Тут вот тыкаем и переходим в plan mode. Все в этом режиме агент не трогает код
56: Он только исследует проект, рассуждает и предлагает план действий. То есть вот что я понял, вот что я собираюсь делать, в каких файлах, там и так далее. И только когда ты этот план посмотрел, утвердил его и сказал, да, действуй. Вот только тогда он начинает писать код, что это вообще даёт. Ну, во первых, ты ловишь не
57: Понимание до того, как оно превратилось в код. И в принципе, тебе легче воспринимать на самом деле текст, чем прошерстить все написанные файлы, их может быть очень много. Ну и, во вторых, поправить план это гораздо быстрее и проще, чем поправить потом полпроекта какого-то кривого кода, то есть дешевле 100 раз обсудить все.
58: На берегу. Но тут есть, конечно, тоже тонкость. План будет хорошо работать Ровно настолько, насколько хорошо. Ты сам понимаешь, чего хочешь и как этого вообще можно добиться. То есть, если ты сам плохо соображаешь, если у тебя в голове каша, ну, агент выдаст тебе красиво оформленную кашу, он как бы не теле.
59: Party не экстрасенс и самый качественный результат получается, когда у тебя у самого в голове как бы щёлкнула финальная картинка, то есть что именно мы строим, какие там у этого части, как это живёт с остальным проектом, как это архитектурно зайдёт. Поэтому твой опыт тут как никогда важен, это не какой-то глупый вайб.
60: Да, ты действительно должен разбираться, скажем так, в теме. Но, тем не менее, для более лучшего планирования задач я нашёл на просторах интернета отдельную такую приятную штучку. Смотрите в cloud code. Ну, опять же, как в остальных агентах есть такое понятие, как скилл. Если совсем коротко, то скилл это некоторая
61: Сохранённая инструкция, навык, которую агент может подхватывать по команде. То есть какой-то набор Шагов, который ты 1 раз описал и можешь его по команде переиспользовать. Я подробно не буду в этом видео вдаваться в данную тему, как на самом деле. И в кучу других очень много всего можно обсуждать там эмсипи.
62: Какие-то лучшие техники и так далее. Тут мы больше идём по основным моментам, но вот такого описания скила, да, нам сегодня хватит. То есть скиллы это опять же некоторые маркдаун файлики, их надо класть в папочку точка клауд скиллс. И вот распределяете там свои скиллы по папочкам, а затем, когда вот хотите скиллс,
63: Определённым названием применить. Просто набираете слэш и вызываете его по нужному имени. Вот, например, скилл грил ми, про который я сейчас расскажу. Так вот, значит, я нашёл на просторах вот такой скил называется ещё раз. Он грил ми, и мы его с командой немножечко доработали, скажем так, под нас под себя его суть заклю.
64: Заключается в том, что при планировании агент, скажем так, ну, с особым трепетом допрашивает тебя о тех или иных аспектах задачи. И иногда это работает так хорошо, что он даже начинает задавать вопросы, о которых ты изначально не задумывался. И, ну, это действительно прям приятно. И пока вот он тебя не допросит,
65: Полностью план составлять он не будет. Ну, либо пока ты сам его не попросишь составить план. Соответственно, такая штука прям повышает качество планирования, а значит и улучшает результат работы. Ну, этот скил я точно также ребят выложу в телегу, он довольно универсальный. Забирайте себе, подключайте к проекту, ну и тестируйте, как он
66: Работает для вас он довольно простой, но при этом очень полезный. И шаг 5. Последний на сегодня он тоже про процесс работы и нюансы контекстного окна агента. Смотрите, в чем беда. Удобно же, да, открыть чатик с утра и весь день в нём провести. Там что-то сделали 1, что-то сделали другое.
67: Откатили там, поменяли решение и так далее. Но на самом деле нифига это не так. Кажется, что агент будет как человек там помнить все ответвления, какие-то отменённые дела и так далее. Но на самом деле через время он начинает тащить вперёд все старое, забывает договорённости, начинает что-то выдумывать, придумывать и качество.
68: Ответов сильно проседает контекстное окно у разных агентов разное, но если мы говорим про cloud код и их последнюю модель опус 4 и 8 на данный момент, то у неё контекстное окно 1000000 токенов. И этот контекст мы можем проверить соответствующей командой. Слэш контекст. Вот он
69: У нас подгружается и мы действительно видим вот 1000000 токенов и на данный момент забито 3%, ну это всякие там системные промпт, вот наши скилы, какие-то там cloud мд, файлики и так далее. И вот если вы видите, что у вас эта полосочка перевалила за 50%, то я бы советовал переезжать
70: Новый чатик, то есть не надо прям до 100% пытаться это дело забивать, потому что на самом деле деградация происходит ещё раньше. И вот где-то на 50 процентах я обычно стараюсь уже переходить к новому чату. То есть правило простое. 1 задача. 1 свежий чат закончили, с 1 фичей закрыли.
71: Открыли чат под следующую. Агент, получается, заходит в задачу со свежей головой, без какого-то там груза лишних мыслей. Однако если все-таки у вас внутри 1 большой задачи разросся чат и бросать его как бы жалко, потому что задача то ещё не закончена, то почти везде есть команда, которая
72: Сжимает текущий контекст до какого-то небольшого саммари, который ты можешь взять и вставить уже в новый чат, чтобы в новом чате контекст о задаче сохранился в клауд код. Это команда под названием компакт. Вот так вот она выглядит, её вводите и, соответственно, получаете какие-то итоговые выводы, да?
73: Без лишнего мусора. И дальше с этой информацией идёте в новый чат, у него уже будет как бы некоторый контекст о том, что вы делали до этого. Но если все-таки есть возможность, то советую, конечно идти по принципу 1 чат. 1 задача, ну так работается стабильнее всего и без каких-то там лишних галлюцинаций.
74: И прочего. Ну вот и все 5 моментов, ребят, придерживаясь которых, вы заметите, что работа с агентом стала действительно куда приятнее и начинает вас ускорять в разработке и усиливать ваши навыки, а не вставлять палки в колеса. Подчеркну, что я специально не полез сегодня в какую-то там совсем базу по типу
75: Как поставить cloud код или, наоборот, какие-то сложные вещи по типу Скилов эмсипи, как лучше там с агентом работать именно в unity, ну, чтобы просто не валить все в кучу. Но если вам заходит такая тема, то пишите об этом в комментариях, пишите, что хотели бы ещё узнать, и я буду продолжать тему, ну, реальной разра.
76: Работки с ii на канале, а пока подписывайтесь на telegram канал забирайте ништячки из видео и пробуйте их в своём проекте или.