Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр
 Что обсуждали люди в 2024 году? Самое время вспомнить — через виммельбух Пикабу «Спрятано в 2024»! Печенька облегчит поиск предметов.

Спрятано в 2024

Поиск предметов, Казуальные

Играть

Топ прошлой недели

  • Oskanov Oskanov 8 постов
  • alekseyJHL alekseyJHL 6 постов
  • XpyMy XpyMy 1 пост
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая кнопку «Подписаться на рассылку», я соглашаюсь с Правилами Пикабу и даю согласие на обработку персональных данных.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Новости Пикабу Помощь Кодекс Пикабу Реклама О компании
Команда Пикабу Награды Контакты О проекте Зал славы
Промокоды Скидки Работа Курсы Блоги
Купоны Biggeek Купоны AliExpress Купоны М.Видео Купоны YandexTravel Купоны Lamoda
Мобильное приложение

Gifка

856 постов сначала свежее
4
pmirhsss
6 дней назад

Как я превратила семейные шутки в проект с матрёшками⁠⁠

У нас в семье трое детей. Старшая — спокойная и добрая. Я — бунтарка с пирсингом в носу. Младшая — шкода, которую все немного баловали. Родители — добрые, как утренний чай. В этой суматохе родился наш семейный уклад, полный шуточных правил и странных привычек. Сегодня я рассказываю об этом в проекте, где наша семья превращается в матрёшек. Да-да, в буквальном смысле. Добро пожаловать в дом Грелкиных.

Как я превратила семейные шутки в проект с матрёшками Проект, Творческие люди, Семья, Длиннопост, Procreate, Творчество, Многодетная семья, Правила, Юмор, Гифка

Откуда всё началось: родом из моего детства

Я выросла в многодетной семье, и это сильно повлияло на моё восприятие мира. Трое детей — это не только постоянная движуха, но и целая внутренняя экосистема. У нас не было «официальных» семейных правил, зато были свои: например, «хочешь успеть в душ — вставай раньше всех», «можно съесть последний кусок, если никто не видит».

Между делом эти правила стали частью нашей семейной мифологии — такие штуки, которые передаются не через лекции, а через улыбки, ссоры, традиции и мемы. Спустя годы я поняла, что это — невероятно тёплый и важный культурный слой, который хочется сохранить и визуализировать.

Как я превратила семейные шутки в проект с матрёшками Проект, Творческие люди, Семья, Длиннопост, Procreate, Творчество, Многодетная семья, Правила, Юмор, Гифка

Проект «Семья Грелкиных»: когда матрёшки оживают

Я решила сделать интерактивный лонгрид — небольшой визуальный рассказ о нашей семье. Герои — это мы, мои родители, сёстры, только в форме матрёшек. Почему матрёшки? Потому что они идеально отражают суть большой семьи: похожи внешне, но внутри — абсолютно разные. И все мы — часть друг друга.

Каждая матрёшка в проекте ведёт себя по-своему. Кто-то ест чужую еду, кто-то выручает другого, кто-то играет — всё это отражает наши привычки, роли и даже возрастные особенности. Основная цель — передать, что у большой семьи есть свой внутренний язык, свои коды, и они могут быть очень смешными, нелепыми, но по-настоящему живыми.

Посмотреть сам лонгрид можно здесь: https://readymag.website/hseadc1/PVVMS

Как я превратила семейные шутки в проект с матрёшками Проект, Творческие люди, Семья, Длиннопост, Procreate, Творчество, Многодетная семья, Правила, Юмор, Гифка

Что внутри проекта

Проект — это не просто «просмотр прикольных картинок», а погружение в мир визуального сторителлинга и личного семейного опыта. Внутри вы найдете:

  • Иллюстрации и анимации: матрёшки двигаются, взаимодействуют, рассказывают истории.

  • Шуточные семейные правила, с которыми легко себя ассоциировать — особенно если вы сами не единственный ребёнок.

  • Обычный день семьи, показанный через призму любви, хаоса и «домашней логики».

Это попытка сохранить семейную идентичность через язык цифрового искусства.

Почему я сделала этот проект

Этот проект стал для меня терапией, способом оцифровать тёплые воспоминания, упорядочить хаос и поделиться чем-то личным, но узнаваемым для других. Мы часто думаем, что «семейная тема» — это не что-то интересное внешнему миру. Но на самом деле именно в повседневности рождаются самые узнаваемые, трогательные и универсальные сюжеты.

Как я превратила семейные шутки в проект с матрёшками Проект, Творческие люди, Семья, Длиннопост, Procreate, Творчество, Многодетная семья, Правила, Юмор, Гифка

Техническая и визуальная сторона

Проект был реализован на платформе Readymag — она отлично подходит для создания лонгридов с анимацией. Также я оформила кейс проекта на HSE Design.

А если хочется ещё ближе…

Если вам близка тема семейных историй, визуального сторителлинга и креативных проектов на стыке личного и художественного — буду рада видеть вас у себя в Telegram-канале. Там я делюсь процессом, новыми идеями и проектами: t.me/pmirhsssdezign

Как я превратила семейные шутки в проект с матрёшками Проект, Творческие люди, Семья, Длиннопост, Procreate, Творчество, Многодетная семья, Правила, Юмор, Гифка

Спасибо, что заглянули в дом Грелкиных!

Показать полностью 4
[моё] Проект Творческие люди Семья Длиннопост Procreate Творчество Многодетная семья Правила Юмор Гифка
0
4
pmirhsss
6 дней назад

Как я превратила весеннюю аллергию в мультяшный эксплейнер — и случайно взяла приз⁠⁠

