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

Головоломка. Болты и Гайки

Казуальные, Гиперказуальные, Головоломки

Играть

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

  • AlexKud AlexKud 38 постов
  • SergeyKorsun SergeyKorsun 12 постов
  • SupportHuaport SupportHuaport 5 постов
Посмотреть весь топ

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

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

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

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

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня

Android + Программирование

С этим тегом используют

Игры Смартфон Приложение iOS Телефон Google Play iPhone IT Программист IT юмор Разработка Python Картинка с текстом Юмор Все
379 постов сначала свежее
TECHLiveHACK
TECHLiveHACK
1 год назад

Мастхэв для разработчиков⁠⁠

Мастхэв для разработчиков Инновации, Технологии, Гайд, Python, Сайт, Интернет, Хакеры, Windows, Linux, Программирование, IT, Программист, Разработка, Проект, Приложение, Android, Apple, Программа, Удаленная работа, Telegram (ссылка)

Вы – разработчик, постоянно ищущий способы улучшить работу с кодом? Bito (https://bito.ai/) – это то, что изменит ваш код. Это не просто обычное расширение для автозаполнения. Это мощный инструмент, который выводит ваш путь в программировании на новый уровень.

Мощный набор инструментов построен на основе ChatGPT. Позволяет быстро генерировать потрясающий код и создавать модульные тесты. Умеет объяснять код, генерировать комментарии и проверять работоспособность.

Сервис даже может проверить код на наличие уязвимостей в системе безопасности и сделать его до 10 раз быстрее. Удобный интерфейс позволяет легко установить продукт в IDE Jetbrains, Visual Studio Code и даже из расширения Chrome.

Вы даже можете установить его как консольную утилиту. С помощью Bito вы сможете повысить производительность кодирования и создавать код лучшего качества за меньшее время.

Источник: https://t.me/TechLiveHack/107

Показать полностью
Инновации Технологии Гайд Python Сайт Интернет Хакеры Windows Linux Программирование IT Программист Разработка Проект Приложение Android Apple Программа Удаленная работа Telegram (ссылка)
1
7
DELETED
1 год назад

Лекция по Clean Architecture⁠⁠

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

Позже я подумал, что было бы не плохо пригласить на эту лекцию всех желающих, а единственный доступный и быстрый для меня источник публичности и привлечения аудитории - это Пикабу. По этому именно здесь я приглашаю всех желающих послушать интересную и познавательную лекцию, данные которой будут подаваться на основании моего личного 15-ти летнего стажа программирования на многих языках (из которых 6 лет - это коммерческая разработка под андроид Java/Kotlin начиная от небольших финансовых компаний и заканчивая крупными компаниями).

Тема лекции: Чистая архитектура

Сложность: 4/5, между Hardcore и Medium (никакого Rocket science)

Кому будет полезно: Андроид разработчики, которые пишут на Kotlin, стажеры, Junior и Middle (синьоры могут проходить мимо, хотя синьор одной компании может являться начинающим в другой, как было у меня, по этому решайте сами)

Дата и время проведения: 04.11.2023 18:00

Максимальное количество человек: 20 (вдруг много будет желающих, я не готов тянуть аудиторию большего масштаба)

Что рассмотрим:

- что такое Clean Architecture, применимость и использование в Android разработке;

- организация проектного пространства на базе Clean Architecture;

- слои данных, бизнес-логики и представления (Data, Domain, Presentation) и их взаимодействие;

- затронем Coroutines, Flow, Retrofit и REST API (если у аудитории будет желание подробнее разобрать эту часть, то разберем тип данных Either, выброс исключений и внутренности Retrofit/OkHttp);

- вскользь затронем KMM (что это и за чем, немного теории).

Контакты не оставляю, чтобы не думали, что я это делаю за деньги и ради пиара (это не так). Контакты есть, кто захочет тот найдет. И это будет говорить о желании человека, а значит я буду знать, что собрал заинтересованных людей. За час до назначенного времени я дам ссылку на Zoom в телеграмм группе, которую создам при заинтересованности аудитории и в которую заранее всех добавлю.

Жду всех желающих!

Показать полностью
[моё] IT Программирование Kotlin Android Текст
4
3
AppFox
AppFox
1 год назад

Оптимизация баз данных с использованием Room Persistence Library⁠⁠

В мире разработки современных приложений базы данных играют важную роль в хранении и управлении данными. При разработке приложений для Android использование библиотеки Room Persistence Library становится неотъемлемой частью работы с базами данных. В этой статье мы рассмотрим методы оптимизации баз данных с помощью Room, чтобы ваши приложения работали быстро и эффективно.

Оптимизация баз данных с использованием Room Persistence Library Инновации, IT, Разработка, Программирование, Программист, Длиннопост, Android

Основы библиотеки постоянства Room

Room - это библиотека баз данных для Android, предоставляет высокоуровневый доступ к SQLite. Она упрощает создание и управление базами данных и предоставляет мощные инструменты для выполнения запросов.

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

Кроме того, для оптимизации структуры таблиц и индексов необходимо правильно использовать аннотации Room, такие как @entity, @PrimaryKey и @ForeignKey.

Использование индексов

Индексы являются мощным инструментом для оптимизации производительности базы данных. Room позволяет создавать индексы с помощью аннотации @index. Индексы ускоряют выполнение запросов к таблице, особенно если таблица содержит большой объем данных.

Следует проанализировать типы запросов, выполняемых в вашем приложении, и создать индексы для столбцов, используемых в часто выполняемых запросах. Это позволит значительно повысить производительность приложения.

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

Использование асинхронных операций

Room позволяет выполнять операции с базой данных асинхронно, используя классы AsyncTask или Coroutine. Это позволяет избежать блокировки основного потока и повысить скорость отклика приложения.

Для оптимизации производительности асинхронные операции следует использовать для запросов, выполнение которых может занять длительное время, например, для запросов к удаленным базам данных или обновления больших объемов данных.

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

Ленивая загрузка

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

В Room ленивая загрузка реализуется с помощью аннотации @Relation, которая позволяет определять связи между сущностями и загружать данные по мере необходимости.

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

Использование кэширования

Для повышения производительности приложения можно использовать кэширование данных. Кэширование позволяет хранить результаты запросов в кэше и обновлять их по мере необходимости.

Для снижения нагрузки на сеть и ускорения загрузки данных можно использовать библиотеки кэширования, такие как Glide или Picasso, для кэширования изображений и других мультимедийных файлов.

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

Мониторинг и профилирование

Для оптимизации работы баз данных необходимо постоянно контролировать и анализировать их производительность. Room предоставляет инструменты для профилирования запросов и анализа производительности во время выполнения.

Вы можете использовать Android Profiler и SQLite Query Analyzer для выявления "узких мест" в работе базы данных и оптимизации запросов.

Регулярный мониторинг и профилирование помогут выявить проблемы и повысить производительность приложений.

Резервное копирование и восстановление

Важным аспектом оптимизации базы данных является обеспечение ее безопасности. Room предоставляет средства для резервного копирования и восстановления данных в случае сбоя или потери.

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

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

Показать полностью 1
[моё] Инновации IT Разработка Программирование Программист Длиннопост Android
0
649
monobogdan
monobogdan
1 год назад
TECHNO BROTHER

Микросмартфон за 100 рублей: Покупаем смартфон 11-летней давности и… пишем под него приложения⁠⁠

Микросмартфон за 100 рублей: Покупаем смартфон 11-летней давности и… пишем под него приложения Гаджеты, Android, Смартфон, Покупка, Galaxy, Samsung, Java, Программирование, Самопал, ВКонтакте, Ретро, Девайс, Ништяки, Мобильные телефоны, Электроника, Телефон, Linux, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост



Размер экрана — краеугольный камень мира современных смартфонов. Кто-то считает, что дисплеи должны становиться только больше, а рамки — меньше, кто-то любит «средние» дисплеи диагональю в 5+", ну а кто-то остаётся ярым поклонником и приверженцем компактных смартфонов с крошечными дисплейчиками. В наше время, купить новый смартфон с относительно небольшим дисплеем за приемлемые деньги почти нереально — самые бюджетные модели будут слишком тормозными для современного пользователя. Некоторое время назад, я купил себе бюджетный крошечный смартфон 2012 года выпуска — Samsung Galaxy Pocket, причём всего за 100 рублей. Конечно же мне захотелось довести его до ума — а доводить пришлось руками и навыками прожженного программера! Какой смартфон можно получить за 100 рублей? Читаем в статье!

Минутка предыстории

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

Микросмартфон за 100 рублей: Покупаем смартфон 11-летней давности и… пишем под него приложения Гаджеты, Android, Смартфон, Покупка, Galaxy, Samsung, Java, Программирование, Самопал, ВКонтакте, Ретро, Девайс, Ништяки, Мобильные телефоны, Электроника, Телефон, Linux, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост



Однако несмотря на всеобщее засилие больших «лопат», в мире всё ещё оставались поклонники маленьких и компактных телефонов, которыми очень удобно пользоваться одной рукой. Сейчас подобные устройства представляют только небольшие бренды, известные достаточно в узких кругах — в основном, их можно купить на маркетплейсах, в обычных салонах связи их не найти. Мне известно о нескольких подобных устройствах, которые сейчас присутствуют на рынке. Первый из них «закос» под iPhone — Soyes XS11:

Микросмартфон за 100 рублей: Покупаем смартфон 11-летней давности и… пишем под него приложения Гаджеты, Android, Смартфон, Покупка, Galaxy, Samsung, Java, Программирование, Самопал, ВКонтакте, Ретро, Девайс, Ништяки, Мобильные телефоны, Электроника, Телефон, Linux, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост



Но тут уж, если честно, хочется назвать такой смартфон не просто компактным, а совсем малюсеньким. На нём вполне удобно выполнять задачи звонилки, но совсем неудобно набирать текст — поэтому под наши задачи, он не особо подходит. Кроме того, эти девайсы работают на базе бюджетного смартфонного железа 6-7 летней давности, поэтому их производительность будет достаточно невысокой по меркам современного пользователя. Конечно же есть и более серьёзные варианты — например, компания Unihertz (да, тот самый продолжатель идей BlackBerry) делает смартфоны Jelly 2: дисплей с диагональю 3", Helio P61 под капотом и Android 11 на борту. Вот только цена, мягко говоря, кусачая — 18 тысяч рублей на момент написания статьи. Это слишком дорого!

Но если душа прямо таки лежит к компактным смартфонам, почему бы не обратиться к рынку Б/У устройств и не присмотреть что-то из… прошлого десятилетия? А вариантов ведь реально много — тут и LG Optimus L3 (3.2"), и Samsung Galaxy Pocket Neo (2.8"), Samsung Galaxy Star (3"), Samsung Galaxy Fame (3.5"), Samsung Galaxy Young. Все перечисленные девайсы стоят реально копейки — можно купить живой вариант до 400-500 рублей!

Микросмартфон за 100 рублей: Покупаем смартфон 11-летней давности и… пишем под него приложения Гаджеты, Android, Смартфон, Покупка, Galaxy, Samsung, Java, Программирование, Самопал, ВКонтакте, Ретро, Девайс, Ништяки, Мобильные телефоны, Электроника, Телефон, Linux, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост



Я решил взять себе целых два смартфона: Samsung Galaxy Mini и Samsung Galaxy Pocket первого поколения. Оба достались мне в одном лоте за 2.000 рублей (с 20 телефонами) и обошлись мне по сто рублей, причём оба смартфона были рабочими! Чуть позже я докупил отдельно Galaxy Star (250 рублей), Galaxy Fame (250 рублей) и Galaxy Pocket Neo (~400 рублей) для полноты коллекции — вышло совсем недорого. Итак, что за характеристики мы получаем в смартфоне за 100 рублей:

  • Android: 2.3 Gingerbread.

  • Чипсет: Broadcom BCM21553 с одним ядром Cortex-A5 на частоте 832мгц. Видеочип: VideoCore IV, он же использовался в Raspberry Pi.

  • ОЗУ: 256 мегабайт (предположительно — DDR1).

  • Встроенная память: 3 гигабайта + слот для SD.

  • Дисплей: 2.8", 240x320, емкостной тачскрин.

  • Сеть: Поддержка 2G/3G. Об LTE и речи не идёт.



Выглядит не особо густо, да? И разрешение весьма низкое — большинство софта не запустится, а о клиентах современных сервисов и мечтать не приходится… или приходится?

Микросмартфон за 100 рублей: Покупаем смартфон 11-летней давности и… пишем под него приложения Гаджеты, Android, Смартфон, Покупка, Galaxy, Samsung, Java, Программирование, Самопал, ВКонтакте, Ретро, Девайс, Ништяки, Мобильные телефоны, Электроника, Телефон, Linux, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост



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

Разработка под старые версии Android

На самом деле, разработка под старые версии Android не особо отличается от современных версий системы. Кое-где приходится костылить, велосипедить и юзать AppCompat для реализации современных фишек на старых версий системы, но, будем честным, подобного и в последних версиях Android достаточно.

Даже сейчас нет никакой проблемы скачать последнюю версию Android Studio, подключить смартфон с включенной отладкой и отлаживать приложение прямо на девайсе — logcat тоже есть. Единственный нюанс — поиск драйверов и ручное закрытие приложений в таскменеджере, если вы деплоите под Android 2.x (Android Studio не умеет сам закрывать приложение, чтобы переустановить пакет).


В целом, за всё время разработки под старые устройства, я пришёл к следующим выводам:

  • Поскольку большинство устройств имеет одно ядро, для плавности интерфейса нужно минимизировать любую работу в фоне.

  • Взаимодействие с современными веб-сервисами может быть осложнено из-за отсутствия поддержки TLS1.2 и устаревших сертификатов (проверка сертификатов легко обходится специальным костылем, а вот TLS — нет).

  • У Android до 3.0 вся отрисовка интерфейса программная и она опять же, будет сказываться на скорости работы фоновых служб. Чем менее интерфейс комплексный, тем лучше.

  • Пушей нет — да, вообще. Однако это ничуть не помешает нам сделать уведомления практически в реальном времени с помощью… очередного костыля!



Допиливаем ВК

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

Честно сказать, вся концепция интерфейса требовала полной переработки — боковое меню банально очень неудобно использовать на подобных устройствах из-за малых размеров каждой строчки. Поэтому я решил не изобретать велосипед, а обратился к дизайнерам Apple и первоисточнику: официальному клиенту ВК для iOS 6, родом из 2012 года!

Микросмартфон за 100 рублей: Покупаем смартфон 11-летней давности и… пишем под него приложения Гаджеты, Android, Смартфон, Покупка, Galaxy, Samsung, Java, Программирование, Самопал, ВКонтакте, Ретро, Девайс, Ништяки, Мобильные телефоны, Электроника, Телефон, Linux, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост



Приложение для Android выглядело +- также в те годы. Видите вкладки с разделами снизу? Они то нам и нужны — это самый удобный способ навигации на таких смартфонах! Накидав макет в layout'е, я приступил к реализации:

Микросмартфон за 100 рублей: Покупаем смартфон 11-летней давности и… пишем под него приложения Гаджеты, Android, Смартфон, Покупка, Galaxy, Samsung, Java, Программирование, Самопал, ВКонтакте, Ретро, Девайс, Ништяки, Мобильные телефоны, Электроника, Телефон, Linux, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост



Изначально мне хотелось, чтобы всё приложение было плавным и анимированным: для этого я обратился к фреймворку анимаций Android. Суть очень простая — это обычный интерполятор значений от a до b за определенный промежуток времени. При этом мы не можем анимировать произвольное свойство — только те, который уже реализованы в системе (переход, поворот, масштабирование, альфа-канал). Более наглядно это можно представить вот так:

Микросмартфон за 100 рублей: Покупаем смартфон 11-летней давности и… пишем под него приложения Гаджеты, Android, Смартфон, Покупка, Galaxy, Samsung, Java, Программирование, Самопал, ВКонтакте, Ретро, Девайс, Ништяки, Мобильные телефоны, Электроника, Телефон, Linux, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост



Да, это всё анимация :) Получаем примерно такой результат:

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

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

Во первых, мне хотелось добавить возможность скачивать треки на внутреннюю память/флэшку. А во вторых, мне хотелось добавить фоновое воспроизведение — до этого возможность свернуть приложение и послушать музыку уже была, однако Android мог в любой момент прибить окно с музыкой и оставить нас с носом, остаётся только реализация в виде foreground-сервиса:

В Android есть два типа служб: background (фоновые) и foreground (видимые пользователю). Первый тип служб система может прибить когда угодно — например мало памяти или экономия заряда АКБ. А вот второй тип служб система не прибивает практически никогда, поскольку они обозначают выполнение важной операции в фоне — например скачивание файла или обновление системы. Однако у них есть одно ограничение — они должны быть привязаны к собственному уведомлению, которое нельзя закрыть. В процессе реализации возникло еще пару проблем — Wakelock'и (механизм, предотвращающий уход девайса в «сон») и WiFiLock'и (тоже самое, но для WiFi).

Микросмартфон за 100 рублей: Покупаем смартфон 11-летней давности и… пишем под него приложения Гаджеты, Android, Смартфон, Покупка, Galaxy, Samsung, Java, Программирование, Самопал, ВКонтакте, Ретро, Девайс, Ништяки, Мобильные телефоны, Электроника, Телефон, Linux, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост

Точно таким же способом я реализовал механизм уведомлений — как я уже говорил раньше, пушей на старых смартфонах нет вообще ни в каком виде, поэтому пришлось реализовывать свой механизм «обновления»: каждые 3-5 секунд запрашиваем список последних 5 диалогов с сервера и сравниваем с предыдущим результатом, если есть новые сообщения — создаём нотификацию (листинг слишком длинный - пришлось перезалить на pastebin):

private NotificationCompat.Builder createMessageNotification(String sender, Stri - Pastebin.com

После этого, я начал рутинную работу по реализации интерфейса для данных с сервера — паблики, друзья, профили, лента и.т.п. В некотором смысле, реализация лента весьма занимательна: вообще, для очень больших списков существуют т.н виртуализация ListView — это когда ListView отображает только видимый пользователю кусок датасета (набора данных — например, список записей на стене) и на старых версиях Android она доступна. Однако мне было интересно реализовать вариант, который потреблял бы минимальное количество ОЗУ и где я точно знал бы, когда пользователь видит тот или иной фрагмент приложения. Поэтому я реализовал… пагинацию свайпами! Вот так привет из нулевых!

Для этого я использовал GestureDetector — встроенный в систему класс для обнаружения простых жестов — свайпов и.т.п. ВК при запросе ленты отдаёт специальную метку для получения следующей страницы новостей (поскольку она может динамически меняться и нужно хранить её стейт), мы эти метки просто сохраняем и переключаемся по странницам новостей с помощью обычных свайпов вправо-влево:

Микросмартфон за 100 рублей: Покупаем смартфон 11-летней давности и… пишем под него приложения Гаджеты, Android, Смартфон, Покупка, Galaxy, Samsung, Java, Программирование, Самопал, ВКонтакте, Ретро, Девайс, Ништяки, Мобильные телефоны, Электроника, Телефон, Linux, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост


Выглядит весьма забавно.

Юзабельно ли всё это на деле?

Давайте смотреть, может ли юзать такой смартфон в наши дни. Берём наш девайс в руки, логинимся и оцениваем его производительность «вхолостую».

Микросмартфон за 100 рублей: Покупаем смартфон 11-летней давности и… пишем под него приложения Гаджеты, Android, Смартфон, Покупка, Galaxy, Samsung, Java, Программирование, Самопал, ВКонтакте, Ретро, Девайс, Ништяки, Мобильные телефоны, Электроника, Телефон, Linux, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост



Работает весьма шустренько, учитывая что это бюджетник 2012 года. Как насчет нашего самопального клиента ВК? Смотрим:


Работает весьма бодро. Не сказать что также плавно, как последний айфон, но и совсем плохим результат явно не назвать!

Смартфонный функционал у девайса тоже вполне ничего: 1-2 SIM (в зависимости от версии), нормальная синхронизация контактов с ПК (однако Kies вроде-бы не работает на Windows 10, но есть vcf):

Микросмартфон за 100 рублей: Покупаем смартфон 11-летней давности и… пишем под него приложения Гаджеты, Android, Смартфон, Покупка, Galaxy, Samsung, Java, Программирование, Самопал, ВКонтакте, Ретро, Девайс, Ништяки, Мобильные телефоны, Электроника, Телефон, Linux, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост



Встроенный почтовый клиент продолжает работать без каких либо проблем. Однако настраивать некоторые почтовые сервисы нужно вручную и с помощью «паролей приложений» — напрямую залогинится возможности нет. В случае «покета», придется поставить стоковый клиент из Android 2.3 вручную.
Мультимедийные возможности тоже радуют: встроенный плеер тачвиза мне всегда очень нравился. Есть и настройки эквалайзера.

Единственное, что откровенно подводит — браузер. Последним вариантом осталась Opera Mini 7 — она позволяет смотреть сайты, но не поддерживает динамический контент, только статику. Ну, зайти на википедию или почитать статью на Хабре хватит. Родной браузер уже не в состоянии что либо загрузить :(

Микросмартфон за 100 рублей: Покупаем смартфон 11-летней давности и… пишем под него приложения Гаджеты, Android, Смартфон, Покупка, Galaxy, Samsung, Java, Программирование, Самопал, ВКонтакте, Ретро, Девайс, Ништяки, Мобильные телефоны, Электроника, Телефон, Linux, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост



Ну а в общем, производителньость смартфона весьма радует, согласитесь? Нельзя сказать, что он уж слишком тормозной — по крайней мере, современные ультрабюджетные смартфоны (до 4-5 тысяч рублей) зачастую показывают себя гораздо хуже чем и флагманы прошлых лет, и даже бюджетники!

Заключение

И всё таки, я считаю что мне удалось в каком-то смысле вдохнуть новую жизнь в старенький девайс. Если использовать подобный девайс как второй — на случай, если сел основной смартфон, то такой миниатюрный красаввчик может неождианно выручить даже в довольно сложной ситуации. Кроме того, эти смартфоны всеядны к аккумуляторам — достаточно подпаять + и — и они будут работать хоть от BL-4C.

Главная ценность Galaxy Pocket — в его компактных размерах. А поскольку по настоящему дешевых, маленьких и шустрых смартфонов становится всё меньше и меньше, то нам остаётся лишь продлять жизнь моделям прошлых лет! Есть ли в этом смысл и получил ли смартфон новую жизнь? Пишите в комментариях!

Микросмартфон за 100 рублей: Покупаем смартфон 11-летней давности и… пишем под него приложения Гаджеты, Android, Смартфон, Покупка, Galaxy, Samsung, Java, Программирование, Самопал, ВКонтакте, Ретро, Девайс, Ништяки, Мобильные телефоны, Электроника, Телефон, Linux, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост


Клиент ВК можно сказать на 4pda. Там лежит самая последняя версия (для скачивания нужна регистрация на форуме). Если по каким-то причинам не хотите регистрироваться на форуме — я выложил актуальную версию в комментариях.


Эта статья поддерживается командой ITGLOBAL.COM

Мы — первый облачный провайдер в России, а также интегратор, поставщик ИТ-услуг, продуктов, сервисов и разработчик собственного ПО.

• Наш сайт
• Наш блог про виртуализацию и Enterprise IT
• Истории успеха наших клиентов

Показать полностью 13 2
[моё] Гаджеты Android Смартфон Покупка Galaxy Samsung Java Программирование Самопал ВКонтакте Ретро Девайс Ништяки Мобильные телефоны Электроника Телефон Linux Видео Без звука Вертикальное видео YouTube Длиннопост
91
569
monobogdan
monobogdan
1 год назад
TECHNO BROTHER

Сам написал, сам поиграл: Как я написал 2D-игру для Android полностью с нуля, весом менее 1мб?⁠⁠

Сам написал, сам поиграл: Как я написал 2D-игру для Android полностью с нуля, весом менее 1мб? Gamedev, Инди, Инди игра, Unity, 2D, Android, Разработка, Программирование, Графика, Девайс, Гаджеты, Opengl, Gles, Видео, Без звука, Длиннопост



Многие программисты так или иначе имеют тягу и интерес к разработке игр. Немалое количество спецов было замечено за написанием маленьких и миленьких игрушек, которые были разработаны за короткое время «just for fun». Большинству разработчиков за счастье взять готовый игровой движок по типу Unity/UE и попытаться создать что-то своё с их помощью, особенно упорные изучают и пытаются что-то сделать в экзотических движках типа Godot/Urho, а совсем прожжённые ребята любят писать игрушки… с нуля. Таковым любителем писать все сам оказался и я. И в один день мне просто захотелось написать что-нибудь прикольное, мобильное и обязательно — двадэшное! В этой статье вы узнаете про: написание производительного 2D-рендерера с нуля на базе OpenGL ES, обработку «сырого» ввода в мобильных играх, организацию архитектуры и игровой логики и адаптация игры под любые устройства. Интересно? Тогда жду вас в статье!

❯ Как это работает?



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

Сам написал, сам поиграл: Как я написал 2D-игру для Android полностью с нуля, весом менее 1мб? Gamedev, Инди, Инди игра, Unity, 2D, Android, Разработка, Программирование, Графика, Девайс, Гаджеты, Opengl, Gles, Видео, Без звука, Длиннопост


Один из прошлых проектов — 3D шутэмап под… коммуникаторы с Windows Mobile без видеоускорителей! Игра отлично работала и на HTC Gene, и на QTek S110!

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

Сам написал, сам поиграл: Как я написал 2D-игру для Android полностью с нуля, весом менее 1мб? Gamedev, Инди, Инди игра, Unity, 2D, Android, Разработка, Программирование, Графика, Девайс, Гаджеты, Opengl, Gles, Видео, Без звука, Длиннопост



Подобные инструменты включают в себя как довольно функциональныеконструкторы игр, которые обычно не требуют серьёзных навыков программирования и позволяют собирать игру из логических блоков, так и полноценных игровых движков на манер Unity или Unreal Engine, которые позволяют разработчикам писать игры и продумывать их архитектуру самим. Можно сказать что именно «благодаря» доступности подобных инструментов мы можем видеть текущую ситуацию на рынке мобильных игр, где балом правят очень простые и маленькие донатные игрушки, называемыегиперкежуалом.

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

  • Большой вес приложения: При сборке, Unity и UE создают достаточно объёмные пакеты из-за большого количества зависимостей. Таким образом, даже пустой проект может спокойно весить 50-100 мегабайт.

  • Неоптимальная производительность: И у Unity, и у UE очень комплексные и сложные рендереры «под капотом». Если сейчас купить дешевый смартфон за 3-4 тысячи рублей и попытаться на него накатить какой-нибудь 3 в ряд, то нас ждут либо вылеты, либо дикие тормоза.



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

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

❯ Определяемся с задачами



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

Сам написал, сам поиграл: Как я написал 2D-игру для Android полностью с нуля, весом менее 1мб? Gamedev, Инди, Инди игра, Unity, 2D, Android, Разработка, Программирование, Графика, Девайс, Гаджеты, Opengl, Gles, Видео, Без звука, Длиннопост



Игра будет написана полностью на Java — родном языке для Android-приложений. Пустые пакеты без зависимостей весят всего около 20 килобайт — что только нам на руку! Ни AppCompat, ни какие либо ещё библиотеки мы использовать не будем — нам нужен минимальный размер из возможных!

Итак, что должно быть в нашей игре:

  • Основная суть: Вид сверху, человечком по центру экрана можно управлять и стрелять во вражин. Цель заключается в том, чтобы набрать как можно больше очков перед тем, как игрока загрызут. За каждого поверженного врага начисляются баксы, за которые можно купить новые пушки!

  • Оружие: Несколько видов вооружения, в том числе пистолеты, дробовики, автоматы и даже пулеметы! Всё оружие можно купить в внутриигровом магазине за валюту, которую игрок заработал во время игры

  • Враги: Два типа врагов — обычный зомби и «шустрик». Враги спавнятся в заранее предусмотренных точках и начинают идти (или бежать) в сторону игрока с целью побить его.

  • Уровни: Можно сказать, простые декорации — на момент написания статьи без какого либо интерактива.



Поскольку игра пишется с нуля, необходимо сразу продумать необходимые для реализации модули:

  • Графика: Аппаратно-ускоренный рендерер полупрозрачных 2D-спрайтов с возможность аффинных трансформаций (поворот/масштаб/искривление и.т.п). На мобильных устройствах нужно поддерживать число DIP'ов (вызовов отрисовки) как можно ниже — для этого используется техника батчинга. Сам рендерер работает на базе OpenGLES 1.1 — т.е чистый FFP.

  • Ввод: Обработка тачскрина и геймпадов. Оба способа ввода очень легко реализовать на Android — для тачскрина нам достаточно повесить onTouchListener на окно нашей игры, а для обработки кнопок — ловить события onKeyListener и сопоставлять коды кнопок с кнопками нашего виртуального геймпада.

  • Звук: Воспроизведение как «маленьких» звуков, которые можно загрузить целиком в память (выстрелы, звуки шагов и… т.п), так и музыки/эмбиента, которые нужно стримить из физического носителя. Тут практически всю работу делает за нас сам Android, для звуков есть класс — SoundPool (который, тем не менее, не умеет сообщать о статусе проигрывания звука), для музыки — MediaPlayer. Есть возможность проигрывать PCM-сэмплы напрямую, чем я и воспользовался изначально, но с ним есть проблемы.

  • «Физика»: Я не зря взял этот пункт в кавычки :) По сути, вся физика у нас — это один метод для определения AABB (пересечения прямоугольник с прямоугольником). Всё, ни о какой настоящей физике и речи не идет :)



