Как ускорить игру «Жизнь» в сто раз
Сложно найти человека, не знакомого с игрой «Жизнь», придуманной английским математиком Джоном Конвеем еще в 1970 году, и до сих пор не теряющей своей популярности. Многие программисты писали свою реализацию этой игры, и еще одна вряд ли кого-то удивит. Однако эта игра является отличным примером, показывающим, насколько полезной может оказаться оптимизация вычислений, даже не меняющая асимтотическую сложность алгоритма. Мы начнем с простейшей реализации на c# и будем последовательно применять различные оптимизации, ускоряя работу программы.
Мы также улучшим алгоритм на JavaScript, ускорив его в 10 раз по сравнению с неоптимизированной версией.
В конце статьи дана ссылка на код, а также на online-реализацию игры с оптимизированным алгоритмом на JavaScript, выполняющим до двухсот итераций в секунду на поле размера 1920×1080 (Full HD), где вы можете убить время поиграть в эту замечательную игру.
Правила игры
Игра «Жизнь» идет на плоскости, состоящей из клеток, каждая клетка имеет 8 соседей. Клетки могут быть «живые» или «мертвые». В каждой итерации (еще называемой «поколением») состояние поля меняется в зависимости от количества живых соседей: если рядом с живой клеткой два или три живых соседа, клетка выживает в следующем поколении. Если рядом с мертвой клеткой ровно три живых соседа, то в следующем поколении клетка «рождается».

— клетка A имеет одного живого соседа, поэтому она умирает;
— клетка B имеет трех живых соседей, поэтому она остается жить;
— клетка C имеет трех живых соседей, поэтому она рождается;
— клетка D имеет пять живых соседей, поэтому она остается мертвой.
Код на c# требует .NET Core 3.1. За исключением одного класса (использующего System.Runtime.Intrinsics.X86), остальной код должен работать .NET Framework и на более ранних версиях .NET Core. Разработка велась в Visual Studio Community Edition 2019.
Реализация на JavaScript не требует никаких зависимостей, хотя игру желательно запускать в браузере Chrome, поскольку в Microsoft Edge он работает крайне медленно. Разработка велась в Visual Studio Code.
Как устроен код на c#
Размер игрового поля зафиксирован как 1920×1080 (Full HD), причем крайние клетки всегда мертвые. Это не влияет на производительность, но упрощает алгоритмы, избавляя от проверок на граничные условия. Все алгоритмы наследуются от абстрактного класса LifeJourney, что позволяет унифицировать их тестирование:
LifeJourney.cs
public abstract class LifeJourney < public const int WIDTH = 1920; public const int HEIGHT = 1080; public string Name =>GetType().Name; public abstract void Set(int i, int j, bool value); public abstract bool Get(int i, int j); public abstract void Step(); // makes one iteration. Performance-critical! public void Clear() < for (int i = 1; i < WIDTH - 1; i++) for (int j = 1; j < HEIGHT - 1; j++) Set(i, j, false); >public void GenerateRandomField(int seedForRandom, double threshold) < . >. // other methods >
Юнит-тесты запускают один и тот же набор тестов для каждого алгоритма:
LifeTesting.cs
public class LifeTesting < public static void PerformAllTests(LifeJourney life) < TestGetSet(life); TestSetSimpleFigure(life); TestSimpleFigureAtStart(life); TestSimpleFigureAtSecondPos(life); TestSimpleFigure(life); TestGenerate(life); TestRandomField(life); >. private static void TestRandomField(LifeJourney life) < life.GenerateRandomField(12345, 0.5); life.Step(); Assert.AreEqual(565797, life.GetLiveCellsCount()); Assert.AreEqual(-717568334, life.GetFingerprint()); >> [TestClass] public class TestDifferentLives < [TestMethod] public void Test_1_SimpleLife() =>LifeTesting.PerformAllTests(new SimpleLife()); . >
Тестирование производительности создает поле случайной заливкой с использованием генератора случайных чисел с фиксированным seed-ом (так что каждый раз поле получается одним и тем же). После этого запускается цикл из тысячи итераций, и в конце замеряется время (в секундах), а также проверяется конечное состояние поля (количество выживших клеток и хеш-код) для дополнительной проверки корректности работы алгоритма:
RunPerformanceTest
public abstract class LifeJourney < public void GenerateRandomField(int seed, double threshold) < Random rand = new Random(seed); for (int i = 1; i < WIDTH - 1; i++) for (int j = 1; j < HEIGHT - 1; j++) < Set(i, j, rand.NextDouble() < threshold); >> public void RunPerformanceTest(int steps) < GenerateRandomField(12345, 0.5); Stopwatch timer = new Stopwatch(); timer.Start(); Run(steps); double elapsedSeconds = timer.Elapsed.TotalSeconds; Console.WriteLine($"Performance: <(steps / elapsedSeconds):0.000>steps/sec"); > . // other methods > class Program < static void Main(string[] args) < int steps = 1000; new SimpleLife().RunPerformanceTest(steps); . >>
1. Наивная реализация
Начнем с самой простой реализации: поле представлено массивом boolean, хранящим информацию о живых клетках; каждая итерация выполняется в два прохода:
- для каждой клетки считаем количество ее соседей и записываем будущее состоянее клетки в отдельный массив temp;
- копируем массив temp в исходный массив.
SimpleLife
public class SimpleLife : LifeJourney < bool[,] field = new bool[WIDTH, HEIGHT]; bool[,] temp = new bool[WIDTH, HEIGHT]; public override bool Get(int i, int j) =>field[i, j]; public override void Set(int i, int j, bool value) => field[i, j] = value; public override void Step() < for (int i = 1; i < WIDTH - 1; i++) < for (int j = 1; j < HEIGHT - 1; j++) < // первый проход: вычисляем будущее состоянее bool isAlive = field[i, j]; int numNeigbours = 0; if (field[i - 1, j - 1]) numNeigbours++; if (field[i - 1, j]) numNeigbours++; if (field[i - 1, j + 1]) numNeigbours++; if (field[i, j - 1]) numNeigbours++; if (field[i, j + 1]) numNeigbours++; if (field[i + 1, j - 1]) numNeigbours++; if (field[i + 1, j]) numNeigbours++; if (field[i + 1, j + 1]) numNeigbours++; bool keepAlive = isAlive && (numNeigbours == 2 || numNeigbours == 3); bool makeNewLive = !isAlive && numNeigbours == 3; temp[i, j] = keepAlive | makeNewLive; >> for (int i = 1; i < WIDTH - 1; i++) for (int j = 1; j < HEIGHT - 1; j++) // второй проход: копируем вычисленное состояние в текущее field[i, j] = temp[i, j]; >> > >
Алгоритм: SimpleLife Время работы: 40 секунд Скорость работы: 25 шагов в секунду
2. Добавляем байты
В предыдущем алгоритме для каждой клетки выполняется 8 операций сравнения. Попробуем уменьшить их число:
— Вместо двумерного массива boolean создадим одномерный массив байт, в котором живая клетка представлена значением 1, а мертвая — 0.
— Вместо восьми проверок будем суммировать байты соседей текущей клетки, тогда их сумма и будет равна числу живых соседей.
— Во временный массив будем писать сумму клеток, отложив проверку на второй проход:
LifeBytes
public class LifeBytes : LifeJourney < byte[] field = new byte[WIDTH * HEIGHT]; byte[] temp = new byte[WIDTH * HEIGHT]; public override bool Get(int i, int j) =>field[j * WIDTH + i] == 1; public override void Set(int i, int j, bool value) => field[j * WIDTH + i] = (byte)(value ? 1 : 0); public override void Step() < for (int i = 1; i < WIDTH - 1; i++) for (int j = 1; j < HEIGHT - 1; j++) < // считаем число соседей для текущей клетки и кладем в temp[pos] int pos = j * WIDTH + i; temp[pos] = (byte)( field[pos - WIDTH - 1] + field[pos - WIDTH] + field[pos - WIDTH + 1] + field[pos - 1] + field[pos + 1] + field[pos + WIDTH - 1] + field[pos + WIDTH] + field[pos + WIDTH + 1]); >for (int i = 1; i < WIDTH; i++) for (int j = 1; j < HEIGHT; j++) < // обновляем текущее состояние // по числу соседей и прошлому состоянию клетки int pos = j * WIDTH + i; bool keepAlive = field[pos] == 1 && (temp[pos] == 2 || temp[pos] == 3); bool makeNewLife = field[pos] == 0 && temp[pos] == 3; field[pos] = (byte)(makeNewLife | keepAlive ? 1 : 0); >> >
Алгоритм: LifeBytes Время работы: 25 секунд Скорость работы: 40 шагов в секунду Ускорение от предыдущей версии: 1.6 Ускорение от первой версии: 1.6
3. Добавляем восьмибайтные слова
Заметим, что при первом проходе для всех байт выполняются одни и те же восемь сложений, что
наводит на мысль вместо обработки одного байта сразу обрабатывать 8 байтов, так как для многих инструкций, работающих с байтом, на современных процессорах есть аналогичные инструкции, работающие с двух-, четырех- и восьмибайтными словами. В нашем случае сложение восьмибайитных слов будет давать такой же результат, что и восемь сложений соседних байт подряд:

Заметим, что это не всегда верно, так как если при арифметических операциях с байтами происходит переполнение, то аналогичные операции с длинными словами будут давать неправильный результат. Однако нам повезло, и максимальное значение, которое мы можем получить при сложении в байте, равно восьми, и переполнение у нас случиться не может.
Чтобы заменить операции над байтами операциями над восьмибайтными словами, нам надо воспользоваться доступной в c# арифметикой указателей:
— пометить класс как unsafe;
— получить указатели на оба массива;
— преобразовывать указатель на байт в указатель на ulong
вот так
fixed (byte* fieldPtr = field, tempPtr = temp) < for (int i = WIDTH + 1; i < WIDTH * HEIGHT - WIDTH - 1; i += 8) < ulong* ptr = (ulong*)(tempPtr + i); *ptr += *(ulong*)(fieldPtr + i - WIDTH - 1); *ptr += *(ulong*)(fieldPtr + i - WIDTH); *ptr += *(ulong*)(fieldPtr + i - WIDTH + 1); *ptr += *(ulong*)(fieldPtr + i - 1); *ptr += *(ulong*)(fieldPtr + i + 1); *ptr += *(ulong*)(fieldPtr + i + WIDTH - 1); *ptr += *(ulong*)(fieldPtr + i + WIDTH); *ptr += *(ulong*)(fieldPtr + i + WIDTH + 1); >. >
Меряем производительность, и…
Алгоритм: LongLife Время работы: 10 секунд Скорость работы: 100 шагов в секунду Ускорение от предыдущей версии: 2.5 Ускорение от первой версии: 4
4. Добавляем поиск в таблице
Мы неплохо оптимизировали первый проход, однако во втором проходе на каждый байт выполняются несколько проверок, от чего мы хотим избавиться. Стандартная оптимизация в таких случаях — lookup table, когда результат для всех комбинаций входных данных вычисляется заранее и кладется в таблицу. Наши входные данные — текущее состояние клетки (один байт в оригинальном массиве) и количество соседей (один байт во временном массиве). Мы могли бы вычислить таблицу для всех комбинаций этих байт, что нам даст размер таблицы 16 килобайт, однако мы можем сократить размер таблицы, заодно упростив код. Идея состоит в том, что количество соседей от 0 до 8 не занимает целый байт, а умещается в младшие три бита (на самом деле, в четыре, но 8 соседей и 0 соседей дают одинаковый эффект, поэтому мы игнорируем четвертый бит в количестве соседей). Поэтому мы закодируем состояние текущей клетки в четвертом бите этого же байта, и наша таблица будет длиной 16 байт, из которых только три значения равны единице. Значения, равные единице, соответствуют индексам, кодирующим мертвую клетку с тремя соседами или живую клетку с двумя или тремя соседями:

Сам код получается не сильно сложнее
public unsafe class LifeIsLookingUp : LifeJourney < static byte[] alivePerNeighbours = new byte[256]; byte[] field = new byte[WIDTH * HEIGHT]; byte[] temp = new byte[WIDTH * HEIGHT]; public LifeIsLookingUp() < alivePerNeighbours[3] = 1; alivePerNeighbours[8 + 2] = 1; alivePerNeighbours[8 + 3] = 1; >. public override void Step() < fixed (byte* fieldPtr = field, tempPtr = temp) < . // второй прогон использует таблицу! for (int i = WIDTH; i < WIDTH * HEIGHT - WIDTH; i++) < byte neighbours = (byte)((tempPtr[i] & 7) | (fieldPtr[i] . > >
В итоге получаем ускорение почти в два раза:
Алгоритм: LifeIsLookingUp Время работы: 5.5 секунд Скорость работы: 180 шагов в секунду Ускорение от предыдущей версии: 1.8 Ускорение от первой версии: 7.2
5. Добавляем битовую магию
На этот раз забудем предыдущую оптимизацию и заново оптимизируем второй шаг, чтобы не только избавиться от условных выражений, но, как и в первом шаге, вычислять по восемь клеток за раз. Нам надо, фактически, придумать битовую функцию, которая будет получать те же самые результаты, что и lookup table из предыдущего шага. Те, кто изучал булевую алгебру, знают, что для любой таблицы истинности (а наша lookup table именно ей и является) можно написать соответствующую булеву функцию, хотя она и может получиться сложной. Однако существует метод диаграммы Карно, позволяющий из таблицы истинности получить сильно оптимизированную булеву функцию простым и наглядным способом. Этот метод отлично применим и к нашей таблице; однако, учитывая, что в ней всего 16 входных значений, при некотором везении опыте можно подобрать нужную функцию перебором.
Опустим промежуточные выкладки и приведем:
получившийся код
for (int i = WIDTH; i < WIDTH * HEIGHT - WIDTH; i ++) < byte neighbours = tempPtr[i]; byte alive = fieldPtr[i]; neighbours &= (byte)0b00000111; byte aliveAndNeighbours = ((neighbours & ~(byte)0b00000001) >> 1) | (alive > 2); aliveAndNeighbours &= (aliveAndNeighbours >> 1); aliveAndNeighbours &= (byte)0b00000001; ulong makeNewLife = neighbours | (alive > 2); makeNewLife &= (makeNewLife >> 1); makeNewLife &= (byte)0b00000001; fieldPtr[i] = aliveAndNeighbours | makeNewLife; >
В данном виде этот код не особо лучше поиска по таблице, поскольку делает слишком много операций на байт. Однако он позволяет перейти от побайтовых вычислений к обработке 8 байтов за раз:
Аналогичный код для ulong вместо байт
for (int i = WIDTH; i < WIDTH * HEIGHT - WIDTH; i += 8) < ulong neighbours = *(ulong*)(tempPtr + i); ulong alive = *(ulong*)(fieldPtr + i); neighbours &= 0b00000111_00000111_00000111_00000111_00000111_00000111_00000111_00000111ul; ulong aliveAndNeighbours = ((neighbours & ~0b00000001_00000001_00000001_00000001_00000001_00000001_00000001_00000001ul) >> 1) | (alive > 2); aliveAndNeighbours &= (aliveAndNeighbours >> 1); aliveAndNeighbours &= 0b00000001_00000001_00000001_00000001_00000001_00000001_00000001_00000001ul; ulong makeNewLife = neighbours | (alive > 2); makeNewLife &= (makeNewLife >> 1); makeNewLife &= 0b00000001_00000001_00000001_00000001_00000001_00000001_00000001_00000001ul; *(ulong*)(fieldPtr + i) = aliveAndNeighbours | makeNewLife; >
Код стал совершенно непонятным, однако работает почти в два раза быстрее предыдущей версии:
Алгоритм: LifeInBits Время работы: 3.3 секунды Скорость работы: 300 шагов в секунду Ускорение от предыдущей версии: 1.7 Ускорение от первой версии: 12
6. Храним по две клетки на байт
Последняя оптимизация такого типа логично вытекает из предыдущих: до сих пор мы хранили по одной клетке на байт, обрабатывая по восемь байтов за один раз, но во всех вычислениях мы на самом деле оперировали только четырьмя младшими битами в байте, так как старшие четыре бита всегда были нули. Теперь мы будем хранить по две клетки на один байт: одну в младших четырех битах, другую — в старших. Временный массив, хранящий число соседей, также будет хранить количество соседей независимо в младших и в старших четырех битах. Выгода в том, что мы все равно будем обрабатывать по восемь байт за раз, но в этот раз в них будет не восемь, а уже шестнадцать клеток! Потенциально это может привести к более чем двукратному ускорению, так как, кроме уменьшения в два раза количества операций, мы также уменьшаем в два раза размер используемой памяти, что позволит лучше утилизировать кеш процессора.
В самом алгоритме при втором прогоне меняются только константы и границы итерирования, но при первом прогоне из-за упаковки по две клетки в байт приходится приходится применять логические сдвиги на 4 и 60 бит влево и вправо, что делает код более запутанным:
Две клетки в байте
public override void Step() < fixed (byte* fieldPtr = field, tempPtr = temp) < // прежде всего обнуляем временный массив for (int i = 0; i < temp.Length; i += 8) *(ulong*)(tempPtr + i) = 0; // теперь вместо сдвига указателей применяются арифметические сдвиги for (int i = WIDTH; i < WIDTH * HEIGHT / 2; i += 8) < ulong* ptr = (ulong*)(tempPtr + i); ulong src1 = *(ulong*)(fieldPtr + i - WIDTH / 2); ulong src2 = *(ulong*)(fieldPtr + i); ulong src3 = *(ulong*)(fieldPtr + i + WIDTH / 2); ulong src4 = *(ulong*)(fieldPtr + i - WIDTH / 2 - 8); ulong src5 = *(ulong*)(fieldPtr + i - 8); ulong src6 = *(ulong*)(fieldPtr + i + WIDTH / 2 - 8); ulong src7 = *(ulong*)(fieldPtr + i - WIDTH / 2 + 8); ulong src8 = *(ulong*)(fieldPtr + i + 8); ulong src9 = *(ulong*)(fieldPtr + i + WIDTH / 2 + 8); *ptr += (src1 > 4); *ptr += (src2 > 4); *ptr += (src3 > 4); *ptr += (src4 >> 60) + (src5 >> 60) + (src6 >> 60); *ptr += (src7 // здесь поменялись только константы for (int i = WIDTH; i < WIDTH * HEIGHT / 2; i += 8) < ulong neighbours = *(ulong*)(tempPtr + i); ulong alive = *(ulong*)(fieldPtr + i); neighbours &= 0b0111_0111_0111_0111_0111_0111_0111_0111_0111_0111_0111_0111_0111_0111_0111_0111ul; ulong keepAlive = ((neighbours & ~0b0001_0001_0001_0001_0001_0001_0001_0001_0001_0001_0001_0001_0001_0001_0001_0001ul) >> 1) | (alive > 2); keepAlive &= (keepAlive >> 1); keepAlive &= 0b0001_0001_0001_0001_0001_0001_0001_0001_0001_0001_0001_0001_0001_0001_0001_0001ul; ulong makeNewLife = neighbours | (alive > 2); makeNewLife &= (makeNewLife >> 1); makeNewLife &= 0b0001_0001_0001_0001_0001_0001_0001_0001_0001_0001_0001_0001_0001_0001_0001_0001ul; *(ulong*)(fieldPtr + i) = keepAlive | makeNewLife; > > // В конце "убиваем" клетки на левой и правой границе, так как // предыдущие манипуляции могли их поменять for (int j = 0; j < HEIGHT; j++) < Set(0, j, false); Set(WIDTH - 1, j, false); >>
А вот реализация методов get и set усложняется. К счастью, эти методы практически не влияют на производительность, так что можно не слишком беспокоиться по этому поводу. Также обратите внимание на технический трюк: для корректной работы алгоритма пришлось добавить по одной пустой строчке в начало и в конец массива, чтобы избежать проверок на выход за границы массива.
get и set
public unsafe class LifeIsABitMagic : LifeJourney < byte[] field = new byte[WIDTH + WIDTH * HEIGHT / 2]; byte[] temp = new byte[WIDTH + WIDTH * HEIGHT / 2]; public override bool Get(int i, int j) < int pos = WIDTH / 2 + j * (WIDTH / 2) + (i / 2); if (i % 2 == 1) return (field[pos] & 0x10) == 0x10; else return (field[pos] & 1) == 1; >public override void Set(int i, int j, bool val) < int pos = WIDTH / 2 + j * (WIDTH / 2) + (i / 2); if (i % 2 == 1) < if (val) field[pos] |= 0x10; else field[pos] &= (0xFF & ~0x10); >else < if (val) field[pos] |= 0x1; else field[pos] &= (0xFF & ~0x1); >> . >
Алгоритм: LifeIsABitMagic Время работы: 1.3 секунды Скорость работы: 770 шагов в секунду Ускорение от предыдущей версии: 2.6 Ускорение от первой версии: 31
7. Используем SIMD-инструкции процессора
Каждая последующая оптимизация дается нам все большим трудом, так что в этот раз мы пойдем другим путем и используем, пожалуй, самый мощный из доступных на сегодняшний момент способов оптимизации: SIMD-инструкции, а точнее, набор инструкций AVX2, доступный на большинстве современных процессоров Intel и AMD, и позволяющий производить операции над 32 байтами за раз! Этот способ не всегда применим, однако наш случай (работа с байтами и отсутствие ветвлений) идеально ложится на идеологию SIMD, поэтому мы можем ожидать значительного улучшения производительности. Еще несколько лет назад это было доступно только в языках низкого уровня. Нас бы это не остановило: ради оптимизации мы бы скомпилировали библиотеку на C++ и использовали из C# через механизм P/Invoke. Однако буквально год назад в .NET Core появилась встроенная поддержка этого набора инструкций, об этом была даже статья на Хабре. Так что теперь мы можем использовать эту «тяжелую артиллерию» напрямую в C#! За основу возьмем предпоследнюю версию алгоритма LifeInBits, хранящую одну клетку на байт (по причинам, выходящим за рамки этой статьи), и заменим ручную манипуляцию байтами, битами и восьмибайтными словами на соответствующие AVX2-инструкции. При этом, как ни странно, код даже стал проще и понятней!
простой и понятный код
public AdvancedLifeExtensions() < // проверим, что мы не на Pentium III if (!Avx2.IsSupported) throw new NotImplementedException("Not in this life. "); >public override void Step() < fixed (byte* fieldPtr = field, tempPtr = temp) < Vector256zero = Vector256.Zero; // тут 32 нуля for (int i = 0; i < WIDTH * HEIGHT; i += 32) < Avx.Store(tempPtr + i, zero); >for (int i = WIDTH; i < WIDTH * HEIGHT - WIDTH; i += 32) < Vector256src1 = Avx.LoadVector256(fieldPtr + i - WIDTH - 1); Vector256 src2 = Avx.LoadVector256(fieldPtr + i - WIDTH); Vector256 sum1 = Avx2.Add(src1, src2); Vector256 src3 = Avx.LoadVector256(fieldPtr + i - WIDTH + 1); Vector256 src4 = Avx.LoadVector256(fieldPtr + i - 1); Vector256 sum2 = Avx2.Add(src3, src4); Vector256 src5 = Avx.LoadVector256(fieldPtr + i + 1); Vector256 src6 = Avx.LoadVector256(fieldPtr + i + WIDTH - 1); Vector256 sum3 = Avx2.Add(src5, src6); Vector256 src7 = Avx.LoadVector256(fieldPtr + i + WIDTH); Vector256 src8 = Avx.LoadVector256(fieldPtr + i + WIDTH + 1); Vector256 sum4 = Avx2.Add(src7, src8); Vector256 sum5 = Avx2.Add(sum1, sum2); Vector256 sum6 = Avx2.Add(sum3, sum4); Vector256 sum = Avx2.Add(sum5, sum6); Avx.Store(tempPtr + i, sum); > for (int i = WIDTH; i < WIDTH * HEIGHT - WIDTH; i += 32) < Vector256neighbours = Avx.LoadVector256(tempPtr + i); Vector256 alive = Avx.LoadVector256(fieldPtr + i); // в v_1 тридцать два байта единичек Vector256 isAlive = Avx2.CompareEqual(alive, v_1); // в v_2 тридцать два байта двоек Vector256 isTwoNeighbours = Avx2.CompareEqual(neighbours, v_2); // в v_3 тридцать два байта троек Vector256 isThreeNeighbours = Avx2.CompareEqual(neighbours, v_3); Vector256 isTwoOrThreeNeighbours = Avx2.Or(isTwoNeighbours, isThreeNeighbours); Vector256 aliveAndNeighbours = Avx2.And(isAlive, isTwoOrThreeNeighbours); Vector256 shouldBeAlive = Avx2.Or(aliveAndNeighbours, isThreeNeighbours); shouldBeAlive = Avx2.And(shouldBeAlive, v_1); Avx2.Store(fieldPtr + i, shouldBeAlive); > > for (int j = 1; j < HEIGHT - 1; j++) < field[j * WIDTH] = 0; field[j * WIDTH + WIDTH - 1] = 0; >>
Этот подход дает нам самую большую оптимизацию (в сто раз по сравнению с изначальным алгоритмом, так что название статьи — правда)!
Алгоритм: AdvancedLifeExtensions Время работы: 0.4 секунды Скорость работы: 2500 шагов в секунду Ускорение от предыдущей версии: 3.2 Ускорение от первой версии: 100
Это все?
Для полноты картины надо упомянуть еще две оптимизации, которых мы не коснулись:
- Перенос вычислений на видеокарту — поскольку алгоритм хорошо ложится на логику SIMD, можно ожидать ускорения еще на порядок. Именно на нем исследователи игры «Жизнь» (да, есть и такие!) ищут новые интересные фигуры методом перебора. К сожалению, код для обработки данных на видеокарте пока еще невозможно написать на .NET.
- Сложность всех рассмотренных алгоритмов линейна по времени и площади поля. Существует алгоритм Hashlife, в некоторых ситуациях имеющий логарифмическую сложность по времени и площади! Именно этот алгоритм используется для симуляции огромных систем на миллионы и миллиарды итераций. Тем не менее, существуют плохие начальные условия, при которых этот алгоритм будет значительно медленнее классических, как минимум, на начальном этапе.
JavaScript
Наконец-то мы дошли до самого интересного: можно ли эти оптимизации перенести в JavaScript?
К сожалению, SIMD-версию использовать невозможно, поскольку AVX2 туда еще не завезли. Однако, как ни удивительно, предпоследнюю версию с битовой магией и упаковкой по две клетки в один байт вполне можно использовать, правда не восьмибайтный вариант, а только четырехбайтный.
Трюк здесь в том, что в JavaScript есть специальные классы, позволяющие работать с массивом байт одновременно и как с байтами, и как с числами: UInt8Array и UInt32Array. При этом можно перенести код практически дословно (с поправкой на обработку четырех байт вместо восьми) и надеяться, что JIT-компилятор яваскриптового движка сможет обработать нашу битовую арифметику без конвертации в числа с плавающей точкой.
Код на JavaScript
class LifeField < constructor() < this.field = new ArrayBuffer(LifeField.WIDTH + LifeField.WIDTH * LifeField.HEIGHT / 2); this.temp = new ArrayBuffer(LifeField.WIDTH + LifeField.WIDTH * LifeField.HEIGHT / 2); this.fieldBytes = new Uint8Array(this.field); this.tempBytes = new Uint8Array(this.temp); this.fieldInts = new Uint32Array(this.field); this.tempInts = new Uint32Array(this.temp); >get(x, y) < const pos = LifeField.WIDTH / 2 + y * (LifeField.WIDTH / 2) + (x >> 1); if ((x & 1) == 1) return (this.fieldBytes[pos] & 0x10) == 0x10; else return (this.fieldBytes[pos] & 1) == 1; > set(x, y, val) < . >//аналогично step() < for(var i = 0; i < this.tempInts.length; i++) this.tempInts[i] = 0; for (var j = LifeField.WIDTH; j < LifeField.WIDTH * LifeField.HEIGHT / 2; j += 4) < const i = j / 4; const src1 = this.fieldInts[i - LifeField.WIDTH / 8]; const src2 = this.fieldInts[i]; const src3 = this.fieldInts[i + LifeField.WIDTH / 8]; const src4 = this.fieldInts[i - LifeField.WIDTH / 8 - 1]; const src5 = this.fieldInts[i - 1]; const src6 = this.fieldInts[i + LifeField.WIDTH / 8 - 1]; const src7 = this.fieldInts[i - LifeField.WIDTH / 8 + 1]; const src8 = this.fieldInts[i + 1]; const src9 = this.fieldInts[i + LifeField.WIDTH / 8 + 1]; this.tempInts[i] += (src1 > 4); this.tempInts[i] += (src2 > 4); this.tempInts[i] += (src3 > 4); this.tempInts[i] += (src4 >> 28) + (src5 >> 28) + (src6 >> 28); this.tempInts[i] += (src7 for (var j = LifeField.WIDTH; j < LifeField.WIDTH * LifeField.HEIGHT / 2; j += 4) < const i = j / 4; const neighbours = this.tempInts[i] & 0x77777777; const alive = this.fieldInts[i]; var keepAlive = ((neighbours & ~0x11111111) >> 1) | (alive > 2); keepAlive &= (keepAlive >> 1); keepAlive &= 0x11111111; var makeNewLife = neighbours | (alive > 2); makeNewLife &= (makeNewLife >> 1); makeNewLife &= 0x11111111; this.fieldInts[i] = keepAlive | makeNewLife; > for(var y = 1; y < LifeField.WIDTH - 1; y++) < this.set(0, y, false); this.set(LifeField.WIDTH - 1, y, false); >> . > LifeField.WIDTH = 1920; LifeField.HEIGHT = 1080;
Алгоритм: LifeIsABitMagic (JavaScript 32 bit), вне конкурса Время работы: 5 секунд Скорость работы: 200 шагов в секунду Ускорение от предыдущей версии: - Ускорение от первой версии: 8
Полный код в файле lifefield.js
В заключение сводная таблица со всеми алгоритмами:

Онлайн-игра
Напоследок самое интересное: на основе этого алгоритма была написана онлайн-игра, стабильно быстро работающая на поле размера 1920×1080 (Full HD) при любой начальной конфигурации:
- игра жизнь
- оптимизация
- битовая магия
ИСПОЛЬЗОВАНИЕ АВИАСИМУЛЯТОРОВ В УЧЕБНОМ ПРОЦЕССЕ АВИАЦИОННОГО ВУЗА Текст научной статьи по специальности «Науки об образовании»
Аннотация научной статьи по наукам об образовании, автор научной работы — Науменко А.А., Князев А.С.
В данной статье рассматривается актуальность использования и направления развития средств обучения в учебном процессе авиационного вуза, обоснованы преимущества цифровых технологий, раскрыта сущность и роль авиасимуляторов в освоении профессиональных компетенций будущих летчиков, дан анализ авиасимуляторов , используемых в игровых программах и подготовке летного состава. Раскрыты потенциальные возможности использования авиасимуляторов на различных этапах обучения. Симуляторы, используемые совместно с технологией виртуальной реальности , позволяют более детально рассмотреть объекты и процессы, которые невозможно или очень сложно проследить в реальном мире. В виртуальной реальности обучающиеся могут в увлекательной и понятной игровой форме, более глубоко освоить теоретический материал, детально рассмотреть траекторию движения, подробно изучить отклонения каждого органа управления на разных этапах полета, а также увидеть, как происходит обдув планера, крыла. Все это открывает новые возможности для использования этого материала в учебном процессе по различным дисциплинам, а главное, позволяет без каких-либо рисков для обучающихся проводить обучение летного состава, оттачивать навыки управления новой техникой, экспериментировать при выполнении различных элементов пилотажа. Независимо от сложности сценария обучающийся не нанесет вреда себе и авиационной технике. Использование авиасимулятора позволяет не только ускорить процесс формирования профессиональных умений, но и повысить мотивацию в изучении теории и практики летного дела, индивидуализировать процесс обучения, повысить уровень самоидентификации будущих летчиков, обеспечить объективность контроля образовательного процесса и качество обучения.
i Надоели баннеры? Вы всегда можете отключить рекламу.
Похожие темы научных работ по наукам об образовании , автор научной работы — Науменко А.А., Князев А.С.
ИСПОЛЬЗОВАНИЕ АВИАСИМУЛЯТОРА X-PLANE И СРЕДЫ МОДЕЛИРОВАНИЯ SIMINTECH В УЧЕБНОМ ПРОЦЕССЕ ПРИ ПРОВЕДЕНИИ ПРАКТИЧЕСКОГО ЗАНЯТИЯ «ОБРАБОТКА ПОЛЕТНОЙ ИНФОРМАЦИИ»
ТЕХНОЛОГИИ ВИРТУАЛЬНОЙ РЕАЛЬНОСТИ В ПРОФЕССИОНАЛЬНОМ СТАНОВЛЕНИИ И САМОИДЕНТИФИКАЦИИ БУДУЩИХ ЛЕТЧИКОВ
Тренажерная подготовка как объект педагогического анализа в рамках авиационной педагогики
Об особенностях использования тренажеров при реализации образовательных программ (на примере подготовки специалистов для транспорта)
ЭФФЕКТИВНОСТЬ ПОДГОТОВКИ ИНТЕРАКТИВНЫЙ ПРОЦЕДУРНЫЙ ТРЕНАЖЁР ПЕРВОНАЧАЛЬНОЙ ПОДГОТОВКИ АВИАЦИОННОГО ПЕРСОНАЛА С ИСПОЛЬЗОВАНИЕМ ВИРТУАЛЬНОЙ РЕАЛЬНОСТИ
i Не можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.
THE USE OF FLIGHT SIMULATORS IN THE EDUCATIONAL PROCESS OF AN AVIATION UNIVERSITY
The article discusses the relevance and directions of the development of training means in the educational process of an aviation university, substantiates the advantages of digital technologies, reveals the essence and role of flight simulators in the development of professional competencies of future pilots, analyzes the models of flight simulators used in game programs and training of flight personnel. The potential possibilities of using flight simulators at various stages of training are revealed. Virtual reality-based simulators allow a detailed examination of objects and processes that are impossible or very difficult to trace in the real world. In virtual reality, students can more deeply master the theoretical material in an exciting and understandable game form, consider in detail the trajectory of movement, study in detail the deviations of each control at different stages of the flight as well as see how the airframe and wing are blown. All this opens up new opportunities for using this material in the educational process of various disciplines and, most importantly, allows without any risks for students to train flight personnel, hone the skills of managing new equipment, experiment while performing various elements of aerobatics. Regardless of the complexity of the scenario the learner will not harm himself / herself or others. The use of a flight simulator allows not only accelerating the process of the formation of professional skills but also allows increasing motivation in the study of the theory and practice of flight business, individualizing the learning process, improving the level of self-identification of future pilots, ensuring the objectivity of control of the educational process and the quality of training.
Текст научной работы на тему «ИСПОЛЬЗОВАНИЕ АВИАСИМУЛЯТОРОВ В УЧЕБНОМ ПРОЦЕССЕ АВИАЦИОННОГО ВУЗА»
ИСПОЛЬЗОВАНИЕ АВИАСИМУЛЯТОРОВ В УЧЕБНОМ ПРОЦЕССЕ АВИАЦИОННОГО ВУЗА
А.А. Науменко, А.С. Князев
THE USE OF FLIGHT SIMULATORS IN THE EDUCATIONAL PROCESS OF AN AVIATION UNIVERSITY
A.A. Naumenko, A.S. Knyazev
Аннотация. В данной статье рассматривается актуальность использования и направления развития средств обучения в учебном процессе авиационного вуза, обоснованы преимущества цифровых технологий, раскрыта сущность и роль авиа-симуляторов в освоении профессиональных компетенций будущих летчиков, дан анализ авиасимуляторов, используемых в игровых программах и подготовке летного состава. Раскрыты потенциальные возможности использования авиасимуляторов на различных этапах обучения.
Симуляторы, используемые совместно с технологией виртуальной реальности, позволяют более детально рассмотреть объекты и процессы, которые невозможно или очень сложно проследить в реальном мире. В виртуальной реальности обучающиеся могут в увлекательной и понятной игровой форме, более глубоко освоить теоретический материал, детально рассмотреть траекторию движения, подробно изучить отклонения каждого органа управления на разных этапах полета, а также увидеть, как происходит обдув планера, крыла. Все это открывает новые возможности для использования этого материала в учебном процессе по различным дисциплинам, а главное, позволяет без каких-либо рисков для обучающихся проводить обучение летного состава, оттачивать навыки управления новой техникой, экспериментировать при выполнении различных элементов пилотажа. Независимо от сложности сценария обучающийся не нанесет вреда себе и авиационной технике.
Использование авиасимулятора позволяет не только ускорить процесс формирования профессиональных умений, но и повысить мотивацию в изучении теории и практики летного дела, индивидуализировать процесс обучения, повысить уровень самоидентификации будущих летчиков, обеспечить объективность контроля образовательного процесса и качество обучения.
Abstract. The article discusses the relevance and directions of the development of training means in the educational process of an aviation university, substantiates the advantages of digital technologies, reveals the essence and role of flight simulators in the development of professional competencies of future pilots, analyzes the models of flight simulators used in game programs and training of flight personnel. The potential possibilities of using flight simulators at various stages of training are revealed.
Virtual reality-based simulators allow a detailed examination of objects and processes that are impossible or very difficult to trace in the real world. In virtual reality, students can more deeply master the theoretical material in an exciting and understandable game form, consider in detail the trajectory of movement, study in detail the deviations of each control at different stages of the flight as well as see how the airframe and wing are blown. All this opens up new opportunities for using this material in the educational process
of various disciplines and, most importantly, allows without any risks for students to train flight personnel, hone the skills of managing new equipment, experiment while performing various elements of aerobatics. Regardless of the complexity of the scenario the learner will not harm himself / herself or others.
The use of a flight simulator allows not only accelerating the process of the formation of professional skills but also allows increasing motivation in the study of the theory and practice of flight business, individualizing the learning process, improving the level of self-identification of future pilots, ensuring the objectivity of control of the educational process and the quality of training.
Ключевые слова: средства обучения, авиасимулятор, виртуальная реальность, предполетная подготовка, профессиональная самоидентификация, качество подготовки.
Keywords: training facilities, flight simulator, virtual reality, pre-flight training, professional self-identification, quality of training.
Для освоения учебной программы обучающимся в авиационных вузах необходимо понимание принципов работы агрегатов и систем воздушного судна, важен постоянный контакт с авиационной техникой — физический или визуальный. Особенно важно это в процессе ознакомления курсантов с алгоритмами и логикой работы комплексных систем управления, пилотажно-навигационных комплексов и других сложных бортовых систем и комплексов.
Как показывает практика, в силу сложности современной авиационной техники и протекающих в ней процессов, изложение учебного материала обычно сопровождается использованием различных средств обучения. Наличие презентаций, плакатов или слайдов со схемами, графиками и трехмерными моделями изучаемых систем и механизмов способствует повышению качества усвоения учебного материала. В то же время наличие традиционных средств наглядности не всегда позволяет в полной мере сформировать у обучающихся восприятие и понимание изучаемого материала.
Более весомую роль в преподавании общетехнических и специальных дисциплин в процессе подготовки летного состава играют динамические модели и демонстрационные стенды, позволяющие увидеть в работе изучаемые машины и механизмы, понять принцип действия описываемых агрегатов или систем. Важно, что подобное оборудование обеспечивает не только наглядную демонстрацию работы авиационной техники, но и отработку умений управления ею. Однако разработка, применение и обслуживание демонстрационных стендов и моделей затруднено в силу возникающих технических проблем, связанных с необходимостью обеспечения стендового оборудования специализированным питанием (электрическим, гидравлическим), связи с другими системами или агрегатами, возможностью наглядной демонстрации протекающих в системе процессов. Кроме того, для создания, размещения и использования действующих учебных стендов требуется значительная по площади территория, а также наличие специально оборудованных помещений.
С появлением компьютерных средств для решения указанной проблемы используют различные мультимедийные средства визуализации полета и работы
отдельных систем и агрегатов воздушного судна. На сегодняшний день практически каждая учебная аудитория вуза оборудована интерактивной доской и проектором, подключенными к компьютеру.
Повышению качества образовательного процесса, обеспечению более глубокого понимания сложных процессов способствует использование на занятиях графических редакторов, видеопрезентаций и видеороликов. На сегодняшний день использование видео материалов является распространенной практикой, не требующей специальной подготовки и изучения каких-либо программ. Это доступное и распространенное средство, позволяющее повысить наглядность излагаемого материала. Применение озвученных видео материалов в учебном процессе не требует пояснений [1].
В настоящее время в практике подготовки летного состава находит распространение использование анимации, позволяющей делать различные подвижные элементы с перемещением, вращением, заменой одного элемента другим, миганием, звуковым сопровождением и т. д. Для разработки анимаций используются программы Power Point и Adobe Flash Player (в военном вузе они разрешены). Несложные манипуляции с программными инструментами этих программ позволяют создавать наглядное представление о порядке работы экипажа, об индикации в кабине, о работе систем и агрегатов и т. п., что позволяет существенно повысить наглядность излагаемого материала.
Особое место в учебном процессе авиационных вузов занимают симуля-торы. Словарь-справочник терминов нормативно-технической документации определяет симулятор как техническое устройство, работа которого основана на управлении информацией, с целью передачи оператору, пользующемуся этим устройством, знаний, а также выработки у него интеллектуальных, моторных, интеллектуально-моторных навыков [2]. Симуляторы, предназначенные для профессиональной подготовки лётчиков, называются авиационными тренажёрами. Применительно к мультимедийным средствам обучения авиационный тренажёр-симулятор, основанный на жанре видеоигр и имитирующий в той или иной степени какое-либо воздушное судно, будем обозначать термином «авиасимулятор».
На сегодняшний день использование авиасимулятора является одним из актуальных направлений повышения наглядности, изложения материала в учебном процессе авиационного вуза. Актуальность использования авиасимуляторов подкрепляется их доступностью и отсутствием необходимости в техническом обслуживании. Для эффективного применения авиасимуляторов достаточно иметь цифровые инструменты, обеспечивающие создание ситуации, обусловленной задачами учебного процесса.
Сфера применения авиасимулятора в учебных целях может быть достаточно широкой. Определенные виды авиасимуляторов могут быть использованы в качестве альтернативы реальным тренажёрам на различных этапах подготовки обучающихся. Современный уровень информационных технологий обеспечивает возможность реализации всех компонентов систем лётного
обучения и контроля знаний, в том числе. Исследование показало, что значимую роль симуляторы играют в процессе прохождения будущими летчиками различных этапов самоидентификации [3].
Для практической подготовки будущих летчиков используется целая гамма тренажеров: процедурные, специализированные и комплексные авиационные тренажёры. Существенными преимуществами использования процедурных и специализированных авиационных тренажёров перед комплексными является распараллеливание процесса предварительной практической подготовки, относительно малая стоимость и простота. Учитывая неуклонное нарастание имитирующих возможностей персональных компьютеров, установка на них и применение симуляторов в качестве процедурных и специализированных тренажеров является особенно перспективным.
Использование компьютера в качестве процедурного авиационного тренажёра (так называемые компьютерные тренажёры) позволяет применять их одновременно для теоретической и практической подготовки, при этом устраняется разрыв между ними [4; 5]. Авиасимулятор в качестве компьютерного тренажёра может быть использован для изучения кабины — размещения приборов, последовательности включения систем и оборудования, а также для отработки действий экипажа в полете. Важно то, что управление моделью воздушного судна при помощи авиасимулятора позволяет использовать не только ручное, но и автоматическое управление по заданным алгоритмам. Это позволяет создавать различные ситуации в полете, в которых внимание обучающихся будет сосредоточено на работе изучаемых систем, а не на управлении воздушным судном.
На сегодняшний день наибольшей реалистичностью обладают авиаси-муляторы Flight Gear, Microsoft Flight Simulator, Prepare 3D, Digital Combat Simulator, X-Plane [5].
Рассмотрим некоторые особенности вышеперечисленных авиасимуляторов.
В программе авиасимулятора Flight Gear достаточно точно воспроизведена физика полета и механика управления воздушного судна. Для данного авиасимулятора разработана детализированная модель Земли с описанием поверхности, местонахождения аэродромов и других объектов. Симулятор позволяет реализовать ручное и автоматическое управление моделью воздушного судна с помощью внешних программ.
Реализация полетов в симуляторе Microsoft Flight Simulator максимально приближена к реальным условиям. Упор сделан на точное приборное и техническое управление воздушного судна. Физические воздействия, поведение воздушного судна, работа систем, переговоры с диспетчером и реализация полета некоторых воздушных судов реализованы как в действительности. Могут быть заданы различные погодные условия для отработки навыков пилотирования в сложных метеоусловиях. Симулятор позволяет реализовать ручное и автоматическое управление моделью воздушного судна с помощью внешних программ.
Своеобразным развитием Microft Flight Simulator является Prepare 3D. Этот симулятор использует то же программное обеспечение, но оно доработано инженерами Lockheed Martin. Данный авиасимулятор является наиболее точным техническим вариантом симулятора. Prepare 3D (переводится как «подготовленный») — это платформа визуального моделирования, которая позволяет пользователям создавать сценарии обучения в различных областях авиации, морского и наземного транспорта. Prepare 3D позволяет пользователю окунуться в реалистичные окружающие среды и идеально подходит для коммерческого, академического, профессионального или военного обучения. Он может быть использован для быстрого создания обучающих сценариев в любой точке виртуального мира, от подводного до суборбитального пространства.
Симулятор Digital Combat Simulator отличается большой функциональностью. Симулятор предлагает максимально достоверные и реалистичные модели военных самолетов, танков, наземных транспортных средств и кораблей. Виртуальные кабины представляют собой полные лицензированные копии настоящего боевого воздушного судна, с возможностью управления не только с физическим манипулятором (джойстиком), но и кликами мышкой по виртуальной приборной доске. В симуляторе также поддерживаются все виды джойстиков, систем отслеживания движений головы Track IR, а также устройства виртуальной реальности Oculus Rift и HTC Vive.
Симулятор X-Plane не использует готовые данные о физике модели того или иного воздушного судна, вместо этого используется конечно-элементное моделирование аэродинамических свойств планера и силовых установок. Более того, графика строится по тому же принципу и жестко привязана к физике. В X-Plane нет различий между типами воздушного судна, все определяется типами конфигураций силовых установок. Данные технологии не применяются ни в одном другом авиасимуляторе. Авиасимулятор X-Plane используется для решения самых разнообразных задач, в том числе и для первоначального обучения пилотов перед началом полётов на комплексных тренажёрах. Симулятор позволяет реализовать ручное и автоматическое управление моделью воздушного судна с помощью внешних программ.
Как видно из вышеприведенных характеристик, реалистичный авиаси-мулятор может стать эффективным средством обучения на первоначальных стадиях летной подготовки. Применение «авиасимулятора-компьютерного тренажёра» уже на этапе теоретической подготовки позволяет повысить мотивацию в изучении теории, так как показывает её значимость в решении практических задач, интенсифицировать и индивидуализировать процесс обучения, повысить объективность контроля знаний и качество обучения путем внедрения интеллектуальных методик и средств обучения [6].
Незаменимы авиасимуляторы и в плане обеспечения наглядности учебного материала. Модели воздушных судов (как самолетов, так и вертолетов, БПЛА) в авиасимуляторах, как правило, уже содержат все необходимые
элементы: планер, двигатели, кабина, приборные панели, индикаторы, органы управления и т. д., — необходимые для демонстрации при проведении различных видов занятий. Тем самым, они могут не только заменить стенды, плакаты и другие дидактические материалы, но и могут позволить обучающимся мысленно представить себя в роли наблюдателя в виртуальной кабине. Причём, при использовании монитора или проектора сразу все обучающиеся могут делать это одновременно, так как каждый из них видит трёхмерную кабину. В отличие от видеофайлов, в такой кабине можно свободно ориентироваться, направлять взгляд куда угодно (по желанию преподавателя), включать нужные переключатели, одновременно наблюдая за индикацией и изменением положения отдельных агрегатов. То есть авиасимуляторы могут позволить совместить наглядность отображения излагаемого материала и придать ощущение присутствия и личного участия в происходящем процессе, значительно активизируя внимание обучающихся и повышая их интерес к излагаемому материалу.
В последнее время в образовании набирает популярность использование виртуальной реальности, под которой понимают «созданный компьютером мир, доступ к которому можно получить с помощью иммерсивных устройств -шлемов, перчаток, наушников». Информация, предоставляемая очками виртуальной реальности, может включать изображение, звук, а также тактильные ощущения, запах и даже вкус. Таким образом, виртуальная среда полностью заменяет реальный мир, не реагируя на его изменения, при этом пользователь может воздействовать на нее, управляя положением воздушного судна, изменяя погоду, время суток, года и другие настройки симулятора [7]. Погружение в мир виртуальной реальности, отражающей мир профессии, является основанием профессиональной самоидентификации и используется на различных этапах допрофессиональной и профессиональной подготовки.
Определенный опыт создания авиасимуляторов, использующих иммер-сивные устройства, разработан в Краснодарском высшем военном авиационном училище летчиков им. А.К. Серова. Здесь разработан собственный авиаси-мулятор, позволяющий в игровой форме изучать общее оборудование кабины самолёта, расположение приборов, виртуально работать с органами управления самолета, решать проблемные ситуации в обстановке, близкой к реальности [8]. Виртуальное пространство позволяет обучающемуся не только увидеть, но и прочувствовать состояние полета, что открывает колоссальные возможности для отработки поведения в нештатных ситуациях. Немаловажно, что в этой среде можно без каких-либо рисков для жизни выполнять сложный пилотаж, оттачивать навыки управления самолетом, экспериментировать с различными режимами полета [3; 9; 10; 11; 12].
Иммерсивный подход в авиасимуляторах имеет несколько преимуществ. Во-первых, это повышение наглядности. Симуляторы, построенные на виртуальной реальности, позволяют более детально рассмотреть объекты и процессы, которые невозможно или очень сложно проследить в реальном мире. Во-вторых, сосредоточенность. В виртуальном мире на человека практически
не воздействуют внешние раздражители. Он может всецело сконцентрироваться на материале и лучше усваивать его. В-третьих, это вовлечение и безопасность. Сценарий процесса обучения можно с высокой точностью запрограммировать и контролировать, в случае ошибки воспроизвести повторно или скорректировать.
В виртуальной реальности обучающиеся могут в увлекательной и понятной игровой форме, более глубоко освоить теоретический материал, детально рассмотреть траекторию движения, подробно изучить отклонения каждого органа управления на разных этапах полета, а также увидеть, как происходит обдув планера, крыла. Все это открывает новые возможности для использования этого материала в учебном процессе по различным дисциплинам, в том числе при дистанционном обучении.
В последние годы в образовательной практике дидактические средства обучения перешли на принципиально новый уровень, позволяющий создать цифровую образовательную среду и вести обучение в игровой форме в ситуации, приближенной к реальности. Большие перспективы мы видим в использовании виртуальной реальности в предполетной подготовке будущих летчиков. Использование авиасимулятора позволяет не только ускорить процесс формирования профессиональных умений, но и позволяет повысить мотивацию в изучении теории и практики летного дела, индивидуализировать процесс обучения, повысить самоидентификацию будущих летчиков, обеспечить объективность контроля образовательного процесса и качество обучения.
В завершение хотелось бы добавить, что при наличии множества положительных моментов, виртуальная реальность никогда не заменит живое общение курсанта с техникой и в этом вопросе преподавателю важно найти золотую середину.
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ
1. Трубачев, И. В. Сущность педагогической оптимизации и её задачи в военном вузе / И. В. Трубачев, Д. В. Соловей. — Текст : непосредственный // Вестник Армавирского государственного педагогического университета. — 2020. — № 2. -С.29-36.
2. Симулятор — Словарь-справочник терминов нормативно-технической документации. — URL: https://normative_reference_dictionary.academic.ru/68610/%D1% 81 % D0%B8%D0%BC%D1 %83%D0%BB%D1 %8F%D1 %82%D0%BE%D1 %80 (дата обращения: 06.11.2021). — Текст : электронный.
3. Зеленко, Н. В. Технологии виртуальной реальности в профессиональном становлении и самоидентификации будущих летчиков / Н. В. Зеленко, А. А. Науменко.-Текст : непосредственный // Проблемы современного педагогического образования. -Ялта : РИО ГПА, 2021. — Вып. 71. — Ч. 3. — 400 с. — С. 35-37.
4. Может ли компьютер заменить самолёт во время обучения? — URL: https://flyings.guru/blog/avia-sim/ (дата обращения: 06.11.2021). — Текст : электронный.
5. Почувствуй себя пилотом: 5 реалистичных авиасимуляторов. — URL: https://news.rambler.ru/scitech/36006650-pochuvstvuy-sebya-pilotom-5-realistichnyh-avia simulyatorov (дата обращения: 06.11.2021). — Текст : электронный.
6. Князев, А. С. Совместное использование авиасимулятора X-Plane 9 и программной среды C++Builder 6 для разработки и исследования систем автоматического управления летательных аппаратов / А. С. Князев. — Текст : непосредственный // Сборник научных статей по материалам II Всероссийской научно-практической конференции «АВИАТОР». В 2 т. Т. 2. — Воронеж : ВУНЦ ВВС «ВВА». — 2015. — С. 81-85.
7. Виртуальная реальность в образовании. URL: https://hsbi.hse.ru/articles/virtu alnaya-realnost-v-obrazovanii/ (дата обращения: 06.11.2021). — Текст : электронный.
8. Эффективность подготовки / М. С. Лагкуев, И. Н. Котлов, М. А. Судаков, А. В. Шевченко. — Текст : непосредственный // Вестник военного образования. -2021. — № 1 (28). — С. 59-62.
9. Князев, А. С. Использование авиасимулятора в качестве современного средства визуализации в учебном процессе авиационного вуза / А. С. Князев. -Текст : непосредственный // Сборник материалов XXI Всероссийской заочной научно-практической конференции «Инновационные технологии в образовательном процессе». — Краснодар : КВВАУЛ. — 2020. — С. 57-62.
10. Ruiz, S Educational Simulation in practice: a teaching experience using a flight simulator / Ruiz, Sergio & Aguado, Carlos & Moreno, Romualdo. // Journal of Technology and Science Education. № 4. — 2014. — pp. 181-200. DOI: 10.3926/jotse.129.
11. Козин, Н. А. Авиационный симулятор как достойная альтернатива тренажной подготовки летного состава / Н. А. Козин, М. И. Епанчин, Д. В. Кахановский. — Текст : непосредственный // Сборник научных статей VII Международной научно-практической конференции «Научные чтения им. проф. Н.Е. Жуковского». — Краснодар : КВВАУЛ, 2016. — С. 41-45.
12. Князев, А. С. Совместное использование авиасимулятора X-Plane и среды SimInTech для исследования работы авиационных систем / А. С. Князев. — Текст : электронный // Труды МАИ. — 2021. — № 117. — URL: http://trudymai.ru/published. php?ID=156305. DOI: 10.34759/trd-2021-117-15.
1. Trubachev I. V., Solovey D. V. The essence of pedagogical optimization and its tasks in a military university. Vestnik Armavirskogo gosudarstvennogo pedagogicheskogo universiteta = Bulletin of Armavir State Pedagogical Unirevsity, 2020, No. 2, pp. 29-36. (In Russian).
2. Simulyator — Slovar’-spravochnik terminov normativno-tekhnicheskoy dokumentacii [Simulator — Dictionary of Terms of Normative and Technical Documentation]. Available at: https://normative_reference_dictionary.academic.ru/68610/ %D1 %81 % D0 %B8 %D0 %BC %D1 %83 %D0 %BB %D1 %8F %D1 %82 %D0 %BE %D1 %80. (In Russian).
3. Zelenko N. V., Naumenko A. A. Virtual reality technologies in the professional development and self-identification of future pilots. Problemy sovremennogo pedagogicheskogo obrazovaniya = Problems of Modern Pedagogical Education, 2021, No. 71, vol. 3, pp. 35-37. (In Russian).
4. Mozhet li komp’yuter zamenit’ samolyot vo vremya obucheniya? [Can a Computer Replace an Airplane during Training?]. Available at: https://flyings.guru/blog/avia-sim/. (In Russian).
5. Pochuvstvut sebya pilotom: 5 realistichnyh aviasimulyatorov, Feel Like a Pilot: 5 Realistic Flight Simulators]. Available at: https://news.rambler.ru/scitech/36006650-pochuvstvuy-sebya-pilotom-5-realistichnyh-aviasimulyatorov. (In Russian).
6. Knyazev A. S. Joint use of the X-Plane 9 flight simulator and the C++Builder 6 software environment for the development and research of aircraft automatic control systems. Vserossiiskaya nauchno-prakticheskaya konferentsiya «AVIATOR» = All-Russian Scientific Practical Conference «Aviator», Voronezh, 2015, vol. 2, pp. 81-85. (In Russian).
7. Virtual’naya real’nost’ v obrazovanii [Virtual Reality in Education]. Available at: https://hsbi.hse.ru/articles/virtualnaya-realnost-v-obrazovanii/ (In Russian).
8. Lagkuev M. S., Kotlov I. N., Sudakov M. A., Shevchenko A. V. Effectiveness of preparation. Vestnik voennogo obrazovaniya = Bulletin of Military Education, Moscow, 2021, No.1 (28), pp. 59-62. (In Russian).
9. Knyazev A. S. The use of a flight simulator as a modern visualization tool in the educational process of an aviation university. Sbornik materialov XXI Vserossiyskoy zaochnoy nauchno-prakticheskoy konferentsii «Innovatsionnyye tekhnologii v obrazovatel’nom protsesse» = Proceedings of the XXI All-Russian Scientific Practical Conference «Innovative Technologies in the Educational Process». Krasnodar, 2020, No. 24, pp. 57-62. (In Russian).
10. Ruiz, Sergio & Aguado, Carlos & Moreno, Romualdo. Educational Simulation in practice: a teaching experience using a flight simulator. Journal of Technology and Science Education, 2014, No. 4, pp. 181-200. (In Russian).
11. Kozin N. A., Epanchin M. I., Kakhanovskiy D. V. An aviation simulator as a worthy alternative to flight crew training. Sbornik nauchnykh statey VII Mezhdunarodnoy nauchno-prakticheskoy konferentsii «Nauchnyye chteniya im. prof. N.Ye. Zhukovskogo» = Proceedings of Scientific Articles of the VII International Scientific Practical Conference «Scientific Readings Named after prof. N. E. Zhukovsky». Krasnodar, 2016, pp. 41-45. (In Russian).
12. Knyazev A. S. Joint use of the X-Plane flight simulator and the SimInTech environment to study the operation of aviation systems. Setevoye nauchnoye izdaniye «Trudy MAI» = Online Scientific Journal «Trudy MAI» ,2021, No. 117. Avaliable at: http://trudymai.ru/published.php?ID=156305. (In Russian).
БИБЛИОГРАФИЧЕСКОЕ ОПИСАНИЕ СТАТЬИ BIBLIOGRAPHIC DESCRIPTION
Науменко, А. А. Использование Naumenko A. A., Knyazev A. S. The Use
авиасимуляторов в учебном процессе of Flight Simulators in the Educational
авиационного вуза / А. А. Науменко, Process of an Aviation University /
А. С. Князев. — Текст : непосредственный A. A. Naumenko, A. S. Knyazev / / The Bulle-
/ / Вестник Армавирского государствен- tin of Armavir State Pedagogical University,
ного педагогического университета. — 2021, No. 4, pp. 64-72. (In Russian). 2021. — № 4. — С. 64-72.
Как ускорить течение рабочего дня
wikiHow работает по принципу вики, а это значит, что многие наши статьи написаны несколькими авторами. При создании этой статьи над ее редактированием и улучшением работали, в том числе анонимно, 25 человек(а).
Количество источников, использованных в этой статье: 7. Вы найдете их список внизу страницы.
Количество просмотров этой статьи: 81 111.
В этой статье:
Это называется мотивированная «работа», не так ли? Бывают такие дни когда, кажется, что все часы в здании перестали работать. Как вы преодолеваете такое состояние? При правильной организации работы вы сможете с пользой использовать каждую секунду времени.
Часть 1 из 3:
Разрабатываем систему, чтобы время текло быстрее
![]()
- Попробуйте также воздержаться от большого количества кофеина. Утреннее кофе это святое, но три чашки кофе, выпитые позже, могут стать причиной головной боли днем и бессонницы ночью. Недосыпание это верный способ превратить рабочий день в кошмар.
![]()
- Удобное кресло и стол это очень хорошо, но еще не все. Сядьте прямо и установите ваш монитор компьютера на правильной высоте. Полдела уже сделано.
![]()
- Не уверены, стоит ли так поступать? Недавние исследования показали, что если вы будете дружить с коллегами, то тем самым продлите продолжительность вашей жизни. [1] X Источник информации Суть в том, что те, кто счастлив и более расслаблен (коллеги здесь играют важную роль), в целом более здоровы. Так что, если вы не хотите, смеяться над шуткой Рича только для того, чтобы казаться дружелюбным, по крайней мере, сделайте это ради вашего здоровья.
![]()
- Разработайте свое “средство для борьбы со стрессом”. Это не только полезно для вашего физического, но и для вашего психического здоровья. Ваш боевой дух растет, вы расслабляетесь, время летит незаметно, и в конечном итоге вы чуть меньше устаете на работе. Просто убедитесь, что вы выбрали положительные средства, а не промывание косточек коллегам или заедание стресса сладким.
![]()
- На самом деле, недавнее исследование показало, что на работе не выспавшийся человек приравнивается к не трезвому. [2] X Источник информации Можете ли вы себе представить, как медленно будут тикать секунды, если вам в нетрезвом состоянии придется провести следующие 8 часов на работе.
Real Flight Simulator
Добро пожаловать в официальное руководство по Real Flight Simulator.
![]()
Главное меню
![]()
Пользовательский интерфейс полета
![]()
Самолеты и окраски
Быстрый вход в симулятор полета
1.1 Выбор самолета
Выберите самолет из списка слева.
Выберите окраску (НАСТОЯЩУЮ или ПРИДУМАННУЮ): нажимайте на стрелки по бокам от названия окраски или нажмите на название, чтобы открыть полный список.
- ПРИНЯТЬ: переход к выбору маршрута.
- НАЗАД: возврат в главное меню.
- СОЗДАТЬ ОКРАСКУ: переход на веб-страницу RFS Liveries для загрузки шаблонов (требуется графический пакет, поддерживающий файлы расширения .psd). Видеоурок: https://youtu.be/FmwjD-TCS4E
1.2 Выбор маршрута
Чтобы менять масштаб карты, сдвигайте или раздвигайте ее двумя пальцами.
Чтобы выбрать на карте аэропорт, коснитесь его кода ICAO или нажмите кнопку поиска по ICAO.
Выберите взлет или посадку, нажав на значок справа от аэропорта. Повторное нажатие отменит операцию.
Виды аэропортов:
Аэропорт HD
Аэропорт SD
Аэропорт LD
Аэропорт HD — Выбор
Не выбрано
Старт со ВЗЛЕТНОЙ ПОЛОСЫ
Старт от ГЕЙТА
Аэропорт SD/LD — Выбор
Взлет с ВПП
Посадка на ВПП (Рулежка к гейту, если аэропорт HD)
- НАЧАТЬ ПОЛЕТ: примите управление самолетом.
- СБРОС: отмените выбор аэропорта.
- НАЗАД: возврат к выбору самолета.
2 ПОЛЕТЫ В РЕАЛЬНОМ ВРЕМЕНИ
Ищите настоящие рейсы и выполняйте их.
Изменяйте масштаб карты, сдвигая или раздвигая ее двумя пальцами.
Воспользуйтесь строкой поиска, чтобы найти нужный самолет, указав его тип или полетный номер.
Нажав на любой самолет на карте, вы сможете получить информацию о рейсе.
- ПРИНЯТЬ: переход на страницу самолета, выбор окраски и возможность НАЧАТЬ ПОЛЕТ.
- НАЗАД: возврат в главное меню.
3 РАСШИРЕННЫЙ ПЛАНИРОВЩИК ПОЛЕТОВ
Тщательно продумайте свой план полета и выполните его.
3.1 Выбор файла
Выберите существующий план из списка слева или один из вариантов на верхней панели.
- НОВОЕ: создать новый план полета.
- КОПИЯ: создать копию выбранного плана полета.
- ИЗМЕНИТЬ: отредактировать выбранный план полета.
- УДАЛИТЬ: удалить выбранный план полета.
- НАЧАТЬ ПОЛЕТ: начать выполнение выбранного плана полета.
- НАЗАД: вернуться в главное меню.
3.2 Изменить/Новое
- НАЗВАНИЕ: ввод названия вашего плана полета.
- ОПИСАНИЕ: ввод описания вашего плана полета.
- МЕТКИ: ввод любых, разделенных пробелом меток для вашего плана полета (например: «Азия Дождь Сингапур»)
- ПОЛЬЗОВАТЕЛЬСКИЕ/РЕАЛЬНЫЕ: выбор реального времени или желаемого.
- ДАТА: нажмите, чтобы изменить.
- ВРЕМЯ: чтобы изменить, используйте ползунок.
- проверьте запланированный маршрут. Чтобы создать/изменить маршрут, нажмите «ИЗМЕНИТЬ»
- выберите аэропорты отправления и прибытия.
- Выберите «ОТБЫТИЕ», чтобы настроить процедуру SID (аэропорты HD требуют точек перехода).
- Выберите ПРИБЫТИЕ, чтобы настроить процедуру STAR (только для аэропортов HD).
- Выберите ПОДЛЕТ, чтобы назначить посадочную полосу.
- Нажмите «ДОБАВИТЬ ОТРЕЗОК», чтобы выбрать новый отрезок (не более 5).
- Чтобы удалить отрезок, нажмите «УДАЛИТЬ ОТРЕЗОК».
- Нажмите на отрезок, чтобы изменить план полета.
- НАЗАД: отмена изменений.
- ПРИНЯТЬ: сохранение вашего плана полета.
- ИЗМЕНИТЬ: выбрать другой самолет.
- ТОПЛИВО: перемещайте ползунок, чтобы изменить количество.
- ПАССАЖИРЫ: перемещайте ползунок, чтобы изменить количество.
- ГРУЗ: перемещайте ползунок, чтобы изменить количество.
- ПОЛЬЗОВАТЕЛЬСКАЯ: используйте ползунки, чтобы менять настройки погоды.
- РЕАЛЬНАЯ: погода будет соответствовать настоящей.
- СЛУЧАЙНАЯ: случайные погодные условия.
4 СЕТЕВАЯ ИГРА
Сетевая игра в реальном времени
Выберите «МОЙ ПРОФИЛЬ», чтобы увидеть свои показатели и ранг. Каждый полет, включающий в себя успешные взлет и посадку, приносит вам очки полета (FP).
Выберите свою ВИРТУАЛЬНУЮ АВИАЛИНИЮ.
Choose an available server from the list.
Join ATC (Beta) for playing as ATC or Pilot.
Follow this link Basic functions of human-controlled ATC for watching the tutorial.
Увеличивайте и уменьшайте масштаб, чтобы отслеживать вылеты других пилотов. Нажав на любой самолет, вы сможете узнать подробности. Создайте свой план и НАЧНИТЕ ПОЛЕТ.
Нажав на любой самолет, вы сможете узнать подробности.
5 ДРУГИЕ ВОЗМОЖНОСТИ
5.1 ПРОДОЛЖИТЬ С ПОСЛЕДНЕГО СОХРАНЕНИЯ
Используйте эту кнопку, чтобы продолжить игру с того вылета, на котором вы прервались.
5.2 НАСТРОЙКИ
- КАЧЕСТВО: качество 3D-детализации мира. Снизьте его, если испытываете проблемы с частотой смены кадров или стабильностью игры.
- Аппаратное разрешение: активирует аппаратное разрешение устройства (только для устройств на базе Android). Может понизить частоту смены кадров.
- Полетный интерфейс: ВКЛ = игровой интерфейс отображается всегда; ВЫКЛ = игровой интерфейс отображается только при касании к экрану.
- ОЧИСТИТЬ КЭШ: очищает кэш загруженных данных. Используйте только в том случае, если возникли проблемы с чрезмерными размерами приложения или поврежденными текстурами.
- СПУТНИКОВАЯ ЗЕМЛЯ: позволяет ВКЛ/ВЫКЛ высококачественные карты мира.
- СПУТНИКОВЫЕ КАРТЫ ВЫСОТ: позволяют ВКЛ/ВЫКЛ высококачественные международные карты высот.
- ТРАФИК В РЕАЛЬНОМ ВРЕМЕНИ: позволяет ВКЛ/ВЫКЛ настоящий воздушный трафик во время игры.
- МЕСТНЫЙ ВОЗДУШНЫЙ ТРАФИК: позволяет ВКЛ/ВЫКЛ местный трафик во время игры.
- ОБЩИЙ: настройка общей громкости звука.
- САМОЛЕТ: настройка громкости самолета.
- СРПБЗ: настройка громкости раннего предупреждения близости земли.
- ГОЛОС ПИЛОТА: выбор голоса пилота.
- СВЯЗЬ С ДИСПЕТЧЕРСКОЙ СЛУЖБОЙ: выбор громкости голоса пилота и диспетчера.
- ПРОЧАЯ СВЯЗЬ: выбор громкости для других пилотов и переговоров с диспетчерами.
- ПОДДЕРЖКА: открывает ваш почтовый клиент для отправки письма в службу поддержки.
- ПОЛИТИКА КОНФИДЕНЦИАЛЬНОСТИ: наша политика конфиденциальности личных данных.
- GOOGLE: вход с помощью учетной записи Google.
- FACEBOOK: вход с помощью учетной записи Facebook.
- ID: ID вашей учетной записи.
- ИМЯ ИГРОКА: имя, видимое остальным игрокам. Выбирайте его с умом, поскольку изменить можно будет только один раз.
- ПОЗЫВНОЙ ИГРОКА: позывной используется для СВЯЗИ С ДИСПЕТЧЕРСКОЙ и опознания вашего самолета при сетевой игре. Должен состоять из 4-6 букв и цифр.
- ПОЛЬЗОВАТЕЛЬСКИЕ/СЛУЧАЙНЫЕ/ОТКЛ.: выберите собственные отказы, удивляйтесь случайным или выключите их совсем.
- Протаскивайте список отказов вверх/вниз, чтобы ознакомиться со всеми возможными проблемами.
- Перемещайте ползунок каждого отказа, чтобы настроить его желаемую частоту или запретить его.
- ЧУВСТВИТЕЛЬНОСТЬ: настройте чувствительность управления. Чем она ниже, тем плавнее самолет будет реагировать на ваши действия.
- ТИП УПРАВЛЕНИЯ: выберите акселерометр вашего устройства или виртуальный джойстик (его можно активировать в любой свободной части экрана, за исключением приборной панели).
- ИНВЕРТИРОВАТЬ ВЕРТИКАЛЬНУЮ ОСЬ: переключайтесь между обычной и инвертированной вертикальной осью виртуального джойстика.
Первый пункт настроек позволит вам выбрать пол первого и второго пилотов. Второй — их внешность.
- ПЕРСОНАЛИЗАЦИЯ: позволяет вам изменить лицо пилота, загрузив изображение в формате .png или .jpg.
- ГОЛОС: позволяет изменить голос второго пилота.
5.3 ЖУРНАЛ
- РЕАЛЬНАЯ ДАТА: настоящая календарная дата, отмечающая произошедшее событие.
- ДАТА СОБЫТИЯ: дата, выбранная в плане полета.
- САМОЛЕТ: использовавшийся в рейсе самолет.
- ИЗ: аэропорт отбытия
- В: аэропорт прибытия.
- ПРОДОЛЖИТЕЛЬНОСТЬ: длительность полета.
- ОБЩЕЕ ВРЕМЯ: суммарное время всех полетов.
5.4 РУКОВОДСТВО
Нажмите на эту кнопку, чтобы получить доступ к руководству.
5.5 О ВЕРСИИ
Нажмите на эту кнопку, чтобы узнать свежие новости об игре. Читать: Android, iOS.
5.6 СЕТЕВОЙ СТАТУС
Узнайте свой сетевой статус.
6 ПОДПИСКА
Real Flight Simulator предлагает различные варианты подписки для получения всех игровых возможностей.
Сравнительную таблицу приводим ниже:
| RFS | RFS PRO | |
| САМОЛЕТ HD, Пользовательские окраски, 3D-кабина, ходовые части, огни |
Saab 340 Bombardier CRJ900 Airbus A320-200 |
Все самолеты RFS + AIRBUS A321neo AIRBUS A330-300 AIRBUS A340-200 AIRBUS A350-900 AIRBUS A380-800 ATR 72-600 BAE SYSTEMS 146 BOEING 737-800 BOEING 737-800BCF BOEING 747-200B BOEING 747-400 BOEING 767-300 BOEING 767-300F BOEING 777-200 BOEING 787-8 DREAMLINER CESSNA 172 CONCORDE EMBRAER E190 MCDONNELL DOUGLAS MD-11 MCDONNELL DOUGLAS MD-11F TUPOLEV TU-154M … но будет и больше |
| АЭРОПОРТЫ HD | 35 аэропортов в высоком разрешении спутниковые изображения, реалистичные 3D здания, рулежные дорожки и детализированные процедуры (отбытие, прибытие, подлет) |
Все RFS HD АЭРОПОРТЫ + наземный и воздушный трафик |
| АЭРОПОРТЫ SD | 500 аэропортов с взлетно-посадочными полосами, 3D здания и процедуры (отбытие и подлет) |
Все RFS SD АЭРОПОРТЫ + местный воздушный трафик |
| LD АЭРОПОРТЫ | Нет | 14000 аэропортов с взлетно-посадочной полосой и процедурами (отбытие и подлет) + местный воздушный трафик |
| СЕТЕВАЯ ИГРА | Нет | Сетевая игра в реальном времени, летайте вместе с пилотами со всего света и по всему миру. |
| СВЯЗЬ С ДИСПЕТЧЕРСКОЙ СЛУЖБОЙ | Нет | Интерактивный, многоголосая связь с диспетчерами при выполнении процедур и общении |
| ТРАФИК В РЕАЛЬНОМ ВРЕМЕНИ | Нет | трафик в реальном времени для 35 крупнейших аэропортов мира и привязанных к ним направлений |
| ПОЛЕТЫ В РЕАЛЬНОМ ВРЕМЕНИ | Нет | Примите участие в любом идущем рейсе и приведите его к пункту назначения (или, куда захотите. ) |
| РАСШИРЕННЫЙ ПЛАНИРОВЩИК ПОЛЕТОВ | Нет | расширенный планировщик полетов дает возможность выбора при создании/изменении/копировании сложных планов полета. |
| СПУТНИКОВАЯ ЗЕМЛЯ | Нет | Высококачественные изображения мира со спутника (требуется сетевое подключение к потоковым данным) |
| СПУТНИКОВЫЕ КАРТЫ ВЫСОТ | Нет | Высококачественные изображения высот (требуется сетевое подключение к потоковым данным) |
Чтобы пожаловаться на оскорбление, удерживайте нажатым список чата. Прокрутите его до нужного пользователя или фразы и отпустите, чтобы отправить жалобу. Нажмите на имя пользователя, чтобы обратиться к нему напрямую и отслеживать ваш разговор. Чтобы снять выбор, нажмите в любом другом месте.
8 ПОЛЕТНЫЙ ИНТЕРФЕЙС
- A/P — АВТОПИЛОТ
- THR — ГАЗ
- MASTER CAUTION — ГЛАВНОЕ СИГНАЛЬНОЕ ТАБЛО
- GROUND SYSTEMS — НАЗЕМНЫЕ СИСТЕМЫ
- AIRCRAFT SYSTEMS — БОРТОВЫЕ СИСТЕМЫ
- FLAPS — ЗАКРЫЛКИ
- GEAR — ШАССИ
- SPOILER — СПОЙЛЕР
- BRAKE — ТОРМОЗА
- RUD — ШТУРВАЛ
- Изменение ПАНЕЛИ ИНСТРУМЕНТОВ
- Изменение КАМЕРЫ
- Настройка ИНДИКАТОРОВ ПАНЕЛИ
- КАРТА/СУП плана полета
- ПАУЗА
- COMMS — СВЯЗЬ
- VDGS — ВИЗУАЛЬНАЯ СИСТЕМА НАВЕДЕНИЯ ПРИ СТЫКОВКЕ
- НАСТРОЙКИ КАМЕРЫ
1. A/P — АВТОПИЛОТ
A/P — АВТОПИЛОТ. Коснитесь, чтобы открыть/закрыть панель автопилота.
NAV — НАВИГАЦИЯ. Активирует навигацию в автопилоте. Когда НАВИГАЦИЯ активна, скорость, курс и высоту нельзя изменить вручную.
APP — ПОДХОД. Активирует автосближение. Доступно только когда самолет находится в зоне действия маяка ILS.
SPD — СКОРОСТЬ. Удерживайте кнопку и двигайте вверх/вниз для установки скорости.
HDG — НАПРАВЛЕНИЕ. Удерживайте кнопку и двигайте вверх/вниз для выбора направления.
ALT — ВЫСОТА: удерживайте кнопку и двигайте вверх/вниз для установки высоты.
VS — ВЕРТИКАЛЬНАЯ СКОРОСТЬ. Удерживайте кнопку и двигайте вверх/вниз для установки вертикальной скорости.
2. THR — ГАЗ: двигайте вверх/вниз для установки нужной тяги.
3. MASTER CAUTION — ГЛАВНОЕ СИГНАЛЬНОЕ ТАБЛО: показывает текущие предупредительные сигналы. Коснитесь, чтобы сбросить сигналы.
4. GROUND SYSTEMS — НАЗЕМНЫЕ СИСТЕМЫ
Доступны только на земле. коснитесь, чтобы открыть/закрыть выбранное подменю. Удерживайте кнопку и двигайте вверх/вниз для выбора другого подменю (СИСТЕМЫ, ОБНОВЛЕНИЕ, EMERGENCY).
АГРЕГАТ НАЗЕМНОГО ПИТАНИЯ — внешний источник питания. Нажмите один раз, чтобы включить или выключить внешний источник питания. ACU — внешнее устройство контроля воздуха БУКСИРОВКА — доступна, только если самолет неподвижен. Активируйте для буксировки.
4.2 ОБНОВЛЕНИЕ
PAX DOOR — одно нажатие включает/отключает пассажирскую службу. Нажмите на PAX и выберите количество, а затем отпустите, чтобы начать посадку/высадку. CARGO DOOR — одно нажатие включает/отключает грузовую службу. Нажмите на CARGO и выберите количество, а затем отпустите, чтобы начать загружать/разгружать. FUEL TRUCK — одно нажатие включает/отключает топливную службу. Нажмите на FUEL и выберите количество, а затем отпустите, чтобы начать закачивать/сливать.
Наземные службы доступны всегда, а вот пассажирские трап и транспорт доступны только тогда, когда ваше воздушное судно правильно расположено у выхода аэропорта в высоком качестве.
4.3 EMERGENCY
EVACUATION SLIDE — нажмите один раз, чтобы активировать трап для эвакуации. AMBULANCE — нажмите один раз, чтобы сделать/отменить вызов скорой помощи. FIREFIGHTING VEHICLE — нажмите один раз, сделать/отменить вызов пожарной бригады.Нажмите на EXTINGUISHER, чтобы вызвать пожарных.
4.4 EXTERIOR INSPECTION
Нажмите на EXTERIOR INSPECTION, чтобы открыть режим наземной проверки.
Используйте виртуальные джойстики, чтобы осмотреть самолет. Нажмите на EXTERIOR INSPECT., чтобы открыть/закрыть панель проверочного списка. Нажмите на EXIT, чтобы вернуться в самолет.
Нажмите, чтобы открыть/закрыть панель проверочного списка.
Панель CHECKLIST: PREV — перейти к предыдущему проверочному списку. CLEAR — удалить текущий список. NEXT — перейти к следующему списку. CLOSE — закрыть проверочный список.
5. AIRCRAFT SYSTEMS — БОРТОВЫЕ СИСТЕМЫ
коснитесь, чтобы открыть/закрыть выбранное подменю. Удерживайте кнопку и двигайте вверх/вниз для выбора другого подменю (СИСТЕМЫ, ДВИГАТЕЛИ, ОГНИ, ТОПЛИВО, ПРОВЕРОЧНЫЕ СПИСКИ).
HUD — вкл/выкл индикаторы на лобовом стекле WP HUD — вкл/выкл значки промежуточных пунктов маршрута AC HUD — вкл/выкл значки других воздушных судов COMMS HUD — вкл/выкл текст от каналов связи APU — ВСПОМОГАТЕЛЬНАЯ СИЛОВАЯ УСТАНОВКА. Вкл/выкл ВСУ ICE — вкл/выкл противообледенительную защиту SEAT BELTS — включить/отключить уведомления по ремням безопасности NO SMOKING — включить/отключить уведомления по запрету курения WIPERS — Включение/отключение очистителей
Для каждого двигателя: FIRE— коснитесь один раз для активации, еще раз, когда будете готовы использовать огнетушитель. При неиспользовании автоматически деактивируется через несколько секунд. ENG x N1 xx% — коснитесь один раз для запуска двигателя (готов к запуску, когда загорится зеленый огонек), коснитесь еще раз для отключения. Показывает N1 (скорость оборотов компрессора низкого давления) для каждого двигателя. THR xx% — двигайте вверх/вниз, чтобы настроить тягу для каждого двигателя.
COCKPIT LIGHTS — зажмите кнопку, а затем двигайте вверх/вниз, чтобы настроить освещение в кабине NAV LIGHTS — вкл/выкл навигационные огни LANDING LIGHTS — вкл/выкл посадочные огни TAXI LIGHTS — включить/отключить рулежные фары CABIN LIGHTS — зажмите кнопку, а затем двигайте вверх/вниз, чтобы настроить освещение в салоне BEACON LIGHTS — вкл/выкл огни маяка STROBE LIGHTS — вкл/выкл огонь проблескового маяка LOGO LIGHTS — включить/отключить освещение логотипа
LEFT TANK — коснитесь для подачи топлива RIGHT TANK — коснитесь для подачи топлива FUEL — сдвиньте вправо/влево для перемещения топлива из одного бака в другой
5.5 CHECKLIST
Нажмите, чтобы открыть/закрыть панель проверочного списка.
Панель CHECKLIST: PREV — перейти к предыдущему проверочному списку. CLEAR — удалить текущий список. NEXT — перейти к следующему списку. CLOSE — закрыть проверочный список.
6. FLAPS — ЗАКРЫЛКИ
Удерживайте кнопку и двигайте вверх/вниз, чтобы настроить закрылки.
7. GEAR — ШАССИ
Нажмите, чтобы выпустить/убрать шасси. Убедитесь, что ваша ПВС (приборная воздушная скорость) меньше VLO (максимальной скорости полета при выпуске и уборке шасси).
8. SPOILER — СПОЙЛЕР
Удерживайте кнопку и двигайте вверх/вниз для изменения настроек спойлеров.
9. BRAKE — ТОРМОЗА
Коснитесь для включения/выключения колесных тормозов.
10. RUD — ШТУРВАЛ
Двигайте вправо/влево для управления штурвалом.
11. Изменение ПАНЕЛИ ИНСТРУМЕНТОВ
Коснитесь для переключения между разными конфигурациями панелей.
Удерживайте кнопку и двигайте вверх/вниз для быстрой смены панели.
Для изменения настроек прибора коснитесь его, удерживайте 1 секунду и сдвигайтесь вправо/влево/вверх/вниз.
12. Изменение КАМЕРЫ
Коснитесь для переключения между разными полями обзора.
Для быстрого выбора нужного поля обзора удерживайте кнопку и сдвигайтесь вправо/влево/вверх/вниз.
13. Настройка ИНДИКАТОРОВ ПАНЕЛИ
Для изменения типа индикатора нажмите и удерживайте его и сдвигайтесь вправо/влево/вверх/вниз.
14. КАРТА/СУП плана полета
СУП — система управления полетом самолета. Открыть/закрыть панель СУП.
ЦЕНТР — центрирование карты на вашем самолете.
Выбрав точку маршрута, нажмите:
«+«, чтобы внести в план полета еще одну. Она будет автоматически добавлена в список под указанной. Если же вы не выбирали точку маршрута, то новая будет добавлена в конец списка.
Нажмите на значок «Đ» (Направиться к), чтобы удалить весь план полета и напрямую отправиться к выбранной точке.
RMV — УДАЛИТЬ. Выберите точку маршрута из списка и нажмите RMV для ее удаления.
NXT — СЛЕДУЮЩАЯ. Выберите точку маршрута из списка и нажмите NXT, чтобы сделать ее следующим активным пунктом.
UP. Выберите точку маршрута из списка и нажмите UP, чтобы передвинуть ее выше по списку.
DWN. Выберите точку маршрута из списка и нажмите DWN, чтобы передвинуть ее ниже по списку.
CLR — ОЧИСТИТЬ. Очистить все точки.
DEP — ОТБЫТИЕ. Только отбытие в аэропорту HD. Нажмите DEP для открытия списка SID, затем выберите SID и нажмите «ВЫБРАТЬ» для активации.
ARR — ПРИБЫТИЕ. Только прибытие в аэропорту HD. Нажмите ARR для открытия списка STAR, затем выберите STAR и нажмите SELECT для активации.
APP — ПОДХОД. Активно, только если аэропорт прибытия находится в вашем плане полета. Нажмите APP для открытия списка ПОДХОДА, затем выберите ПОДХОД и нажмите «ВЫБРАТЬ», после чего выберите ПЕРЕХОД (только аэропорт HD) и нажмите «ВЫБРАТЬ» для его активации.
15. ПАУЗА
ВЗЛЕТ / ПОСАДКА
Выберите любой из доступных вариантов, чтобы быстро выполнить действие
ДАТА / ВРЕМЯ
- ПОЛЬЗОВАТЕЛЬСКИЕ/РЕАЛЬНЫЕ: выбор реального времени или желаемого
- ДАТА: нажмите, чтобы изменить
- ВРЕМЯ: чтобы изменить, используйте ползунок
- ТОПЛИВО: перемещайте ползунок, чтобы изменить количество
- ПАССАЖИРЫ: перемещайте ползунок, чтобы изменить количество
- ГРУЗ: перемещайте ползунок, чтобы изменить количество
- ПОЛЬЗОВАТЕЛЬСКАЯ: используйте ползунки, чтобы менять настройки погоды
- РЕАЛЬНАЯ: погода будет соответствовать настоящей
- ПОЛЬЗОВАТЕЛЬСКИЕ/СЛУЧАЙНЫЕ/ОТКЛ.: выберите собственные отказы, удивляйтесь случайным или выключите их совсем
- Протаскивайте список отказов вверх/вниз, чтобы ознакомиться со всеми возможными проблемами
- Перемещайте ползунок каждого отказа, чтобы настроить его желаемую частоту или запретить его
- ЧУВСТВИТЕЛЬНОСТЬ: настройте чувствительность управления. Чем она ниже, тем плавнее самолет будет реагировать на ваши действия
- ТИП УПРАВЛЕНИЯ: выберите акселерометр вашего устройства или виртуальный джойстик (его можно активировать в любой свободной части экрана, за исключением приборной панели)
- ИНВЕРТИРОВАТЬ ВЕРТИКАЛЬНУЮ ОСЬ: переключайтесь между обычной и инвертированной вертикальной осью виртуального джойстика
ПРОДОЛЖИТЬ вернуться к полету
ВЫХОД покинуть полет
- ВЫХОД: обратно в главное меню
- ПЕРЕИГРАТЬ: перезапуск вашего полета
- ПЕРЕМОТКА: отматывает полет назад на минуту перед выходом/крушением
- ДОКЛАД: окончание отчета о полете. Также появляется при выключении двигателей или после присоединения ТТ (телескопического трапа)
- ПОВТОРНЫЙ ПРОСМОТР: просмотр вашего полета
16. COMMS — СВЯЗЬ
16.1 УВД — служба управления воздушным движением
УВД позволяет наладить связь между самолетом и различными службами управления воздушным движением. Сперва выберите нужные частоты согласно вашему местоположению, затем выберите действия согласно процедурам полета. Вы также услышите любые переговоры между УВД и другими самолетами, настроенными на ту же частоту.
ATIS — автоматизированная система передачи данных в районе аэродрома. Постоянно транслирует записанную навигационную информацию.
НАЗЕМНАЯ — используется на земле.
ДИСПЕТЧЕРСКАЯ — используется на взлетно-посадочной полосе, при взлете и окончании посадки.
ПОДХОД — используется после взлета и во время начала посадки.
В ПУТИ — используется во время полета.
АВАРИЙНАЯ — используется при любых аварийных процедурах.
— ЗАПРОС БЛИЖАЙШЕГО АЭРОПОРТА: сделать запрос в ближайший аэропорт.
— ПЛАН В БЛИЖАЙШИЙ АЭРОПОРТ: поменять план полета и поставить в нем ближайший аэропорт.
— АВАРИЯ/СРОЧНЫЙ ВЫЗОВ: для доклада о текущей ситуации.
16.2 ОБЪЯВЛЕНИЯ ДЛЯ ПАССАЖИРОВ
PAX ANNOUNC. позволяет управлять коммуникацией между пилотом, командой и пассажирами.
PILOT — коммуникация пилота с пассажирами.
CREW — коммуникация команды.
16.3 ПОЛЕТНЫЙ ЧАТ
ГЛАВНЫЙ ЧАТ — тот же, что и в главном меню, доступен для всех игроков. Коснитесь верхней левой кнопки для изменения языка.
МНОГОПОЛЬЗОВАТЕЛЬСКИЙ ЧАТ — назван по имени сервера, который вы выбрали в многопользовательском режиме. Коснитесь верхней правой кнопки, чтобы отфильтровать пилотов по дистанции.
17. VDGS — ВИЗУАЛЬНАЯ СИСТЕМА НАВЕДЕНИЯ ПРИ СТЫКОВКЕ
Доступна в любом аэропорту HD. Следуйте инструкциям на карте до назначенного вам выхода, затем следуйте на парковку по инструкциям от VDGS. При правильной парковке (ОК) вам станет доступен ТЕЛЕСКОПИЧЕСКИЙ ТРАП .