Как я превратила весеннюю аллергию в мультяшный эксплейнер — и случайно взяла приз Автор, Аллергия, Поллиноз, Анимация, Конкурс, Победа, Челлендж, Награда, Герои, 2D, Гифка, Длиннопост

Весна — сезон, когда всё расцветает… и мой организм начинает вести себя так, будто мы воюем. Если вы тоже каждую весну начинаете чихать, тереть глаза и чувствовать себя разбитым — привет, вы не одиноки. У меня — аллергия на пыльцу, или поллиноз. Год за годом я проходила один и тот же круг страданий: нос не дышит, глаза слезятся, хроническая усталость, похожая на трёхдневное бессонное марафонище.

В какой-то момент я подумала: «А что если попробовать превратить этот повторяющийся ад в проект? Может, он поможет не только мне?» Так родилась идея мультяшного эксплейнера про аллергию — простой, добрый, а главное — понятный даже детям.

Спойлер: я отправила его на конкурс без особых надежд — и неожиданно взяла третье место.

Как я превратила весеннюю аллергию в мультяшный эксплейнер — и случайно взяла приз Автор, Аллергия, Поллиноз, Анимация, Конкурс, Победа, Челлендж, Награда, Герои, 2D, Гифка, Длиннопост

Весна на носу — и в носу

Меня давно интересовало: почему организм вообще решает, что пыльца — это угроза? Почему таких, как я, с каждым годом становится всё больше? И почему так много людей путают аллергию с простудой?

Я решила ответить на эти вопросы так, чтобы и самой стало понятнее, и другим можно было объяснить — без медицинских терминов и нудных лекций. И придумала формат: анимационный эксплейнер, в котором сложные процессы рассказываются через простые метафоры и визуальный сторителлинг.

Вот что внутри ролика:

  • основные симптомы поллиноза, чтобы вы могли вовремя их распознать;

  • что именно вызывает аллергию, откуда она берётся и почему всё это происходит;

  • как иммунная система «ошибается», принимая пыльцу за врага;

  • и главное — что можно делать, чтобы облегчить своё состояние.

Как я превратила весеннюю аллергию в мультяшный эксплейнер — и случайно взяла приз Автор, Аллергия, Поллиноз, Анимация, Конкурс, Победа, Челлендж, Награда, Герои, 2D, Гифка, Длиннопост

Визуальный язык без занудства: как я превратила клетки в героев

Чтобы объяснить, как работает аллергическая реакция, я представила организм как город, а клетки — как его жителей. Каждый персонаж в ролике получил свой характер: Т-клетка — как генерал, В-клетки — как инженеры, а антитела IgE — как ракета.

Такой подход помогает детям и взрослым понять, что аллергия — это не «прихоть организма», а сбой в системе восприятия. Это не вирус, не бактерия, не злой рок. Это иммунитет, который слишком старается нас защитить.

Как я превратила весеннюю аллергию в мультяшный эксплейнер — и случайно взяла приз Автор, Аллергия, Поллиноз, Анимация, Конкурс, Победа, Челлендж, Награда, Герои, 2D, Гифка, Длиннопост

От личного страдания — к осознанности

Я хотела, чтобы этот ролик не только информировал, но и поддерживал. Потому что аллергия — это не просто неудобство. Это про качество жизни. Это про бессонные ночи, апатию и ощущение, что весна — враг. Очень важно вовремя распознать симптомы и понять, что с тобой происходит.

Если у вас или у вашего ребёнка каждую весну:

  • слезятся глаза,

  • першит в горле,

  • начинается насморк без температуры —

возможно, это не простуда, а поллиноз. И мой ролик может помочь это понять.

Как я превратила весеннюю аллергию в мультяшный эксплейнер — и случайно взяла приз Автор, Аллергия, Поллиноз, Анимация, Конкурс, Победа, Челлендж, Награда, Герои, 2D, Гифка, Длиннопост

А потом случилось неожиданное…

Когда я закончила проект, у меня не было амбиций. Я загрузила ролик на сайт HSE Design — просто «чтобы было». Дедлайн поджимал, и я даже не рассчитывала на что-то серьёзное.

Но в последний момент решила: «А почему бы не подать его на HSE CREATIVE OPEN в категорию «Эксплейнер»? Вдруг заметят…»

И — заняла третье место. 🎉

Это было абсолютно неожиданно, но стало настоящим подтверждением: даже личная боль может стать чем-то полезным и ценным, если рассказать о ней искренне и с теплом.

Посмотри эксплейнер — вдруг он пригодится и тебе

Мой проект доступен на платформе HSE DESIGN. Его можно показать детям, скинуть другу, который «опять заболел весной», или просто посмотреть, чтобы лучше понять, как работает наше тело.

Также я завела Telegram-канал, где делюсь своими визуальными экспериментами, проектами и небольшими инсайтами из жизни и дизайна.

Как я превратила весеннюю аллергию в мультяшный эксплейнер — и случайно взяла приз Автор, Аллергия, Поллиноз, Анимация, Конкурс, Победа, Челлендж, Награда, Герои, 2D, Гифка, Длиннопост

PS: Пыльца не ждёт — а ты можешь быть готов

Весна повторяется каждый год. И если ты знаешь, что тебя ждет, — пережить её гораздо легче. Надеюсь, мой проект поможет хотя бы одному человеку сделать этот сезон немного легче. Или хотя бы улыбнуться, даже если чихаешь.

Показать полностью 5
[моё] Автор Аллергия Поллиноз Анимация Конкурс Победа Челлендж Награда Герои 2D Гифка Длиннопост
0
pmirhsss
6 дней назад

О себе и моем творческом пути⁠⁠

