Giter Site home page Giter Site logo

v2g-demo / v2g-demo Goto Github PK

View Code? Open in Web Editor NEW
11.0 11.0 5.0 4.55 MB

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

JavaScript 1.64% TypeScript 36.82% HTML 4.82% CSS 3.24% Shell 0.77% Java 51.52% Dockerfile 1.20%
beginners-friendly browser-game energy-transition v2g vehicle-to-grid

v2g-demo's Introduction

Build Status Build Status codecov

Vehicle-to-grid (V2G) demo

The goal of this demo is to illustrate Vehicle-to-grid (V2G) technology in simple multiplayer browser game. Before the game starts, a gamer chooses a map - a real city or a region.

The gamer is successful man, who lives in a house with a garage and who has a electric vehicle. There are several static objects on the game map: houses, offices with a parking slots, charger stations.

===

Демо имеет цель продемонстрировать работу концепции Vehicle-to-grid (V2G) в упрощенном виде на примере браузерной мультиплеер онлайн игры. Перед началом игры юзер выбирает игровую карту - реальный город или регион.

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

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

Игроку нужно прожить в игре заданное количество игровых дней при этом показать лучший результат по полученной выгоде и принесенной пользе сети SmartGrid.

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

Diagrams

seq1

v2g-demo's People

Contributors

andreybronin avatar azure-pipelines[bot] avatar inferal avatar nothingismatter avatar olehkoniev avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

v2g-demo's Issues

Externalized Configuration backend - внешнее конфигурирование бекенда

нужно сделать возможность конфигурировать параметры 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

Map component based on Leaflet

https://github.com/Asymmetrik/ngx-leaflet

Нужно сделать компонент отображения карт на основе библиотеки Leaflet
Это даст возможность переключать провайдеров карт и уменьшить количество запросов к Google maps API

Main navigation - навигационная панель

На главной навигационной панели должны быть ссылки:

Getting Started - переименовать в V2G Demo и роутить на главную страницу
Components - переименовать в About и роутить на страницу About

с правой стороны только ссылка на гитхаб https://github.com/v2g-demo/v2g-demo

DevOps инфраструктура

Для каждого репозитория внутри организации должны быть настроены автоматическая сборка и прогон тестов, сборка Docker контейнера

Должны быть написаны скрипты и инструкции по развертыванию рабочего и тестового окружения.

Должны быть написаны скрипты и инструкции для выкатки приложения в прод.

Game quest generator - генератор игровых заданий

нужно написать класс генератор игровых заданий, он должен работать в отдельном потоке и раз в X секунд создавать игровую задачу для персонажа. Игровая задача или квест говорит, что персонаж должен доехать из точки А в точку Б. нужно взять из БД всех character, найти у каждого character объект типа VEHICLE и выбрать второй рандомный объект на игровой карте. игровую задачу надо сохранить в БД, поэтому под нее нужно создать еще одну Entity

API построения маршрута между объектами

Есть задача для бэкенда, нужно написать метод, который будет получать на вход два объекта и строить маршрут между ними с помощью Google Routes API. Нужно сделать контроллер localhost:8080/api/buildroute?from=1&to=2 в нашем API, который будет читать из БД координаты объектов, звать метод построения маршрута и возвращать во вфронтенд json от google api

Move object API - перемещение объекта на карте

нужно сделать API метод для перемещения объекта, Для простоты мы пока не будем делать анимацию передвижения авто, в первой версии машина будет телепортироваться моментально localhost:8080/api/moveVehicle?vehicleID=1&objectID=2 Код должен проверить что перемещаемый объект имеет тип VEHICLE и сменить его координаты в БД на координаты объекта к которому перемещаем

Car simulator microservice - микросервис симулирующий авто

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

Формула расчета разряда батареи относительно расстояния также будет в задаче

GameSelector component

Компонент должен отображать список игровых карт на главной странице фронтенда
список игровых карт нужно запросить с бэкенда

Список отображается в виде маленьких карт с именами и количеством онлайн игроков

после клика на элемент списка пользователь должен перейти в основное окно игры с отображением большой карты

Interactive map - интерактивная карта

На карте должны отображаться статические и динамические объекты с возможностью фильрации по типам.

Перемещение динамических объектов должно отображаться в реальном времени.
Карта должа уметь строить маршруты от точке к точке.
Детализация по объекта должна отображаться в отделном виджете

Basic game map config - базовая конфигурация игровой карты

Базовая конфигурация

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

Конфигуратция должна экспортироваться формате json

https://developers.google.com/maps/documentation/javascript/examples/control-bounds-restriction

lint errors

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

Vehicle tracking system - система трекинга автомобилей

Допустим, мы делаем реальную систему трекинга автомобилей на карте. Где-то там у нас ездят машинки с GPS датчиками и сообщают свои координаты и заряд батареи. Прямо Настоящий интернет вещей. Только вот реальных машин в демо игре нет, и надо делать их симуляторы

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.