Giter Club home page Giter Club logo

micro's Introduction

Идея

Основа

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

Цены акций

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

Ход игры

  • Раунд 1 - "Покупка". Игроки приобретают акции доступных компаний. Принимать решения можно на основе исторических данных о ценах. В случае покупки большего числа акций компании, чем доступно на данный момент, акции уходят тому, кто раньше их купил.
  • Раунд 2 - "Продажа". Игроки продают акции по их стоимости. Подводится итоговый счет. Выигрывает тот, кто имеет на балансе больше средств.

Идеи для модификаций

  • Реализация игры в несколько ходов (несколько ходов для покупки, несколько ходов с возможностью выбора когда продавать акции)
  • Реализация торговли акциями между игроками
  • Реализация симуляции экономики (вбросы, влияние спроса/предложения, деление компаний на группы компаний по отраслям деятельности с разным экономическим поведением)
  • Реализация проекта в виде бота-игры в Telegram

Архитектура

  1. gateway - proxy и load balancer на основе Nginx. Проксирует запросы на stateful (endpoint - /api/v1/stats/) и worker (остальные endpoint - /api/v1/).
  2. worker - python (Flask API) + gunicorn, реализует набор API:
  • /api/v1/start-game/ - начало одной из игр
  • /api/v1/stop-game/ - конец одной из игр
  • /api/v1/auction/ - покупка акций
  • /api/v1/company/info/ - получить информацию по компании (история и цена на акции)
  • /api/v1/gamer/info/ - получить информацию об игроке (баланс и количество акций)
  1. mysql - база, которая хранит всю инфу по текущим играм
  2. stateful - сервис, который хранит метаинфу между играми (статистика + потенциально может использоваться для организации серии игр) - python (Flask API) + gunicorn, реализует entrypoint:
  • /api/v1/stats/

Схема: https://miro.com/app/board/uXjVOZ0rN-w=/?invite_link_id=798804507188

Сборка и запуск

  1. docker-compose build worker && docker-compose build stateful

  2. docker-compose up -d

  3. curl 127.0.0.1:4000/api/v1/...

  4. enjoy

micro's People

Contributors

sncodegit avatar

Watchers

 avatar  avatar

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.