Привет! Меня зовут Ксюша, и я студентка третьего курса Школы дизайна НИУ ВШЭ. Моя творческая история началась задолго до университета — я всегда знала, что я творческая личность. Еще в детстве я обожала делать что-то руками и пробовать разные художественные техники. Тем не менее, мой путь к дизайну был не таким прямолинейным.

О себе и моем творческом пути Проект, Дизайн, Motion design, Путь, 3D, Анимация, Гифка, Длиннопост
1/4

Путь к дизайну: от физики к творчеству

Изначально я выбрала технический вуз из-за интереса к физике, но вскоре поняла, что мое место в мире творчества. Решение сменить направление и поступить в Школу дизайна ВШЭ стало для меня переломным моментом. Здесь я освоила основы дизайна и поняла, что хочу заниматься моушн-дизайном и анимацией, особенно в 3D-анимации.

Мой стиль: просто и мило

В моих работах чувствуется легкость и теплота. Я создаю визуально приятные проекты с теплым настроением. Мой стиль можно описать как «просто и мило» — даже когда я пробовала создавать что-то мрачное или сложное, мои персонажи все равно оставались милыми. Основное направление, которое мне интересно, — это 3D-анимация, где я могу свободно выражать свои идеи и создавать яркие, динамичные проекты.

1/7

Проекты, которыми горжусь

Одним из первых значимых проектов стала моя настольная игра. Несмотря на то, что я считала свои навыки рисования слабой стороной, игра получилась яркой и запоминающейся. Этот проект показал мне, что идеи важнее технического мастерства. Еще один проект, которым я горжусь, — это 3D-анимационная новогодняя открытка. В ней я объединила уютный визуальный стиль и забавную концепцию, создав сильный визуальный образ.

О себе и моем творческом пути Проект, Дизайн, Motion design, Путь, 3D, Анимация, Гифка, Длиннопост
1/7

Навыки и развитие

Я уверенно работаю как в 3D, так и в 2D, умею быстро переходить от идеи к реализации и легко адаптируюсь к новым задачам. Я постоянно развиваюсь, пробую новые техники и формы, чтобы улучшать свои навыки и создавать интересные проекты.

1/3

Планы на будущее

В будущем я хочу развиваться в 3D-анимации и моушн-дизайне, а также создавать собственные продукты — например, концептуальные глиняные лампы. Моя цель — работать на себя, создавать проекты, которые будут отражать мое видение и стиль.

О себе и моем творческом пути Проект, Дизайн, Motion design, Путь, 3D, Анимация, Гифка, Длиннопост

Спасибо, что познакомились со мной и моим творчеством. Я всегда открыта к новым проектам и сотрудничеству. Для связи пишите в телеграмм: @pmirhsss

Подписывайтесь на телеграм-канал: t.me/pmirhsssdezign

Показать полностью 23
[моё] Проект Дизайн Motion design Путь 3D Анимация Гифка Длиннопост
2
68
tnrprog
tnrprog
6 дней назад
Противозачаточные шутки

Ответ на пост «Симуляция Наташи»⁠⁠3

Ясно... Понятно...
Не понятно только НАХРЕНА ЭТО ВСЁ МУЖЧИНЕ?
Ему тоже надо, как минимум, чтобы его жизнь от отношений НЕ УХУДШАЛАСЬ.

Ответ на пост «Симуляция Наташи» Разговор, Война полов, Отношения, Мужчины и женщины, Общение, Текст, Гифка, Ответ на пост
Разговор Война полов Отношения Мужчины и женщины Общение Текст Гифка Ответ на пост
3
user10828933
user10828933
6 дней назад

Пост удалён⁠⁠

Пост удалён
Дизайн Шрифт Дизайнер Креатив Стиль Айдентика Бренды Типографика Вирус Компьютерный вирус Digital Гифка Длиннопост Искусство Страшно Страх
6
21
RottenRat
RottenRat
6 дней назад
Лига Разработчиков Видеоигр

Veliri - Дневник разработки⁠⁠

Veliri - Дневник разработки Разработка, Видеоигра, YouTube, Инди игра, Gamedev, Инди, MMORPG, Видео, Гифка, Видео ВК, Без звука, Короткие видео, Длиннопост

Привет, Pikabu!

Я все еще продолжаю делать ММО игру :)

Veliri - Дневник разработки Разработка, Видеоигра, YouTube, Инди игра, Gamedev, Инди, MMORPG, Видео, Гифка, Видео ВК, Без звука, Короткие видео, Длиннопост

Я разрабатываю 2D MMORPG, в стиле eve но с веселыми боями. Настоящая MMORPG где тысячи (в теории) игроков могут существовать в одном мире. Конечно, всё это особо не тестировалось, но да помогут мне духи машин.

Главная фишка — мир существует сам по себе: его населяют боты, полностью равноценные игрокам. Они торгуют, воюют, выполняют миссии и даже общаются между собой, создавая некую экосистему. А ещё в игре реализован настоящий non-target бой. Кривая физика в комплекте.

Демка игры уже доступна, буду рад отзывам.

https://store.steampowered.com/app/3100340/Veliri_Planet_of_Machines_Demo/

Девлог

С тех пор, как вышел последний девлог, я всем показывал игру, собирал фидбек, игра вообще никому не понравилась но меня это не остановит, потому что я не умею читать :D.

Veliri - Дневник разработки Разработка, Видеоигра, YouTube, Инди игра, Gamedev, Инди, MMORPG, Видео, Гифка, Видео ВК, Без звука, Короткие видео, Длиннопост

