DOBRO / binbo

Chess representation written in Erlang using Bitboards, ready for use on game servers
Apache License 2.0
123 stars 12 forks source link

Decouple Chess Functionality from Process Architecture #1

Closed GrantJamesPowell closed 3 years ago

GrantJamesPowell commented 4 years ago

Hey Sergei,

My name is Grant, I'm an Elixir Developer out of Atlanta.

I'm reading through this project and it looks awesome. I appreciate you doing the work and making this public!

I'm working on a project for students to write chess bots and play against each other. I'm hoping to have my own process architecture, from my limited understanding of the docs right now, it seems that a binbo game is coupled to a process. I'm open to doing the work of splitting out the chess functionality from the process structure. My end goal would be to have a set of pure functions that can represent a chess game that I can plug into any process architecture.

My questions 1.) Do you have any guidance that would make this easier? 2.) Would you accept a PR that split out the process structure from the chess functionality?

Best, Grant

DOBRO commented 4 years ago

Hey Grant, thank you for your interest in the project.

Every binbo's game, like everything in Erlang/Elixir, is a process. The main advantage of this approach is that we achieve good performance since the process saves the game state after each move. If you separate them, you'll get significant performance degradation.

If "decoupling" means that you want to call pure chess functions avoiding sending messages to the game process, you might want to call functions in binbo_game module directly.