For in thine hands is a merrily harp, play O bard, a merrily song,
So clapping we may sing an ode, and rejoicing till our heads decline!
Come, so we may make rose petals scatter, so in cups we may cast wine,
So through firmaments we may pierce, and spawn a new design!
Hafez-e Shiraz (poem: 374)

Fray of Knights by Farnaz Karimi
(“Fray of Knights”: drawing by Farnaz Karimi)

Persian Chess spawns a new design. It certainly won’t pierce through the firmaments, but simply evolves the chess game to something fresh and joyful to play, “for in thine hands is a merrily harp”, to play and explore the myths and maths of the Saturang spectrum; while pieces are rejoicing till their heads decline!


What is Persian Chess?

This chess variant is the result of a long time research, design and development work,  which is going on and off since 2006. The current engine (click here to play) is running on JavaScript and therefore suitable to publish on client-side processing webpages and mobile apps using Apache Cordova platform. All this work, the engine and the Android app is Free and Open Source.

I made the first playable program for a 9×9 (or “perfect”) citadel board in June 2006, compiled as a console application without GUI and it was full of bugs and errors which I couldn’t fix back then, so I didn’t publish much information about it except for some queries to several chess experts and ask for their suggestions.

In the last 9 years, I’ve spent time to define and redefine the game rules and learn to program a chess AI. The years of 2009 and 2013 were the most productive ones. In September 2013 the game rules and the first playable engine and UI were released and the work was previously published as Chess911 ( but after a year of listening to suggestions and critics, soon it became obvious that “chess911” is not an appropriate name for this game at all, therefore in 2014 and 2015, the game is not only further developed, but also renamed to Persian Chess, which is a much more meaningful name for this variant.

Persian Chess variant: Persian Princess

Persian Chess sub-variant are named similar to the development code-names of Ubuntu Project: the names are 2 words beginning with the same letter: Celtic Citadel, Persian Princess, Egyptian Eye and Oriental Omega. However, Ubuntu devops are showing much more bravery by choosing names like “Perverse Penguin”, “Quirky Quagga”, “Sensual Sasquatch”, “Telepathic Turkey” and “Zig-zagged Zanzibar”!  Luckily we’re not that far yet.

By researching the best way to program a portable engine for this game, which ended me up to JavaScript, Ruby and recently C# for win app, I get busy programming and debugging the engine in my free time. In these years, designing, creating sub-variants, testing, calculating, debugging and coding Persian Chess has took me about 700 hours of work. Programming the current JavaScript portable engine (based on the Open Source codes mentioned in the About page) took me 3 weeks, initially.

Persian Chess variant: Celtic Citadel

This game is not a member of the “Mad Queen” (MQ) family. Mad Queen is a class of chess game where the queen is the superpower and the single compound piece on board: she is suddenly moving like rook AND bishop where no other compound pieces are present on board. This class includes the standard 8×8 FIDE chess or what we actually know as “Chess” today.
But historically, chess has always been more than that… it has been played in many variants and start positions, depending on the occasion, and the game rules were some kind of “gentlemen agreement” between 2 player and were not written like ten commandments on stone, other compound pieces were also natural to the chess game, although they are being called “fairy pieces” nowadays. In Persian Chess, 2 other natural compound pieces (Princess and Fortress) are not “fairy” at all; They are an integrated part of the logical development in this game, like queen and other pieces are.
If you strongly believe that “Chess”, or to be more specific, “Mad Queen 8×8 variant” is the only Chess game that human beings are allowed to play, then go play it again and again…, but not here: because in Persian Chess no queen is mad. Instead, in this game you are dealing with more magical realms: Persian Princess, Celtic CitadelEgyptian Eye and Oriental Omega: the sub-variants of Persian Chess.
If you are interested in positional play and calculating long lines and variation, you might find Persian Chess one of the most fun chess variants to play.

Persian Chess variant: Egyptian Eye

Apart from the design philosophy, I really hope you’ll still find Persian Chess an interesting game, even if you are a chess purist and perfectionist, and enjoy playing it as much as I’ve had fun, in the past 9 years by designing and programming it.

The reason to design, program and/or to play a chess variants (in general) is to have a new good look at chess, avoid memorizing moves, and improve one’s ability to calculate more effectively on the standard 8×8 chess board. The main technical purpose of this board design is to create a game, one step closer to the mathematical perfection of chess. In chess variants encyclopedia, a 9×9 board is called “perfect” board since the start position is (or can be) perfectly symmetrical and there is no “king-side” or “queen-side” if the king is positioned in the middle file. There is only “left-side” and “right-side” for the king which are in Persian Chess are called “Queen side” and “Princess side”.  Queen side means left-side for the white king and right-side for the black king, and Princess side is vice versa.

Oriental Omega - Omega Chess 9x9

If you play some games, you’ll see that in Persian Chess, the opening lines are longer, simply because of one rank longer distance between pawns, and the game takes longer lines of moves in any stage of the game; the opening, the middle game and the end game.
In some position you would need to do a huge amount of calculation to be able to handle the unexpected attacks by Princess and Fortress.

All the utterly unexpected, aggressive attacks by Princess and Fortress, surprising and complex chess positions and symmetrical opening lines in Persian Chess and all it’s sub-variants, will probably help you to gain greater knowledge and ability on the standard MQ 8×8 FIDE chess board. It has been said that Chess is an sport. If it is so, then it can be a brutal and breathtaking sport too. Lifting heavier weights helps sportsmen and women to lift lighter weights easier and face their challenges with a higher degrees of self confidence. That is called “training” and I hope it works for you too.

Have a good game!


About comments:

Edwin Wilhelm is the inventor of the first quatro player chess variant called “Bishops”, I’m honored to be in contact with Mr.Wilhelm since 2013 and discuss many of the design aspects of chess 911 and also chess-logical iresolvable problems that the currently availaible so-called “4-player chess variants” in the market have. “Bishops” variant is (in my opinion) still the only chess-logical and playable 4-player design which doesn’t suffer from the extended 3rd line (file and rank) of the current 4-player variants.  For more information about this variant please refer to the following page: Bishops the game

Bishops, the game

Bluefever is a software company which has published an extended instruction on YouTube about how to write a chess engine in JavaScript.  I used these instruction to learn more about chess programming and used the Blue Fever code as the base code for the current JavaScript engine:  For Bluefever website click here – YouTube channel: Bluefever

National Master Garen Ara after playing Persian Chess (or chess 911 back in 2014) has pointed me to the problem of “trapped pawn” in the F file. (I was aware of it, although I thought it would not be a serious problem at first) The trapped pawn by itself is not an issue, but the fact that the trapped pawn can endanger his king by “Troitsky line” has disqualified chess 911 (Egyptian Eye) as the perfect (or main) variant of Persian Chess. This game is still very well playable but the “trapped pawn” issue needs to be taken into account and apparently causes disadvantage for white. Therefore the main variant of Persian Chess is currently Celtic Citadel.


45 thoughts on “Introduction

  1. It’s an amazing chess!!! it took me 3 hours to get all the rules but I’m playing it now for 3 days trying to win this game :)

  2. It is a remarkable chess game and for a very good cause. Thank you and I hope many people will enjoy playing it. I mentioned most of the opening lines ends up with the same symmetrical position but I assume itis by design. Garen

  3. Wow!! Nice job, what a great idea. Thanks for using the javascript code, I feel like I’ve at least made a small contribution. Good luck!

  4. Thank you Bluefever for the great instructions and code. This JavaScript engine turned out to be very flexible to program a chess variant (for web demonstration) and I hope it will be discovered soon by many chess variant programmers.

  5. I like this variant, very much, expecially the variant CITADEL. Personally i have created on my own many chess variants, and i play them with zillions gui. I have some suggestions for further improvements: 1)does the current engine uses nullmove and lmr? 1bis)why not to allow the engine to have 3 or more different styles (for example using a multiplier for king safety, mobility, a sort of drawscore too)? 2)why not to allow the user decide the number of seconds of engine’s thought, eg 17, 31, 72… 3)personally i would prefer the princess to be a sort of superpowered knight instead than the current superpowered queen (i men that the new princess should be able to jump toward all squares 2 steps far, a sort of square all around her). Feel free to contact me for other ideas.

  6. Wonderful game. I like how you add the corner squares. It adds another piece with making the board too big. And the ASE is mind blowing. I do wish the engine was tougher or online play was available. Also, does the game haveany published opening theory? Thanks for the invention

  7. Hello sir and madam, i’m very surprise to see this website and very interesting to know about it. i am passion all about chess variants, i wonder no chess pieces on eye pyramid? i like the look of it. it is excellent. it seem look nearly the same as i love omegachess and now this 911 excellent. i love chess. where can i buy one from? who invent it? is it from USA? respectfully David Clarke (Profoundly Deaf, BSL)

  8. Hello sir or madam, can this website run on window and apple computer? does it have to be only on andriod play game? Should i sign it up on window7 ?? i do really like this game. from David Clarke

  9. Dear David, I’m happy that you liked this variant. About the similarities and differences with all other Citadel variants (including omegachess) please refer to the “about” page. Omegachess is indeed another Citadel variant with 2 new fairy pieces and thus belongs to the Citadel family too. The inventor of this variant is me and I’m from the Netherlands. Yes, you can play this game with any browser and OS including Windows 7 right on this page, and it is not limited to android only. Regards, Anoosh

  10. Thank you for this nice game. I play always the Princess variant. It happens sometimes I win, even leaving the engine thinking for 15 seconds, so it is not strong because I’m not too with normal chess. The going back of moves is hard to control, it not responds quickly . I would like also: 1\ the display of captured pieces, and 2\ the setting to shut off sounds. Another issue I would address is that the best opening ends almost always to be the same. I also often search for the last published release but in this website it is hard to find out what version number is currently available : for ex. the android app is now 1.30 and the windows file is 1.28 but one don’t find this info in the download page or elsewhere. Another idea is it could be fine to have a setting suspending the internal engine as opponent, to play with another human, using the phone or pad as chessboard, because a physical board and pieces for this game are not normally available. All the best

  11. Hi Argo, thank for your great suggestions! By “great” I mean I’ve added every single of your suggestions to my TODO list and will code them in the next releases. About the version number: I have an issue with 1.3.0 sound on AppJS so I left the Windows and Linux version to 1.2.8 until it is fixed. The current engine strength on 15 sec is 1400-1500 elo which is very low. I know it still needs a lot of improvements. The engine uses only alpha-beta min-max algorithm without null moves and running on JS which is not performing very will. My future plan is to convert TSCP to play Persian Chess to achieve at least 1800 elo on 10 sec. and also use web-workers instead of a single thread calculation.

  12. Thank you for the reply. “The going back of moves is hard to control, it not responds quickly” is true only for the android version. Also an option to continue the last interrupted game sometimes it happens I desire. In the Princess variant, if the King reaches the opponent citadel, the game is not draw: right ? today the on-line game stops working after the first move of the white, the icons menu does not respond and the browser asks to update flashplayer ( which in fact is obsolete) : nothing of that happend before. Why flashplayer is now required ?

  13. Hi Argo, About the go back move: do you have the same problem when using the Android device “back” button (because it is also programmed to work as go back move), also please let me know what is you android device and version so I can try to simulate and find the issue. The game shoud be draw in Princess variant if the king reaches the citadel squares (it means the citadel squares of the opponent of course, because going to the friendly citadel square does not count as a draw) I will check it and fix if there is a problem there. Flashplayer is requires as a fall back to play sound if the browser does not support html5 sound. Can you please let me know what is your browser version?

  14. Gratitude for the update. One thing I do not understand: the button to flip board shows an inconsistent message saying to use the “back” or “forward” button to change side: this doesn’t work and seems superfluos anyway. Playing without the engine is fine, but to change side more comfortably I suggest to use a *double tap* on the “flip” icon, instead to have to press “OK” another time – and in another place of the screen – after the first tap. HAUX

  15. Hi Argo, please give the version 1.3.2 a try. There are several bugfixes in this version including the removal of confirmation box when flipping the board. If the engine is on, it will play the next move when board is flipped, otherwise you just can flip the board without confirmation.

  16. Browser Iron 42.0.2250.1, still bugged now. At home ( here I’m at office) with different version and other Chrome based browsers – Chromodo or Dragon – I had no problem, but after the update of the sound switch, only that seems not working. But I have problems here to update Flash player ( I’ve not admin rights) and at home … don’t know why. At home I don’t see the last comments and your replies in this page. Android is Lollipop on ASUS Fonepad 7, but this morning I installed your new update that fixed the issue: no more double click to change side and no more dialog box to confirm the flip . Yes, there was no draw when I tried – some weeks ago – to leave the opponent king to reach my citadel, in Princess mode. ————– Another thing I think is nasty is that Icon you use for the program in the windows version: I tried to make one a little better using the graphics already present in the game. If you want I can send you that tiny file or uploading it somewhere. Ciao

  17. Now i see your yesterday reply: very nice improvement ! Basically my Icon is made taking the central arabesque of the Princess board with at its center the black Moon\Star of the other variant.

  18. Hi Argo, the icon for the windows version is fixed, please download the new zip file. Thanks for pointing me to Iron browser, I installed and tested and it seems your are right: although sound is not enabled by default but the Iron browser complains about flash player, you can continue with game thou but it is a annoying message at the top. Will be fixed soon. cheers,

  19. A thing i think could be good is the program remembering the settings ( the time, mostly) without having to change them each time you re-open the game .

  20. Good. But the new Windows version here saves nothing. What is the difference between Depth and Think Time ? Are they working together or one excludes the other ? Going back with the moves implies the engine thinks again when returning forward, so one cannot never review the same game. Would not it be better to have the engine working not by default but only on command, or in other words have it suspended when going back or forward the already played moves ? Look at this chess app, it’s free (basic, but very powerful engine): ; it could have some features of potential interest for you. Cheers

  21. There is probably a bug in the last windows version. It happened that the black Princess from k1 went to d8 bypassing a a white pawn standing in the central square f6

  22. Hi Argo, there was indeed a bug in move generator in Windows version which is fixed now. In version 1.3.5 (current) you can also review the game by using the back-forward button. The forward button only plays by engine if there is no more move left to review. The difference between depth and think time: when you choose think time (e.g. 5 seconds) the engine stops the search at 5 seconds even if the last depth is not completed, it is forced to move at 5 seconds, but if you choose depth (e.g. depth 4) the engine will complete searching for the best move in 4 depth (dpt.4 = 4 Ply = 2 Moves ahead) disregarding how much time it will take. The depth choice overrides the time choice. Windows version is running on AppJS which does not provide an out of the box way to save things. I need to find a workaround for that (like saving the settings in an xml file on disk) Thanks for all the excellent testing/suggestions you are providing, as always.

  23. About the display: if i choose for ex. 5 sec it is shown, but if I choose depth “any number” it is not displayed, i only can read “Depth”. If I choose Depth 8 the engine seems hanging , probably it is thinking but if one is tired to wait, there is no way to continue the game other than to kill it. The bug WERE also in the android version. Many thanks to you.

  24. Also with Depth 5 the program hangs a lot: it could be a fine thing to release the thinking ( force the engine to move) for ex. by tapping/clicking on the rotating clepsydra, even if it is hanging motionless….

  25. I’ve seen the last android update, where you say that there is now a failsafe system. Using Depth the app hangs anyway: how does it work that failsafe system ?

  26. I’ve tried in windows, playing Princess with version 1.3.5, when the king reach the opponent’s citadel, it’s not declared the draw.

  27. Hi Argo, I have added these issues to my to do list for version 1.3.7 which will be release soon, please have a look at to see the daily progress.

  28. Hi Anoosh, always enjoying this game! I”ve seen the last update fixed many things. I want to share with you some recent thoughts. 1. It”s not good to force the draw when the king occupies the opponent”s citadel. In fact I was winning but my king needed to stay safe in that protected square: so draw could be an option and not mandatory. 2. It happens often that I want to change immediately the move I did – often cause awrong

  29. … caused by a wrong tapping or clicking: to change move one has to wait the engine stops his thinking. This is very annoying and IMHO it needs to be managed differently. 3. If I set the time manually (or depth) the button don’t shows the appropriate number but only the word “Enter” or “Depth”. If set manually, the time was not remembered, at least with the previous android version. 4. If one is tired to wait (often the engine’s move is obvious, or a zugzwang) is there a way to have that move done quickly? All the best.

  30. Hi Argo, Yes the functionalities you are mentioning are all possible. Unfortunately when I started programming PersianChess, the concept of webworker in JS was pretty new and unstable, so I programmed the engine and gui in one namespace just to quickly demonstrate this variant. Now, with a good/stable webworker implementation in JS, it is possible to run the engine in a separated thread than the gui, and let gui (board, buttons, etc.) remain responsive when engine is busy, but it requires a major re-coding of the program. I already started doing it but how long it is going to take depends on the free time I can find to work on it. However version 1.4.x will support webworker and I hope it will be released after some weeks of work. About the Citadel rule it might indeed sound frustrating when you are winning the game but a draw is forced because your king have to move to the citadel square of the opponent. We can easily change this behavior programatically, but I won’t do that in the public release of Persian Chess, because Citadel rule has a great historical value of the Citadel family of chess variants. But if you really need it I can program a separated version for you so you can download and play. (if you ask me, I would not do it and would stay with the historical Citadel rule, as it is) Citadel rule is equal for black and white, it means you have also the possibility to force opponent king to your Citadel square and force a draw when you are losing the game. Historically it was called “capturing the king” in Persia and it is different with checkmate (Shah-mat) Engine knows it and can outplay you now, but when you are familiar enough with the rule, you can also use this method to force a draw. Persian Chess is designed to remind such beautiful chess concepts that are lost in time. Cheers,

  31. Thank you for your kind reply. Yes, I agree the Citadel rule is fine as it is. The problem with the undoing of wrong moves ( without always waiting the engine’s move to unlock the GUI) could be partially resolved leaving two more second of pause to the engine, after the human move: so one has a bit of time to correct. This also could be a “beginner mode” that the user may switch On or Off . … just a raw idea… Or, as i said before, tapping somewhere ( for ex. on the clepsidra) could release the engine forcing it to “Move Now”: i would prefer this second solution, if possible.

  32. another issue I discovered is that when the app is re-opened the last position is resumed, but not the entire game, so it’s not possibile to review it.

  33. To set the time one finds always the number “3” already written and has to delete it. It would be more comfortable to find the field empty, ready to allow the new input of number(s).

  34. the new version 1.4.1 : – the app doesn’t re-open with the sound disabled although it remains switched off. – the move of the pieces happens differently in the win program and the app . The app now not works dragging but tapping again on the target square . I personally prefer to drag. – the moves are delayed; a fraction of second, but it is annoying. – i discovered double tapping on the screen flips the board: are there other “hidden” features to explore ? Thanks

  35. Hi Argo, The double click to flip board is the only hidden feature now, but an important (visible) feature which is also added to the game is the ability to save/load 7 games as PGN viewer (to analyze the games in later time) About the sound: which version of the app do you mean? Please mention the version you are using for any specific problem, we have basically 3 versions: online (by clicking on Play link on this site) you can refer to it as “online”, then it is Windows/Linux version which you can refer to it as “AppJS” and then the Android version to be called “Android”. About the movement of the pieces (taping or dragging) now it is forcibly determined by the environment (are you on touch device or browser) but in future versions I will make it optional to user choice. About the move delay: I fixed a bunch of issues on move delay between 1.4.0 and 1.4.1, please let know if you have problem with 1.4.1 (and not 1.4.0) and when exactly the delay happens. (saying like: version 1.4.1, on Android, Playing white, Start game, move f3-f5) so I can exactly reproduce and fix the issue. Today I released 1.4.2 which does not improve much on GUI, but on Engine Failsafe (in case that engine crash on any position) to recover and report the error so I can look at the position and find the reason of crash. It is interesting that double-tapping on your Android screen works, but not on any device that I’m testing (only double click on browser version works to flip the board) That means your device probably is not discovered as a “touch device” by the program, it could be the reason of move delay too because a non-touch device running Android has 300ms delay on click reaction. However 1.4.x series are a COMPLETE re-write of the interface code that I did the last 3 month. It took more than 200 hours to complete but I released 1.4.0 in agile to provide only the basic functionalities. Because the current code-base is way more flexible and manageable, in the future releases I will focus on providing user better options. One major difference between 1.4.x and before is that the engine is running in WebWorker so it does not freeze the GUI, all the GUI options are responsive when the engine is thinking. If you want to stop engine in the middle of search, you can simply click on “back” button and cancel the current process. You can help (besides the excellent testing that you always do and I appreciate very much) also by letting me know your ideas about handy future options that you are missing from the application.

  36. the sound bug happens also with the last Android update. The delay is now almost gone, not a problem with the new .4.2 version. However I find it is too much the delay of the pop-up window declaring checkmate: just my feeling… The double tapping in fact not works on Android but the double clicking on Windows do: why not implement the same also on Android ? Yes, I discovered that pressing the Back button the program responds always good, now. [ Not sure now, but does’nt lack in this version the clickable link to homepage and Instructions ? ] The checkmate now doesn’t show the red square ( Android). When my king is under check there is the tipical sound, and the square turns yellow, but when the opponent king is in check the sound is not emitted and without the yellow square. It would fine to have the display of the captured pieces; also an evaluation of the “points” of the actual position for both players: or in other words to have an estimate of who is in advantage. I saw other program ( Arasan) to use the sign “-” or “+” to define the actual player points. Along the thinking-time it could be interesting to have the correspondent ELO engine’s performance ( just it seems you already know those values). Just another idea: when is “my” turn, sometimes I desire to know what would be the ” recommended move” suggested by the engine. You took away the training feature so this one replaces even better this approach for novices. The two main set of “tools” could be stay together in a single “settings” panel: space not lacks… When the engine is Off, why not flip the board automatically after each move ? Thank you for your work and attention.

  37. Hi Argo, in ver 1.4.4 all the bugs you mentioned are fixed, board is flipped automatically when engine is off (that was a great idea of yours! I can’t find it in any other chess program) and also in the console (click on the grid button to switch from movelist to console) you can see: depth[+-score]move, and the captured pieces are listed at each move at the end of the console output.

  38. After the opponent move, when i touch a piece to move it, *another* piece of mine jump on the board to return quickly to its position. Strange behaviuor, surely not good. Have you not noticed that ?

Leave a Reply

Your email address will not be published. Required fields are marked *