Но все же было исправлено очень много багов, интерфейсов, логики, полностью переработал саунд дизайн, оптимизировал всякое и вообще занимался всякими непотребствами. Надеюсь, и графику удастся подтянуть.

Но разработка новых фич тоже велась и вот что нового в игре.

Боссы и контрольные точки

В игре появились полноценные боссы — с отдельной полоской здоровья, своими билдами машин и поведением. Пока их двое, и они используются в сюжетной ветке. Но главное — они уже есть!)

Когда я добавил боссов, то быстро понял: игроки будут часто умирать от них, а каждая смерть означает потерю машинки. Чтобы это не стало фрустрирующим, я сделал контрольные точки в приватные локации.

На текущий момент сюжетные миссии ближе к одиночным играм, чем к классическому MMO. В демо доступны первые две миссии из семи запланированных — можете залетать)

Veliri - Дневник разработки Разработка, Видеоигра, YouTube, Инди игра, Gamedev, Инди, MMORPG, Видео, Гифка, Видео ВК, Без звука, Короткие видео, Длиннопост

Мощь 11 стволов

Движок игры теперь поддерживает использование множества видов оружия одновременно. У некоторых орудий появились «углы» поворота, и NPC умеют стрелять во все стороны, чтобы использовать всю огневую мощь по максимуму!

К сожалению, из-за сложности отрисовки прицела(ов) на клиенте такая возможность пока доступна только для NPC. В будущем её можно будет расширить но это уже в DLC )

Археология и петы

Археология — это механика, которая часто встречается в космических играх, от Stellaris до КР. Игрок высаживается на планету, и происходит небольшое приключение в виде текста. Такая механика напрашивалась ещё с самого начала, но я не мог правильно встроить её в игру и учесть лор и сеттинг.

Но я смог решить это через "петов". Поскольку моя игра — про роботов, то в качестве питомца здесь выступает «научный модуль», который летает за игроком и при этом обладает собственной личностью. Теперь он участвует во всех приключениях — исследует руины, бункеры и прочие локации.

Теперь с игроком путешествует аж два ИИ-персонажа — получился настоящий весёлый экипаж корабля 🚀

Veliri - Дневник разработки Разработка, Видеоигра, YouTube, Инди игра, Gamedev, Инди, MMORPG, Видео, Гифка, Видео ВК, Без звука, Короткие видео, Длиннопост
Veliri - Дневник разработки Разработка, Видеоигра, YouTube, Инди игра, Gamedev, Инди, MMORPG, Видео, Гифка, Видео ВК, Без звука, Короткие видео, Длиннопост

На фоне пока нейромазня. Но я слишком нищий, чтобы заказать столько арта)

Всемирное зло

Я полностью переработал механику нпс фракции и теперь они очень похожи на доминаторов из кр2. Одновременно в игре работаю 3 их армии и они захватывают все сектора до которых могут дотянутся, включая безопасные сектора, в захваченных секторах они строят свои базы и наращивают больше сил.

Что бы эти товарищи не жестили у фракций появились отдельный армии (силы коалиции), который отбивают сектора обратно.

Veliri - Дневник разработки Разработка, Видеоигра, YouTube, Инди игра, Gamedev, Инди, MMORPG, Видео, Гифка, Видео ВК, Без звука, Короткие видео, Длиннопост
Veliri - Дневник разработки Разработка, Видеоигра, YouTube, Инди игра, Gamedev, Инди, MMORPG, Видео, Гифка, Видео ВК, Без звука, Короткие видео, Длиннопост

покатушки по пустошам

Красные VS Желтые

Автопилот

Для игрока это конечно странно, но заставить ботов ходить преимущественно по дорогам для меня оказалась сложной задачей и поэтому я выделил это в отдельный пункт :D

Бонусом на дорогах машинка двигается на 30% быстрее.

Шахты?

Крч в какой-то момент я решил немного отвлечься от всего и сделал отдельную игру типа римворлда на минималках. Но что бы наработки не пропадали зря я вкарячил эту игру в основную и теперь это аналог “планетарного строительства” из евы. Там пока нет визуала, но логика работает и расширяема )

Связь между шахтой и игроком происходят через лифт, куда он направляет ресурсы/дронов и через него же получает ресурсы.

Veliri - Дневник разработки Разработка, Видеоигра, YouTube, Инди игра, Gamedev, Инди, MMORPG, Видео, Гифка, Видео ВК, Без звука, Короткие видео, Длиннопост

В итоге

Игра по моему ощущению уже готова, все основные механики есть, работают и даже немного протестированы, спасибо всем кто заваливал баг трекер в дискорде :)

Теперь главное — доделать сюжет, дорисовать не дорисованное и запустить ранний доступ. А потом уже буду думать куда двигаться дальше )

Показать полностью 8 8
[моё] Разработка Видеоигра YouTube Инди игра Gamedev Инди MMORPG Видео Гифка Видео ВК Без звука Короткие видео Длиннопост
12
lVlaDleNlblyad
lVlaDleNlblyad
6 дней назад

Озарение...⁠⁠

Пересматривал сейчас Отчаянный 1995 года. И каждый раз ловил флешбеки...

Озарение... Отчаянный (фильм), Александр Невский (актер), Эмоции, Гифка
Озарение... Отчаянный (фильм), Александр Невский (актер), Эмоции, Гифка
Озарение... Отчаянный (фильм), Александр Невский (актер), Эмоции, Гифка
Озарение... Отчаянный (фильм), Александр Невский (актер), Эмоции, Гифка
Показать полностью 3
Отчаянный (фильм) Александр Невский (актер) Эмоции Гифка
10
200
monobogdan
monobogdan
Посты о ремонте и моддинге ретрогаджетов.
TECHNO BROTHER
7 дней назад

