Hearthshroud is one of two things:
- A Hearthstone game engine library.
- A simple Hearthstone executable with a console UI.
Library uses a monadic API which drives the game engine for any HearthMonad
:
-- MonadPrompt @ https://hackage.haskell.org/package/MonadPrompt
type HearthMonad m = MonadPrompt HearthPrompt m
Hearth.Engine.runHearth :: (HearthMonad m) => Pair PlayerData -> m GameResult
- Model cards (and abilities, effects, etc.) as a pure data AST. This is the card DSL.
- Model enforces game constraints at the type level.
- Engine interprets the cards. (As opposed to the cards directly manipulating the environment.)
- AI directly interprets the same cards as well.
Sample game client is Hearth.Client.Console
and can be seen in action by:
Hearth.Client.Console.main :: IO ()
- Clone repository
- Use
cabal
tool to build/install
For those unfamiliar with cabal
, search Google for "haskell cabal how to use" (or whatever).
- Probably the best way to ask me a question or tell me a comment is to just create an issue directly for the project (even if it is not a real issue).
- I am sometimes on
#hearthsim
IRC.