Giter Club home page Giter Club logo

mi-intento-final-de-travian's Introduction

MyTravian

MyTravian will be a platform for analyzing Travian's data with machine learning algorithms.

The project born during my master's thesis and I am still pushing the idea.

Roadmap for the Beta

[x] Collector for fetching the data
[x] Storage system
[] Medusa for player predictions
[] Satellite tables for pushing the data to the front
[] Front for showing the results

Arch Overview

The platform is divided in serveral Erlang style applications and it drives itself using events.

Apps:

MyTrvian Arch

mi-intento-final-de-travian's People

Contributors

sirwerto avatar

Stargazers

 avatar

Watchers

 avatar  avatar

mi-intento-final-de-travian's Issues

Define `@opaque` types in `TTypes`

Make the Travian types from TTypes @opaque and ensure that the dialyzer runs properly

The aim of this change is to ensure we are not leaking types(bugs) somewhere

State, Population increase and Village increase in `MedusaTable`

Add 3 new fields to MedusaTable

  • State
    A field to reflect the transtition between being active and inactive inactive, active, become inactive and become active
  • Population increase
    The population increased in all the villages
  • Village increase
    Increse in number of villages

Clean no-working test

There are some test architecture test that need some refinement.

put it on hold for including the mix test in the CI

The need of property testing in Medusa pipeline

Property testing is better than unit testing discovering corner cases in algorithms.

The goal of this issue is to replace all the pipeline's unit test by property test. Test are going to be written with Proper.

This issue is treated like a bug.

Useful links here, here and here

Clean `Satellite.MedusaTable`

Clean the non updated entries of Satellite.MedusaTable while the collection is started.

Maybe a GenServer implementation that listen to the event and triggers the cleaning of non updated entries.

Store unique files per identifier

Maybe in the future, Travian will delight us with files that we will need to fetch only once from the server.

For example, the terrain of the map or the metadata of the server

It would be helpful to have in Storage.open and Storage.store the option to target a unique file instead of a date

Create common functions in `TTypes`

Define 2 new functions and its types documentation

  • Encode/decode tribes in Travian
  • server_id to valid path and viceversa
@spec encode_tribe(tribe_atom :: tribe()) :: tribe_integer()
@spec decode_tribe(tribe_int :: tribe_integer()) :: tribe()
@spec server_id_to_path(server_id :: server_id()) :: server_id_path()
@spec server_id_from_path(server_id_path :: server_id_path()) :: server_id()

Move the medusa model part to MedusaPy repo

I am moving the medusa python part to this repository and I am applying some changes that needs to be modified in Medusa.Step2 and Medusa.Port part.

Mainly, the new output of the port will be

{model_used, player_id, is_inactive?, inactive_probability(between 0 and 1)}

The medusa.py part is going to changed too.

TODO

  • Update Satellite.MedusaTable struct with a new inactive_probability field
  • Update the python port files with the new MedusaPY interface
  • Update the elixir port part and the Medusa.ETL.enrich_map function

store raw map.sql

Store the raw map.sql file as it is.

It should be done in the Collector app just before processing it with {"raw_snapshot", ".c6ber"} as store options.

It should be compressed binary format similar to the current snapshot

store raw map.sql file

The collected raw file is not being stored but can be helpfull for doing recoveries in case something goes wrong.

It should be added in the collector snapshot phase Collector.GenWorker.Snapshot as raw_snapshot.c6bert

Add *_server_id fields while creating `Collector.SnapshotRow`

During the creation of the Collector.SnapshotRow a village_id, player_id and alliance_id are created based on the respective village_server_id, player_server_id and alliance_server_id.

The idea is to keep thoose fields too in the SnapshotRow for not having to comput back the values and becuase we don't know how this values are going to be computed in the future.

Mas info

Agrega mas info al readme. Ando buscando un serv de travian pra autohospedar

Player's aggregation flow

After processing the map.sql in the Collector, perform an aggregation per player with all the possible features that we can create.

players_snapshot.c6bert

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.