Русский
Русский
English
Статистика
Реклама

Гонки

Перевод Почему маховики не прижились в автомобилях?

07.03.2021 12:13:35 | Автор: admin

Идея родилась при подготовке к гонкам Формулы-1, однако с переменным успехом выступила лишь на гонке 24 часа Ле-Мана.




В 2010 году во время 10-часовой гонки Petit Le Mans, проводящейся в городе Брэзелтон, шт. Джорджия, США, экспериментальный гоночный автомобиль компании Porsche 911 GT3 R Hybrid находился в первой 20-ке среди 45 автомобилей. В это время репортёры телевизионной сети Speed брали интервью у Марго Т. Оге, которая тогда была директором отдела транспорта и качества воздуха при агентстве по охране окружающей среды США.

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


В 2009 году командам F1 первые разрешили использовать гибридные системы. Команда Williams решила разработать гибрид с маховиком вместо химических аккумуляторов. Но эта система так и не вышла на трассу.

Однако, как и его ближайший гибридный родственник с гонок Формула-1, эту модель 911 GT3 R не планировалось выпускать на улицы. Этот гибрид использовал маховик. Вместо совместного применения бензинового двигателя внутреннего сгорания и электродвигателя с аккумуляторами, гоночная машина совместила плоский шестицилиндровый ДВС с электромеханической системой хранения энергии на маховике.


Как выглядел маховик Williams Hybrid Power

Инженеры Porsche начали изучать применение гибридных систем в гонках в 2007 году. Примерно в то же время руководство F1 разрешило интеграцию гибридных технологий. С сезона 2009 года F1 позволила командам использовать умеренные гибридные системы рекуперации кинетической энергии (kinetic energy recovery system, KERS).


Williams открыла дочернюю компанию Williams Hybrid Power для разработки и полировки гибрида с маховиком. В 2010 году она организовала партнёрство с Porsche Motorsport для создания 911 GT3 R Hybrid

Большинство команд F1 разрабатывало системы рекуперации на основе аккумуляторов, однако команда Williams создала электромеханический маховик. В итоге из-за технических ограничений гонок команде Williams так и не довелось выставить эту машину на трассу. Интересно, что компания Chrysler также пыталась сделать гибридный автомобиль с ДВС/маховиком для Ле-Мана за 15 лет до этого, но и их разработка не дошла до гонок.


Audi успешно использовала гибридную систему с маховиком для машины R18 e-tron Quattro. Эта машина выигрывала Ле-Ман три раза подряд.

Однако Porsche в итоге купила лицензию на технологию Williams Hybrid Power, и вознамерилась адаптировать её для гонок на выносливость в модели 911 GT3 R Hybrid. Компания Audi также занялась внедрением маховика в свой всепобеждающий дизель-электрический прототип R18 e-tron Quattro. В прототипе использовался доработанный маховик производства британской компании GKN, делающей запчасти для автомобилей и самолётов. Она купила эту технологию у Williams ещё в 2014 году. Полученный гибрид с маховиком выиграл десятки гонок, включая и 24 часа Ле-Мана в 2012, 2013 и 2014 годах.


Схема гибридной системы Audi R18 e-tron Quattro

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

Высокооборотистый ускоритель


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


GT3 R Hybrid был создан для гонок на выносливость на знаменитом состязании 24 часа Нюрбургринга в 2010 году

Но вместо того, чтобы отправлять эту энергию в химический аккумулятор для хранения и последующего использования, электричество используют для раскрутки маховика. Электрическая энергия преобразуется в кинетическую энергию вращения посредством инновационного магнитного материала (иногда это магнитный порошок), нанесённого на маховик. Чем больше энергии приходит, тем быстрее он крутится. Это, кстати, отличает его от гибридной системы с механическим маховиком, которую компания Nissan безуспешно пыталась разработать для Ле-Мана 2015 года.


Схема трансмиссии у GT3 R Hybrid. Красным обозначены компоненты маховика, силовая электрика и два мотора/генератора.