Самая сложная «Змейка»: Как я отреверсил и хакнул кнопочный телефон, чтобы написать для него классическую игру⁠⁠

Самая сложная «Змейка»: Как я отреверсил и хакнул кнопочный телефон, чтобы написать для него классическую игру Телефон, Гаджеты, Программирование, Реверс-инжиниринг, Хакеры, Моддинг, Кастомизация, Игра змейка, Гифка, Длиннопост

Осторожно: в данной серии статей я рассказываю о реверс-инжиниринге и хакинге простых кнопочных звонилок. Цель простая: расширить скудный функционал телефонов ценой до 1 000 рублей и сделать их привлекательной моддинг-платформой для самых разных гиков. Если вы когда-нибудь слышали про эльфы и патчи, и вам интересно узнать, как происходит процесс взлома и изучения прошивок, а также написания новых программ для кнопочников — приглашаю вас под кат!

❯ Предыстория

Недавно я познакомился с Ilya_ZX, человеком-легендой в моддинг сцене телефонов из нулевых. Илья рассказал мне забавную историю: ещё будучи студентом, он увидел как одногруппник играет на своём LG G1800 в легендарную мобильную игру нулевых — «Змейку». Его тогдашний Siemens A60 не умел ничего кроме игрушки Stack Attack, даже Java-игры не поддерживались, а молодому парню очень хотелось сыграть в Змейку на скучных парах!

Самая сложная «Змейка»: Как я отреверсил и хакнул кнопочный телефон, чтобы написать для него классическую игру Телефон, Гаджеты, Программирование, Реверс-инжиниринг, Хакеры, Моддинг, Кастомизация, Игра змейка, Гифка, Длиннопост

Казалось бы, на дворе 2005 год, можно просто пойти на рынок и купить уже изрядно подешевевшую Б/У 3310 и поиграть в «трушную» змейку именно там. Но Илья был не просто студентом технаря, он с юности интересовался программированием, реверс-инжинирингом и телефонами! И он решил поспорить с одногруппником — сможет ли он реализовать Змейку на своём A60? Всего за один месяц он умудрился исследовать прошивку телефона на диковинной процессорной архитектуре, найти необходимые функции для работы с дисплеем, вводом и окнами и написать ту самую змейку. Попробуйте теперь представить лицо его одногруппника, который проиграл спор молодому реверсеру :)

Самая сложная «Змейка»: Как я отреверсил и хакнул кнопочный телефон, чтобы написать для него классическую игру Телефон, Гаджеты, Программирование, Реверс-инжиниринг, Хакеры, Моддинг, Кастомизация, Игра змейка, Гифка, Длиннопост

Сначала Илья написал игру на Паскале для самопального «симулятора» A60, а затем переписал её на ассемблере для C166s!

На момент написания статьи мне 23 года, я лишь чуточку старше тогдашнего Ильи. После рассказанной истории, я подумал «А чем я хуже?» и принялся реверсить прошивку бюджетного кнопочника 10-й давности - Explay B240. В прошлой статье, мы с вами проделали первые шаги по хакингу телефона: загрузка прошивки в IDA Pro и поиск системных функций, хакинг файлового менеджера для запуска программ с MicroSD-флэшки, разработка загрузчика исполняемых файлов и организация таблицы функций. В целом, это весьма неплохая поучительная статья для новичков в реверс-инжиниринге.

Самая сложная «Змейка»: Как я отреверсил и хакнул кнопочный телефон, чтобы написать для него классическую игру Телефон, Гаджеты, Программирование, Реверс-инжиниринг, Хакеры, Моддинг, Кастомизация, Игра змейка, Гифка, Длиннопост

Однако итоговый результат в виде заливки экрана желтым цветом может показаться незначительным. Поэтому в сегодняшней статье мы с вами напишем первую действительно полезную программу!

❯ «Змейка»

Напомню, что загрузчик внешних программ работает по очень простому принципу: мы нашли в дизассемблере функцию обработки сообщений окна встроенной игры и хукнули её, дабы при открытии окна она загружала программу с MicroSD-флэшки в ОЗУ и передавала ей управление. При этом загрузчик сразу интегрирован в проводник: при запуске файла с расширением .app, патч кладет строку с абсолютным путем к нему в одну из «угнанных» глобальных переменных, открывает хукнутое окно игры, а далее бинлоадер транслирует все сообщения от ОС в загруженную программу.

Самая сложная «Змейка»: Как я отреверсил и хакнул кнопочный телефон, чтобы написать для него классическую игру Телефон, Гаджеты, Программирование, Реверс-инжиниринг, Хакеры, Моддинг, Кастомизация, Игра змейка, Гифка, Длиннопост

Наглядная демонстрация работы

Таким образом, жизненный цикл приложений значительно упрощается по сравнению с "эльфами" на тех же Motorola и Siemens: по сути, нам остаётся лишь проинициализировать состояние программы в MSG_CREATE и освободить динамическую память в MSG_CLOSE. Читателям, которые хоть раз писали программы под Windows, такой подход может показаться очень знакомым!

Самая сложная «Змейка»: Как я отреверсил и хакнул кнопочный телефон, чтобы написать для него классическую игру Телефон, Гаджеты, Программирование, Реверс-инжиниринг, Хакеры, Моддинг, Кастомизация, Игра змейка, Гифка, Длиннопост

Для реализации змейки, нам необходимо уметь обрабатывать кнопки и рисовать что-то на дисплей. С кнопками проблем никаких не возникает: система шлёт сообщения типа MSG_KEYDOWN_KEY и MSG_KEYUP_KEY на каждое событие с клавиатурой. А вот с графикой чуточку сложнее: поскольку встроенные в прошивку функции завязаны на работу с вшитыми ресурсами, мы напишем нужные функции сами.

