Отчёт #15📱Это что-то новенькое...
Прошло уже немало времени с последнего отчёта, а значит пора садиться писать новый ;)
Рука уже зажила, гипс сняли, теперь ношу ортез и делаю упражнения. Да, она всё ещё побаливает, тяжело на неё опираться или поднимать вес, но мышку и стилус держать, как раньше, я уже могу.
Скажу честно, после того перелома обнаружилось, что ещё и с левой рукой есть проблемы. Потянул некоторые сухожилия и мышцы, поэтому первое время я не мог поднимать руку выше уровня плеч. Так что фактически я повредил обе руки 🥲. Но я ходил на ЛФК, делал упражнения, и теперь я уже могу и ей двигать более-менее нормально. Скоро уже нужно будет вернуться в зал и начать заниматься мышцами уже с тренером.
А теперь о главном что там с прогрессом?
Из-за проблем с рукой мне было тяжело держать мышку и делать сцены, поэтому я решил не тратить время зря и поработать над кодом, так как левая рука вполне могла работать с клавиатурой… И я в какой-то степени рад, что я так случилось, потому что прогресс просто неимоверный.
Внутриигровой телефон и все сопутствующие механики
Каким вы помните старый телефон из OBD? А из других игр? Наверное, вам на ум приходит что-то такое:
Как под копирку, да? А что будет, если я скажу, что обновлённый телефон в OBD это что-то, чего вы ещё никогда не видели на Ren’Py? Поверите ли вы мне?
Ладно, не буду тянуть, потому что записал целую презентацию для вас:
YouTube: https://youtu.be/UW1I0FTH_AE
Сделаю вид, что вы посмотрели всё видео 😅. И продолжу со стандартных вопросов, которые могли у вас появиться.
Зачем вообще нужен телефон?
Изначально, когда я только начинал делать игру, я повторял за другими разработчиками. Копировал их механики, брал идеи и тырил код. В какой-то момент решил повторить и телефон, хоть и не было в нём никакой необходимости. Сейчас уже эта механика не ощущается ненужной, и даже наоборот, она необходима и по моему мнению добавляет больше разнообразия в игру.
На кой ты решил переделать старый телефон?
Если коротко, то я не так давно впервые решил поиграть в BaDIK (я играл в очень мало AVN), и меня смутило, что интерфейс телефонов во всех игр какой-то одинаковый, пресный и неудобный.
Как же выглядели старые версии телефонов?
По-разному. Начну с самой первой версии, когда ещё навыков никаких не было… Да-да, я делаю бэкапы и храню все старые версии игры на жёстких дисках. Ну так, на память.
VI век до н.э. KPhone 1. Изображение создано на основе рисунков на бересте.
Тогда я только осваивался с движком, пытался искать готовый код в интернете, ломал голову над тем, почему всё так криво работает…
18 ноября, 1963г. KPhone 2. Фото после реставрации.
Время от времени отвлекался от рендеров и занимался телефоном, что-то в нём делал, экспериментировал…
3 апреля, 1973г. KPhone 3. Фото было выиграно у бомжа в честной драке.
Мне даже казалось, что у меня что-то получается: плеер играет, кнопки работают… Даже в какой-то момент была идея добавить механику инвестиций в игру.
18 февраля, 1999г. KPhone 4. «Первое явление народу». Фото сделано очевидцами.
Здесь я уже начал задумываться о стикерах и о красоте интерфейса. Сейчас уже это не назовёшь красотой, но на большее я тогда не был способен. Кстати, эта версия как раз и появилась в OBD.
9 января, 2007г. KPhone 5. «Второе явление народу». Фото находится в клэртонском национальном музее игроделов и тружеников, как символ упорности и упёртости.
Иии, думаю, таким вы помните этот телефон сейчас. Даже таким он выглядит довольно приятно… Но пришло время и его хоронить.
Для тех, кто по какой-то причине, сцуко, не посмотрел моё видео, кидаю скрины финальной версии телефона!
15 сентября, 2024г. KPhone X. «Лучше уже не будет».
Ну всё, приехали. Именно такая версия телефона останется в игре до конца. Я очень доволен результатом, и даже почти не жалею потраченного времени.
Опыт, набитый на старых версиях, мне очень пригодился. Все полученные навыки и сломанная рука позволили мне сделать очень сложную, но в то же время структурированную и стабильную систему. Каждое приложение - это отдельный модуль, каждый аккаунт является частью социальной сети, а каждый девайс в игре самостоятелен. Технически в игре присутствует возможность открыть абсолютной любой телефон и увидеть, что в нём находится! Но я вряд ли буду раскрывать секрет того, как это сделать >:)
Как же всё это делалось?
А теперь надо бы рассказать, как проектировался этот телефон, и с какими проблемами и ограничениями я столкнулся.
Ну… начинал я с проектирования дизайна в Photoshop, и заняло это всего два дня. Поначалу я просто хотел убрать из игрового интерфейса всё лишнее, чтобы не было никаких тупых неудобных кнопок, а когда занялся самим телефоном, мне на помощь пришёл мой друг - Gallant Trombe. Он подсказал одну идею: убрать все рамки и оставить только рабочий экран…… Блин, а почему бы и нет? С этого момента поменялось абсолютно всё! Если раньше порядок действий был понятен: делаешь рамки телефона и в них пихаешь картинки, как и во всех играх, то сейчас появилась огромная свобода для импровизации.
Таймлапс проектирования и переноса в код.
Шейдеры, которые создают закруглённые края, я написал ещё очень давно, и если бы я не умел их писать, то такого результата бы никогда не достиг.
В процессе работы я столкнулся с огромным количеством проблем. Как открывать и закрывать приложения? Что делать с экранами, которые друг друга перекрывают? Как убрать эти долбанные страницы и сделать ленты новостей и сообщений бесконечными? И КАК Я, БЛИН, ДОЛЖЕН ЭТО ВСЁ ОПТИМИЗИРОВАТЬ, ЧТОБЫ НИЧЕГО ВАМ НЕ СПАЛИТЬ?
Ren’Py не может сразу рендерить огромное количество объектов, а инструментов по оптимизации он не имеет, поэтому мне пришлось писать их самому.
Сейчас будет много скучного текста…
Когда открывается приложение, экран за ним автоматически скрывается и появляется обратно, когда это надо. Для ленты новостей и сообщений были написаны отдельные оптимизаторы. Они просчитывают размеры панелей, положение текущего окна, и на основе этого дают команду Ren’Py - скрыть или отрендерить объект. Это дало возможность избавиться от «страниц» и сделать FPS, насколько это возможно, плавным. Да, на слабых телефонах будут просадки, но для этого есть пункт «Графика» в настройках игры.
Следующей проблемой стало то, каким образом рендерит Ren’Py. Множество вещей влияет на то, как будет отрендерен объект, из-за чего текст может выглядеть нечётким. Пришлось ставить эксперименты и опытным путём выяснять, какие трюки приведут к нужному мне результату. Ну и пришлось перейти с WebP изображений на SVG иконки, чтобы они отображались на всех мониторах чётко.
После решения этих проблем я столкнулся с другой – анимированные картинки. Это самая большая проблема движка, так как он вообще предназначен для статичных изображений, а анимации для него это так, сайд квест. Пришлось создавать свой классы аудио каналов, которые упрощали бы работу с аудио (это напрямую связано с анимациями), и также создавать класс, который бы хранил саму анимацию, подготавливал нужные аудио каналы для проигрыша или же просто возвращал статичную картинку, если в этом была бы необходимость. Таким образом получилось сделать так, что
любые объекты из галереи могут стать обоями на телефоне.
любые объекты из галереи могут стать обоями на телефоне.
Так же появилась необходимость в создании базы данных всего контента социальной сети. Информация об авторах песен, треках, картинках, стикерах, эмодзи и аккаунтах теперь достаётся по ID, а не прописывается напрямую. Благодаря этому сломать мне что-то в телефоне в будущих обновления будет в разы сложнее.
Конец скучного текста.
Небольшой, но очень важный багфикс
Пока работал над телефоном, я случайно обнаружил причину, по которой игра не сбрасывала переменные при начале новой игры и при загрузке сохранений, из-за чего необходим был полный перезапуск. Природа этой херабодины мне с самого релиза не была известна… Пришлось отказаться от того, как я работал с переменными раньше, и перейти на более «продвинутый» код. Ну так вот, теперь всё будет работать :3
Поддержка iOS играем на всех платформах!
Да, это звучит громко, и нет, это не выход в AppStore. Но играть наiPhone в OBD будет возможно и с довольно стабильным FPS! Инструкция по запуску, настройке и всему прочему будет доступна на релизе и в самой игре :)
Что же теперь?
А теперь, раз я закончил с телефоном и имею более-менее , я могу возвращаться к обычной жизни создателя контента. Да, я планировал сделать релиз ещё в конце лета, но, как видите, случился форс-мажор вместе с беготнёй по врачам… Я бы даже сказал, что это был не очень приятный инцидент, который подтолкнул на очень приятные изменения.
Как обычно, в радиомолчание не ухожу. Пишите, звоните, не теряйте, я всегда есть тут или в Дискорде. До релиза уже пяткой подать.
И большое спасибо тем, кто верит в этот проект и поддерживает его! Без вашей помощи игра не смогла бы стать такой, какая она есть ❤️