Эта статья о наболевшем: о том, как заказчики на этапе задания и договора не понимают, что хотят получить в итоге. Просят посчитать стоимость по образным описаниям интерактивов. А когда работа идёт и большая часть программы, возможно, уже написана, начинают вносить правки, которые сильно меняют её ядро.
До договора на интерактивный экспонат стоит решить три вещи: на каких экранах он работает, как ведёт себя с посетителем и без него, какие файлы показывает. Согласуйте задание с этими ответами до того, как исполнитель посчитает стоимость. Картинку потом заменить несложно, а задание после расчёта лучше оставить как есть. Любой каприз за ваши деньги, конечно. В новой версии договора я это учёл: если правки увеличивают трудозатраты больше чем на 15%, берусь за них после подписания дополнительного соглашения.
Я пишу программы для сенсорных экранов и датчиков движения в музеях и на выставках. Программу я соберу сам. А вот сколько у экспоната экранов, на каком языке он встречает посетителя и что показывает на каждом шаге, знает организатор, его дизайнер или площадка. Перед сборкой у меня набирается список вопросов к заданию: по трём последним проектам их было 65. И каждый раз как в первый раз: даже тем, кто уже работал со мной, я снова рассказываю, что нужно решить, как передавать мне материалы и писать задание. Теперь я буду просто присылать ссылку на эту статью. Пожалуйста, пользуйтесь.
Начните с оборудования: картинки и кнопки для моих программ рисуют под конкретный экран, под его разрешение и положение, горизонтальное или вертикальное.
Число экранов и что на каждом. Если у экспоната есть второй экран, решите, что он показывает на каждом шаге. В моих программах второй экран меняет картинку вместе с основным: посетитель открыл другой раздел, и на втором экране появилась картинка этого раздела.
Модель или хотя бы пропорции каждого экрана. В одном проекте картинки для второго экрана пришли в пропорции 4:3, а модель монитора заранее не знали. Оставалось выбирать: растянуть картинку на весь экран или вписать её с чёрными полями по бокам. Сначала растягивали. В следующем проекте программа писала время в плашках, нарисованных прямо на картинке, и при растяжении цифры съехали бы с плашек, поэтому выбрали поля. Если модель известна до того, как дизайнер начал рисовать, такого выбора можно избежать.
Звук. Решите, нужен ли он. В одном проекте в ответах про видео оказались сразу «со звуком» и «без звука». В итоге видео запускается без звука, а громкость вынесли в настройки: её меняют одной цифрой, без переделки программы.
Сеть на площадке. Заранее выясните, будут ли там компьютерная сеть и выход в интернет. На выставке интернета может не быть, поэтому лучше, чтобы программа работала и без него: в одном проекте часы на экране берут время с часов компьютера.
Первый экран. С чего начинается экспонат: с выбора языка, с главного меню или с видео, которое крутится, пока никого нет.
Языки и язык по умолчанию. Язык, который включён при запуске, стоит назвать прямо. Если его не указать, программа может начать с первой по алфавиту папки, и экран встретит посетителя по-арабски: папка ara стоит раньше rus. Порядок кнопок языков на экране тоже лучше показать на макете: в одном проекте он был не алфавитный, и кнопки расставляли по нему.
Простой и возврат к началу. Что экспонат делает, когда к нему никто не подходит, и через сколько секунд без касаний возвращается к началу: на первый экран, к языку по умолчанию, с закрытыми окнами и прокруткой наверху. У меня по умолчанию 120 секунд: столько можно читать длинную страницу и ни разу не коснуться экрана. Исключения лучше обсудить до договора. В одном задании было написано: если на главной странице выбран любой язык, кроме английского, при простое переключать на русский. В итоге выбрали одно правило для всех: простой возвращает экспонат к началу и на русский. Следующий посетитель не видит чужих следов, и проверить такое правило можно за один раз.
Видео. Если оно есть, решите, крутится ли оно по кругу или играет один раз и начинается ли сначала, когда посетитель снова открывает экран. Если ролик открывают со страницы и он играет один раз, отсчёт простоя на это время не нужен: ролики бывают разной длины. Когда ролик закончился, снова открывается предыдущая страница, и только тогда запускается отсчёт.
Мои программы показывают то, что лежит в папках. Элемент без файла программа не рисует и не даёт нажать. Когда файл появится, элемент встанет на место без переделки программы. Отсюда несколько просьб к дизайнеру.
Макет каждого экрана и файл под каждый элемент макета. На одном макете была кнопка «домой», а файла для неё не было. Выяснилось, что она повторяет кнопку «назад», и её убрали. В другом проекте на месте картинки «Информация» оказалась копия соседнего окна. Отличить неверный файл от верного программа не может, такое видно только глазами.
Размер под экран. Фоны и длинные страницы выгружают по ширине экрана, у кнопок и плашек свой размер из макета. Одна длинная страница пришла шириной 1223 пикселя, а остальные были по 1920, как экран. Программа растягивает такую картинку, и она теряет чёткость, так что её лучше выгрузить заново.
Номера в именах файлов. Программа берёт картинки по порядку имён. Если новый файл без номера встанет не туда, кнопка покажет чужую картинку, и предупреждения об этом не появится. Поэтому файлы нумеруют в том порядке, в каком они стоят на экране: 01, 02, 03. Как это устроено внутри, я рассказывал в статье на Дзене.
Шрифты. Если программа сама пишет текст на экране, например часы или счётчик, нужен файл шрифта из макета. Похожий бесплатный шрифт всё равно выбивается из макета. В одном проекте нашлась папка шрифтов, из которых собирали макет, и нужный взяли оттуда.
Заглушки. Если материалов ещё нет, экспонат можно собрать на заглушках. В одном проекте английская версия до перевода была копией русской, в другом подписи разделов были одинаковыми временными картинками. Настоящие файлы потом кладут на место заглушек без переделки программы, если структура папок и порядок файлов остались прежними.
Заранее я прошу правильное задание, то есть с ответами на вопросы выше. Материалы поменять несложно, по сути это копирование файлов. Если же задание оказывается неправильным в последний момент, переписывать программу очень сложно. А если расчёт уже отправлен и задание меняется, работы почти всегда становится больше.
За каждым экраном стоит схема переходов. В ней заранее описано, куда ведёт каждая кнопка, когда запускать отсчёт простоя, запоминать ли место, откуда посетитель ушёл, и сбрасывать ли прокрутку при возврате на главную. Новая картинка эту схему не трогает. Новый экран или новая кнопка её меняют.
Отсюда правило для последней недели перед открытием: задание не меняется, только мелкие правки. Лучше, чтобы к этой неделе всё уже было готово, а для этого материалы должны прийти заранее.
Задание готово к расчёту, когда в нём есть ответ на каждый пункт и обе даты из пункта 11. Если на какой-то пункт ответа нет, это вопрос к дизайнеру, к площадке или к себе, и задать его лучше до договора.
По большому счёту, файлы могут прийти и после договора, если задание уже согласовано и у файлов есть свой срок.
А какой вопрос к заданию у вас всплывал позже всех?