I have just release my first chess engine Affinity Chess on Github. It is written from scratch in C# as a hobby project of mine, some more information about the features included can be found on the Github link posted above. Here is some additional background about the project for those interested:
As a mechanical engineer in my professional life I started programming for fun in Python on my spare time 4-5 years ago. I found it really fun (and frustrating at times...) to create own applications and decide what happens when a user clicks here and there.
As a chess fan (hit me up if you want to play on chess.com sometimes) I have always been fascinated with the brain behind chess engines so I wanted to try and create my own. My first chess engine Endamat Chess was written in Python and it also has its own GUI which was fun creating.
Eventually the limitations of Python/Pygame made me switch platform to Unity. This is where I started learning C# and once again got addicted to programming a chess engine, much because C# is way faster than Python. The project started around new year this year and lots of the code and concepts are inspired and even taken straight from Endamat Chess, translated into C# code. It also has some new features added such as transposition tables, razoring and late move reducitons.
I have no clue about the strenght of version 1.0, but I know it is mediocre given my current level of experience. It has a speed of around 400-800 kNPS on my machine when playing in Arena, uses PeSTO for evaluation and has some pruning features implemented. What limits the depth now seems to be the amount of nodes it spends in Q-search, it always seems to spend around 70% or more of nodes in Q search (q nodes / total nodes).
I am not a programmer, and even less a C# programmer, so the code is probably very inefficient at places. If you would happen to look through some of the code and find something I have done in a stupid way then please let me know, I am always open to learn new things. Also if you have any ideas of logical next steps I am open for input

- Limit Q search, not sure how yet though...
- Try to optimize move gen and make/unmake move.
- Implement staged move generation.
- Play around with another evaluation concept to include more features than just PST.
Have fun with it and please let me know if you decide to play around with the engine. Would be cool to see some games vs you

Huge thanks to the community for all the help in the forums, and special thanks to Thomas for some guidance regarding more complex concepts. Author of Cosette and Maksims YouTube series have also been of great help.