Поэтому, с учетом требований описанных выше, наша игра будет работать практически на любых смартфонах/планшетах/тв-приставках кроме китайских смартфонов на базе чипсета MT6516 без GPU из 2010-2011 годов. На всех остальных устройствах, включая самый первый Android-смартфон, игра должна работать без проблем. А вот и парк устройств, на которых мы будем тестировать нашу игру:

Сам написал, сам поиграл: Как я написал 2D-игру для Android полностью с нуля, весом менее 1мб? Gamedev, Инди, Инди игра, Unity, 2D, Android, Разработка, Программирование, Графика, Девайс, Гаджеты, Opengl, Gles, Видео, Без звука, Длиннопост



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

❯ Рендерер



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

Сам написал, сам поиграл: Как я написал 2D-игру для Android полностью с нуля, весом менее 1мб? Gamedev, Инди, Инди игра, Unity, 2D, Android, Разработка, Программирование, Графика, Девайс, Гаджеты, Opengl, Gles, Видео, Без звука, Длиннопост

По сути, в современном мире, 2D — это частный случай 3D, когда рисуются всё те же примитивы в виде треугольников, но вместо перспективной матрицы, используется ортографическая матрица определенных размеров. Во времена актуальности DirectDraw (середина-конец 90х) и Java-телефонов, графику обычно не делали адаптивной, из-за чего при смене разрешения, игровое поле могло растягиваться на всю площадь дисплея. Сейчас же, когда разброс разрешений стал колоссальным, чаще всего можно встретить два подхода к организацию проекции:

  • Установка ортографической матрицы в фиксированные размеры: Если координатная система уже была завязана на пиксели, или по какой-то причине хочется использовать именно её, то можно просто завязать игру на определенном разрешении (например, 480x320, или 480x800). Растеризатор формально не оперирует с пикселями — у него есть нормализованные координаты -1..1 (где -1 — начало экрана, 0 — середина, 1 — конец, это называется clip-space), а матрица проекции как раз и переводит координаты геометрии в camera-space координатах в clip-space — т.е в нашем случае, автоматически подгоняет размеры спрайтов из желаемого нами размера в физический. Обратите внимание, физические движки обычно рассчитаны на работу в метрических координатных системах. Попытки задавать ускорения в пикселях вызывают рывки и баги.

  • Перевод координатной системы с пиксельной на метрическую/абстрактную:
    Сейчас этот способ используется чаще всего, поскольку именно его используют самые популярные движки и фреймворки. Если говорить совсем просто — то мы задаем координаты объектов и их размеры не относительно пикселей, а относительно размеров этих объектов в метрах, или ещё какой-либо абстрактной системы координат. Этот подход близок к обычной 3D-графике и имеет свои плюшки: например, можно выпустить HD-пак для вашей игры и заменить все спрайты на варианты с более высоким разрешением, не переделывая половину игры.



