Log‐01 | Gearing Up - AncientNimbus/rb-chess GitHub Wiki
Gearing Up
After months of hard work learning Ruby, I have finally reached the final section of the Ruby course where the assignment is to create a chess game that's playable in the terminal. It is a very exciting project for me as I am a fan of chess and I am eager to put everything I have built in my earlier projects into a user-friendly game system.
Below is a short summary of features I am considering to include in this project:
In the Mastermind project, I have explored coloured interface, animated text output and minimax solver. The animated text output presented a responsive experience which is worth revisiting for this project.
In the Hangman project, I have explored setting up a mini terminal app wrapper, external text file and user data serialisation, where users have the opportunity to first load up the app wrapper, explore available games and launch them via terminal command pattern. Whilst the game itself features autosave and player data retrieval, where game sessions are persistent. Since chess can be a long game, robust data serialisation will be a core feature to explore.
In the Connect Four project, I have explored methods performance optimisation, localisation-ready system, and with the core objective being incorporating TDD in my workflow. With that in mind, I focused my efforts on making sure all the critical elements are tested such as core game logic and file retrieval operations. One of the core logics in Connect Four is validating possible winning sequences that could occur in all 8 directions. I think the algorithm I have written can be repurposed for the chess game, though it is too soon to know if that's the case.
In summary, I am hoping to fine-tune my existing game system further and focus on making a robust chess game that's enjoyable to interact with given the current scope.
Gameplay research
To understand chess better, I decided to first research the gameplay of chess, how different moves are narrated and commentated throughout international competitions.
I have discovered that Algebraic notation is the most commonly accepted method to represent chess moves and with it being the only form of notation recognised by the international chess body, I will certainly keep this standard in mind when working with internal logic as well as the user-end experience. That being said, and perhaps it is due to the fact that I am not too familiar with algebraic notation at this stage, I find it somewhat rigid to engage with in a terminal setting. Hence, I will also be exploring the possibility of allowing players to use a more expressive and natural way to express chess movements such as 'knight to h3' which will represent 'Nh3'.
This is the end of my first dev log for this project. I hope you find it insightful. Stay tuned for more updates in the near future.