UI-подсистема телефона реализована по принципу «грязных зон». Вместо перерисовки всего экрана, система хранит массив с координатами прямоугольников, где что-то изменилось с момента прошлой перерисовки: это позволяет сэкономить такты процессора на тяжелых операциях по типу альфа-блендинга.

Самая сложная «Змейка»: Как я отреверсил и хакнул кнопочный телефон, чтобы написать для него классическую игру Телефон, Гаджеты, Программирование, Реверс-инжиниринг, Хакеры, Моддинг, Кастомизация, Игра змейка, Гифка, Длиннопост

Таким образом, сначала нам нужно получить указатель на буфер кадра, затем сделать весь экран «грязным» путем отрисовки полноэкранного прямоугольника и только потом поверх него рисовать графику нашей игры. На первый взгляд листинг ниже кажется дичью, но чуток отрефакторить — и выглядит как типичный код эмбедщика!

void Paint(LoaderContext* context)
{
LcdId lcd = { 0, 0 };
uint16* fb = ((uint16*(*)(LcdId* id)) LcdGetFrameBuffer)(&lcd); // Get framebuffer for primary screen

uint16 startEnd[4] = { 0, 0, 240, 320 }; // Rect
((void(*)(LcdId* lcdId, uint32 start, uint32 end, uint16 col)) LcdDrawRectPtr)(&lcd, ((uint32*)&startEnd[0])[0], ((uint32*)&startEnd[0])[1], 0x0); // Draw fullscreen rectangle

((void(*)()) LcdUpdateRect)(); // Update rect
}

Далее я реализовал функцию для отрисовки текста на экране. Шрифты самые примитивные — 8x8, побитовые, примерно как в знакогенераторе оригинального IBM PC. Принцип отрисовки прост: каждый символ (глиф) хранится в виде 8 байт. В каждом байте один бит представляет из себя пиксель по координате Y, если он равен нулю — значит пиксель прозрачный, в обратном же случае он должен быть закрашен нужным цветом.

Алгоритм для отрисовки шрифтов выглядит так:

int LcdDrawChar(LoaderContext* context, uint16* frameBuffer, char chr, uint32 x, uint32 y, uint16 color)
{
if(x >= 0 && y >= 0 && x + FONT_WIDTH < LCD_WIDTH && y + FONT_HEIGHT < LCD_HEIGHT)
{
int i, j;
unsigned char* glyph = (unsigned char*)(GLOBAL(context) + &embedded_font[chr * 8]);

for(i = 0; i < FONT_HEIGHT; i++)
{
short* fb = &((short*)frameBuffer)[(y + i) * LCD_WIDTH + x];

for(j = 0; j < FONT_WIDTH; j++)
{
if((*glyph >> (FONT_WIDTH - j)) & 0x1)
*fb = color;

fb++;
}

glyph++;
}

return true;
}

return false;
}

void LcdDrawString(LoaderContext* context, uint16* frameBuffer, char* str, uint32 x, uint32 y, uint16 color)
{
if(x >= 0 && y >= 0)
{
unsigned int i;

for(i = 0; i < strlen(str); i++)
{
if(!LcdDrawChar(context, frameBuffer, str[i], x, y, color))
return; // Out of screen

x += FONT_WIDTH;
}
}
}

Наверняка вы заметили страшный костыль в локальной переменной glyph с арифметикой над указателями. Дело в том, что на момент написания статьи, программа представляет из себя сырую склейку секций .text, .data, .bss и .rodata, поэтому на данный момент в ней нет релокаций, которые помогли бы сделать программу перемещаемой в памяти. В arm-none-eabi все вызовы функций без явного указателя — относительные, но при этом обращения к глобальным переменным и константам (например, строковым литералам) — абсолютные. Если попытаться напрямую использовать глобальную переменную по адресу 0x18 — программа будет пытаться читать или портить память в таблице векторов прерываний, что неизбежно приведет к HardFault. Поэтому для получения настоящего адреса переменной, к ней необходимо прибавить базовый адрес загрузки программы:

Самая сложная «Змейка»: Как я отреверсил и хакнул кнопочный телефон, чтобы написать для него классическую игру Телефон, Гаджеты, Программирование, Реверс-инжиниринг, Хакеры, Моддинг, Кастомизация, Игра змейка, Гифка, Длиннопост

Этот костыль можно избежать, если в конец программы дописать сведения о релокациях, которые можно вытянуть путем парсинга промежуточного эльфа, а при особом желании — можно сделать так, что программа сама себя будет патчить «на лету»!

Далее мы рисуем нашу строку с текстом:

LcdDrawString(context, fb, SCONST(context, "Ya lyublu AvtoVAZ"), 0, 0, 0xFFFFFF);

И получаем следующий результат:

Самая сложная «Змейка»: Как я отреверсил и хакнул кнопочный телефон, чтобы написать для него классическую игру Телефон, Гаджеты, Программирование, Реверс-инжиниринг, Хакеры, Моддинг, Кастомизация, Игра змейка, Гифка, Длиннопост

Для змейки, если она не ASCII, этого всё равно мало. Поэтому нам нужна функция для вывода картинок на дисплей. Написать загрузчик tga или bmp не составляет труда, но хотелось бы чтобы программа была самодостаточной и несла с собой все необходимые ресурсы. Поэтому для конвертации картинок я использую вот этот инструмент: выбираем файл, формат ставим в 16-бит 565 и преобразовываем в C-массив.

Процесс отрисовки изображения называется блиттингом, а его суть заключается в копировании пикселей с одной поверхности на другую. В нашем случае, исходная поверхность — само изображение, вторая — фреймбуфер. Также к пикселям могут применяться дополнительные операции: поворот и скейлинг (на фиксированные углы, либо же с аффинными преобразованиями), альфа-блендинг и колоркей.

void LcdDrawBitmap(uint16* frameBuffer, short* bitmap, uint32 width, uint32 height, uint32 x, uint32 y)
{
if(bitmap)
{
int i, j;
short* bmp = bitmap;

// Slow debug version
for(i = 0; i < height; i++)
{
for(j = 0; j < width; j++)
{
LCD_PLOT_565(clamp(x + j, 0, LCD_WIDTH), clamp(y + i, 0, LCD_HEIGHT), bmp[i * width + j]);
}
}
}
}

А отрисовать нашу картинку можно вот так:

LcdDrawBitmap(fb, (short*)(GLOBAL(context) + (uint32)&lada_bmp), LADA_WIDTH, LADA_HEIGHT, 0, 0);

Почему бы не спрятать дескриптор изображения в структуру?

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

И вот наш результат. Не удивляйтесь тестовому изображению, просто я — прирожденный ТАЗовод!

Самая сложная «Змейка»: Как я отреверсил и хакнул кнопочный телефон, чтобы написать для него классическую игру Телефон, Гаджеты, Программирование, Реверс-инжиниринг, Хакеры, Моддинг, Кастомизация, Игра змейка, Гифка, Длиннопост

Помощь

Переходим к геймплею. Сама по себе «Змейка» в реализации — простая игра, где каждый уровень представляет из себя примитивную сетку. Алгоритм работы заключается в том, что раз в n-миллисекунд вызывается один игровой тик, который двигает игрока в текущем выбранном направлении. Если в момент тика нажата одна из кнопок-стрелок — направление движения меняется — тут всё очевидно:

Самая сложная «Змейка»: Как я отреверсил и хакнул кнопочный телефон, чтобы написать для него классическую игру Телефон, Гаджеты, Программирование, Реверс-инжиниринг, Хакеры, Моддинг, Кастомизация, Игра змейка, Гифка, Длиннопост

Сама змея представляет из себя массив сегментов, который хранит свою текущую позицию в сетке уровня:

Самая сложная «Змейка»: Как я отреверсил и хакнул кнопочный телефон, чтобы написать для него классическую игру Телефон, Гаджеты, Программирование, Реверс-инжиниринг, Хакеры, Моддинг, Кастомизация, Игра змейка, Гифка, Длиннопост

Для продвижения змейки по направлению, необходимо в обратном порядке обойти массив сегментов, переставляя текущий крайний сегмент на позицию предыдущего сегмента и так до самой головы. Позиция головы будет инкрементироваться относительно выбранного направления:

Самая сложная «Змейка»: Как я отреверсил и хакнул кнопочный телефон, чтобы написать для него классическую игру Телефон, Гаджеты, Программирование, Реверс-инжиниринг, Хакеры, Моддинг, Кастомизация, Игра змейка, Гифка, Длиннопост

Для того, чтобы проверить скушали ли мы яблочко — достаточно сравнить координаты головы и объекта. Если они идентичны, то прибавляем очко и переносим яблоко на другую позицию:

if(state->Segments[SEGMENT_HEAD].X == state->AppleX && state->Segments[SEGMENT_HEADER].Y == state->AppleY)
{
state->Score++;
MoveApple(state);
}

Для респавна яблочка можно использовать два подхода: параметрические таблицы с заранее прописанными координатами объекта (эдакая псевдослучайность) и обычный PRNG-генератор, который путем реверса можно найти в прошивке.

Самая сложная «Змейка»: Как я отреверсил и хакнул кнопочный телефон, чтобы написать для него классическую игру Телефон, Гаджеты, Программирование, Реверс-инжиниринг, Хакеры, Моддинг, Кастомизация, Игра змейка, Гифка, Длиннопост

Благодаря дипсику удалось определить, что в прошивке используется LCG. Вообще, нейронки очень сильно помогают при реверсе и могут легко анализировать стандартные алгоритмы: я тестировал от простых по типу memcpy, до относительно сложных как например программное деление по модулю и программная растеризация треугольника по Scanline-алгоритму.

unsigned int rand()
{
int v0; // r3
int v1; // r4
int v2; // r1

v0 = MEMORY[0x4710E80] - 1;
v1 = *(_DWORD *)(4 * MEMORY[0x4710E84] + 0x4710E88) + *(_DWORD *)(4 * MEMORY[0x4710E80] + 0x4710E88);
*(_DWORD *)(4 * MEMORY[0x4710E84] + 0x4710E88) = v1;
MEMORY[0x4710E80] = v0;
v2 = MEMORY[0x4710E84] - 1;
if ( v0 >= 0 )
{
--MEMORY[0x4710E84];
if ( v2 < 0 )
MEMORY[0x4710E84] = 54;
}
else
{
--MEMORY[0x4710E84];
MEMORY[0x4710E80] = 54;
}
return (unsigned int)(2 * v1) >> 1;
}

Если же голова оказывается в одном из сегментов или же за полем — игра окончена. Полный вес собранного приложения - 5 килобайт 644 байта! А ниже - демонстрация его работы:

Самая сложная «Змейка»: Как я отреверсил и хакнул кнопочный телефон, чтобы написать для него классическую игру Телефон, Гаджеты, Программирование, Реверс-инжиниринг, Хакеры, Моддинг, Кастомизация, Игра змейка, Гифка, Длиннопост

