Теперь пару слов о редакторе. Впринципе, на базовом уровне все просто. Добавился ScriptableComponent, который держит в себе ссылку на специальный ассет скрипта и ScriptValue инстанса этого скрипта. В нем вызывает всякие OnStart, Update, OnEnabled/Disabled функции из ScriptValue. Сам инстанс обозначен как serializable. Для него написан конвертор, который просто перебирает все проперти и пишет в DataValue (обертка над json).
Чтобы отобразить все параметры в редакторе есть специальное поле редактора ScriptValueProperty, которая показывает содержимое ScriptValue и позволяет его редактировать. По умолчанию воспринимает ScriptValue как объект и вытаскивает поля из него. Но может работать с ним и как с массивом.
Чтобы отобразить все параметры в редакторе есть специальное поле редактора ScriptValueProperty, которая показывает содержимое ScriptValue и позволяет его редактировать. По умолчанию воспринимает ScriptValue как объект и вытаскивает поля из него. Но может работать с ним и как с массивом.
holy shit, я начал открывать для себя возможности chat gpt 🤯 Не буду описывать свои эмоции, итак уже все в ахере... Но попробую рассказать немного о том, как получается его использовать в работе, что уже успел попробовать
для тех кто в танке, chat gpt - это нейросеть, обученная на огромном количестве текстов, способная генерировать текст с неким контекстом
для простоты - это чат-бот. Единственное что он умеет - генерировать ответы на запросы. Но в этом то вся и фишка, он умеет отвечать. Он умеет выделять смысл, обобщать, менять контекст. А еще он умеет писать код 😉
хотя, по факту, можно заставить его думать и решать простые задачки. Например я задавал ему задачку про собаку, прыгающую по разноцветным коробкам. Он понимает условия и может предложить решение, расписав по шагам.
Начал с простого примера: есть две коробки, красная и черная. Собака сидит на красной. Затем собака прыгнула на другую коробку. На какой коробке оказалась собака?
Я явно не указал куда она прыгнула. Но задал условия, из которых можно понять ответ. Коробок всего две, сидит собака на красной. Она прыгнула на другую, значит она не может прыгнуть на ту же красную коробку. Выходит она на черной
ChatGPT выдал верный ответ с объяснением
Начал с простого примера: есть две коробки, красная и черная. Собака сидит на красной. Затем собака прыгнула на другую коробку. На какой коробке оказалась собака?
Я явно не указал куда она прыгнула. Но задал условия, из которых можно понять ответ. Коробок всего две, сидит собака на красной. Она прыгнула на другую, значит она не может прыгнуть на ту же красную коробку. Выходит она на черной
ChatGPT выдал верный ответ с объяснением
справелдивости ради, задача простая. Поэтому я ее усложнил и добавил еще одну коробку - желтую. И сказал что собака прыгнула так же на другую коробку. Какой тут правильный ответ? Фактически тут два ответа, либо черная, либо желтая. ChatGPT понял это и написал соответствующий ответ
вероятнее всего такая задачка где-то кем-то была описана и решена в интернете, отсюда chatGPT понимает что происходит. Но, я не спец в нейросетях, не могу сказать как именно получается ответ
вероятнее всего такая задачка где-то кем-то была описана и решена в интернете, отсюда chatGPT понимает что происходит. Но, я не спец в нейросетях, не могу сказать как именно получается ответ
дальше я спрашивал всякое, пробуя прощупать границы нейросети. Она умеет немного креативить, но все это очень похоже на что-то, что уже ты сам видел. Хотя может вполне себе совмещать плохосовместимые вещи.
Меня ничего не останавливало (про порно и убийства она не может писать, да), и я скормил несколько бредовых запросов, в надежде запутать нейросеть. Например, сможет ли бобер быть хорошим джедаем, и смог ли бы он использовать свой хвост в поединках на световых мечах. В целом ChatGPT справлялся с моим потоком бреда, и пытался предположить каким будет бобер-джедай.
Меня ничего не останавливало (про порно и убийства она не может писать, да), и я скормил несколько бредовых запросов, в надежде запутать нейросеть. Например, сможет ли бобер быть хорошим джедаем, и смог ли бы он использовать свой хвост в поединках на световых мечах. В целом ChatGPT справлялся с моим потоком бреда, и пытался предположить каким будет бобер-джедай.
ну ладно, вернемся к изначальному тезису, как это можно применить в работе
итак, я пишу код, придумываю системы, и мне стало интересно, насколько все это может упростить мою жизнь. Главное не разрушить, а то вдруг программисты то уже совсем не нужны стали 😂
сходу взял несколько доступных под рукой инструментов: собственно ChatGPT, co-pilot от github, и внезапно тихо пробравшийся в мою жизнь MSVS Intellicode suggestions. Забегая вперед последнее оказалось самым полезным
про ChatGPT уже рассказал, теперь пару слов об co-pilot и Intellicode suggestions
в целом эти обе штуки про одно и то же - они предлагают варианты кода, которые можно написать прямо где стоит курсор в редакторе. То есть они смотрят контекст, шуршат своими нейронами, и предлагают тебе 1 или более вариантов кода (или текста), который вот прям здесь можно написать
отличаются тем, что Intellicode suggestions выдает маленькие результаты, стараясь действовать узко в контексте окружающего его кода и проекта в целом. А co-pilot вываливает громоздкие варианты, более проработанные, но порой абсолютно бредовые. Иногда зацикливается сам в себя и просто выдает какую-нибудь лесенку однотипного кода
собственно, юзаю я обоих, но для разных целей.
Intellicode suggestions использую чаще, по месту, чтобы дописать что-то очевидное и небольшое. Это прям отличный инструмент снизить когнитивную нагрузку, и передать в нейросеть тупую работу:
- заведение очевидных полей классов. Согласитесь, иногда все супер-очевидно, что за сеттером следует геттер, а после инкремента декремент. Нейросеть очень хорошо справляется с контекстом. Она понимает что мне нужно в 80% случаев, и при этом соблюдает нужную мне стилистику. Это удивляет
- комментирование кода. Это прям вылетает как из трубы, да еще и более понятным английским, чем у меня. Только успеваешь нажать стрелочку вправо чтобы применить предложенный комментарий
Intellicode suggestions использую чаще, по месту, чтобы дописать что-то очевидное и небольшое. Это прям отличный инструмент снизить когнитивную нагрузку, и передать в нейросеть тупую работу:
- заведение очевидных полей классов. Согласитесь, иногда все супер-очевидно, что за сеттером следует геттер, а после инкремента декремент. Нейросеть очень хорошо справляется с контекстом. Она понимает что мне нужно в 80% случаев, и при этом соблюдает нужную мне стилистику. Это удивляет
- комментирование кода. Это прям вылетает как из трубы, да еще и более понятным английским, чем у меня. Только успеваешь нажать стрелочку вправо чтобы применить предложенный комментарий
последний момент весьма интересен. Я бы прям хотел какое-нибудь готовое решение по документированию проекта. Стравил в сервис свой проект, а он выплюнул тебе сгенерировнные доки по твоим сорцам. И еще какого-нибудь чат-бота, чтобы задавать ему вопросы по кодовой базе. Типа "что мне лучше использовать для такой-то задачи" или "покажи пример использования этого класса"
co-pilot использую реже из-за его избыточности. Но когда действительно нужен какой-то хороший пример, или "скелет класса", то co-pilot справляется лучше
так же его лучше получается использовать чтобы нагенерить каких-то примеров. Подсказываешь ему что примерно тебе нужно, жмешь хоткей, и он тебе вываливает 10 вариантов, из которых можно почерпнуть нужный вариант
в общем, Intellicode suggestions и co-pilot снимают довольно много рутины с меня. Пока что я ими пользуюсь несколько дней, уверен чем дальше - тем лучше я сам научусь ими пользоваться и буду получать все больше и больше пользы от них
собственно веб-морда ChatGPT стоит отдельно, тк она не интегрирована никуда. Ей можно давать запросы ограниченной длинны, но на совершенно любые темы.
ее можно использовать так же для документации. Если ей дать исходники класса или функции, она вполне хорошо справляется с описанием что это и зачем оно нужно
ее можно использовать так же для документации. Если ей дать исходники класса или функции, она вполне хорошо справляется с описанием что это и зачем оно нужно