Сравнение ИИ для участия в контесте по вайбкодигу

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

В ноябре (2025) проходило соревнование по вайбкодингу от Яндекса. У меня было 2 свободных дня на праздниках, поэтому решила поучаствовать и выбрала тему из списка: "AI тамагочи".

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

Сразу покажу финальный результат, что вышло за примерно 10 часов. Суть была в том, что все реплики и общение с котиком генерируется в реальном времени через GPT (типа такой ИИ функционал). А в дальнейшем уже планировалось ввести какой-то чат с котиком, с сохранением истории и персонализацией.

ChatGPT
ChatGPT

Теперь по порядку, что и как делала:

  1. Для начала в ChatGPT написала, что я хочу и попросила задать мне миллион уточняющих вопросов прежде чем выдавать ответ.Это мой личный лайфхак, так как если просто самой писать промпт, то получится какашка. А так я пишу что-то типа: "Хочу сделать приложение тамагочи с котиком, iOS, Xcode, SUI. Задай мне все необходимые вопросы прежде чем давать ответ". После этого он реально пишет тонну шикарных вопросов, отвечая на которые я уже точно и чётко формулирую ТЗ.

  2. Дальше я попросила сам GPT сформулировать окончательное ТЗ и написать мне его. После этого я решила это ТЗ опробовать на нескольких разных ИИ.

Вот шаблон промпта:

Скрытый текст

AI Тамагочи Котик на SwiftUI: Полное Руководство по Разработке

Да, я определённо могу помочь вам создать AI Тамагочи котика на SwiftUI с пиксельной графикой в жёлто-оранжевых цветах! Основываясь на ваших подробных требованиях, я разработал комплексное решение, которое полностью соответствует условиям соревнования и включает все необходимые компоненты: анимации дыхания и хвоста, пиксельную графику, интеграцию с GPT API, SwiftData для персистентности и систему ухода за котом в реальном времени.

Архитектура Проекта

Приложение построено на архитектуре MVVM (Model-View-ViewModel) с использованием паттерна State Machine для управления состояниями кота. Это обеспечивает чёткое разделение ответственности: модели данных отделены от бизнес-логики, а UI-компоненты остаются лёгкими и переиспользуемыми. SwiftUI прекрасно сочетается с MVVM благодаря встроенной системе привязки данных через @State, @Observable и @Binding.​

Структура State Machine

Состояния кота управляются через enum CatState, который включает четыре основных состояния: нейтральное, радостное, сонное и голодное. Каждое состояние имеет свой спрайт (96×96 пикселей в масштабе 2x для экранов Retina) и цветовую схему. Такой подход гарантирует предсказуемые переходы между состояниями и упрощает отладку.​

Система Анимаций

Анимация Дыхания

Ключевая фича — реалистичная анимация дыхания, создающая ощущение живого персонажа. В SwiftUI это реализуется через .offset() модификатор с циклической анимацией easeInOut длительностью 1.2 секунды и амплитудой 2-3 пикселя. Анимация автоматически повторяется с repeatForever(autoreverses: true), создавая плавное движение вверх-вниз, имитирующее вдох и выдох.​​

swiftwithAnimation(
    .easeInOut(duration: 1.2)
    .repeatForever(autoreverses: true)
) {
    breathingOffset = -3
}

withAnimation( .easeInOut(duration: 1.2) .repeatForever(autoreverses: true) ) { breathingOffset = -3 }

Анимация Хвоста

Хвост кота реализован как отдельный слой с rotationEffect, создающий покачивание с амплитудой 15 градусов и периодом 0.8-1.0 секунды. Это добавляет дополнительную живость персонажу, даже когда он находится в статичном состоянии idle.​​

Моргание

Моргание реализовано через таймер с случайными интервалами 3-7 секунд. При срабатывании таймера выполняется быстрая анимация изменения opacity (0.1 секунды на закрытие глаз и 0.1 на открытие), создавая естественный эффект моргания.​​

Анимация Ходьбы

Для перехода между комнатами используется простая анимация ходьбы: при смене фона спрайт кота переключается между двумя кадрами движения лапок с частотой 0.5 секунды на кадр, одновременно применяется .offset() для создания иллюзии движения. Все фоны (дом, кухня, спальня, двор) выполнены в пиксельном стиле 8-бит с тёплой жёлто-оранжевой палитрой.​

Пиксельная Графика

Спрайты и Рендеринг

