2-ой день разработки проекта PlayVibe
В 1-ый день я просто настроил структуру директорий проекта, создал Golang модуль и подключил всё это дело к Vercel.
Далее надо было начать с какой-то веб-странички. Тогда я решил подключить UIKit3, на котором уже собаку съел, с которым уже много много сайтов сделал. Обычно я выбираю его, но посмотрел сколько он весит и оказалось, что 487 кб, многовато! А мне хочется уже из спортивного интереса выбрать самые-самые легковесные решения.
Вообще, моя страсть к тотальной оптимизации за последнее время усилилась 2 историями.. Извиняюсь, что опять начинаю с лирических отступлений :D Но я люблю сторителлинг.
Друг, у которого свое HR агенство, рассказал, что один раз подыскивал программиста для двух американских евреев. Дело было в 00ых. За 100% правдивость не ручаюсь, пересказываю со слов друга.
У них была компания своих ТВ-приставок. Вдруг они решили, что для повышения продаж им необходимо конкурентное преимущество, каким-то путем они пришли к идее, что неплохо было бы добавить в ТВ-приставку поддержку каких-нибудь игр! Взять 2-3 старые игры и портировать их, встроить в прошивку!
Тогда через связи, через знакомых и знакомых знакомых находят, что есть один паренек, который увлекается программированием и так ловко код пишет, оптимизированно по железу, что DOOM может на чем угодно запустить.
Ему дают образец устройства, говорят, мол, возьми какие-нибудь простейшие игрушки, попробуй их туда добавить. Задача казалось практически нерешаемой, были какие-то большие ограничения по процессору и памяти (детали не помню, но мощности было как у Сеги, а то и меньше).
Паренек почесал голову, сказал, что, мол, ящик пива и всё будет готово через месяц. Через месяц приносит железку, а на ней не только 3 игры есть портированные, но еще и графический интерфейс самой приставки прокачал, а то как-то допотопно выглядело.
Его недолго думая берут в команду разработчиком, назначают ему опцион, работают... Продажи пошли лавинообразно. Клиентам понравились новые фичи, их удивляло, что в недорогом устройстве бонусом еще и поддержка игр есть.
Прошло лет 5, этот разработчик стал акционером компании. Но его страсть к алкоголю не утихла. Когда совладельцам надоело, что до него не дозвониться в самый ответственный момент, ему предложили солидную компенсацию (порядка 4 млн долларов), что он с радостью принял и уехал на острова купить дом и продолжать пить.
Мораль сей истории в том, что умея достигать чего-то, необходимого другим, небольшими ресурсозатратами, ты обязан озолотиться. Любой разработчик может сделать тяп-ляп и ускакать в закат, но не каждый может выжать из железа и софта всё, на что оно способно, получив результат, для которого другим надо в 10 раз больше ресурсов.
История 2. Игра размером в 96 килобайт
Есть такая игрушка под названием "kkrieger". Это реально шутер на ПК, который мне напоминает Serious Sam. Игра весит всего 96 кб, но в ней есть множество оружия, уровней, монстров и боссов. Как это возможно?!
Игра появилась в 2004 году, немецкие разработчики представили ее на конкурсе демок. Раньше были соревнования, которые можно описать как "уместите в 96 кб как можно более крутую демку".
Помните "кряки" от пиратского ПО? В которых постоянно играет 8bit музыка? Это явление тоже уходит корнями к техно-демкам.
Подробная статья про kkrieger выходила на хабре. В общем, разработчикам удалось достичь настолько существенной оптимизации благодаря созданию моделей, текстур и звуков с помощью процедурной генерации. Всю эту игру создает код и высшая математика, задействуя доступные ресурсы компьютера.
А вот еще демка от тех же разработчиков размером уже в 177 кб:
Возвращаясь к теме моей разработки
Я решил взяться за этот челлендж, не использовать UIKit3 для фронта (немецкие разработчики в меньший размер уместили целую игру), а попробовать PureCSS (3.8 кб!) может удастся потом из него что-нибудь вырезать лишнее, ахаха
Я нашел, что этот CSS фреймворк сделали Yahoo в 2014 году.
Что же, попробую сделать скетчи интерфейса, а затем сверстать их.
Figma не пользуюсь, предпочитаю ручку и бумагу или верстать сразу в коде. Backend'ер, все же.
Воспользуюсь инструментом Wireframe, который доступен без регистрации и бесплатно. Вот что у меня получилось сделать за полчаса:
В цветах Wireframe ограничен, пришлось использовать такие сочетания. Начну с главного экрана, пусть на нем отображаются доступные соревнования.
Пусть по кнопке справа внизу будут инструменты для проведения своего соревнования. Осталось сверстать эту основу.
В следующей статье покажу что получилось, а также расскажу что решил по frontend, API и backend.
Новые статьи размещаю в своем Telegram канале, подпишись, чтобы быть в курсе.