Количество энергии, которое можно снять с маховика, определяется его массой и скоростью вращения. Обычно он вращается со скоростями от 25 000 до 55 000 об/мин. Для преобразования хранящейся в маховике кинетической энергии обратно в электрическую вращающееся магнитное поле генерирует ток, идущий в обратном направлении, и энергия поступает на те же самые моторы/генераторы, что собирали её во время торможения.


Схема GT3 R Hybrid под другим углом

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


У обычного автомобиля на этом месте располагается пассажирское сиденье. У GT3 R Hybrid там стоит маховик.

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

Маховик 911 GT3 R был сделан из композитного углеволокна, и его диаметр равнялся 406 мм. Корпус маховика, также сделанный из углеволокна, располагался на месте пассажирского сиденья. Маховик отправлял и получал энергию от электрических моторов/генераторов по 80 л.с. (60 кВт), располагавшихся в обеих передних колёсах. Такая конфигурация позволяла улучшить управление автомобилем на поворотах.

Ёмкость маховика в машине Porsche составляла 0,2 кВт*ч. Он мог выдавать до 163 л.с. (122 кВт) на периоде до 6 секунд, помогая разгонять машину после поворотов или на длинных дистанциях в зависимости от того, как водитель решал применить дополнительную энергию, нажимая на специальную кнопку на руле.

Общая мощность всей системы составляла 670 л.с. (500 кВт), а весила машина примерно 1300 кг. Маховик с корпусом весили порядка 47 кг значительно меньше, чем аккумулятор у электрических гибридов. В целом машина весила на 104 кг больше, чем обычные гоночные Porsche GT3, вместе с которыми она ездила по треку.

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

Благодаря относительно эффективному использованию горючего, не самый быстрый среди участников гонки 2010 года 24 часа Нюрбургринга 911 GT3 R Hybrid лидировал восемь часов подряд. В гонке 2010 года Petit Le Mans машина пришла 18-й сказался износ деталей.

В 2011 году она снова вышла на трассу, но потом в Porsche сконцентрировались на прототипе 919 Hybrid для чемпионата мира по автогонкам на выносливость.

Не быстрое, а медленное хранение и восстановление энергии


Переход на 919 Hybrid в частности был связан с тогдашним проектом суперкара от Porsche. Так утверждает президент и генеральный директор североамериканского подразделения Porsche Motorsport, Дэниел Армбрюстер.

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

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

Гибридная технология с использованием маховика в 911 GT3 R Hybrid позволяла экономить топливо, что уменьшало время, проведенное на пит-стопе, по сравнению с соперниками, поясняет Армбрюстер. В гонках маховик работает эффективнее из-за постоянного резкого торможения и резкого разгона. Для такого режима отлично подходит кратковременное хранение энергии с мощной отдачей.

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

И хотя Porsche отказалась от маховика из-за ограниченной ёмкости, Армбрюстер добавляет, что нет сомнений в том, что 911 GT3 R Hybrid сыграла важнейшую роль, доказав применимость гибридной технологии в скоростных гонках.

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

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

На автобусах


Принцип работы маховика от Williams всё же нашёл применение в городских условиях в 2015 году, когда GKN модифицировала эту систему для установки на лондонские автобусы. В гибридную систему Gyrodrive с маховиком входит тяговый двигатель, связанный с ведущим валом машины, электрический маховик, инвертер для мотора/маховика, и электронная система управления.

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

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

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

Президент североамериканского подразделения Porsche Motorsport говорит, что его компания постоянно оценивает, какие технологии дают наилучшее решение в конкретных ситуациях, и не отказывается заранее ни от каких подходов.

Армбрюстер объясняет, что в стратегию Porsche входят ДВС, спортивные заряжаемые гибриды и полностью электрические машины. Также мы исследуем вопрос синтетического топлива, делающего ДВС уже существующих машин более дружественными к окружающей среде.