Все спрайты имеют базовый размер 96×96 пикселей и отображаются с интерполяцией .none для сохранения чёткости пиксельной графики. Цветовая палитра включает:#F2C94C (основной жёлтый), #F2994A (оранжевый), #E67E22 (насыщенный оранжевый), #8C4A1E (тёмно-коричневый), плюс белый и чёрный для контуров и акцентов.​

Спрайт-листы

Для каждого состояния кота создаётся отдельный спрайт с вариациями для анимации дыхания. При работе с малыми спрайтами критически важно соблюдать принцип "один пиксель имеет значение" — движение даже на 1 пиксель в спрайте 96×96 составляет примерно 1% от ширины, что создаёт заметное визуальное изменение.​

Геймплей и Механики Ухода

Система Потребностей

Четыре основных параметра (еда, сон, игра, прогулки) деградируют со скоростью ~1% каждые 10 минут в реальном времени. Это реализовано через таймер, который каждую минуту вызывает метод updateNeeds() в модели данных. Расчёт деградации учитывает время, прошедшее с последнего обновления, что позволяет корректно обрабатывать ситуации, когда приложение было закрыто.​​

Действия Пользователя

  • Кормление: +30% к уровню еды, +1 монета, счастливое состояние, звук "мяу"​

  • Сон: +40% к уровню сна, звук мурчания​

  • Игра: +25% к уровню игры, счастливое состояние​

  • Прогулка: +35% к уровню прогулки, +2 монеты​

Система Монет и Магазин

За выполнение действий игрок получает монеты, которые можно потратить в фейковом магазине на аксессуары для кота. Это создаёт дополнительную мотивацию для регулярного взаимодействия с приложением.​

Жестовые Взаимодействия

Тап-жесты

Простой тап переводит кота в радостное состояние, воспроизводит звук "мяу" и генерирует AI-фразу от кота. Реализация через .onTapGesture модификатор обеспечивает мгновенный отклик.​

Долгое Нажатие

Долгое нажатие (long press) длительностью более 0.5 секунды активирует режим мурчания с тактильной обратной связью через haptic feedback. Это создаёт ощущение физического контакта с котом и усиливает эмоциональную связь пользователя с питомцем.​​

swift.onLongPressGesture(minimumDuration: 0.5) {
    soundManager.play(.purr)
    UIImpactFeedbackGenerator(style: .medium).impactOccurred()
}

.onLongPressGesture(minimumDuration: 0.5) { soundManager.play(.purr) UIImpactFeedbackGenerator(style: .medium).impactOccurred() }

Mobile app interface design concept for AI Tamagotchi cat game 

Интеграция с OpenAI GPT API

Архитектура AI-сервиса

AI-сервис построен на асинхронных запросах к OpenAI API с использованием модели GPT-3.5-turbo. Каждый запрос ограничен 30 токенами и температурой 0.8 для баланса между креативностью и релевантностью ответов.​

Кэширование Фраз

Для минимизации API-вызовов и работы в офлайн-режиме реализована система кэширования. Фразы сохраняются в словаре [String: String], где ключ — контекст состояния кота, а значение — сгенерированная фраза. При повторных запросах с идентичным контекстом используется кэшированный ответ.​

Контекстная Генерация

AI получает контекст о текущем состоянии кота (уровни потребностей, эмоциональное состояние), что позволяет генерировать релевантные короткие фразы на русском языке (3-10 слов) с лёгким юмором. Например: "Мяу! Давай поиграем!

Источник: https://habr.com/ru/articles/983168/


Интересные статьи

Интересные статьи

Привет, хабровчане! На связи Алиса — тимлид в e-commerce агентстве KISLOROD.Кто о чем, а я продолжаю рассказывать, как сшипперить Bitrix и Laravel. В первой части я рассказывала, как по...
Лаборатория цифровой криминалистики и исследования вредоносного кода – одно из старейших подразделений компании F6. Более 70 000 часов реагирований на инциденты по&n...
После работ Везалия и Гарвея анатомия и физиология сформировались как самостоятельные науки. Принципиальное строение и функции человеческого тела стали понятны учёным. Однако для окончательного понима...
Если вы последние лет десять следите за обновлениями «коробочной версии» Битрикса (не 24), то давно уже заметили, что обновляется только модуль магазина и его окружение. Все остальные модули как ...
Тема статьи навеяна результатами наблюдений за методикой создания шаблонов различными разработчиками, чьи проекты попадали мне на поддержку. Порой разобраться в, казалось бы, такой простой сущности ка...