Skip to content

A wrapper for engines using the monster-chess move generation library.

License

Notifications You must be signed in to change notification settings

chesstastic-org/monster-ugi

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

32 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

monster-ugi

Overview

monster-ugi is a fairy chess engine wrapper written in Rust for engines written using the monster-chess move generation library. It easily allows you to expose an API for your engine, and connect it to one of the UCI, UAI, or UGI protocols. It primarily aims for your engine to be compatible with cutegames. Cutegames uses the UGI protocol, which is a superset of the existing UCI and UAI protocols respectfully. To use it, implement the EngineBehavior trait:

impl<const T: usize> EngineBehavior<T> for RandomEngine<T> {
    fn select_move(&mut self, board: &mut Board<T>, time_control: TimeControl) -> MoveSelectionResults {
        let best_move = *board.generate_legal_moves(0).choose(&mut self.0).expect("Could not find a move to pick between for random movegen.");
        MoveSelectionResults {
            best_move,
            evaluation: 0
        }
    }

    fn get_engine_info(&mut self) -> EngineInfo {
        EngineInfo {
            name: "Random",
            author: "Corman"
        }
    }

    fn is_ready(&mut self) -> bool {
        true
    }

    fn stop_search(&mut self) {}
}

Then create an instance of engine:

let engine = Engine {
    behavior: RandomEngine::new(thread_rng()),
    game: Chess::create()
}

and run UGI.

run_ugi(engine);

License

monster-ugi available under the MIT license. See LICENSE for the full license text.

About

A wrapper for engines using the monster-chess move generation library.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages