Практика · Разработка
Разработка
Приложение доводится до состояния, в котором его можно поставить и открыть: не прототип и не демонстрация, а установщик под платформу. APK подписан ключом выпуска; установщик под Windows пока не подписан, и об этом сказано прямо на странице поддержки. По умолчанию всё считается у человека на устройстве, и сервер появляется только там, где без него задача не решается.
Что делается
- Приложение целиком От прототипа до выпуска: логика, интерфейс, темы, языки, установка. У DRIFT один редактируемый исходник, из которого собираются веб-версия, инсталлятор под Windows и подписанный APK, — расхождения между платформами не возникает, потому что расходиться нечему.
- Звук и графика в браузере Web Audio для обработки и офлайн-рендера, WebGL2 для картинки. ENDLESS держит постоянное число объектов: чанк, ушедший за спину, не удаляется, а переставляется вперёд и пересчитывается, и в кадровом цикле не создаётся ни одного нового объекта.
- Игровые системы на Godot Процедурная генерация, стриминг мира, экономика, производство, шина событий, туман войны, посадка строений на рельеф. Тяжёлый счёт уходит в рабочие потоки, на главном остаётся только сборка мешей и узлов.
- Данные отдельно от кода То, что меняется часто, выносится из программы. Уровни «Тартарии» лежат внешним JSON и правятся без правок кода — к нему написан двунаправленный мигратор в редактор уровней и обратно. Реестр продуктов этого сайта один на карточку, карту сайта и разметку для поисковика.
- Сборка и выпуск Устанавливаемое веб-приложение со своим манифестом и служебным сценарием, сборка APK и инсталлятора скриптами, публикация статики. Синхронизация веб-копии и файлов загрузки — тоже скрипт: руками копии не правятся, иначе они расходятся с исходником на первой же правке.
- Сервер там, где он нужен Где задача требует рантайма, базы или входа по аккаунту, они берутся прямо: Next.js с базой и аккаунтами, отдельная функция под то, что нельзя сделать в браузере. Где не требуют — не берутся вовсе: ни аналитики, ни загрузки файлов на сервер.
Чем подтверждено
DRIFT
Обработка звука в браузере, на Windows и на Android из одного исходника. Устанавливается из браузера, работает офлайн, экспортирует в MP3, WAV и FLAC, говорит на шестнадцати языках.
ТЕРРИТОРИЯ
Геоквест по регионам России на React и Vite. Живёт своим поддоменом, статическая копия лежит запасным адресом на этом сайте.
ENDLESS
Бесконечный пролёт на WebGL2. Мир нигде не хранится: высота земли — чистая функция координаты и сида, поэтому впереди всегда есть что посчитать, а позади ничего не жаль.
JUST A BLOCK
Однофайловая страница-заявка на канве: два холста, ни движка, ни сборщика, ни зависимостей. Игры за ней пока нет — есть вид и движение.
Работы, у которых страницы нет:
- Долгая Серь Мир на Godot, построенный кодом в момент запуска: тридцать пять скриптов, девять шейдеров, стриминг в три кольца — воксельные чанки вблизи, сглаженный дальний уровень детализации за ними, вода между. Генерация детерминирована: одно и то же число сида всегда даёт один и тот же мир. Для отладки написано живое превью прямо во вьюпорте редактора и карта шума, отвечающая на вопрос, что за число превратилось вот в эту гору.
- Синкатрон Стратегия реального времени на Godot: экономика, очередь производства, состояние матча и шина событий вынесены в автозагрузки; отдельно — процедурный генератор ландшафта, правила высот, расстановка строений, туман войны и миникарта.
- Тартария Платформер на восьми модулях ES: ядро, звук, уровни, физика, частицы, отрисовка, захват кадра. Уровни — внешний JSON с сеткой 32×18, к нему двунаправленный мигратор в LDtk и обратно.
- Нота Настольное приложение под Windows: установка один раз, запуск из меню «Пуск», обновление само. Вызывается глобальным сочетанием клавиш из любого окна системы.
- Проекты с рантаймом Там, где статики мало: AudioViz — Next.js с входом по аккаунту, vibe-fm — Next.js с базой, collide — React и Vite со своей серверной функцией. Каждый живёт отдельным проектом развёртывания и отдельным поддоменом, а не копией в подпути.
- Этот сайт Страницы собираются генератором на Python из кусков содержания: шапка, подвал и реквизиты берутся из одного файла данных. Пункт, добавленный в подвал, появляется сразу на всех страницах — тридцати одинаковых правок, одну из которых обязательно забывают, не возникает.
Взяться за работу
Напишите, на чём это должно работать и что должно остаться у заказчика после сдачи. Из этих двух строк складываются и срок, и цена.