Как создать игру на андроид с нуля самому
Содержание:
VN MAKER
Коммерческий игровой движок, разработанный Degica. Он разработан специально для создания визуальных романов без необходимости уметь программировать.
Фото: gamingtrend.com
Для разработки: Визуальных новелл.
Платформы: Windows, macOS и Linux.
Языки программирования: JavaScript и CoffeeScript.
Стоимость: $69.99.
Обучение: Существует бесплатное обширное руководство, которое охватывает широкий круг тем, включая основы редактора, как структурировать историю, которую вы пишете, как настроить проект без программирования, а также отдельное руководство только для сценариев и документации.
Начало работы:
Game Maker
Из простого редактора текстур и моделей (первые версии программы) Game Maker превратился в полнофункциональную среду разработки приложений. Последняя на сегодняшний день восьмая версия позволяет работать с 2D и 3D объектами, использовать стандартные и созданные пользователями библиотеки (для этого нужно использовать Lib Maker) и многое другое.
Game Maker – это самая, наверно, дружелюбная программа-конструктор игр из представленных сегодня. Для создания кода можно использовать как мышь («графический» вариант программирования), так и более классическую клавиатуру (то есть вбивать код вручную). Поддерживается импорт моделей из различных редакторов, к примеру, из популярного 3D Max.
Однако, несмотря на очевидные плюсы, есть и минусы. Один из них – ограниченная поддержка 3D, введенная с шестой версии программы. До шестой версии основными играми, созданными с помощью Game Maker, были платформеры, но после появилась возможность создавать полноценные трехмерные игры. Другой минус – необходимо минимальное знание принципов программирования. В основе каждого действия, созданного на основе Game Maker, лежит реакция объекта на какое-то событие, а значит, прежде, чем приступать к работе, нужно понять, что такое триггеры, скрипты и спрайты (последние нужны, к примеру, для того, чтобы сделать огонь и траву). Ну и, конечно, лучше бы уметь работать с текстурами, моделями и анимацией.
Скачать Game Maker
Что такое Unity
Unity — это и среда разработки, и игровой движок, с помощью которого создаются проекты для разных платформ: ПК, мобильных устройств, игровых консолей и интернет-платформ, — поэтому он называется кроссплатформенным. В Unity есть инструменты для создания объектов, их перемещения, работы с графикой, текстурами и звуком, поэтому сделать полноценную игру с его помощью можно даже в одиночку.
Наглядный пример игры, созданной на Unity, которая поддерживает разные устройства, — , успешный мультиплатформенный проект китайской студии miHoYo Limited. Более популярной стала ее мобильная версия, но пользователи могут войти в аккаунт, например, с компьютера и продолжить играть с того же момента, на котором остановились в мобильной версии. Кроме Genshin Impact, на Unity созданы такие известные проекты, как Hearthstone, Outlast, Cuphead, Pokemon GO и многие другие.
В игровой индустрии существуют десятки разных движков. Одни разработаны под конкретную игру, на других можно делать игры конкретного жанра (шутеры от первого лица, платформеры, гонки), а есть универсальные, вроде Unity, которые открывают разработчикам больше возможностей. Уникальность Unity заключается в сочетании нескольких факторов. Кроме того, что этот движок позволяет создавать проекты под разные устройства и не ограничивает разработчика конкретным жанром, он:
- имеет практически неограниченный бесплатный функционал;
- не требует глубокого знания языков программирования для создания первых простых проектов;
- имеет многочисленное и активное сообщество, в котором можно найти ответ на любой вопрос, потому что среди такого большого количества людей кто-то обязательно уже сталкивался с вашей проблемой.
Что есть что
Движки для разработки игр
Игры создаются с помощью движков — набора инструментов, который позволяет работать с графикой, физикой, скриптами и прочим.
Вот скриншот интерфейса движка Unity:
В левом верхнем углу — игровая сцена, на которую можно добавлять объекты, двигать их, убирать и так далее. Ниже расположено игровое окно — в нём можно увидеть, как будет выглядеть готовая игра. Можно даже нажать на кнопку Play и поиграть.
Дальше можно увидеть иерархию объектов на сцене, файловый менеджер и вкладку Inspector — в ней есть разные настройки для выбранного объекта. Кроме того, можно зайти в настройки проекта и указать желаемые показатели для гравитации, освещения, теней, качества графики и всего прочего.
Также у движка есть поддержка скриптов и API. Скрипты помогают вам писать команды, которые будут выполняться игрой всё время или после каких-то действий игрока. API же помогает упростить написание скриптов. То есть вы не проводите сложных математических расчётов, чтобы изменить положение или вращение объекта, — вы просто пишете команду вроде «Юнити, поверни объект А на 5 градусов по оси X».
Вы либо используете готовый движок, либо пишете свой — у обоих вариантов есть плюсы и минусы.
Плюсы
Минусы
Готовый движок
- Иногда вам могут попасться баги, с которыми ничего нельзя сделать — только ждать, пока авторы движка что-то исправят.
- Меньше свободы.
- Вы соглашаетесь с лицензией — иногда приходится делиться частью прибыли.
- Авторы могут бросить или переделать ваш любимый движок.
- Много того, что вам никогда не потребуется, — а это раздувает размер игры.
Самописный движок
- Долго.
- Дорого.
- Требует больших знаний.
- Ошибки в проектировании могут похоронить не только игру, но и сам движок.
- Дополнительные затраты на портирование.
Список современных движков:
- Unity;
- Unreal Engine 4;
- CryEngine 3;
- Source, Source 2;
- Creation Engine;
- Godot;
- Cocos2D;
- Game Maker Studio 2;
- RPG Maker и другие.
Cocos 2D-x
Движок Cocos 2D-x китайской компании YAJI Software считается одним из самых популярных среди инструментов для создания игр преимущественно на мобильных платформах. Недавний релиз инструмента для создания двумерных и трёхмерных игр — Cocos Creator — вывел технологию на новый уровень, и теперь разработчикам и художникам стало ещё легче работать вместе и создавать игры для iOS, Android, Facebook Instant Games, WeChat Mini Games, HTML5, а также для десктопных платформ.
Plague Inc. — игра, созданная на Cocos 2D-x
Достижения:
- согласно данным на официальном сайте, с 2011 года технологией воспользовалось более 1,4 млн разработчиков игр из 195 стран;
- на движке сделано 25 000 игр;
- общая аудитория проектов — полтора миллиарда человек.
Преимущества:
- бесплатный инструмент с открытым исходным кодом поможет реализовать все амбиции проекта и быстро пофиксить баги;
- наличие API для кроссплатформенных игр — это позволяет сконцентрироваться на разработке приложений и меньше беспокоиться о технических аспектах;
- движок быстрый и стабильный в работе;
- SDKBOX: интеграции с различными модулями (реклама, соцсети и так далее) для выпуска игры на мобильных платформах.
Недостатки:
- подходит только для 2D-игр;
- для работы с движком требуется знание C++ или JavaScript;
- разработчики на плохую документацию: информации по движку в сети мало, что может отпугнуть новичков.
Игры на движке: Plague Inc. Evolved, 8 Ball Pool, Might & Magic Heroes: Era of Chaos, Hill Climb Racing 2, Forge of Empires.
«Мы стали делать игры на этом движке, потому что один из разработчиков попробовал частично перенести „Сокровища Пиратов“ на Cocos 2D-x (по счастливой случайности он выбрал именно эту технологию) и показал нам демоверсию. Результат нам понравился. <…> Мы решили перенести всю игру на новый движок. Чуть больше чем через год была готова полная версия для Android. Когда мы загрузили её в Google Play, заменив старый билд 2014 года, аудитория оценила обновление, и наш доход вырос в четыре раза».
Команда TAPCLAP, разработчик мобильных и социальных игр («», «»).
Cocos Brings Bigger Success To Russian Developers, сентябрь 2020 года
«Сокровища Пиратов»
Все эти примеры движков с открытым кодом показывают, что «бесплатный» — не всегда означает «некачественный». Если инструмент способен воплотить задумки, ничто не мешает начать с него и обойтись минимальными затратами. Кто знает, вдруг при наличии определённых навыков разработчик сделает новый хит, который затмит по популярности Plague Inc. или «Великого Султана»?
Впрочем, если вы мечтаете о более масштабном проекте, возможно, следует обратить внимание на движки, которые сфокусированы на 3D-графике, поддерживают консоли и распространяются по условно-бесплатной модели. Им и будет посвящён наш следующий материал
Первые шаги использования Unity
Начинают работу с наиболее простого — загружают и настраивают Unity. Закачку свежей версии выполняют с официального сайта, после чего запускают установку. Редактирование в Unity 4 и выше выполняет редактор MonoDevelop. Для тех, кто использует Windows, специалисты рекомендуют применять в качестве альтернативы Visual Studio 2013 (C#), после этого в опциях движка меняют его по умолчанию.
При запуске Unity у пользователя будет кнопка для создания нового проекта — New Proyect. Ей присваивают имя и выбирают вариант 2D. Unity откроет проект, и если по какой-то причине на ПК не загружена последняя версия, движок предложит обновление.
Далее появится экран, разделенный на различные рабочие области окна, организованные определенным образом в макет:
- Сцена — это место, где происходит игра, а разработчик добавляет спрайты и ресурсы для взаимодействия друг с другом.
- Иерархия — тут расположены все спрайты, объекты и ресурсы, добавленные на сцену, но сгруппированные по иерархии.
- Инспектор — при выборе объекта из «Сцены» или «Иерархии» он сообщает все его детали и характеристики: положение, размер и другие.
- Проект — здесь отображаются доступные ресурсы — активы игры.
- Кнопки симуляции — именно они позволяют начать проект или приостановить его.
- В разделе «Ресурсы» находятся ресурсы, которые будут использованы в игре. Вначале эта область будет пустой, но можно заполнить ее изображениями, если добавить спрайты.
Перед тем как перенести ресурсы в проект Unity, лучше распределить их по папкам. Затем можно легко переносить их, щелкнув правой кнопкой мыши на «Активы» и выбрав «Показать» в Проводнике. Далее заходят в папку «Активы» и копируют туда нужные ресурсы. В проекте также есть возможность использовать хранилище ресурсов: Window-> Asset Store или нажав Ctrl + F9.
Шаг 1. Идея
Шаг первый довольно прост. Вы легко можете сделать это в уме.
Перед тем, как начать, определитесь, какую игру вы делаете. Чтобы понять это, вы должны задать себе несколько вопросов по игровому дизайну:
- Это платформер, игра с видом сверху или, может быть, изометрическая?
- Какая будет тема и основная история?
- Как это будет выглядеть?
- Какой движок вы будете использовать?
- Главное, чем ваша игра будет выделяться? Какую новую механику или идею он представляет или что будет хорошо?
Хотя вам не нужны твёрдые или конкретные ответы на большинство из этих вопросов, вам всё же необходимо общее представление о том, что вы собираетесь делать, прежде чем начать. Вы можете расширить эту идею и создать её базовый прототип позже. Кому-то нравится делать это на бумаге, а кто-то может просто провести мозговой штурм.
Для начала сделаем платформер. В этом примере особое правило платформеров состоит в том, что игрок должен управлять двумя персонажами одновременно, чтобы решать головоломки, а персонажи должны встретиться, чтобы пройти уровень.
Как только у вас появится несколько идей о том, что делать, у вас будет руководство, с которого можно начать. Теперь можно переходить к прототипированию.
Unity
Unity используется повсеместно и являясь мультиплатформенным подходит под широкий спектр задач, хотя графически несколько уступает Unreal. Позволяет работать над 2D и 3D играми, создавая проекты под Windows, OS X, Playstation 4, XBox, Windows Phone, Android, Apple iOS и Linux, в том числе и под Wii, PlayStation 3, PlayStation 4, Xbox 360, Xbox One, Nintendo Switch. Есть возможность создавать приложения для запуска в браузерах с помощью специального подключаемого модуля Unity (Unity Web Player), а также с помощью реализации технологии WebGL.
Приложения, созданные с помощью Unity, поддерживают DirectX и OpenGL. Движок используется как разработчиками ААА-игр, так и Indie-студиями. Есть собственный
, сильное и активное
и впечатляющее количество документации и видеоуроков.
В наличии движка простой легко настраиваемый Drag&Drop интерфейс, состоящий из различных окон и позволяющий производить отладку игры прямо в редакторе. Движок поддерживает скриптовые языки C# и JavaScript. Все расчёты физики производятся с помощью NVIDIA PhysX.
Лицензия
является бесплатной, однако, если доход вашей компании составляет больше 100 000 $ в год или же если вам удалось привлечь на разработку более 100 000 $, вы не имеете права использовать Unity Personal. Можно будет воспользоваться версией
для компаний, зарабатывающих до 200 000 $ в год, или
— она не накладывает никаких ограничений по доходу.
Работа со скриптами
За поведение игровых объектов отвечают присоединенные к ним компоненты (Components). Базовый компонент любого объекта — Transform, он отвечает за положение элемента в окне Scene, возможность поворачивать и масштабировать его. К базовому компоненту можно добавить, например, Renderer, который меняет цвет, или RigidBody, который отвечает за массу и физику объекта. Но кроме базовых компонентов, объектам можно задавать особые условия, и для этого как раз используются скрипты.
Создать новый скрипт можно в окне Project, кликнув мышкой на Assets –> Create –> C# Script.
Двойным кликом мыши скрипт открывается в текстовом редакторе. Скрипты, как и все остальное в Unity, прописываются на С#, так что для создания сложных проектов разработчикам все же придется освоить этот язык.
Базовые элементы скриптов — это:
- using — элемент в коде, который подключает библиотеки;
- public class — в этой строке обычно прописан класс MonoBehaviour, он содержит набор функций, необходимых для работы скрипта;
- void — те самые функции, с их помощью прописываются действия, происходящие в игре.
Рассмотрим, например, функцию start. Любое действие в ней произойдет только один раз, когда запустится игра. Пропишем здесь print (“Hi”).
И можно заметить, что в консоли это слово выводится один раз.
Функция update — повторяющаяся, ее можно использовать, например, для передвижения объекта. Для этого в скрипте задается переменная int i = 0, она выводится на экран с помощью функции print (i) и увеличивается на одну единицу за каждый шаг с помощью i++.
В консоли можно будет заметить, что апдейт действительно срабатывает каждый фрейм и объект, к которому применен этот скрипт, плавно движется.
RPG Maker
История одного из самых знаменитых конструкторов ролевых игр началась ещё в конце 1980-х. Более поздние версии для Windows, созданные японскими разработчиками, получили широкое распространение на Западе. Сегодня популярность движка достигла таких масштабов, что тег RPG Maker в Steam представляет уже не столько игры на самом движке, сколько собирательный образ тематического направления в геймдеве. Этот феномен легко объяснить.
RPG Maker используют преимущественно для создания JRPG в стиле ранних частей Final Fantasy. Сам жанр требует огромного количества ресурсов: локаций, персонажей, мобов и так далее. Большинство тех, кто работает в RPG Maker, используют дефолтные шаблоны движка, дополняя их собственными персонажами и иллюстрациями. Иногда даже NPC в этих играх созданы только с помощью генератора. Поэтому игры на RPG Maker, как правило, выглядят очень однотипно. Лень тут ни при чём: у большинства инди-разработчиков просто нет времени, навыков и ресурсов, чтобы сделать всё с нуля. А готовые системы сохранения, боя и интерфейс тяжело изменить. Даже если потратить на кастомизацию достаточное количество времени, мелкие детали в интерфейсе всё равно выдадут RPG Maker.
Сейчас существует несколько версий редактора. Последняя — RPG Maker MZ — вышла в 2020 году. Базовая версия обойдётся в 1 389 рублей. Также не стоит забывать о DLC с наборами тематических ассетов, которые наверняка потребуются начинающему разработчику.
Скриншот из To the Moon — игры, созданной на RPG Maker. Скриншот: игра To the Moon / Steam
Преимущества:
- не требует навыков программирования, более опытные разработчики могут оценить гибкость движка с помощью JavaScript;
- кросс-платформенность (Windows, Mac OS X, HTML5; iOS и Android — в RPG Maker MV);
- огромное количество плагинов: игру можно сделать фактически с нуля без помощи художников и композиторов;
- на тематических форумах есть бесплатные ассеты.
Недостатки:
- большое количество ассетов и DLC, которые следует докупать отдельно;
- неоправданно большой «вес» проектов: согласно порталу gamedesigning.org, игра занимает от 400 МБ независимо от количества контента, к тому же конструктор нередко создает резервные копии, засоряя жёсткий диск;
- если перемудрить с ассетами, игра начнет тормозить — выявить причину будет непросто;
- портирование на мобильные платформы может сопровождаться неприятными багами.
Игры на движке: To the Moon, Hello Charlotte, Grimm’s Hollow, Lawmage Academy.
Скриншот из Lawmage Academy — игры, созданной на RPG Maker. Скриншот: игра Lawmage Academy / Steam
«Мне хотелось сделать добротную двумерную RPG с приятным геймплеем, хорошей боёвкой и презентабельным визуалом. Я понял, что мне не хватит опыта и бюджета для работы с Unity 3D или UE4 (если не считать работой сборку игры сомнительного качества из готовых ассетов), поэтому я остановился на RPGMaker, тем более что мне уже доводилось с ним работать. Это замечательный инструмент, но, к сожалению, за годы у него сложилась репутация конструктора плохих игр, которые порой бывают даже хуже, чем поделки на Unity. Отчасти это связано с простотой его использования. Практически любой желающий может сразу создать игру на RPG Maker, достаточно посмотреть пару обучающих видео. Однако реальные возможности движка сильно ограничены: на нём можно сделать только JRPG в стиле Final Fantasy, для иных жанров потребуется масса плагинов, а ещё предстоит потратить время на работу с кодом».
Manly Mouse Studios, инди-разработчик (The Singularity Wish). Дневник разработчика, октябрь 2019 года
Скриншот из The Singularity Wish — игры, созданной на RPG Maker. Скриншот: игра The Singularity Wish / Steam
«RPG Maker действительно очень простой движок. Его простота и доступность привели к тому, что на нём появилось огромное количество „мусора“, в том числе порнографического содержания. Из-за этого многие геймеры терпеть не могут RPG Maker. И эта дурная слава будет преследовать даже качественные проекты. Игры на этом движке очень узнаваемы. Ещё могу отметить тот факт, что движок подходит для создания пошаговых RPG и даже квестов. Игры других жанров в теории тоже можно сделать (я даже видел симпатичный beat ’em up), но это равносильно забиванию гвоздей отвёрткой вместо молотка».
Кирилл Пестряков, инди-разработчик (Heroines of Swords & Spells)
Скриншот из Heroines of Swords & Spells — игры, созданной на RPG Maker. Скриншот: игра Heroines of Swords & Spells / Steam
Движок – определение
Self контент игрового характера создается посредством специальных сред программирования. Обычно для этого используется игровой движок. Так называют пакет программ и утилит, которые необходимы для создания различных видеоигр и интерактивных приложений.
При помощи соответствующих компонентов удается получить:
- 3D и 2D-графику;
- скриптинг;
- звук;
- кат-сцены;
- рендеринг;
- сетевые коды;
- реализацию физического движка;
- внедрить искусственный интеллект.
Это – настоящий подарок для тех, кто планирует заниматься разработкой self made контента. Говоря простыми словами, рассматриваемый платформер – это база для игр.
О языках
Игровые объекты и другие составляющие как клиентской, так и браузерной self игрушки лучше внедряются через движки. Они бывают готовыми («чужими») и собственными. Первый вариант применяется в большинстве случаев. Лишь изредка крупные разработчики софта пишут для тех или иных проектов собственные движки (пример – REEngine от Capcom).
В основе платформеров лежит программирование на различных языках. Браузерные self games пишутся преимущественно на:
- JavaScript;
- PHP;
- Python.
Это – основные языки разработки веб-контента. Отдельное все они схожи между собой, но имеют собственные нюансы и особенности. Можно обучиться как одной «лексике» для успешной разработки self контента, так и нескольким. Второй вариант больше подойдет тем, кто планирует активное программирование «с нуля».
Лучшие платформеры
Игрушки, сделанные при помощи готовых платформеров-движков – это практически совершенный контент. Но многое зависит от того, какую именно «базу» выберет программер.
Вот несколько самых популярных на сегодняшний день вариантов:
- CryEngine;
- Unity 3D;
- Unreal Engine 4;
- GameMaker Studio 2;
- Cocos;
- Corona (он же Solar2D);
- Godot;
- libGDX.
Лучший контент для создания игр выбрать трудно. Но на практике в ходу софт и приложения, сделанные при помощи Unity 3D и Unreal Engine.
Что лучше для браузера
Self Made Games браузерного типа – это преимущественно 2D-софт. Для его воспроизведения используем разнообразные проигрыватели (пример – Flash Player) и расширения.
Браузерные утилиты должны быть:
- «легкими» по объему, иначе возможна долгая загрузка;
- с тщательно проработанной графикой;
- обладающими высокой частотой кадров;
- удобными;
- быстрыми.
Поэтому для соответствующего self контента нужно выбирать веб-языки. В идеале – Python. Это – отличный вариант как для новичков, так и для тех, кто долгое время занимается разработкой софта.
GameMaker Studio 2
Проекты на этом движке: Hyper Light Drifter, , Undertale, .
GameMaker Studio 2
Плюсы GameMaker Studio 2:
- Обширная документация, которая написана понятным языком;
- Простой язык сценариев для разработки;
- Большое сообщество разработчиков, которое поможет прокачать свои скиллы в создании игр.
Минусы GameMaker Studio 2:
- Слишком простой язык сценариев, в котором легко запутаться, если проект большой;
- Из-за простоты языка программирования теряется производительность проекта;
- Если долго сидеть на этом движке, то в будущем будет сложно перейти на более продвинутый, например, Unity или Unreal Engine 4.
Пример разработки простой 2D-игрушки Андроид
Наша игра Android Studio развивается по известному сюжету. Пользователь управляет космическим кораблем, уворачивающимся от метеоритов (астероидов). Последние падают с верхней части экрана, корабль – движется внизу вправо или влево, в зависимости от решений участника. При столкновении аппарата с космическим объектом объявляется Game Over.
Начнем с открытия проекта. Для этого последовательно выберем в меню программы File, New, New Project. Придумываем проекту название, вводим домен и место, где будет храниться папка. Окно, появившееся после нажатия Next, лучше оставить без изменений. В следующем выбираем Empty Activity и движемся дальше. Кликнув по клавише Finish, мы получим готовый проект.
Следующим шагом станет скачивание необходимых картинок и копирование их в папку drawable. Это изображения корабля и метеоров. После этого нужно создать layout. Открываем Text в activity_main.xml и вставляем следующий код:
Код для layout
MainActivity, GameView, SpaceBody
Для редактирования класса MainActivity меняем определение, придав ему следующий вид: public class MainActivity extends AppCompatActivity implements View.OnTouchListener {. После этого нужно задать перемены для нажатия левой (public static boolean isLeftPressed = false) и правой (public static boolean isRightPressed = false) кнопок. Следующие действия мы расписывать не будем. В итоге MainActivity должен принять следующий вид:
Код для MainActivity
Разобравшись с классом MainActivity, переходим к GameView. В определение добавляем extends SurfaceView implements Runnable. Теперь нужно задать разрешение. У современных гаджетов разные параметры. Дисплей старого мобильника не может сравниться с новым большим планшетом.
Чтобы добиться одинакового изображения на любом устройстве, поделим монитор на одинаковые «клетки» 20х28 (первый показатель – горизонталь). Если эти части будут распределены неравномерно, картинка получится сжатой или растянутой. Задаем переменные:
Переменные для «уравнивания» графики
Для метода run() устанавливается бесконечный цикл, стартующий с update(). Задачей последнего является вычисление новых координат космического корабля. По окончании расчетов на экране будет сформирован сам аппарат (draw()). Control() завершает цикл, обеспечивая паузу на 17 миллисекунд. Затем снова запускается run(). Выглядеть это будет так:
Бесконечный цикл для run()
Чтобы появился сам корабль и астероиды, нужен родительский class SpaceBody. Зададим переменные и методы:
Код для родительского класса SpaceBody
Теперь отдельный класс Ship для корабля:
Код космического корабля
После этого останется произвести компиляцию и запуск программы. На дисплее Android Studio должен возникнуть корабль, который можно кнопками перемещать вправо и влево. Следующим шагом станет добавление астероидов. Для этого разработаем class Asteroid, тоже являющийся дочерним для SpaceBody. Зададим переменные:
Код для метеоров
Суть в том, чтобы астероиды произвольно возникали в разных точках «потолка» экрана и двигались с непредсказуемой скоростью. Мы задали код, определяющий столкновение метеоров с кораблем. Добавим астероиды в GameView:
Вписываем астероиды в GameView
На этом изготовление элементарной 2D-игры можно считать завершенным. Остается скомпилировать и запустить программу. Ничто не мешает добавлять в нее новые опции. Например, стрельбу по метеорам или постоянное ускорение их движения. Но это уже тема отдельного разговора.