1. Christoffer Niska
  2. OgreChess




Table of contents

  1. Classes
  2. Architecture
  3. Debugging
  4. Responsiblities
  5. Known issues

1. Classes

Benchmark High precision timer Board : OgreObject Object for the board Captures : OgreObject Object for captured pieces (one for each player) ChessApp : OgreApp The application itself (contains the main) commands Console commands (need to be global function pointers) Move Object for a single move OgreApp The Ogre base application OgreConsole The debug console OgreObject Base class for Ogre objects (container for SceneNode and Entity) Piece : OgreObject Object for a single piece Plane : OgreObject Object for simple 2d planes (used for hovered, etc.) Position Object for a single position Square : OgreObject Object for a single square on the board

2. Architecture

All logic for running the game is contained within the OgreApp and ChessApp classes. The application holds pointers to both the Board instance and the Position instance. Each time before the frame is updated "ChessApp::frameRenderingQueued" is called and the game logic is updated.

Each object in Ogre needs to be attached to a separate SceneNode. In addition to that each object that should be rendered must be attached to a separate Entity. The OgreObject base class holds pointers to both the associated SceneNode and Entity (if the object is rendered).

"ChessApp::frameRenderingQueued" calls the "OgreObject::update" method in the board which in turn calls updated on all of its squares which in turn calls updated on the piece that occupies the square. You get the idea.

All position logic is contained within the Position class in order to improve performance.

Commands are global function pointers which use static variables for saving the entered data which in the processed by the application the next time "ChessApp::frameRenderingQueued" is called.

3. Debugging

We have quite a lot of debugging capabilities in the engine at this point, we have commands such as bb (bitboard), fen, perft (for which you can also give a 2nd depth parameter to divide the results to the given depth) and pos (sets a predefined position). Type help in the console to see all the commands.

4. Responsilibities

Ogre logic Crisu & Mikko Move generation Olli AI Arttu

I don't know what Antero and Markus can do but we'll see.

5. Known issues


It would be great to keep track of the issues using the Bitbucket issue tracker so that we know where we stand at all times.