dgisim 0.5.0

Creator: bigcodingguy24

Last updated:

Add to Cart

Description:

dgisim 0.5.0

Dottore Genius Invokation TCG Simulator





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

Documentation
Source code
Contributing
Game design
Bug reports
Discord server

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

Website: https://jarvis-yu.github.io/Dottore-Genius-Invokation-TCG-PWA/
Repo: https://github.com/Jarvis-Yu/Dottore-Genius-Invokation-TCG-PWA

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.

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.