fromNovosibirsk

fromNovosibirsk

Руководство Лиги Лени
На Пикабу
поставил 908 плюсов и 715 минусов
отредактировал 9 постов
проголосовал за 17 редактирований
Награды:
лучший пост недели За неравнодушие к судьбе ПикабуС Днем рождения, Пикабу! лучший пост недели лучший авторский пост недели лучший авторский текстовый пост недели За победу в продуктовом сёрфинге За участие в Новогоднем видео-поздравлении Пикабу 5 лет на Пикабу
105К рейтинг 134 подписчика 42 подписки 274 поста 56 в горячем

Сообщество Лига Лени объявляет о своём закрытии, мы не выдержали давления

В течении длительного периода времени мы получали комментарии от пользователей имеющих однотипную смысловую нагрузку, вот те, что удалось найти в кратчайшие сроки:

#comment_139511540 #comment_177892295 #comment_177892832 #comment_177933400 #comment_177899426 #comment_177892860

Сообщество Лига Лени объявляет о своём закрытии, мы не выдержали давления Лига Лени, Закрытие, Объявление, 1 апреля, Комментарии на Пикабу
Сообщество Лига Лени объявляет о своём закрытии, мы не выдержали давления Лига Лени, Закрытие, Объявление, 1 апреля, Комментарии на Пикабу
Сообщество Лига Лени объявляет о своём закрытии, мы не выдержали давления Лига Лени, Закрытие, Объявление, 1 апреля, Комментарии на Пикабу

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

Перед закрытием важно прояснить ещё один момент.

Если мы не настоящее сообщество, то сколько же тогда нас на самом деле на Пикабу?

На этот случай мы получили официальный ответ от модерации сайта:

#comment_177905543 (сам вопрос и ответ).

Сообщество Лига Лени объявляет о своём закрытии, мы не выдержали давления Лига Лени, Закрытие, Объявление, 1 апреля, Комментарии на Пикабу

Нас больше 45 миллионов!

ллгс что были с нами

p.s. закроемся когда не будет лень.

Показать полностью 2

Нюансы в разработке игры понятным для каждого языком

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

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

Минимально жизнеспособный продукт.
Первое, что должно лежать в основе разработки абсолютно любой игры, если вы разрабатываете один, это MVP (minimum viable product).

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

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

Нюансы в разработке игры понятным для каждого языком Gamedev, Разработка, Google Play, Оптимизация, Инди игра, Гифка, Длиннопост

О чём будет наша игра?
Давайте пофантазируем и придумаем, что то простое.

Тут для каждого своё, в моём случае я исполнил такую задумку.

1.Что то летит вниз, попутно разрушая платформы.
2.По бокам платформы которых нельзя касаться или Game Over.
3.Цель долететь до финиша.


Приступаем к реализации.
Представим, что мы, где то взяли эти платформы и где то их расставили.
А где то, это имеется в виду игровой движок по типу Unity и тому подобное.
Вы же сами не будете писать игровой движок ради игры. Помним про MVP и всё такое.

Расставили их в причудливой форме, две "смертельных" платформы по бокам, сколько-то "разрушаемых" в центре. И так, штук сто, до финиша.

Реализовали управление и механики, тут для каждого индивидуально. Жмём вправо, летим вправо и вниз, жмём влево, соответственно летим влево и вниз.
Сталкиваемся с "смертельными" платформами, погибаем, с "разрушаемыми" соответственно разрушаем их. Финиш выигрываем!


Делаем таких пару уровней, готово, конец, спасибо что читали.запускаем и видим анимацию из стоп кадров.

Что мы сделали не так?

При таком нерациональном использовании ресурсов, ни о какой плавности картинки, речи идти не может, а что же всё таки произошло?


Начнём по порядку.


Заранее подготовленные ресурсы.

Скорее всего вы покупаете тарелки до того, как садитесь за стол, так и тут. Запомните, всё что можно создать заранее, лучше создать заранее. Зачем вам выполнять расчёты разрушения однотипного объекта, во время его разрушения? Ведь такая процедура вероятно будет ресурса затратной. По этой причине, мы можем схитрить и подготовить разрушение объекта заранее.

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


Повторное использование ресурсов.

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

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

Так зачем хранить тучу не используемых объектов, если можно хранить только данные о них? И подставлять их заранее созданному объекту из не большой подготовленной "кучки". В этом случае данные, это их тип, позиции и поворот. Тут уже есть где разгуляться!

Как я реализовал пул повторно используемых объектов?

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

Как я получаю объект из пула? Представим что в пуле 10 объектов и каждый доступен по своему номеру в массиве. В итоге когда нужен объект, что бы его получить нам нужен, номер последнего полученного объекта и список с этими объектами. К примеру если последним был пять, то мы получим шестой, если последним был десятый, то мы соответственно получим первый. Не чего сложного!
Заранее подготовленные фрагменты разбитых платформ, я тоже вынес в отдельный пул маленького размера. Вроде даже, не больше четырёх-пяти разбитых платформ в пуле одного типа. Ведь на экране одновременно может находить малое количество разрушенных объектов, следовательно и фрагментов нужно мало.
Получая объект, вы сбрасываете его состояние к начальному и используете повторно!

Поговорим о данных!

Мы реализовали систему которая хранит позицию и поворот объектов.
А что быстрее задавать значение от руки или создать систему которая сделает это за вас?

Давайте посчитаем, что от руки задать значение ста локациям, в каждой которой по сто секций, в каждой из которой по три платформы это 100*100*3=30000 значений. Что собственно и является ответом.
Что собственно реализовано в моём случае, не буду томить.
Позицию платформ по координате смещения задавалась в соответствие с её номером в локации подставленным в заранее подобранную магическим способом, математическую кривую с определённой амплитудой. Поворот аналогично. (Это всё очень индивидуально для каждой системы). Оставалось только подставлять кривую и получать значения.
Автоматизируем всё до конца!
Эти кривые и амплитуду я тоже решил создавать автоматически из заранее подобранных магическим способом значений. Получилось, что то напоминающие это:

Нюансы в разработке игры понятным для каждого языком Gamedev, Разработка, Google Play, Оптимизация, Инди игра, Гифка, Длиннопост

Запускаем.
Система обращается к пулу и берёт свободные объект нужного ей типа, обнуляет его и подставляет ему новые данные. Данные уровней, создаются автоматически.
Остаётся добавить интерфейс и можно выпускать! Конец! Кому не хватило запятых, вот: ,,,,,,,..,,)

Вот что получилось в итоге:

Нюансы в разработке игры понятным для каждого языком Gamedev, Разработка, Google Play, Оптимизация, Инди игра, Гифка, Длиннопост

Страница игры в Google Play: https://play.google.com/store/apps/details?id=com.Rufer.Quic...

Показать полностью 3

Страшный сон Пикабушника

Страшный сон Пикабушника

С нг

Новогодние видео поздравление от администрации Лиги Лени!

С наступающим мои ленивые товарищи!

Как?

Как? ДТП, Авария
Показать полностью 1

Модерация когда случается любой бунт

Модерация когда случается любой бунт

Когда рисуешь в оффлайне

Когда рисуешь в оффлайне Авторский комикс, Рисование
Показать полностью 1

Поздравляю лл с 10к

Немного припозднился, но всё же!
Когда то нам задали вопрос: "Если в лл все настолько ленивы, то откуда столько постов?"
Так вот, как человек про6ывший на служ6е у лл примерно с 3 февраля 2017, могу официально заявить.
Количеством берём!


Спасибо что вы есть у нас!

p.s. в комментах бонус

Отличная работа, все прочитано!