Skip to main content

Dottore Genius Invokation TCG Simulator

PyPI Version Documentation Status Python 3.10 Coverage Status license

A Genshin Impact Genius Invokation TCG simulator intended to be used for Reinforcement Learning.

This package aims to help programmers code things based on Genius Invokation TCG with ease. e.g. AI, desktop application, website...

The simulator is modeled as a finite state machine, where all game states are immutable. Optimizations are done to make sure immutability doesn't impact performance.

Basic rules of Genius Invokation TCG can be found on Fandom.

Installation

Please make sure your Python version >= 3.10 before installing.

pip install dgisim

RL Environment Usage Example

from dgisim import LinearEnv

env = LinearEnv()
rl_net = ...  # your RL network

for episode range(100):
    env.reset()
    game_state, encoded_state, reward, turn, done = env.view()

    while not done:
        ...  # do the training on the encoded_state
        game_state, encoded_state, reward, turn, done = env.step(action)

For more details please check the documentation.

Try the Simulator in Browser

Try the Simulator in CLI

Run Locally

Once installed, you may start by trying the CLI to play the game first.

You might want to run a simple python program like this:

from dgisim import CLISession

session = CLISession()
session.run()

Run Remotely

You may try the CLI online on Google Colab

CLI Simple Usages

See CLI's tutorial for showcase and explanations of the CLI.

Features

The package allows:

  • Customization of player agents
  • Customization of characters
  • Customization of cards
  • Customization of game modes

This simulator is modeled as a finite state machine, which means any intermediate state can be standalone and be used to proceed to other states.

The GameState class represents some game state in the state machine. It uses passed in Phase object to determine how to transform to another state, which means the game flow is highly customizable. (Default Mode and some Heated Battle Modes are implemented already)

Everything in the GameState object are immutable, so traversing game history and exploring different branches of possibilities in the future are not error-prone. stable simulator did optimizations for immutability. The unchanged data are shared among neighbouring game states.

GameState implements __eq__ and __hash__, enabling you to use any game state as a key in a dictionary, and discover game states on different 'game branches' being actually the same.

An ActionGenerator can be returned by any valid GameState to help generate valid player actions.

Development Milestones

Currently a full game can be played with any combination of the characters and cards implemented.

  • Implement all game phases (Action Phase, End Phase...)
  • Implement all cards (158/248 implemented) (latest-details) (stable-details)
  • Implement all characters with their talent cards (36/71 implemented) (latest-details) (stable-details)
  • Implement all reactions, death handling, revival handling etc.
  • Implement all game logics to support the implemented cards and characters
  • Implement interactive CLI for better debugging experience
  • Ensure 99% unittest coverage checking behaviour of characters and cards
  • Implement lazy player agent for minimal testing purposes
  • Implement random player agent for testing purposes
  • Implement player action validity checker
  • Implement player action choices provider

Future Plans

I have the plan to implement a simple cross-platform GUI interface for the simulator. But that will be in a separate repo.

Once this project is done, I'll be reading relative papers and develop an AI for this game. The AI is supposed to be used for learning strategies and making decks, but not against another player directly.

Metadata

Release files for dgisim 0.5.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for dgisim 0.5.0
File Size Uploaded
dgisim-0.5.0.tar.gz 151.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for dgisim 0.5.0
File Interpreter ABI Platform
dgisim-0.5.0-py3-none-any.whl Python 3 none any Details

Total release size: 328.6 kB

Release files / dgisim-0.5.0.tar.gz

Download URL dgisim-0.5.0.tar.gz
Size 151.1 kB
Tags Source
SHA-256 checksum
How to use checksums
1690bee2dca2bd36cc84a54393ebca86910c4ee5d92d7a9b5da4e4f27b035541
BLAKE2b-256 checksum
How to use checksums
324b42d2bfdaccb1f96a654ff2bc61cad09b6d13b5403d1779fae06d1b1e64ac
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.10.11

Release files / dgisim-0.5.0-py3-none-any.whl

Download URL dgisim-0.5.0-py3-none-any.whl
Size 177.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0411b63635a8e837a10ff4225dedbc10ed102efdcf1a7a446525117219657c34
BLAKE2b-256 checksum
How to use checksums
7baaf230eb41fa095ba959e4b97351d946898698a052a0d7ef7303904f54f9b6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.10.11
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page