It was previously a beta version; now it is finally the official release. I think it's reasonably strong. It uses the alpha-beta pruning algorithm. Move the yellow and gray bars to select your opponent. (Same as Egaroucid for Web) ↓ Update Info Official Release V1.0 Released. Trained "Relutan." Currently set to look ahead 3 moves. V1.1 Changed the home screen design. However, Relutan got weaker. I'll train it again (I reset it once). Also added sound effects. Also adjusted the time the COM takes to make a move. V1.11 Modified internal processing. V1.2 Fixed massive bugs in Relutan. Also changed its structure. V1.21 Rebuilt Relutan. Not sure if it can be trained. It might have just been sheer luck that the learning went well in V1.0. V1.22: Relutan-related changes. V1.23: Same as above. V1.24: Same as above. Changed the input layer structure. Rating around 130; it's improved a bit. V2.0: Implemented the Alpha-Beta algorithm. It's incredibly fast. Adjusted the time the COM takes to make a move. V2.1: Implemented the Alpha-Beta algorithm for Relutan as well. V2.2: Added a "Don't move immediately" setting. Also, since the Alpha-Beta algorithm was successfully implemented, I removed the text for A5 that said "Strong but slow." V2.3: Changed the COM's internal processing. Also modified the specifications for A2 and A3, though this shouldn't significantly affect their strength. V2.4: Fixed bugs on the settings screen and adjusted the transparency of legal moves. V3.0: Added COM "B6," though it is very slow. Also re-measured the rating for B5. Relutan has also become slightly stronger. V3.1: Fixed a bug that occurred when returning from the game screen. Also extended the display time for match results. V3.2: Fixed bugs occurring when returning from the game screen and when starting a new game. V3.3: Added "B5+book." It currently only includes opening theory for the Black side and is extremely shallow. V3.4: Added opening theory for the White side to B5+book. It's become quite strong. However, I'm starting to wonder how I should measure its rating. Up to this point, I've been pitting it against A3. V3.5: Increased the opening theory to about 3,000 positions. Note that some impossible positions are included. V4.0: I managed to create Relutan! However, the method of assigning weights to individual squares and the overall strength remain virtually unchanged. V4.1: Fixed a bug where matches against the selected COM opponent wouldn't start. V4.2: Changed B6 to B5–7. It now looks 7 moves ahead only during the final 20 moves of the game, and 5 moves ahead otherwise. It has become stronger without significantly increasing search time. V4.21: Added a notification to indicate when the project is opened in Scratch. V4.3: Changed B5–7 to B5–8. Also re-measured the R-values. V4.4: Added B'5–8. Since the search algorithm is simply inverted, it loses quite often against random opponents, but still tends to beat humans. V4.5: Added A'3 and modified the specifications for B'5–8. V4.51: Removed B5+book. V4.6: Modified the specifications for B'5–8. V4.7: Fixed a bug in B'5–8. I haven't re-measured the R-values yet. V4.8: Changed to B5–10. Relutan has also become stronger. Yay! V4.9: Fixed major bugs in B5–10. V4.91: Planning to accurately measure the R-values for each AI by V5.0. Accurately measured A2 and A3. V4.92: Accurately measured (to some extent) B5–10+book and B2. Also adjusted the position of the "Select Opponent" text. V4.93: Changed B'5–8 to B'5–10. This time, I only changed the costume; the underlying logic had actually been swapped earlier—I had just forgotten about it. V4.94: Accurately measured the R-values for B1 and B3. V4.95: Renamed "Relutan" to "Relumoid." Also switched to the swish function and reduced the size. Currently performs a 3-ply search. Accurately measured the R-values for B4 and B5. V4.96: Accurately measured the R-values for B5–10. V4.97: Accurately measured the R-value for A'3. V4.98: Accurately measured the R-values for B'5–10. Modified the internal processing of A3 (does not affect playing strength). V4.99: Added a new COM, "C1." The evaluation for the B series now incorporates the number of legal moves. V5.0: Added new COMs: "C5–10" and "C5–10+book." I believe they are quite strong.
↓You need to use this version, or the AI will run incredibly slowly. https://turbowarp.org/1315085970?hqpen This project is based on the "Othello AI Textbook" published by Takuto Yamana on note (specifically the B-series). https://note.com/nyanyan_cubetech/m/m54104c8d2f12 I’d be overjoyed—tears of joy, even—if you left a like, a star, a comment, or followed me. I think the code is written to be fairly easy to understand. I’d love it if you remixed it. Someone please try creating a strong evaluation function! Someone please try training Relumoid to be strong! AI Explanations ↓ A1: Random. A2: 50% chance of A1, 50% chance of A3. A3: Prioritizes corners; avoids "X-squares" and "C-squares" whenever possible. B1–B5: Evaluation functions that assign a value to each square (using the ones created by Takuto Yamana). The numbers indicate the search depth (number of moves ahead). B5–10: Looks deeper than 5 moves in the endgame. Please check the code for details. C1: Uses an evaluation function where: If it's Black's turn: B-evaluation + (number of legal moves for Black) * 2 If it's White's turn: B-evaluation - (number of legal moves for White) * 2 Currently multiplying by 2, but there might be a better constant. A'3: The opposite of A3. B'5–8: Basically the opposite of B5–8. However, two rules are added: avoid placing pieces on the 28 squares along the board's edge as much as possible, and prioritize playing on X-squares and C-squares. Relumoid Explanation ↓ (Under development) Evaluation function. Architecture: 192→192→192→192→1. Fully connected. Activation functions are Swish and Tanh. The initial "8" represents the current turn. The pieces placed at the corners are represented on a 7x8 grid, with values set to either 2 or 0. Regarding the next move to be played, the value is 0 if it is Black's turn and 1 if it is White's. The subsequent 64 values represent the board state: 1 if a square contains a Black piece, and 0 otherwise (i.e., if it contains a White piece or is empty). The final 64 values are 1 if a square contains a White piece and 0 otherwise. The output layer always provides an evaluation from Black's perspective: 1 indicates a win for Black, 0 indicates an even game, and -1 indicates a win for White. Learning is performed using forward-view TD(λ), with λ set to 0.7. The training data is augmented eightfold by exploiting board symmetry. The optimization algorithm used is AdamW, with a weight decay of 0.01.