Required Updates To port your .lud files to the current version of the Ludii language from a previous version, you may need to make the following changes. To port from v1.3.11 to v1.3.12: -- No change. To port from v1.3.10 to v1.3.11: -- No change. To port from v1.3.9 to v1.3.10: -- No change. To port from v1.3.8 to v1.3.9: -- No change. To port from v1.3.7 to v1.3.8: -- No change. To port from v1.3.6 to v1.3.7: -- No change. To port from v1.3.5 to v1.3.6: -- No change. To port from v1.3.4 to v1.3.5: -- No change. To port from v1.3.3 to v1.3.4: -- No change. To port from v1.3.2 to v1.3.3: -- No change. To port from v1.3.1 to v1.3.2: -- No change. To port from v1.3.0 to v1.3.1: -- (noRepeat ...) --> (no Repeat ...) To port from v1.2.11 to v1.3.0: -- No change. To port from v1.2.10 to v1.2.11: -- No change. To port from v1.2.9 to v1.2.10: -- No change. To port from v1.2.8 to v1.2.9: -- No Change. The jar was building from another computer, so Mac users may need to Settings > Security & Privacy > Open Anyway. To port from v1.2.7 to v1.2.8: -- No change. To port from v1.2.6 to v1.2.7: -- ("NoPiece" ...) --> (no Pieces ...) To port from v1.2.5 to v1.2.6: -- (count Groups ...): the ludeme does not used anymore a RoleType or the index of the player to get the groups but only the boolean condition which is more general and efficient. To port from v1.2.4 to v1.2.5: -- No change. To port from v1.2.3 to v1.2.4: -- No change. To port from v1.2.2 to v1.2.3: -- No change. To port from v1.2.1 to v1.2.2: -- No change. To port from v1.2.0 to v1.2.1: -- No change. To port from v1.1.19 to v1.2.0: -- No change. To port from v1.1.18 to v1.1.19: -- No change. To port from v1.1.17 to v1.1.18: -- No change. To port from v1.1.16 to v1.1.17: -- (directionCapture ...) --> (directional ...) To port from v1.1.15 to v1.1.16: -- (shape ...) --> (regular ...) To port from v1.1.14 to v1.1.15: -- (set Direction ...) --> (set Rotation ...) -- (move Set Direction ...) --> (move Set Rotation ...) To port from v1.1.13 to v1.1.14: -- No change. To port from v1.1.12 to v1.1.13: -- No change. To port from v1.1.11 to v1.1.12: -- No change. To port from v1.1.10 to v1.1.11: -- No change. To port from v1.1.9 to v1.1.10: -- No change. To port from v1.1.8 to v1.1.9: The state model for the hidden information has been completely rewritten in order to be much powerful and more generic. The previous system with visible, masked, invisible was not generic enough and is now removed. With the new model, this is now possible to modify for each player the visibility information for each data of a site (Count, Rotation, State, Value, What, Who) but also to make all the information completely invisible to a player. Consequently, here the changes in terms of ludemes: - In the starting rules, the hidden information are not set with the (place ...) ludeme but with the new ludeme (set Hidden ....). - In the play rules, the hidden information are checked with (is Hidden ...), the sites with different hidden information for each player are gotten with (sites Hidden ...) and to set these information the effect moves (set Hidden ....) can be used. For more information about these new ludemes, please read the Ludii Language Reference or the Ludii Game Logic Guide. All the previous ludemes related to Visible, Masked or Invisible has been removed. To port from v1.1.7 to v1.1.8: -- The value of a piece is no longer set with the piece but with the starting rules when the pieces are placed. The value can also be modifed with the new effect Moves ludeme (set Value at: ). The ludeme to access the value of a piece is no longer according to the component but according to the site where is placed the component: (value of:(what at:(last To))) --> (value at:(last To)). To port from v1.1.6 to v1.1.7: -- No change. To port from v1.1.5 to v1.1.6: -- No change. To port from v1.1.4 to v1.1.5: -- No change. To port from v1.1.3 to v1.1.4: -- No change. To port from v1.1.2 to v1.1.3: -- No change. To port from v1.1.1 to v1.1.2: -- No change. To port from v1.1.0 to v1.1.1: -- (RememberState) --> (Remember State) -- No String name in the (player ...) ludeme. ** For programmers/devs: The history of moves played in a Trial can no longer be directly accessed through trial.moves(). The methods trial.lastMove(), trial.lastMove(int pid), and trial.numMoves() are still available. Reverse-order iteration through the history of moves is most efficiently implemented using trial.reverseMoveIterator(). The i'th move can still be accessed using trial.getMove(i). If necessary, the full list of moves can still be computed using trial.generateCompleteMovesList(), but this is less efficient than using any of the methods mentioned previously if those suffice. To port from v1.0.9 to v1.1.0: -- No change. To port from v1.0.8 to v1.0.9: -- No change. To port from v1.0.7 to v1.0.8: -- No change. To port from v1.0.6 to v1.0.7: -- No change. To port from v1.0.5 to v1.0.6: -- Enclosed --> Enclose (The description of this ludeme is now similar to Custodial, Intervene or Surround is describing the 'between' data rather than the apply alone) To port from v1.0.4 to v1.0.5: -- No change. To port from v1.0.3 to v1.0.4: -- (surrounded ...) --> (surround ...) To port from v1.0.2 to v1.0.3: -- Add the "at:" parameter label for (set State at:(...)) and (set Count at:(...)) ludemes. -- Use the (player ...) ludeme for any ludeme refering to a player with an IntFunction. e.g. (forEach Piece (player (next))) To port from v1.0.1 to v1.0.2: -- Remove the "at:" parameter label from (is Empty at:(...)) and (is Occupied at:(...)) ludemes. To port from v1.0.0 to v1.0.1: -- No change.