Для совсем простых игр я выбираю обычно первый подход. Самое время реализовать главный метод всего рендерера — рисование спрайтов. В моём случае, спрайты не были упакованы в атласы (одна текстура, содержащая в себе целую анимацию или ещё что-то в этом духе), поэтому и возможность выборки тайла из текстуры я реализовывать не стал. В остальном, всё стандартно:

Сам написал, сам поиграл: Как я написал 2D-игру для Android полностью с нуля, весом менее 1мб? Gamedev, Инди, Инди игра, Unity, 2D, Android, Разработка, Программирование, Графика, Девайс, Гаджеты, Opengl, Gles, Видео, Без звука, Длиннопост
Сам написал, сам поиграл: Как я написал 2D-игру для Android полностью с нуля, весом менее 1мб? Gamedev, Инди, Инди игра, Unity, 2D, Android, Разработка, Программирование, Графика, Девайс, Гаджеты, Opengl, Gles, Видео, Без звука, Длиннопост

Всё более чем понятно — преобразуем координаты спрайта из world-space в camera-space, отсекаем спрайт, если он находится за пределами экрана, задаем стейты для GAPI (на данный момент, их всего два), заполняем вершинный буфер геометрией и рисуем на экран. Никакого смысла использовать VBO здесь нет, а на nio-буфферы можно получить прямой указатель без лишних копирований, так что никаких проблем с производительностью не будет. Обратите внимание — вершинный буфер выделяется заранее — аллокации каждый дравколл нам не нужны и вредны.

Сам написал, сам поиграл: Как я написал 2D-игру для Android полностью с нуля, весом менее 1мб? Gamedev, Инди, Инди игра, Unity, 2D, Android, Разработка, Программирование, Графика, Девайс, Гаджеты, Opengl, Gles, Видео, Без звука, Длиннопост

Обратите внимание на вызовы ByteBuffer.order — это важно, по умолчанию, Java создаёт все буферы в BIG_ENDIAN, в то время как большинство Android-устройств — LITTLE_ENDIAN, из-за этого можно запросто накосячить и долго думать «а почему у меня буферы заполнены правильно, но геометрии на экране нет!?».

