Это игра экономическая стратегия в которой вам необходимо распределять и оптимизировать управление пассажиропотоком построив свою успешную авиакомпанию. Игра не осложнена ненужными элементами:
- контролем выбросов в окружающую среду;
- установкой количества мест бизнес или эконом класса;
- управлением расписанием самолетов; и др.
В этой статье я расскажу, об основной игровой механике, без которой не было бы этой игры. Речь пойдет о системе пересадки пассажиров.
Посчитав максимальное количество потенциальных маршрутов, оно составило бы 20736, так как в игре есть 144 города и игрок может создавать их в любом порядке.
Из-за создания маршрутов в любом порядке это могло привести к хаосу и неопределенности в передвижении пассажиров. Стал вопрос в динамическом создании пути.
Поэтому мне необходимо было искать кратчайший путь после того как игрок создаст маршрут.
У нас есть точки и расстояния между ними. Чтобы узнать кратчайший путь нам необходимо создать матрицу расстояний. Игра разрабатывается на Unity Engine поэтому код будет на C#. Создаем двумерный массив, где 999 — это бесконечность когда точки не объединены между собой, а другие цифры это дистанция между объединенными точками.
Сам алгоритм поиска выглядит вот так:
Содержание скрыто
Показать
Это рабочий пример, но мы помним что потенциально может быть 20736 маршрутов и этот код слишком медленный для такого количества. Поэтому в игре используется различная оптимизация что бы просчет не влиял на опыт игрока.
Наконец мы его запускаем и видим результат
Мы получили финальную матрицу, и на первый взгляд не видно самого пути. Здесь уже все гораздо проще. Для поиска пути мы берем номер финишной точки к примеру это 3. Номер 3 будет столбцом, а строкой цифра 0 — это стартовая точка.
Как видно мы нашли путь от 0 до 3, но этот путь довольно легкий. Возьмем финишную точку 5
Есть два пути, но очевидно что 0,1,4,5 будет лучшим. Это просто для человека, но как это поймет программа?
Отлично, мы нашли путь по нашей предварительно подготовленной матрице. Как я писал выше, вариант с просчетом путей заранее не подходит, следовательно я написал свой довольно сложный алгоритм по созданию матрицы дистанций.
Кстати можете сами поискать путь из других точек, стартовая и конечная может быть любая.
Теперь наши пассажиры могут спокойно добраться до пункта назначения если даже туда нет прямого рейса.
Игра выйдет 9 июня 2023 в Стим, Nintendo eShop, IOS, Android
Добавляйте в вишлисты