GithubHelp home page GithubHelp logo

idsia / newtechnowar Goto Github PK

View Code? Open in Web Editor NEW
3.0 5.0 0.0 28.14 MB

New Techno War, an IDSIA project in collaboration with Armasuisse.

License: GNU Lesser General Public License v3.0

Dockerfile 0.11% Python 42.30% Jupyter Notebook 48.25% CSS 1.62% JavaScript 7.68% HTML 0.04%
xai explainable-ai ml machine-learning strategy-game turn-based-strategy

newtechnowar's Introduction

New Techno War

Crema

New Techno War is tabletop wargame developed by Helvetia Games in collaboration with Armasuisse. New Techno War makes it easy to simulate future systems integrating new technologies while stimulating discussions. The goal here is not to win, but to understand the strengths and weaknesses induced by these future systems in given tactical scenarios.

In this collaboration between IDSIA and Armasuisse, we aim to build a companion agent based on XAI that can help the players make strategical decisions and solving various combat scenario with different goals and constraints.

Structure

This repository is structured in three parts:

  • code contains all the Python code necessary to play the game, develop agents or run experiments;
  • frontend contains a WebApp build with ReactJS that can be used by humans to play the game in a web browser; and
  • docs contains various kind of documentation.

Demo version

In order to run a demo version, which is the game with the WebApp as frontend, use the following standard Docker Compose commands:

docker-compose build
docker-compose up -d

The WebApp will be reachable at the port :8080.

More details

For more details on how to use this repository, please check the Wiki for all the details.

newtechnowar's People

Contributors

alessandroantonucci avatar cbonesana avatar nicolallegra avatar qhedgerlab avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

newtechnowar's Issues

Store games in database

For demo purposes, store the played games and recorded actions in a database. In this way, we can analyze some peculiar behavior of agents and build a record set of game that can be used in machine-learning based approach to the problem.

Functional Specifications

  • Add a database (maybe using SQLAlchemy)
  • The database need to keep track of:
    • parameters of game
    • if a game is completed or not
    • each action as a single transaction
  • Add an agent to replay the game: this agent will play all the actions stored in the database
  • (Optional): move forward and backward in time

Current Implementation

  • Agents already stores an history of performed actions

Extends the Responses to follow Move path

It exists a variant of the response mechanism that allows to respond to a Move action. This is something not written in the rule book. The variant rule is the following:

When an enemy figure moves into the LOS of an ally figure, this ally figure can "respond" to the movement.
In any case, the enemy figure is stopped in the location where the response happens.

The response is intended to happen at the same time of an action. This variant allows the defending player to create ambushes and slow the advance of the enemy team.

It is still in doubt if to implement this mechanic or not.

Functional Specifications

  • Allows response to Move actions.
  • Allows to attack the path (hexagon) of a unit.
  • When these response happens, move back the moving unit where the response happens.
  • All other rules of responses apply.

Current Implementation

  • Move already keep track of the path.

Implement use of smoke

In the tabletop game it is possible to use "smoke screens", a defensive support weapon that creates a temporary block to LOS on an hexagon. This is still not implemented.

Functional Specification

  • The smoke launcher can target only an empty hexagon.
  • From the shot moment, the hexagon will have the smoke status.
  • Smoke can have different sizes: single hex or groups of three. For now, keep single hex.
  • The smoke has a timeout of 3 turns.
  • Each turn update will reduce the smoke by 1. Reaching 0 the smoke has no effect.
  • Show in the frontend a counter on the smoke.

Current Implementation

  • A smoke layer is available on the GameState object.
  • An AttackGround action already exists.

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.