Иронично, что большая часть тех из нас, кто столкнётся с гибридными автомобилями с маховиками, будет ехать в машине в качестве пассажира, а не водителя. Также в разработке находятся статичные маховиковые системы. Немецкая компания Chakratec недавно развернула маховиковую систему хранения энергии в гостинице Premier Inn в Лейпциге, позволяющую сглаживать пиковые нагрузки на зарядные станции для электромобилей.

Но всего десять лет назад гоночные автомобили, оснащённые маховиками, лидировали в гонке 24 часа Нюрбургринга и убедительно соперничали с более лёгкими GT3. В будущем инвестиции в эту технологию могут как облегчить эту систему, так и увеличить её энергетическую ёмкость, и вновь дать гонщикам маховики в спорте, где редко что-то выбрасывают просто так.
Подробнее..

Пишем игру Гонки на бумаге, C WPF

31.12.2020 18:20:33 | Автор: admin

Предистория

Дело было в начале 90-х, компьютера не было, но было желание поиграть в гонки ) Показал мне друг как можно на тетрадном листе бумаги в клеточку играть в гонки. А еще говорят, что есть настольная игра с такими правилами. И что чуть ли не все играли в эту игру в университете за парами.

Правила игры

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

Ход 1: машинка стоит на месте и может ехать в точки, которые расположены вокруг той точки в которую направлен вектор движения машинки. В начале игры вектор нулевой, никуда не направлен, значит мы можем пойти в точки вокруг машинки. Делаем ход в точку над машинкой.

Ход 2: Машинка передвигается на одну клетку вертикально и ноль клеток горизонтально. Это и есть текущая скорость машинки (1 по вертикали и 0 по горизонтали). Вектор скорости направлен на клетку сверху от машинки. Вокруг этой точки машинка может выбрать точки для выполнения хода. Сделаем ход в левую-верхнюю точку.

Ход 3: Машинка передвигается на две клетки вертикально и одну горизонтально. Вектор движения машинки соответственно изменяется.

Ход 4: Машинка передвигается на 3 клетки вертикально.

Теперь машинка движется со скоростью 3 клетки вверх и 0 клеток влево/вправо. Машинка имеет скорость и не может за один ход полностью остановиться или сделать резкий поворот в сторону. В данном случае машинка может:

  1. Ускориться если выбрать верхние (дальние от машинки) узлы. Если ход в верхнюю-левую точку, то скорость будет 4 вверх и 1 влево. Если ход в верхнюю-правую точку, то скорость будет 4 вверх и 1 вправо.

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

  3. Понизить скорость выбрав нижний (ближайший к машинке) ряд. Стоит выбирать при приближению к резкому повороту.

План разработки

  1. Генератор случайной трассы. Трасса должна уметь поворачивать в любом направлении на любое число градусов. Элементы трассы должны быть произвольной длины и ширины.

  2. Положение пользователя на игровой карте должно быть показано машинкой. Машинка должна уметь поворачиваться в сторону движения. Игровая карта может быть любого размера.

  3. На игровой карте нужно различать следующие типы полей:
    3.1 поле, куда машинка может сделать безопасный ход
    3.2 поле, куда машинка может сделать ход, но это будет выход за трассу
    3.3 поле, принадлежащее дороге
    3.4 поле, не принадлежащее дороге
    3.5 текущее поле с машинкой

  4. Показывать отрезки пройденного пути на игровой карте

  5. Возможность начать новую игру сначала

  6. Отображение текущей скорости

  7. Возможность изменения настроек программы через файл конфигурации. Список необходимых значений в файле конфигурации:
    7.1 Ширина фрагмента дороги
    7.2 Количество фрагментов дороги для генерации новой трассы
    7.3 Максимальный угол поворота дороги влево
    7.4 Максимальный угол поворота дороги направо
    7.5 Минимальная длина участка дороги
    7.6 Максимальная длина участка дороги
    7.7 Положение машинки на игровой карте

  8. Сделать генерацию пейзажа вокруг дороги для приятного юзабилити

  9. Показывать дорожные знаки предупреждающие об опасном повороте

Подготовка

Для разработки программы выбран язык программирования C#. Целевая рабочая среда .NET 5.0. Графическая среда WPF. Среда разработки Visual Studio 2019.

Генератор случайной трассы

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

Для каждого сгенерированного элемента трассы нужно хранить:

  1. Точку начала (X и Y)

  2. Точку конца (X и Y)

  3. Ширину элемента трассы (в данной реализации ширина трассы одинаковая для всех элементов, задел на будущее)

  4. Длину элемента трассы

  5. Угол наклона элемента трассы к оси oX

Положение пользователя на игровой карте

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

/// <summary>/// Текущий сдвиг карты по осям/// </summary>int _deltaX, _deltaY = 0;

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

Каждый выполненный ход сохраняем в списке _pathList - список отрезков пройденного пути.

/// <summary>/// Список отрезков пройденного пути/// </summary>List<PathElement> _pathList = new List<PathElement>();

Отрезок пройденного пути должен хранить следующие данные:

  1. Точка начала отрезка (X и Y)

  2. Точка конца отрезка (X и Y)

  3. Смещение машинки относительно карты в момент выполнения хода

Зная точку начала и конца отрезка можно вычислить угол наклона отрезка к оси oX.
AC - изменение координаты X от начала до конца отрезка
BC - изменение координаты Y от начала до конца отрезка

\tan{(\angle ABC)} = \frac{AC}{BC}\angle ABC = \arctan{(\frac{AC}{BC})} * \frac{180}{\pi}
/// <summary>/// Текущий угол наклона пути/// </summary>public double Angle{     get     {          if (ToY == FromY && ToX > FromX) return 90;          if (ToY == FromY && ToX < FromX) return -90;          if (ToX == FromX && ToY > FromY) return 180;          if (ToX == FromX && ToY < FromY) return 0;          if (ToY <= FromY && ToX >= FromX) return -Math.Atan((ToX - FromX) / (ToY - FromY)) * 180 / Math.PI;          if (ToY <= FromY && ToX <= FromX) return - Math.Atan((ToX - FromX) / (ToY - FromY)) * 180 / Math.PI;          if (ToY >= FromY && ToX <= FromX) return Math.Atan((ToY - FromY) / (ToX - FromX)) * 180 / Math.PI - 90;          if (ToY >= FromY && ToX >= FromX) return Math.Atan((ToY - FromY) / (ToX - FromX)) * 180 / Math.PI + 90;          return 0;     }}

Типы полей игровой карты

Для выполнения хода на игровой карте расположены узлы - кнопки (Button) на расстоянии 20 пикселей друг от друга, 39 рядов по 39 кнопок. Таким образом достигается функционал выполнения нового хода.

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

  1. поле, куда машинка может сделать безопасный ход

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

  3. поле, принадлежащее дороге

  4. поле, не принадлежащее дороге

  5. текущее поле с машинкой


При проверке нужно найти поля в которые машинка может сделать ход. Для этого учитывается текущая скорость по оси X и по оси Y.

Проверка нахождения точки дороге:
Дорога представляет собой массив прямоугольников (элементы дороги) и кругов (стыки элементов дорог).
Проверка принадлежности точки кругу рассчитывается по формуле:

(X \text{-} X_0)^2 = (Y \text{-} Y_0)^2 <= R^2

Проверка принадлежности точки прямоугольнику немного сложнее:
Из точки C (это точка, которую проверяем на принадлежность прямоугольнику) опустим перпендикуляр на отрезок AB (точки A и B - точки начала и конца элемента дороги соответственно). Данный перпендикуляр - это высота треугольника. Поиск факта принадлежности точки прямоугольнику сводится к проверке:

h <= \frac{\text{Ширина дороги}}{2}


Существует 3 различные ситуации где может находиться точка по отношению к прямоугольнику:

  1. h > (ширина элемента дороги / 2) - точка не принадлежит прямоугольнику

  2. h <= (ширина элемента дороги / 2) - точка принадлежит прямоугольнику если ABC < 90 и CAB < 90

  3. высота h опускается не на отрезок AB, а на его продолжение. Хотя и длина высоты удовлетворяет нашей формуле, но если ABC > 90 или CAB > 90, то точка не принадлежит прямоугольнику.

Формула нахождения площади треугольника зная координаты его вершин:

S(ABC) = \frac{|(X_A \text{-} X_C)*(Y_B \text{-} Y_C) \text{-} (X_B \text{-} X_C)*(Y_A \text{-} Y_C)|}{2}

С другой стороны, формула нахождения площади треугольника зная его высоту:

S(ABC) = \frac{h * AB}{2}

Данных двух формул достаточно для расчета высоты треугольника (а еще Вы могли не заморачиваться с площадью и рассчитать проще используя:

\sin( \angle ABC) = \frac{h}{BC}

но я это понял на момент написания статьи)


Формула нахождения длины отрезка по его координатам:

AB = \sqrt{(X_A \text{-} X_B)^2 + (Y_A \text{-} Y_B)^2}AC = \sqrt{(X_A \text{-} X_C)^2 + (Y_A \text{-} Y_C)^2}BC = \sqrt{(X_B \text{-} X_C)^2 + (Y_B \text{-} Y_C)^2}

Формула нахождения углов треугольника зная длины сторон треугольника:

\angle ABC = \arccos{(\frac{AB^2 + BC^2 - AC^2}{2*AB*BC})} * \frac{180}{\pi}\angle CAB = \arccos{(\frac{AB^2 + AC^2 - BC^2}{2*AB*AC})} * \frac{180}{\pi}

Отрезки пройденного пути

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

  1. Точка начала отрезка (X и Y)

  2. Точка конца отрезка (X и Y)

  3. Смещение машинки относительно карты в момент выполнения хода

  4. Угол наклона к оси oX рассчитывается автоматически

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

Возможность начать новую игру сначала

Для реализации данной фичи сделаем в главном меню программы элемент типа MenuItem, реализуем событие мыши Click, пропишем очиску всех элементов игровой карты, очистку сохраненных элементов списков пройденного пути, элементов дороги, обнуление переменных сдвига карты и текущей скорости машинки.

Отображение текущей скорости

Физика прототипа игры такова, что мы имеем две скорости: скорость по оси oX, скорость по оси oY.

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

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

Чтобы изменять переменные в игре имеет смысл вынести значения данных переменных в конфигурационный файл:

  1. Ширина фрагмента дороги

  2. Количество фрагментов дороги для генерации новой трассы

  3. Максимальный угол поворота дороги влево

  4. Максимальный угол поворота дороги направо

  5. Минимальная длина участка дороги

  6. Максимальная длина участка дороги

  7. Положение машинки на игровой карте

{  "RoadWidth": "100",  "RoadElementsCount": "20",  "MinAngle": "-60",  "MaxAngle": "60",  "MinRoadLength": "100",  "MaxRoadLength": "200",  "UserPosition": {    "X": "400",    "Y": "400"  }}

В зависимости от данных настроек игровое поле выглядит по-разному:

Генерация пейзажа, улучшение GUI

Для более приятного впечатления к игре нужно добавить как можно большее количество различных элементов (в рамках разумности конечно):

  1. Заполнить игровое поле "Землей" - изображение, заполняющее все поле

  2. В момент выполнения хода мы каждый раз проверяем тип каждого узла игровой карты. В данный метод кода можно добавить генерацию "Елок" в случае если поле данного узла не принадлежит дороге. Чтобы елок не было слишком много, ограничим шанс появления елки в 20%.

    var random = new Random();var elkaChance = random.Next(1, 101);if (elkaChance < 20){// рисуем елку}
    
  3. Чтобы дорожное полотно было похоже на дорожное полотно можно нанести прерывистую разметку проходящую посередине элементов дорог, как раз соединяя точку начала и конца каждого элемента дороги. Чтобы данная разметка была более естесственной, воспользуемся фигурой Polyline передав фигуре коллекцию точек элементов дороги.

var polyLinePointCollection = new PointCollection();foreach (var roadElement in _roadElements){    if (polyLinePointCollection.Count == 0) polyLinePointCollection.Add(new Point(roadElement.StartPoint.X + 5 + _deltaX, roadElement.StartPoint.Y + _deltaY));    polyLinePointCollection.Add(new Point(roadElement.EndPoint.X + 5 + _deltaX, roadElement.EndPoint.Y + _deltaY));}var polyLine = new Polyline(){    Points = polyLinePointCollection,    Stroke = Brushes.White,    StrokeDashArray = new DoubleCollection() { 6, 4 },    StrokeThickness = 2};

Дорожные знаки опасного поворота

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

Angle_\text{curr} \text{-} Angle_\text{prev} > 70

Бывают случаи когда один угол +178, а второй -178. Реальная разница между данными углами всего 4. Для решения данной задачи нужно добавить условие, что угол будет опасным при разнице углов меньше 290. Формула изменится к данному виду:

70 \leq Angle_\text{curr} \text{-} Angle_\text{prev} \leq 290

Код программы

В моем GitHub

Подробнее..
Категории: C , Net , Разработка игр , Гонки , Игра

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

14.07.2020 18:11:56 | Автор: admin
Лето время каникул и низкий сезон для образовательных проектов. За эти три месяца дети могут забыть до четверти знаний, полученных в классе и дома. Для того чтобы вовлечь детей в повторение математики на каникулах, мы делаем образовательные игры.

Сегодня я расскажу о нашем опыте в такой лернификации мультиплеерных игровых механик и адаптации их для детей от семи до одиннадцати лет на примере новой онлайн-игры Формула 1+1. За несколько месяцев работы в тестовом режиме (игра доступна только 10% пользователей платформы) в ней приняли участие 95 тыс. игроков, а самые упорные провели в ней больше 100 часов, то есть более 6 тыс. игр. Я постараюсь показать, как мы реализуем лернификацию процесс, когда мы не пытаемся сделать интересной учебу, а напротив добавляем элемент обучения в игру.


Карта гонок в игре Формула 1+1

Игра Формула 1+1 мультиплеерные гонки, где на скорость автомобиля влияет решение примеров устного счета: чем быстрее и больше правильных ответов будет давать игрок, тем быстрее он будет ехать. За победу в заезде игрок получает опыт (поднимается в рейтинге) и монеты, на которые можно покупать новые, более мощные на вид машины.

Какие цели мы ставили


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

Мы стремились:

Учесть особенности детского восприятия


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

Показать ценность игры взрослым


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

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

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

Игровая механика


Ядро геймплея


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

В пользу мультиплеера выступает наш удачный опыт проведения различных соревнований на портале и обилие успешных мультиплеерных мобильных игр на рынке: Brawl Stars, Clash of Clans, Clash Royale и подобные. Так у нас получились гонки, где в онлайн-заезде два ученика соревнуются в том, кто быстрее доедет до финиша.

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

Гоночные заезды недолгие всего пять арифметических примеров с тремя вариантами ответов, которые одновременно показываются обоим игрокам. Вся гонка занимает примерно полторы минуты.


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

Второстепенные механики


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

Чтобы добавить гонке вариабельности (читай реиграбельности), мы придумали бонус за быстрые ответы. Если игрок два раза подряд дает правильные ответы быстрее соперника, его автомобиль еще чуть-чуть продвигается вперед.

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

В каждой категории вопросы генерируются во время игры. В отличие от заранее прописанных примеров, этот способ не только сильно расширяет количество заданий, которые может встретить ученик, но и дает нам возможность регулировать их сложность в зависимости от класса. Мы выделили четыре уровня сложности, которые соответствуют нормам 1, 2, 3 и 4 (и выше) класса.

Например, ученики 1 класса умеют считать только в пределах 20, а в 4-м дети решают примеры с трехзначными слагаемыми и переходом через один десяток. С заданиями последнего уровня без калькулятора справится не каждый взрослый на один пример отведено всего десять секунд. Попробуйте прямо сейчас быстро выполнить задание на сложение с двумя переходами через десятки: 574 + 349.



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

Хотя у портала и огромная аудитория в 8 млн учеников, игрокам может не хватать соперников в онлайне. Чтобы не заставлять детей долго ждать подходящего партнера по игре, мы ввели в игру ботов. Бот-соперник выглядит как обычный игрок. На основе рейтинга игрока боту присваивается соотношение правильных и ошибочных ответов: сильные игроки получают сильного бота, слабые слабого.

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

Персонаж: детали и нюансы


Три составляющие персонажа игрока


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

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

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



Авторизация 0+


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

Мотивация


1. Награда за сыгранную партию


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

Кстати, когда мы тестировали разные модели авто с детьми, самыми крутыми они называли не суперкары и не новинки автопрома, а модели, которые видели в семье.



2. Прокачка в нескольких направлениях


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

3. Личный рейтинг


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

Для расчета рейтинга игрока мы используем коэффициент Эло, часто применяемый в спорте (шахматы, футбол, теннис). Способности в счете у детей сильно различаются не только от года к году, но и внутри класса. Кто-то научился считать еще до школы, а кто-то в 1 классе только знакомится с цифрами. Поэтому мы должны подбирать соперников, учитывая не только класс игрока, но и его способности. Иначе слабому ребенку будет грустно играть с сильными игроками, а сильному быстро надоест постоянно выигрывать.

Рейтинг Эло метод расчета относительной силы игроков в парных играх. Все новые игроки получают стартовое значение рейтинга. После гонки с соперником рейтинг обоих изменяется в зависимости от победителя и значений рейтингов обоих игроков. Если ребенок выиграл у партнера с более высоким местом в рейтинге, его рейтинг вырастет больше, чем если бы он выиграл у соперника на более низком месте. Таким образом сильный игрок, постоянно выигрывая, будет увеличивать свой рейтинг, пока не дойдет до равных ему, а шанс на победу не составит 50/50.


Игроки с меньшим уровнем могут оказаться выше в рейтинге.

4. Рейтинг класса


Как показывает наш опыт, дети с удовольствием соревнуются целыми классами, поэтому мы добавили в игру и рейтинг класса. Чтобы решить проблему разной численности классов (от нескольких учеников до 35) и чрезмерного рвения к первым местам, мы разработали отдельную систему расчета классного рейтинга.
  1. Очки для рейтинга класса игрок получает только за первые пять заездов в день в режиме Микс.
  2. Количество получаемых очков зависит от численности класса. Если каждый ребенок в каждом классе будет участвовать в пяти гонках в день и выигрывать, то эти классы наберут одинаковую (максимальную) сумму очков класса вне зависимости от количества учеников. Эта сумма становится основой для расчета баллов рейтинга для всех классов в игре.
  3. Эта максимальная сумма должна хорошо (без остатка или с наименьшим остатком) делиться на количество дней в месяце, на пять гонок, на различное количество детей в классе и на три (за проигрыш полагается от выигрыша). Это важно, потому что ученики 14 классов еще не знают дробей.
  4. Для подбора наилучшего значения этой максимальной суммы мы написали скрипт, который перебрал несколько сот тысяч значений и выбрал наиболее подходящее число 890 100. Сумма вознаграждения за заезд получается в виде целого числа, при этом не громоздкой. Например, в классе из 30 человек за победу в заезде игрок получит 198 очков класса.


Матрица расчета баллов

Вывод


У нас получилась игра, очень похожая на обычную онлайн-игру, но с реальным образовательным эффектом, при этом адаптированная для детей 711 лет. Главная механика игры служит улучшению навыка счета у ребенка. Первые результаты показывают, что дети готовы проводить в ней огромное количество времени: на момент написания этой статьи мы насчитали более 95 тыс. активных игроков (при том, что игра все еще находится в тестовом режиме и доступна только 10% учеников Учи.ру). Реакция родителей на Формулу 1+1 тоже положительная.

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

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru