v2g-demo / v2g-demo Goto Github PK
View Code? Open in Web Editor NEWThe goal of this demo is to illustrate Vehicle-to-grid (V2G) technology in simple multiplayer browser game
Home Page: http://v2g-demo.com
License: Apache License 2.0
The goal of this demo is to illustrate Vehicle-to-grid (V2G) technology in simple multiplayer browser game
Home Page: http://v2g-demo.com
License: Apache License 2.0
На главной навигационной панели должны быть ссылки:
Getting Started - переименовать в V2G Demo и роутить на главную страницу
Components - переименовать в About и роутить на страницу About
с правой стороны только ссылка на гитхаб https://github.com/v2g-demo/v2g-demo
Микросервис симулирует поведение автомобиля. На сервис вход получает маршрут движения и игровое время от сервиса времени. Сервис должен рассчитывать и отправлять в игру координаты автомобиля, данные километража и заряд батареи. Новые координаты должны рассчитываться каждую секунду исходя и з тикущих координат, времени и средней скорости перемещения 50км/ч. Формула расчета будет в задаче.
Формула расчета разряда батареи относительно расстояния также будет в задаче
https://github.com/Asymmetrik/ngx-leaflet
Нужно сделать компонент отображения карт на основе библиотеки Leaflet
Это даст возможность переключать провайдеров карт и уменьшить количество запросов к Google maps API
Для удобства конфигурирования карт для игры нужно приложение конфигуратор.
Технически может быть реализовано на MVC веб фреймворке
Есть задача для бэкенда, нужно написать метод, который будет получать на вход два объекта и строить маршрут между ними с помощью Google Routes API. Нужно сделать контроллер localhost:8080/api/buildroute?from=1&to=2 в нашем API, который будет читать из БД координаты объектов, звать метод построения маршрута и возвращать во вфронтенд json от google api
Допустим, мы делаем реальную систему трекинга автомобилей на карте. Где-то там у нас ездят машинки с GPS датчиками и сообщают свои координаты и заряд батареи. Прямо Настоящий интернет вещей. Только вот реальных машин в демо игре нет, и надо делать их симуляторы
Использовать гео данные реальных объектов.
Использовать технические характеристики реальных электромобилей(емкость батареи)
и т.п.
Компонент должен отображать список игровых карт на главной странице фронтенда
список игровых карт нужно запросить с бэкенда
Список отображается в виде маленьких карт с именами и количеством онлайн игроков
после клика на элемент списка пользователь должен перейти в основное окно игры с отображением большой карты
При клике на объект в боковой панели должна отображаться детальная информация по этому объекту
нужно написать класс генератор игровых заданий, он должен работать в отдельном потоке и раз в X секунд создавать игровую задачу для персонажа. Игровая задача или квест говорит, что персонаж должен доехать из точки А в точку Б. нужно взять из БД всех character, найти у каждого character объект типа VEHICLE и выбрать второй рандомный объект на игровой карте. игровую задачу надо сохранить в БД, поэтому под нее нужно создать еще одну Entity
Для каждого репозитория внутри организации должны быть настроены автоматическая сборка и прогон тестов, сборка Docker контейнера
Должны быть написаны скрипты и инструкции по развертыванию рабочего и тестового окружения.
Должны быть написаны скрипты и инструкции для выкатки приложения в прод.
Базовая конфигурация
Конфигуратция должна экспортироваться формате json
https://developers.google.com/maps/documentation/javascript/examples/control-bounds-restriction
нужно сделать возможность конфигурировать параметры spring приложения через переменные окружения, нужно для удобного запуска и тестирования как локально, так и в CI. и на продакшене.
Также в рамках задачи нужно убрать API ключи из тестов
пример
google.secret.key=${GOOGLE_API_KEY}
spring.datasource.url = ${V2GDEMO_MYSQL_DB_HOST}:${V2GDEMO_MYSQL_DB_PORT}/"v2gdemo"
spring.datasource.username = ${V2GDEMO_MYSQL_DB_USERNAME}
spring.datasource.password = ${V2GDEMO_MYSQL_DB_PORT}
документация
https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html
npm run lint
должен проходить
ERROR: /home/travis/build/v2g-demo/v2g-demo/src/app/components/map/map-constants.ts[1, 31]: " should be '
ERROR: /home/travis/build/v2g-demo/v2g-demo/src/app/components/map/map-constants.ts[13, 36]: object access via string literals is disallowed
ERROR: /home/travis/build/v2g-demo/v2g-demo/src/app/components/map/map-constants.ts[32, 36]: object access via string literals is disallowed
ERROR: /home/travis/build/v2g-demo/v2g-demo/src/app/components/map/map-constants.ts[51, 36]: object access via string literals is disallowed
ERROR: /home/travis/build/v2g-demo/v2g-demo/src/app/components/map/map-constants.ts[70, 36]: object access via string literals is disallowed
ERROR: /home/travis/build/v2g-demo/v2g-demo/src/app/components/map/map-constants.ts[89, 36]: object access via string literals is disallowed
ERROR: /home/travis/build/v2g-demo/v2g-demo/src/app/components/map/map-constants.ts[108, 36]: object access via string literals is disallowed
ERROR: /home/travis/build/v2g-demo/v2g-demo/src/app/components/map/map-constants.ts[127, 1]: Exceeds maximum line length of 140
ERROR: /home/travis/build/v2g-demo/v2g-demo/src/app/components/map/map-constants.ts[128, 1]: Exceeds maximum line length of 140
ERROR: /home/travis/build/v2g-demo/v2g-demo/src/app/components/map/map-constants.ts[129, 1]: Exceeds maximum line length of 140
ERROR: /home/travis/build/v2g-demo/v2g-demo/src/app/components/map/map-constants.ts[130, 6]: Missing semicolon
ERROR: /home/travis/build/v2g-demo/v2g-demo/src/app/components/map/map.component.spec.ts[4, 28]: " should be '
ERROR: /home/travis/build/v2g-demo/v2g-demo/src/app/components/map/map.component.spec.ts[5, 29]: " should be '
ERROR: /home/travis/build/v2g-demo/v2g-demo/src/app/components/map/map.component.spec.ts[6, 41]: " should be '
ERROR: /home/travis/build/v2g-demo/v2g-demo/src/app/components/map/map.component.spec.ts[42, 44]: object access via string literals is disallowed
ERROR: /home/travis/build/v2g-demo/v2g-demo/src/app/components/map/map.component.spec.ts[61, 44]: object access via string literals is disallowed
ERROR: /home/travis/build/v2g-demo/v2g-demo/src/app/components/map/map.component.ts[2, 28]: " should be '
ERROR: /home/travis/build/v2g-demo/v2g-demo/src/app/components/map/map.component.ts[3, 31]: " should be '
ERROR: /home/travis/build/v2g-demo/v2g-demo/src/app/components/welcome/welcome.component.spec.ts[5, 28]: " should be '
ERROR: /home/travis/build/v2g-demo/v2g-demo/src/app/components/welcome/welcome.component.spec.ts[6, 37]: " should be '
ERROR: /home/travis/build/v2g-demo/v2g-demo/src/app/components/welcome/welcome.component.spec.ts[7, 29]: " should be '
ERROR: /home/travis/build/v2g-demo/v2g-demo/src/app/components/welcome/welcome.component.spec.ts[8, 41]: " should be '
ERROR: /home/travis/build/v2g-demo/v2g-demo/src/app/components/welcome/welcome.component.spec.ts[16, 41]: variable 'MockMapboxmapComponent' used before declaration
нужно сделать API метод для перемещения объекта, Для простоты мы пока не будем делать анимацию передвижения авто, в первой версии машина будет телепортироваться моментально localhost:8080/api/moveVehicle?vehicleID=1&objectID=2 Код должен проверить что перемещаемый объект имеет тип VEHICLE и сменить его координаты в БД на координаты объекта к которому перемещаем
На карте должны отображаться статические и динамические объекты с возможностью фильрации по типам.
Перемещение динамических объектов должно отображаться в реальном времени.
Карта должа уметь строить маршруты от точке к точке.
Детализация по объекта должна отображаться в отделном виджете
Game time should be accelerated and configurable. Service should provide global accelerated time to the game.
Clock multiplier gets from env variable.
Cloud native microservice should use a container-based application design approach
Checklist
https://github.com/census-instrumentation/opencensus-cpp
https://github.com/jupp0r/prometheus-cpp
Pull request to this repo
https://github.com/v2g-demo/cpp-sample-microservice
Service should use Google Places API to search and provide to the game EV chargers coordinates.
https://developers.google.com/places/web-service/client-library
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.