❯ Заключение

Вот такой интересный моддинг бюджетного кнопочника у нас с вами сегодня получился. От слов к делу мы с вами написали первые действительно рабочие программы, которые может быть и не самые полезные, но поверьте, для гика важен сам процесс и объём получаемого от этого эндорфина...

Самая сложная «Змейка»: Как я отреверсил и хакнул кнопочный телефон, чтобы написать для него классическую игру Телефон, Гаджеты, Программирование, Реверс-инжиниринг, Хакеры, Моддинг, Кастомизация, Игра змейка, Гифка, Длиннопост

Это приносит невероятное моральное наслаждение

А что ещё нужно парню в 23 года? Правильно: чтобы мотор бодро тянул любимую десятку и чтобы реверсилось всё легко и понятно! Исходный код и все что необходимо для установки бинлоадера есть в на моем гите.

А если вам интересна тематика ремонта, моддинга и программирования для гаджетов прошлых лет — подписывайтесь на мой Telegram-канал «Клуб фанатов балдежа», куда я выкладываю бэкстейджи статей, ссылки на новые статьи и видео, а также иногда выкладываю полезные посты и щитпостю. А ролики (не всегда дублирующие статью) можно найти на моём YouTube канале.

Важно: друзья! Я уверен, что статью будут читать выходцы с форумов моддеров и возможно даже ребята, связанные с прошивочными боксами. Если у вас есть исходный код или объектные файлы для телефонов Siemens (S-Gold или E-Gold — не имеет значения) и вы хотели бы помочь общему моддерскому делу — напишите пожалуйста мне в Telegram. Несмотря на то, что этот код уже давно никому не нужен и E-Gold/S-Gold уже более 15 лет снят с производства, гарантирую полную анонимность и крутой контент :)

Очень важно! Разыскиваются девайсы для будущих статей!

Друзья! Если вам понравилась сегодняшняя статья про разработку эльфов, то спешу объявить: для подготовки будущих материалов с разработкой самопальных игрушек под необычные устройства, объявляется розыск телефонов и консолей! В 2000-х годах, китайцы часто делали дешевые телефоны с игровым уклоном — обычно у них было подобие геймпада (джойстика) или хотя бы две кнопки с верхней части устройства, выполняющие функцию A/B, а также предустановлены эмуляторы NES/Sega. Фишка в том, что на таких телефонах можно выполнять нативный код и портировать на них новые эмуляторы, чем я сейчас занимаюсь, а затем написать об этом подробную статью и записать видео! Если у вас есть телефон подобного формата и вы готовы его задонатить или продать, пожалуйста напишите мне в Telegram (@monobogdan) или в комментарии. Также интересуют смартфоны-консоли на Android (на рынке РФ точно была Func Much-01), там будет контент чуточку другого формата :)

Самая сложная «Змейка»: Как я отреверсил и хакнул кнопочный телефон, чтобы написать для него классическую игру Телефон, Гаджеты, Программирование, Реверс-инжиниринг, Хакеры, Моддинг, Кастомизация, Игра змейка, Гифка, Длиннопост

А также я ищу старые (2010-2014) подделки на брендовые смартфоны Samsung, Apple и т. п. Они зачастую работают на весьма интересных чипсетах и поддаются хорошему моддингу, парочку статей уже вышло, но у меня ещё есть идеи по их моддингу! Также может у кого-то остались самые первые смартфоны Xiaomi (серии Mi), Meizu (ещё на Exynos) или телефоны на Linux (например Motorola EM30, RAZR V8, ROKR Z6, ROKR E2, ROKR E6, ZINE ZN5 и т. п., о них я хотел бы подготовить специальную статью и видео т. к. на самом деле они работали на очень мощных для своих лет процессорах, поддавались серьезному моддингу и были способны запустить даже Quake!). Всем большое спасибо за донаты!

Самая сложная «Змейка»: Как я отреверсил и хакнул кнопочный телефон, чтобы написать для него классическую игру Телефон, Гаджеты, Программирование, Реверс-инжиниринг, Хакеры, Моддинг, Кастомизация, Игра змейка, Гифка, Длиннопост
Самая сложная «Змейка»: Как я отреверсил и хакнул кнопочный телефон, чтобы написать для него классическую игру Телефон, Гаджеты, Программирование, Реверс-инжиниринг, Хакеры, Моддинг, Кастомизация, Игра змейка, Гифка, Длиннопост

А ещё я держу все свои мобилы в одной корзине при себе (в смысле, все проекты у одного облачного провайдера) — Timeweb. Потому нагло рекомендую то, чем пользуюсь сам — вэлкам:

Показать полностью 19
[моё] Телефон Гаджеты Программирование Реверс-инжиниринг Хакеры Моддинг Кастомизация Игра змейка Гифка Длиннопост
24
Посты не найдены
О Нас
О Пикабу
Контакты
Реклама
Сообщить об ошибке
Сообщить о нарушении законодательства
Отзывы и предложения
Новости Пикабу
RSS
Информация
Помощь
Кодекс Пикабу
Награды
Команда Пикабу
Бан-лист
Конфиденциальность
Правила соцсети
О рекомендациях
Наши проекты
Блоги
Работа
Промокоды
Игры
Скидки
Курсы
Зал славы
Mobile
Мобильное приложение
Партнёры
Промокоды Biggeek
Промокоды Маркет Деливери
Промокоды Яндекс Путешествия
Промокоды М.Видео
Промокоды в Ленте Онлайн
Промокоды Тефаль
Промокоды Сбермаркет
Промокоды Спортмастер
Постила
Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии