o2 dev
108 subscribers
49 photos
4 videos
25 files
54 links
About o2 engine development
加入频道
в целом эти обе штуки про одно и то же - они предлагают варианты кода, которые можно написать прямо где стоит курсор в редакторе. То есть они смотрят контекст, шуршат своими нейронами, и предлагают тебе 1 или более вариантов кода (или текста), который вот прям здесь можно написать
отличаются тем, что Intellicode suggestions выдает маленькие результаты, стараясь действовать узко в контексте окружающего его кода и проекта в целом. А co-pilot вываливает громоздкие варианты, более проработанные, но порой абсолютно бредовые. Иногда зацикливается сам в себя и просто выдает какую-нибудь лесенку однотипного кода
собственно, юзаю я обоих, но для разных целей.

Intellicode suggestions использую чаще, по месту, чтобы дописать что-то очевидное и небольшое. Это прям отличный инструмент снизить когнитивную нагрузку, и передать в нейросеть тупую работу:

- заведение очевидных полей классов. Согласитесь, иногда все супер-очевидно, что за сеттером следует геттер, а после инкремента декремент. Нейросеть очень хорошо справляется с контекстом. Она понимает что мне нужно в 80% случаев, и при этом соблюдает нужную мне стилистику. Это удивляет

- комментирование кода. Это прям вылетает как из трубы, да еще и более понятным английским, чем у меня. Только успеваешь нажать стрелочку вправо чтобы применить предложенный комментарий
последний момент весьма интересен. Я бы прям хотел какое-нибудь готовое решение по документированию проекта. Стравил в сервис свой проект, а он выплюнул тебе сгенерировнные доки по твоим сорцам. И еще какого-нибудь чат-бота, чтобы задавать ему вопросы по кодовой базе. Типа "что мне лучше использовать для такой-то задачи" или "покажи пример использования этого класса"
co-pilot использую реже из-за его избыточности. Но когда действительно нужен какой-то хороший пример, или "скелет класса", то co-pilot справляется лучше
так же его лучше получается использовать чтобы нагенерить каких-то примеров. Подсказываешь ему что примерно тебе нужно, жмешь хоткей, и он тебе вываливает 10 вариантов, из которых можно почерпнуть нужный вариант
в общем, Intellicode suggestions и co-pilot снимают довольно много рутины с меня. Пока что я ими пользуюсь несколько дней, уверен чем дальше - тем лучше я сам научусь ими пользоваться и буду получать все больше и больше пользы от них
собственно веб-морда ChatGPT стоит отдельно, тк она не интегрирована никуда. Ей можно давать запросы ограниченной длинны, но на совершенно любые темы.

ее можно использовать так же для документации. Если ей дать исходники класса или функции, она вполне хорошо справляется с описанием что это и зачем оно нужно
провел забавный эксперимент: взял кусок кода, попросил ChatGPT описать обычным языком что в нем происходит. Вышло вполне понятно. Затем открыл новый чат (так он забывает контекст в котором вы общались ранее), и попросил по этому сгенеренному описанию написать код, но на другом языке.

В целом ChatGPT справился, код выглядел почти нормально и очень похожим на исходный
ну да ладно, как еще можно заюзать ChatGPT чтобы упростить жизнь разработчика?

Ну, таки действительно разжевывать код. Иногда код читать сложно, нужно строить выводы и напрягать извилины. Здесь ChatGPT может помочь - он тебе обычным языком расскажет что происходит в этом коде

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

Тут тоже можно использовать ChatGPT, стравив ему свой "поток мыслей" и попросив написать стройный и читаемый текст

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

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

но их уровень достаточен чтобы разительно снять рутину
Мысли в сторону. Честно говоря мне казалось что такое невозможно еще ближайшие годы.

Мне казалось что задача связывания огромного количества понятий и знаний - нерешаемая инженерная задача в наши дни. Из-за железа, из-за недостатков понимания как это работает

Однако, это уже работает. ChatGPT под капотом связывает сущности, и может этим оперировать.

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

Интересно что будет дальше. Уверен, через год-полтора у каждого в телефоне будет свой "джарвис", поисковые сервисы сделают огромный скачок, голосовые и чат-боты перейдут на новый уровень, персонажи в играх начнут отвечать на твою речь, а не на заготовленные фразы

По сути это будущее уже здесь и сейчас, разработчики уже ищут пути как правильно это применить. Пойду попробую поисковик bing, в который microsoft уже встроил chatGPT. А еще они проинвестировали в OpenAI. Молодцы, вовремя подсуетились
god bless chat gpt
image_2023-05-02_08-51-20.png
475.7 KB
немножно необычного. Квест для внимательных 😉
Поговорим о слоях и сортировке. Казалось бы, 2D графике все просто, но все же в любой игре, над которой я работал, была проблема организации сортировки:
- нужно рисовать персов, чтобы они не пересекались своими частями друг через друга
- нужно сверху рисовать UI, со своей массой слоев. А иногда и нужно рисовать персов в UI
- ребята с Unity еще скажут - "и партиклы надо запихать куда-то!!!11"

В общем, дело тонкое. Как же решать эту проблему? Как правильно, а самое главное удобно и понятно, раскладывать графику по слоям и приоритетам?

Начнем с самого простого способа - рисовать в том же порядке, в каком находятся объекты в дереве сцены. Объекты рисуются друг за другом, в порядке обхода. Для большинства случаев этого, на самом деле, достаточно. Но иногда нужно что-то нарисовать выше или ниже. Классический пример из UI - это попапы. Их удобно располагать в иерархии прямо на объекте, куда они указывают. Но рисоваться он должен как бы поверх всего, чтобы на него не налазили соседние элементы и он излишне не отсекался. Всегда возникают ситуации, когда нужно что-то сделать "повыше" или "пониже". Поэтому просто сортировать в порядке обхода иерархии не получится

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