Вопрос или проблема
Симуляторы вождения поездов, такие как Odawara Line Simulator или Densha de Go!, популярны в Японии.
Управление:
- Ускорение
- Тормоз
Цель:
- Остановиться в пределах нескольких сантиметров от целевого места.
- Прибыть точно ко времени.
- Побеждает тот, у кого наименее резкие тормоза, более медленный в поворотах.
Игры, которые я нашел, работают офлайн.
Вместо этого я хочу соревноваться с водителем поезда, на котором я еду прямо сейчас (и, возможно, с другими игроками, едущими на том же поезде).
Требования:
- Определить, в каком поезде я сейчас еду, вероятно, используя GPS и данные о поездах.
- Определить момент, когда настоящий поезд начинает движение, используя распознавание звука звонка и датчик движения, и позволить мне начать мой симулятор в то же время.
- Собрать статистику о времени и плавности движения настоящего поезда, вероятно, используя датчики моего устройства. Ошибки в реальном мире крайне редки, поэтому это можно упустить.
- Сравнить статистику после того, как оба наши поезда остановились на следующей станции.
- Работает на Android.
Бонус за влияние погоды (дождь/снег ухудшает эффективность тормозов), бонус, если данные, собранные с игроков, используются для улучшения модели симуляции, огромный бонус, если игра и данные являются открытыми.
Ваша игра кажется, может стоить миллионов на открытом рынке для фактического расписания поездов. Я думаю, что немцы и японцы используют старые, но очень стабильные программы, которые делают намного меньше, но очень надежны. Возможно, они заинтересуются ПОСЛЕ того, как вы запустите программу, а не до, поскольку в мире полно воров.
Я предлагаю вам начать с простого GUI через CodeBlocks 17.12 как минимум на Microsoft (64 bit) Windows 7. Не используйте CodeBlocks 20+, так как я обнаружил там некоторые лазейки. И уж точно не используйте никакую версию Microsoft Visual (C++ или Studio после 6 sp5), так как там еще больше лазеек. И не используйте компиляторы Microsoft по тем же причинам.
Используйте C++11 для написания программы.
C++11 не так ограничен, как более поздние версии C++ в плане обратной совместимости и не так требователен к операционной системе, как более поздние версии C++. Многие промышленные системы уже закодированы с C++11. Поскольку “если это работает, не трогай”, это распространенный принцип в бизнесе, программы, написанные на более поздних версиях C++, могут быть отвергнуты. Опять же, программа, закодированная на C++11, имеет больший потенциал для коммерческого принятия из-за восприятия как более совместимой в обратном направлении. И это очень важно: коммерческое использование вашей программы будет, вероятно, теми, кто уже вложил миллионы в системы, для которых они могут покупать программное обеспечение.
C++11 легко изучить. Он даже проще, чем Visual Studio, которую я раньше часто использовал для некоторых продвинутых программ, пока не решил, что хочу делать больше. В интернете много помощи, если вы сможете пройти мимо поклонников всего нового и блестящего и дойти до действительно полезного кода.
Я говорю: “Пишите сами”. Поскольку вы начали эту тему, я надеюсь, что вы достаточно умны и мотивированы, чтобы довести дело до конца. Держите меня в курсе о вашем прогрессе.
Ответ или решение
Создание симулятора водителя поезда, который позволит вам соревноваться с реальным машинистом на поезде, в котором вы находитесь, — это уникальная и амбициозная задача, сочетающая в себе технологии виртуальной реальности, сенсоров и аналитики данных. Подобный проект требует глубокого понимания как программирования, так и специфической логики работы поездов.
Чек-лист ключевых этапов разработки:
1. Идентификация поезда и синхронизация старта:
- Спутниковая навигация (GPS): Начните с использования GPS для точного определения местоположения пользователя. Используйте данные поездов, чтобы определить, на каком именно поезде находится пользователь. Это может включать в себя сопоставление координат GPS с расписанием движения поездов.
- Аудио и датчики движения: Используйте распознавание звука для определения начала движения — например, звук колокольчика или изменения вибрации, зафиксированной акселерометром устройства.
2. Сбор и анализ данных:
- Сенсорные данные: Ваше приложение должно уметь собирать данные о резкости торможений, ускорениях и смене скоростей с использованием акселерометра и гироскопа устройства.
- Встроенная аналитика: Важно, чтобы внутри приложения была реализована система для анализа времени прибытия и плавности хода поезда.
3. Сравнение результатов и улучшение модели:
- Обработка и сопоставление данных: Разработайте алгоритмы, которые смогут сравнительно анализировать данные реального поезда и симулятора пользователя, исходя из показателей времени и плавности.
- Учёт погодных условий: Дополнительные баллы можно заработать, предусматривая влияние различных погодных условий на эффективность торможения и управления поездом.
4. Разработка приложения Android:
- Используйте язык C++11: Вы разработаете свой симулятор, используя C++11, так как он предоставляет гибкость и поддерживает совместимость со старыми системами. Это поможет вам создать производительное и эффективное приложение, совместимое с большей частью существующих систем.
- Система отзывов и обновлений: Позвольте пользователям вашего приложения отправлять данные о своих игровых сессиях. Это не только улучшит симуляцию, но и создаст сообщество, заинтересованное в развитии проекта.
5. Открытый код и развитие сообщества:
- Открытый исходный код: Выпуск проекта с открытым исходным кодом может стимулировать дальнейшие улучшения со стороны сообщества разработчиков и повысит доверие пользователей.
- Сотрудничество с железнодорожными компаниями: В случае успеха, ваш проект сможет заинтересовать компании, стремящиеся оптимизировать свои собственные тренажёры и системы.
Применение метода FOREST в вашем проекте:
- F(представление фактов): Чётко определите цели проекта и его технические характеристики.
- O(ориентация на ценности): Подчеркните инновационность вашего подхода и его потенциал улучшить существующие системы.
- R(результативность): Докажите эффективность вашей разработки конкретными примерами применения.
- E(вовлечение): Создайте привлекательное пользовательское взаимодействие с помощью интуитивного интерфейса и отзывчивых функций.
- S(инновационные решения): Настройте динамическое обновление симуляции на основе собранных данных.
- T(целевой контекст): Адаптируйте свой продукт, исходя из нужд конечных пользователей.
Мы уверены, что такой проект способствует не только техническому прогрессу, но и представляет интересный коммерческий потенциал, особенно на таких развитых железных дорогах, как в Японии и Германии.