Сам написал, сам поиграл: Как я написал 2D-игру для Android полностью с нуля, весом менее 1мб? Gamedev, Инди, Инди игра, Unity, 2D, Android, Разработка, Программирование, Графика, Девайс, Гаджеты, Opengl, Gles, Видео, Без звука, Длиннопост



В процессе разработки игры, при отрисовке относительно небольшой карты с большим количеством тайлов, количество вызовов отрисовки возросло аж до 600, из-за чего FPS в игре очень сильно просел. Связано это с тем, что на старых мобильных GPU каждый вызов отрисовки означал пересылку состояния сцены видеочипу, из-за чего мы получали лаги. Фиксится это довольно просто: реализацией батчинга — специальной техники, которая «сшивает» большое количество спрайтов с одной текстурой в один и позволяет отрисовать хоть 1000, хоть 100000 спрайтов в один проход! Есть два вида батчинга, статический — когда объекты «сшиваются» при загрузке карты/в процессе компиляции игры (привет Unity) и динамический — когда объекты сшиваются прямо на лету (тоже привет Unity). На более современных мобильных GPU с поддержкой GLES 3.0 есть также инстансинг — схожая технология, но реализуемая прямо на GPU. Суть её в том, что мы передаём в шейдер параметры объектов, которые мы хотим отрисовать (матрицу, настройки материала и.т.п) и просим видеочип отрисовать одну и ту же геометрию, допустим, 15 раз. Каждая итерация отрисовки геометрии будет увеличивать счетчик gl_InstanceID на один, благодаря чему мы сможем расставить все модельки на свои места! Но тут уж справедливости ради стоит сказать, что в D3D10+ можно вообще стейты передавать на видеокарту «пачками», что здорово снижает оверхед одного вызова отрисовки.

Сам написал, сам поиграл: Как я написал 2D-игру для Android полностью с нуля, весом менее 1мб? Gamedev, Инди, Инди игра, Unity, 2D, Android, Разработка, Программирование, Графика, Девайс, Гаджеты, Opengl, Gles, Видео, Без звука, Длиннопост



Для загрузки спрайтов используется встроенный в Android декодер изображений. Он умеет работать в нескольких режимах (ARGB/RGB565 и.т.п), декодировать кучу форматов — в том числе и jpeg, что положительно скажется на финальном размере игры.

Сам написал, сам поиграл: Как я написал 2D-игру для Android полностью с нуля, весом менее 1мб? Gamedev, Инди, Инди игра, Unity, 2D, Android, Разработка, Программирование, Графика, Девайс, Гаджеты, Opengl, Gles, Видео, Без звука, Длиннопост

На этом реализация рендерера закончена. Да, все вот так просто :)
Переходим к двум остальным модулям — звук и ввод.

❯ Звук и ввод



Как я уже говорил, звук я решитл реализовать на базе уже существующей звуковой подсистемы Android. Ничего сложного в её реализацир нет, можно сказать, нам остаётся лишь написать обёртку, необходимую для работы. Изначально я написал собственный загрузчик wav-файлов и хотел использовать AudioTrack — класс для воспрозизведения PCM-звука напрямую, но мне не понравилось, что в нём нет разделения на источники звука и буферы, из-за чего каждый источник вынужден заниматься копированием PCM-потока в новый и новый буфер…

Сам написал, сам поиграл: Как я написал 2D-игру для Android полностью с нуля, весом менее 1мб? Gamedev, Инди, Инди игра, Unity, 2D, Android, Разработка, Программирование, Графика, Девайс, Гаджеты, Opengl, Gles, Видео, Без звука, Длиннопост



Полная реализация звукового потока выглядит так. И да, с SoundPool нет возможности получить позицию проигрывания звука или узнать, когда проигрывание закончилось. Увы.

Сам написал, сам поиграл: Как я написал 2D-игру для Android полностью с нуля, весом менее 1мб? Gamedev, Инди, Инди игра, Unity, 2D, Android, Разработка, Программирование, Графика, Девайс, Гаджеты, Opengl, Gles, Видео, Без звука, Длиннопост

Да будет звук! Ну и про ввод не забываем (листинг получился слишком длинный, а на Пикабу нет тега для кода - так что как-то так):

public static final int TOUCH_IDLE = 0; public static final int TOUCH_PRESS - Pastebin.com

Сама реализация джойстика крайне простая — запоминаем координаты, куда пользователь поставил палец и затем считаем дистанцию положения пальца относительно центральной точки, параллельно нормализововая их относительно максимальной дистанции:

public class Joystick { private Sprite joySprite; public float Veloc - Pastebin.com

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

Основа для игры есть, теперь переходим к её реализации!

❯ Пишем игру

Сам написал, сам поиграл: Как я написал 2D-игру для Android полностью с нуля, весом менее 1мб? Gamedev, Инди, Инди игра, Unity, 2D, Android, Разработка, Программирование, Графика, Девайс, Гаджеты, Opengl, Gles, Видео, Без звука, Длиннопост



Писать игру я начал с создания первого уровня и реализации загрузчика уровней. В качестве редактора, я выбрал популярный и широко-известный TileEd — удобный редактор с возможностью экспорта карт в несколько разных форматов. Я лично выбрал Json, поскольку в Android уже есть удобный пакет для работы с этим форматом данных.

Сам написал, сам поиграл: Как я написал 2D-игру для Android полностью с нуля, весом менее 1мб? Gamedev, Инди, Инди игра, Unity, 2D, Android, Разработка, Программирование, Графика, Девайс, Гаджеты, Opengl, Gles, Видео, Без звука, Длиннопост

Карта делится на 3 базовые понятия: тайлы — фон, с изображением травы/асфальта/земли и.т.п, пропы — статичные объекты по типу деревьев и кустов и сущности — объекты, участвующие в игровом процессе, т.е игрок, зомби и летящие пули. Система сущностей реализована в виде абстрактного базового класса, который реализовывает логику апдейтов, просчитывает Forward-вектор и выполняет другие необходимые задачи:

Сам написал, сам поиграл: Как я написал 2D-игру для Android полностью с нуля, весом менее 1мб? Gamedev, Инди, Инди игра, Unity, 2D, Android, Разработка, Программирование, Графика, Девайс, Гаджеты, Opengl, Gles, Видео, Без звука, Длиннопост

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

@Override public void update() { super.update(); joyInp - Pastebin.com

Сам написал, сам поиграл: Как я написал 2D-игру для Android полностью с нуля, весом менее 1мб? Gamedev, Инди, Инди игра, Unity, 2D, Android, Разработка, Программирование, Графика, Девайс, Гаджеты, Opengl, Gles, Видео, Без звука, Длиннопост



Ну и не забываем про реализацию зомби. Она тоже очень простая: есть базовый класс Zombie, от которого наследуются все монстры и который реализует несколько необходимых методов — повернуться в сторону игрока, идти вперед и конечно же атака!

Сам написал, сам поиграл: Как я написал 2D-игру для Android полностью с нуля, весом менее 1мб? Gamedev, Инди, Инди игра, Unity, 2D, Android, Разработка, Программирование, Графика, Девайс, Гаджеты, Opengl, Gles, Видео, Без звука, Длиннопост
Сам написал, сам поиграл: Как я написал 2D-игру для Android полностью с нуля, весом менее 1мб? Gamedev, Инди, Инди игра, Unity, 2D, Android, Разработка, Программирование, Графика, Девайс, Гаджеты, Opengl, Gles, Видео, Без звука, Длиннопост

❯ Что у нас есть на данный момент?



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


Как мы видим, игра (а пока что — proof of concept) работает довольно неплохо на всех устройствах, которые были выбраны для тестирования. Однако это ещё не всё — предстоит добавить конечную цель игры (набор очков), магазин стволов и разные типы мобов. Благо, это всё реализовать уже совсем несложно :)

❯ Заключение



Написать небольшую игрушку с нуля в одиночку вполне реально. Разработка достаточно больших проектов конечно же требует довольно больших человекочасов, однако реализовать что-то своё, маленькое может и самому!

Пишите своё мнение в комментариях. Если вам вдруг интересна тематика самопальной разработки игр, то постараюсь выпускать подобные статьи почаще!

Статья подготовлена при поддержке компании TimeWeb Cloud. Подписывайтесь на меня и @Timeweb.Cloud, чтобы не пропускать новые статьи каждую неделю!
Но тут я даже чутка навру - на этой неделе вас ждёт сразу две статьи :) Следующая - в четверг, прошлую неделю я отдыхал и работал.

Показать полностью 19 3
[моё] Gamedev Инди Инди игра Unity 2D Android Разработка Программирование Графика Девайс Гаджеты Opengl Gles Видео Без звука Длиннопост
88
it.forkids
it.forkids
1 год назад

IT для детей: как запустить игру со «Скретч» на Андроид⁠⁠

IT для детей: как запустить игру со «Скретч» на Андроид Scratch, Программирование, Видео, YouTube, Длиннопост, Дети, IT, Android

Язык программирования Scratch — это визуальный язык программирования, предназначенный для обучения основам кодинга и развития творческого мышления у детей и начинающих программистов. В онлайн-школе программирования для детей Pixel ребята могут изучить курсы кодинга на Scratch или самостоятельно заняться обучением. Для этого созданы специальные видео-уроки, где опытные преподаватели наглядно рассказывают как, например, запустить игру со «Скретч» на Андроид. Полное видео также можно посмотреть в конце статьи.

Здесь же вы можете прочитать об этом в текстовом формате. 

Для начала, немного информации о языке программирования Scratch:

  • Визуальный интерфейс «Скретч» использует визуальный блок-ориентированный интерфейс, где пользователи создают программы, соединяя блоки вместо написания кода. Блоки представляют собой различные команды и операции, такие как движение, звук, графика и т. д.

  • Простота в использовании. Scratch разработан таким образом, чтобы быть легким в использовании даже для новичков в программировании. Блоки легко соединять, перетаскивать и настраивать, что упрощает создание программ и отладку ошибок.

  • Визуальное программирование. Оно позволяет пользователям изучать основы программирования, последовательность, циклы, условия и переменные. Это делает язык идеальным инструментом для детей и начинающих кодеров.

  • Компьютерная графика и анимация. Scratch предоставляет пользователю возможность создавать графические проекты и анимации с помощью спрайтов (графических объектов) и фонов.

  • Сообщество и обмен. Любители этого языка кодинга собираются в онлайн-сообществах, где могут делиться своими проектами, идеями, получать обратную связь и взаимодействовать с другими людьми. Это позволяет создавать коллаборативные проекты и находить вдохновение у других пользователей.

  • Разнообразие проектов. Scratch подходит для создания широкого спектра проектов, от игр и анимации до мультимедийных презентаций и интерактивных историй. Это позволяет выражать свою творческую сторону и применять свои навыки программирования в разных областях.

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

Сохраняем игру Scratch на компьютер и конвертируем файл

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

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

Конвертация должна превратить исходный файл в файл с расширением html.

IT для детей: как запустить игру со «Скретч» на Андроид Scratch, Программирование, Видео, YouTube, Длиннопост, Дети, IT, Android

Чтобы сократить время преобразования файла, воспользуемся готовыми онлайн-инструментами.

Для этого заходим в любую поисковую систему, например «Яндекс», и пишем текст «sb3 to html». Этот текст означает, что мы хотим конвертировать файл того формата, который сохраняется в Scratch, в формат html.

Нажмите клавишу Enter и перед вами появится список сайтов, где можно конвертировать файлы.

Можете сразу перейти по первой ссылке, или на сайт https://sheeptester.github.io/htmlifier/.

IT для детей: как запустить игру со «Скретч» на Андроид Scratch, Программирование, Видео, YouTube, Длиннопост, Дети, IT, Android

Здесь расположено множество настроек, но нас интересуют лишь некоторые из них. Прокручиваем страницу до пункта «selecting a file on your computer» и нажимаем кнопку «Выбрать файл». После этого откроется новое окно, с помощью которого нужно найти и выбрать только что скачанный файл в формате sb3.

Далее, прокручиваем страницу вниз и находим кнопку HTMLify (в переводе на русский это значит что-то вроде «заэштеэмелить»). После конвертации файл автоматически скачается. Если после нажатия кнопки файл конвертировался, но скачивание не началось, нажмите на кнопку «Download» и скачайте измененный файл.

IT для детей: как запустить игру со «Скретч» на Андроид Scratch, Программирование, Видео, YouTube, Длиннопост, Дети, IT, Android

Программирование на «Скретч»: подготавливаем рабочий стол

Чтобы не возникло путаницы, нужно аккуратно расположить все файлы на рабочем столе. Создайте папку «Game». Важно, что в этой папке кроме файла игры в формате html ничего не было.

Затем, переименуем файл, теперь он должен называться index.html. Название обязательно должно быть написано с маленькой буквы и без ошибок.

IT для детей: как запустить игру со «Скретч» на Андроид Scratch, Программирование, Видео, YouTube, Длиннопост, Дети, IT, Android

Следующим шагом станет превращение этого файла в файл с расширением apk. Именно с таким расширением устанавливаются файлы в систему Android.

Конвертация файла и запуск специальной программы

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

Снова запускаем удобный поисковик и прописываем «websitetoapk». После этого нужно перейти на сайт https://websitetoapk.com/.

IT для детей: как запустить игру со «Скретч» на Андроид Scratch, Программирование, Видео, YouTube, Длиннопост, Дети, IT, Android

Здесь на экране будет размещена кнопка с надписью «Download now!» — нажмите на нее. Вас перебросит на следующую страницу, где необходимо нажать «Free download» и начнется загрузка специального приложения.

IT для детей: как запустить игру со «Скретч» на Андроид Scratch, Программирование, Видео, YouTube, Длиннопост, Дети, IT, Android

Запустите его и установите как обычное приложение, примите соглашение и оставьте галочку, которая создает иконку на рабочем столе. По завершении установки нужно нажать «Finish» и оставить галочку запуска приложения после установки. Приложение должно запуститься.

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

IT для детей: как запустить игру со «Скретч» на Андроид Scratch, Программирование, Видео, YouTube, Длиннопост, Дети, IT, Android

Расскажем по пунктам что нужно сделать:

  • В строке «Website type to Convert» нужно выбрать пункт «Local HTML Website».

  • В «App Title» прописать название игры, например, «ping pong» (или иное название вашей игры, но на английском языке). Обратите внимание, что название, которое вы укажете в «App Title», будет отображаться на экране смартфона.

  • В разделе «App orientation» выбираем «Landscape», так как все игры Scratch для школьников создаются в горизонтальном формате.

  • Выбираем папку, в которой находится файл index.html, нажав «Choose Folder».

  • В правой части программы размещена колонка «Extras» (дополнения), в которой нужно поставить галочку напротив пункта «Full screen». Это необходимо для того, чтобы приложение на устройствах запускалось в полноэкранном режиме. При этом убираем галочку с пункта «Show Toolbar (Title)».

После того, как выполнены все эти условия нашего урока Scratch, нужно нажать на красную кнопку «Build Android APK», а затем «Ок».

IT для детей: как запустить игру со «Скретч» на Андроид Scratch, Программирование, Видео, YouTube, Длиннопост, Дети, IT, Android

Это запустит процесс создания файла с игрой, которая запустится на устройстве с операционной системой Android. После окончания процесса нужно нажать «Finish».

Скретч для подростков: продолжаем работу с файлом

Если все предыдущие шаги выполнены верно, файл должен скомпилироваться и сохраниться. Узнать куда именно он сохранился просто. Найдите в программе строчку «Output Directory» — именно здесь будет прописан путь, где расположен созданный файл. Часто файл появляется на рабочем столе.

Теперь у нас есть готовый файл и возникает вопрос — как же отправить его на смартфон?

Тут есть несколько вариантов:

  • Подключить смартфон с помощью провода к компьютеру и перенести файл с него на устройство.

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

  • Передать файл через Bluetooth.

Мы рассмотрим третий вариант передачи файла.

Для этого включите Bluetooth в настройках компьютера:

  • Нажмите «Пуск»

  • В строке поиска введите «Параметры Bluetooth и других устройств»

  • В строке «Bluetooth» передвиньте ползунок в положение «Вкл».

Чтобы передать файл таким способом, нужно его выделить правой кнопкой мыши и выбрать «Отправить» —> «Устройство Bluetooth» —> выбор своего устройства.

Через некоторое время файл «по воздуху» будет передан на смартфон, нужно нажать на него и начать установку.

IT для детей: как запустить игру со «Скретч» на Андроид Scratch, Программирование, Видео, YouTube, Длиннопост, Дети, IT, Android

Еще через некоторое время игра будет установлена. Теперь достаточно нажать на ее иконку и играть.

Вот таким несложным образом можно конвертировать игру и перекинуть ее на смартфон с компьютера.

Если вы хотите узнать больше о том, как с помощью языка программирования Scratch создать Paint, игровое меню, меню, дополненную реальность или мультфильм — посмотрите бесплатные уроки на Youtube-канале школы «Пиксель». Кроме того, здесь можно узнать о том, как создавать игровые проекты на Roblox, используя язык программирования Lua, разобраться с возможностями программирования на языке Python или освоить Blender.

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

В современном мире IT для детей имеет множество преимуществ для их будущего:

  • Развитие познавательных навыков. IT помогает детям развивать логическое и аналитическое мышление, обучает их решать проблемы и принимать решения. Они учатся анализировать, сравнивать и оценивать информацию, что полезно в повседневной жизни.

  • Развитие креативности. IT предлагает детям возможность выразить свою фантазию и креативность через создание различных проектов, игр и приложений. Они могут стать авторами своих собственных игр, анимаций, мультфильмов и веб-сайтов.

  • Подготовка к будущей карьере. Сфера информационных технологий — одна из самых быстроразвивающихся и востребованных отраслей в мире. Изучение ИТ-навыков с детства позволяет подготовить ребенка к будущей карьере в этой сфере.

  • Улучшение коммуникативных навыков. Часто дети работают над проектом в команде, обмениваться идеями и решают задачи вместе. Это помогает им стать лучше, учит взаимодействовать с другими людьми и развивать навыки работы в группе.

  • Развитие технических навыков. ИТ учит детей использовать различные технологии и программное обеспечение. Это помогает им лучше понимать и использовать современные технологии в повседневной жизни и работе.

Все эти преимущества позволяют детям развиваться в технологичном мире и успешно адаптироваться к изменениям в будущем.

Если вы хотите, чтобы ваш ребенок изучил востребованные навыки, стал опытным программистом и был уверен в своей карьере — отправляйте его на обучение в школу программирования Pixel. Здесь ребята дошкольного и школьного возраста изучают кодинг и успешно готовятся к жизни в мире, где требуются грамотные ИТ-специалисты. Например, изучить язык Scratch могут дети от 6 лет. Занятия проходят онлайн или очно, в группах или индивидуально. А наши педагоги обязательно находят общий язык с ребятами.

Показать полностью 10 1
Scratch Программирование Видео YouTube Длиннопост Дети IT Android
1
2
itsport
1 год назад

Андроид приложение для скачивания сторис⁠⁠

Месяц назад увидел статью о чат-боте, который позволяет скачивать истории. Сразу возникла идея сделать похожее андроид приложение.

Вот результат работы:

Андроид приложение для скачивания сторис Программирование, Android, Приложение на Android, Стартап

Приложение позволяет как просто смотреть, так и скачивать сторис. Буду благодарен любым отзывам и оценкам.

[моё] Программирование Android Приложение на Android Стартап
15

Продвиньте ваш пост

Перейти
Партнёрский материал Реклама
specials
specials

Нужно больше внимания к постам? Есть способ!⁠⁠

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

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

Продвинуть пост

Продвижение Посты на Пикабу Текст
82
3TOT
3TOT
1 год назад

Ответ на пост «Андроид»⁠⁠3

Apple как-то попытались сделать серверную ОС, но у них так и не получилось обеспечить необходимую безопасность ядра. плюнули, но объявили, что всё их оборудование невероятно защищено. ага. то-то сливы все знаменитостей с айфонов. или кто-то думает, они там гламурно на андроидах сидят?

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

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

в Южном парке хорошо прошлись.

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

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

причём яблоки используют наработки открытого сообщества, поэтому, по его правилам, ОБЯЗАНЫ открыть свой код. но нет. не открывают.

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

этот слушается:

Ответ на пост «Андроид» Android, Apple, Программирование, Безопасность, Информационная безопасность, Open Source, Авторский рассказ, Операционная система, Ответ на пост, Длиннопост, Кот
Показать полностью 1
[моё] Android Apple Программирование Безопасность Информационная безопасность Open Source Авторский рассказ Операционная система Ответ на пост Длиннопост Кот
32
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии