PDA

View Full Version : Felicity - sự trở lại của Saola, hay Ký sự phiêu lưu tại Giải cờ máy Thế giới Đài Loan



chezz
14-07-2018, 03:26 PM
Sau một thời gian rất dài không sờ tới các động cơ (engine) cờ Tướng tôi đã tìm được niềm vui để quay lại với công việc từng là niềm đam mê lớn: phát triển các động cơ cờ Tướng mang đi “chiến” với thiên hạ.

Việc đầu tiên mang chương trình “cổ” Saola ra phủi bụi đã. Thời của nó đã cách đây cả chục năm rồi. Lúc đó còn chưa hề có các chương trình cờ đình đám của TQ ngày nay như XQMS, Intela, Ccyclone, Gaga, Shiga... Thời đó là thời của vài chương trình như Saola, Xiexie tranh tài. Saola và Xiexie chưa từng có trận đấu chính thức. Nhưng nhiều người chơi đã có nhiều trận đụng độ với kết quả một chín một mười. Tôi viết như vậy để các bạn thấy Saola và Xiexie vừa là bạn (các tác giả là bạn bè trao đổi dù ngoài đời chưa từng gặp mặt) vừa là các kỳ phùng địch thủ của nhau.

Trước khi Saola “ngủ đông” tôi đã kịp tạo một phiên bản động cơ (không dùng đồ họa của riêng bản thân nữa mà dùng các chương trình GUI khác). Lắp nó vào GUI MoonRiver (Sông Trăng - một GUI mới do tôi đang phát triển, chạy trên cả Win/Mac, hiện được Việt/Anh/Hoa, có thể chơi tự động hai chiều với các web cờ) và cho nó lên chiến thử trên CXQ - môi trường thử nghiệm yêu thích của tôi ngày xưa. Saola vẫn giữ phong độ và lối đánh xưa nhưng đã nhanh hơn rất nhiều. Thời nó tung hoành máy tính phải chạy lặc lè mới đạt đến độ sâu 8-10 trung cuộc thì ngày nay chỉ cần một vài giây. Cũng như xưa, nó đấu với các kỳ thủ không chút sơ xẩy và dường như không ai có thể hạ được nó.

Cho đến khi tôi mang nó đi thử với các chương trình khác (mà tôi biết cũng đang chơi trên CXQ) thì tất cả các cảm giác tích cực biến mất hoàn toàn. Saola thua mọi ván cờ tôi thử. Rõ ràng món đồ cổ tuổi cả thập kỷ với công nghệ của thời 32 bit chạy đơn lõi (1 core / U) thiết kế để đấu với người chứ không phải với chương trình khác, đã không có chút cơ hội nào đối đầu với các chương trình mới, được phát triển, cọ xát chiến trận liên tục và tận dụng được mọi ưu thế phần cứng hiện đại. Có lẽ nó cũng không có cơ hội đối đầu với Xiexie - anh bạn kỳ phùng địch thủ xưa. Tuy không được phát triển liên tục nhưng Xiexie cũng không bị bỏ bễ lâu đến vậy. Tác giả vẫn liên tục trình làng các phiên bản mới và mang chương trình đi dự nhiều cuộc thi. Một lập trình viên người Hà Lan ông Geert Muller từng than thở rằng năm trước trình của ông chơi ngang ngửa với Xiexie thì năm sau Xiexie đánh bại ông hoàn toàn và ông ước chừng nó phải được cải tiến tăng hơn 400 ELO (một khoản rất lớn - trình cờ Vua nổi tiếng Stockfish thường chỉ cải tiến được khoảng 70 ELO / năm). Chỉ vài lần như vậy thì Saola đã phải hít khói từ lâu rồi!

Thay cho việc vá víu chiếc áo chật chội Saola tôi quyết định viết lại một chương trình mới và đặt tên là Felicity (Hạnh phúc).


https://i.imgur.com/9MRKXiC.png?1
Saola chạy với MoonRiver, phân tích tự động ván cờ trên CXQ

(Còn tiếp)

DenHenLaiLen
15-07-2018, 06:37 AM
Rất hay. Mong thầy Nguyên trở lại thường xuyên với Felicity....:win

tonetone
15-07-2018, 09:28 AM
Hay quá, hy vọng sớm được trải nghiệm các bản thương mại chính hãng made in Việt Nam.
Ở giải đấu vừa qua em có nghe nói đến từ "used multiple graphics cards for deep learning" và việc kết hợp thuật toán "Alphazero" vào cờ tướng.
Mong anh giải thích thêm về các vấn đề này.
Hóng phần tiếp theo của loạt ký sự phiêu lưu tại Giải cờ máy Thế giới Đài Loan của anh.

Procotuong1994
15-07-2018, 09:55 AM
Rất hay. Mong thầy Nguyên trở lại thường xuyên với Felicity....:win

Thầy Nguyên có phải là Diệp Khai Nguyên không bạn?

chezz
15-07-2018, 10:12 AM
Ở giải đấu vừa qua em có nghe nói đến từ "used multiple graphics cards for deep learning" và việc kết hợp thuật toán "Alphazero" vào cờ tướng.
Mong anh giải thích thêm về các vấn đề này.
Hóng phần tiếp theo của loạt ký sự phiêu lưu tại Giải cờ máy Thế giới Đài Loan của anh.

Chương trình AlphaZero không dùng thuật toán tìm kiếm kinh điển của cờ (thuật toán AlphaBeta) mà dùng phương pháp học máy, thông qua cái gọi là Mạng thần kinh (thực chất là chương trình mô phỏng hoạt động của mạng thần kinh trong não con người). Mạng này chạy được với các bộ vi xử lý thông thường. Tuy nhiên nó lại chạy nhanh hơn nhiều với các card đồ hoạ - về nhiều khía cạnh tính toán của nó giông giống như đồ hoạ, không cần tính toán thật chính xác mà chỉ cần tính gần đúng nhưng thật nhanh thật nhiều. Tôi sẽ đề cập nó trong một bài viết khác.

chezz
15-07-2018, 10:15 AM
Thầy Nguyên có phải là Diệp Khai Nguyên không bạn?

Không. Tôi không phải là kỳ thủ, chưa từng dậy cờ.

chezz
15-07-2018, 10:19 AM
Kế hoạch trước mắt cũng khá đơn giản: hoàn thành chương trình mới và bắt kịp các chương trình “chiếu” dưới trong vòng một năm, sau đó sẽ cố gắng với tới những chương trình cao cấp hơn.

Một sự kiện xẩy ra khiến tôi phải đẩy nhanh tiến độ. Đó là Giải cờ máy Thế giới (Computer Olympiad) năm nay được tổ chức vào tháng 7. Trước đó năm 2008 giải cờ được tổ chức tại TQ có khá nhiều chương trình cờ Tướng tham dự và nó cũng chính là giải tạo đà, bệ phóng cho nhiều chương trình cờ nổi tiếng của họ (Intella, Cyclone, Gaga, NEUChess, Shiga, Chimo, XqMaster...). Nhưng sau đó khi được tổ chức ở các nước khác các lập trình viên từ TQ lại rất ít khi tham dự (có lẽ do họ khó xin visa và chi phí quá đắt đỏ). Do vậy với cờ Tướng giải này chỉ được coi là giải phong trào, kém nổi tiếng so với giải của TQ (tuy vậy giải của TQ không được coi là giải quốc tế do hầu như chỉ có người TQ tham gia với nhau).

Năm nay (2018) giải được tổ chức tại Đài Loan, thuận tiện cho các lập trình viên đến từ Trung Quốc và Đài Loan nên phần cờ Tướng khởi sắc với nhiều trình tham gia hơn, các tên tuổi có Bugcchess và Shiga.

Các địch thủ của giải dường như vừa sức hơn với trình cờ còn đang thời trứng nước của tôi. Tuy vậy cũng như mọi giải trước đây lúc đầu tôi không định tham gia (chúng đều khá tốn kém và mất nhiều thời gian, công sức từ việc chuẩn bị cho đến tham gia). Nhưng khác với mọi lần, năm nay tôi có một báo cáo cho hội nghị khoa học tổ chức song song với giải và vì vậy tôi cần đến đó tham dự. Cùng một công, đến báo cáo thì mang luôn chương trình mới đi đánh chuông xứ người.

Nói là bỏ bễ nhưng thực ra tôi vẫn rất quan tâm và theo dõi các công nghệ cờ, vẫn thường xuyên vào và trao đổi với người yêu cờ máy từ khắp mọi ngóc ngách trên Thế giới, vẫn thực hiện các nghiên cứu, viết các chương trình thử nghiệm công nghệ, vẫn đều đặn tung ra các phần mềm mã nguồn mở (open source) mà gần đây nhất là phần mềm tạo Khai cuộc và phần mềm CSDL tàn cuộc. Do vậy việc viết các phần mới, kết nối lắp ráp chúng hoàn thành tương đối nhanh.

“Nàng” Felicity giờ đã dùng hoàn toàn các công nghệ mới của thời 64 bít đa lõi thay thế cho loại 32 bít đơn lõi cổ xưa. Bộ khung xương đã được thay thế, chắc chắn, to rộng hơn sẽ dễ cho tôi bổ xung cải tiến nó về sau. Hàm tìm kiếm cũng được bổ xung những kỹ thuật mới nhất.

Tuy vậy hàm lượng giá - nơi chứa tri thức cờ lại không dễ thay thế ngày một ngày hai nên phần này tôi phát triển dựa nhiều vào Saola. Do “bộ não” được vay mượn, nhiều phần giống nên chương trình mới vẫn có thể tạm coi là Saola nhưng tính toán nhanh và sâu hơn nhiều.

Felicity cũng được khoác thêm trọng trách mới: là môi trường cho những nghiên cứu thử nghiệm của tôi. Phiên bản hiện tại được cài đặt thêm một thuật toán mới do tôi nghĩ ra và viết thành công trình nghiên cứu. Nó giống như một minh họa, một thử nghiệm thực tế cho thuật toán đó. Tuy vậy nó lại khiến cho chương trình phải chạy chậm một chút (điều xưa nay các lập trình viên tránh tối đa).

Felicity đã được cấp tốc hoàn thành, tinh chỉnh, chữa lỗi và đóng gói trong thời gian gần 3 tháng. Nó cũng phải trả giá đắt cho sự vội vã: đến ngày lên đường nó vẫn còn nhiều lỗi, nhiều vấn đề, nhiều chức năng còn đang viết dang dở tạm bợ hoặc hoạt động không đúng như thiết kế. Nó không có cả khai cuộc (phút cuối tôi phải gỡ bỏ vì lỗi). Tất cả giống như một đám núi lửa được ấn nhét vào một cái bao, luôn lăm le phun trào phá tung chương trình.

Điều may mắn giờ nó đã có thể chơi toàn bộ các ván cờ, hạ được chính cha nó Saola.

https://i.imgur.com/2323w6e.jpg?1
Giải cờ máy 2018 tại Đại học Quốc gia Đài Loan


https://i.imgur.com/cVsmbRM.jpg
Tác giả và những người tham dự hội nghị khoa học

(Còn tiếp)

ngovietkhoa
15-07-2018, 08:37 PM
khi nào có cho e xin link .. :v

imagination
16-07-2018, 10:40 AM
Giờ đây nếu ta cứ đi theo hướng search nước là phần mềm ngày càng tụt hậu. Neural Network có thể tận dụng cả triệu ván cờ quá khứ, có kết quả thắng thua để gắn nhãn mạnh yếu từng nước đi. Machine Learning do đó mang tính practical (thực tế) và có thể đánh chết bất kì một phần mềm cờ nào đi theo lối mòn. Vì nó có khả năng học bổ sung, và search nước truyền thống dù có mạnh cỡ nào nó cũng học được hết.

NN, hay ConvNN, còn mạnh tới nỗi có thể phân loại 1000 nhãn hình khác nhau (chó, mèo, bàn, ghế, quần, áo...) với độ chính xác 90%. NN học từ vài triệu tấm ảnh đã gắn nhãn. Vì cơ sở dữ liệu quá lớn nên có thể mất 1 tuần trên dàn máy với GPU 1080 Ti. Tương tự, trong cờ, việc đưa toàn bộ dữ liệu ở quá khứ vào cho NN phân tích mạnh yếu vẫn còn quá ít so với việc train dữ liệu hình ảnh.

Recurrent NN với LSTM cell, có thể phân tích dữ liệu thời gian (time-series), như việc dự đoán tỉ giá thị trường, dự đoán thời tiết, phát hiện nhịp tim bất thường... Áp dụng RNN vào cờ là công việc hiện nay của các data scientist ở Google AI. Chẳng hạn, pháo 2 bình 5 mã 8 tấn 7 mã 2 tấn 3, thì sau đó cờ đen nên đi nước nào thì kết quả là tốt nhất? RNN chỉ cần học từ vô vàn ván cờ quá khứ trong tích tắc và cho ra kết quả tối ưu. Trong một phạm trù nào đó, ta có thể hiểu NN không cần phải biết luật cờ là gì (tuy nhiên, việc gán vài luật cờ cơ bản cho nó để tránh error cũng là cần thiết).

Nếu được một lời khuyên, tôi xin chân thành khuyên tác giả đừng đi vào lối mòn search nước nữa. Đó đã quá lạc hậu. Việc học các ván cờ từ quá khứ bằng NN là việc không khó, cấu trúc NN, hay đúng hơn là RNN, đã có sẵn trên nhiều data science community, như Kaggle. Cái quan trọng là làm sao thu thập càng nhiều ván cờ càng tốt và phải preprocess data chỉn chu để feed vào NN.

Có thể việc search nước ngược từ lúc chiếu hết, chỉ hiệu quả ở giai đoạn cờ tàn. Còn từ khai cuộc đến hết trung cuộc, NN mạnh hơn cách truyền thống ở rất nhiều mặt. Nó có thể kết hợp với search truyền thống, bởi vì nó sẽ suggest nước đi trong tích tắc (vì model đã được train), chứ không cần tốn thời gian cho từng nước đi như cách truyền thống.

Ý trên khác hẳn với việc dò nước trong library. Việc dò nước trong library không đảm bảo đó là nước yếu hay mạnh.

Việc này chỉ cần, theo tôi nghĩ, vài tháng là tác giả có khả năng thành công. Bản thân tôi đang nghiên cứu tại UNSW cũng đang tham gia các machine learning competition trên Kaggle và thực hành với NN hằng ngày, nên tôi có cảm giác rằng nó nên được đưa vào cờ tướng.

Thân.

HydePark
16-07-2018, 01:13 PM
Chúc mừng anh Nguyên quay trở lại diễn đàn, em là Quang, ngày xưa test Saola cùng với anh đây ạ

nghiepdu
17-07-2018, 01:19 AM
Giờ đây nếu ta cứ đi theo hướng search nước là phần mềm ngày càng tụt hậu. Neural Network có thể tận dụng cả triệu ván cờ quá khứ, có kết quả thắng thua để gắn nhãn mạnh yếu từng nước đi. Machine Learning do đó mang tính practical (thực tế) và có thể đánh chết bất kì một phần mềm cờ nào đi theo lối mòn. Vì nó có khả năng học bổ sung, và search nước truyền thống dù có mạnh cỡ nào nó cũng học được hết.


Nếu nói như bạn thì NN chỉ là học trò học máy móc các SW search nước truyền thống (tôi nghĩ NN của Google ko chỉ đơn giản như bạn cách bạn hiểu - vì như vậy thì rất nhiều người đã làm được rồi). Việc gán nhãn mạnh yếu vẫn phải phụ thuộc vào các SW "lạc hậu" này. Và chẳng ai đảm bảo được cách gán nhãn đó đúng tuyệt đối (với các thế phức tạp) cho nên data NN học được chưa phải chuẩn hoàn toàn. Do đó muốn NN chuẩn thì việc cải tiến các thuật toán đánh giá tìm kiếm vẫn luôn là cần thiết.

Tiendaotd
17-07-2018, 05:46 AM
bác chezz tham dự hội nghị khoa học nào thế ạ?

nguyenduy123
17-07-2018, 09:20 AM
Hy vòng là có pm cờ viết ra để phục vụ người học hỏi, luyện tập chứ pm giờ mạnh quá không thể học hỏi được gì
ý kiến về 1 pm cờ mới

https://drive.google.com/open?id=1nHbf2CE3uTbLdrvt_b_NVDm0nA5pARgG

tonetone
17-07-2018, 10:06 AM
Hy vòng là có pm cờ viết ra để phục vụ người học hỏi, luyện tập chứ pm giờ mạnh quá không thể học hỏi được gì
ý kiến về 1 pm cờ mới

https://drive.google.com/open?id=1nHbf2CE3uTbLdrvt_b_NVDm0nA5pARgG

Câu hỏi của bạn thực sự mình đọc rất kỹ mà không hiểu bạn đang viết về vấn đề gì luôn. Và đây là 1 topic của tác giả đang kể về cuộc hành trình thi đấu cờ máy ở giải quốc tế cũng như là sự trở lại của 1 phần mềm huyền thoại hy vọng bạn đừng spam các dạng hỏi như thế này làm loãng chủ đề chính của người ta.

Thân chào!

chezz
18-07-2018, 10:04 AM
Giờ đây nếu ta cứ đi theo hướng search nước là phần mềm ngày càng tụt hậu. Neural Network có thể tận dụng cả triệu ván cờ quá khứ, có kết quả thắng thua để gắn nhãn mạnh yếu từng nước đi. Machine Learning do đó mang tính practical (thực tế) và có thể đánh chết bất kì một phần mềm cờ nào đi theo lối mòn. Vì nó có khả năng học bổ sung, và search nước truyền thống dù có mạnh cỡ nào nó cũng học được hết.

NN, hay ConvNN, còn mạnh tới nỗi có thể phân loại 1000 nhãn hình khác nhau (chó, mèo, bàn, ghế, quần, áo...) với độ chính xác 90%. NN học từ vài triệu tấm ảnh đã gắn nhãn. Vì cơ sở dữ liệu quá lớn nên có thể mất 1 tuần trên dàn máy với GPU 1080 Ti. Tương tự, trong cờ, việc đưa toàn bộ dữ liệu ở quá khứ vào cho NN phân tích mạnh yếu vẫn còn quá ít so với việc train dữ liệu hình ảnh.

Recurrent NN với LSTM cell, có thể phân tích dữ liệu thời gian (time-series), như việc dự đoán tỉ giá thị trường, dự đoán thời tiết, phát hiện nhịp tim bất thường... Áp dụng RNN vào cờ là công việc hiện nay của các data scientist ở Google AI. Chẳng hạn, pháo 2 bình 5 mã 8 tấn 7 mã 2 tấn 3, thì sau đó cờ đen nên đi nước nào thì kết quả là tốt nhất? RNN chỉ cần học từ vô vàn ván cờ quá khứ trong tích tắc và cho ra kết quả tối ưu. Trong một phạm trù nào đó, ta có thể hiểu NN không cần phải biết luật cờ là gì (tuy nhiên, việc gán vài luật cờ cơ bản cho nó để tránh error cũng là cần thiết).

Nếu được một lời khuyên, tôi xin chân thành khuyên tác giả đừng đi vào lối mòn search nước nữa. Đó đã quá lạc hậu. Việc học các ván cờ từ quá khứ bằng NN là việc không khó, cấu trúc NN, hay đúng hơn là RNN, đã có sẵn trên nhiều data science community, như Kaggle. Cái quan trọng là làm sao thu thập càng nhiều ván cờ càng tốt và phải preprocess data chỉn chu để feed vào NN.

Có thể việc search nước ngược từ lúc chiếu hết, chỉ hiệu quả ở giai đoạn cờ tàn. Còn từ khai cuộc đến hết trung cuộc, NN mạnh hơn cách truyền thống ở rất nhiều mặt. Nó có thể kết hợp với search truyền thống, bởi vì nó sẽ suggest nước đi trong tích tắc (vì model đã được train), chứ không cần tốn thời gian cho từng nước đi như cách truyền thống.

Ý trên khác hẳn với việc dò nước trong library. Việc dò nước trong library không đảm bảo đó là nước yếu hay mạnh.

Việc này chỉ cần, theo tôi nghĩ, vài tháng là tác giả có khả năng thành công. Bản thân tôi đang nghiên cứu tại UNSW cũng đang tham gia các machine learning competition trên Kaggle và thực hành với NN hằng ngày, nên tôi có cảm giác rằng nó nên được đưa vào cờ tướng.

Thân.

Tôi thường không thích nói trước về các dự án mới hoặc đang định hình. Nhưng vì một vài bạn muốn đề cập, nên tôi nói ngắn gọn thế này: tôi đã bắt đầu dự án này rồi, còn trước cả chương trình Felicity.

Nó phức tạp hơn em nghĩ nhiều và không phải muốn là chuyển sang làm được ngay. Nguyên nhân tập học / thời gian dậy quá lớn (cùng với một số lý do đặc thù khác của cờ Tướng). Em làm nghiên cứu không bị rào cản này vì có thể dễ dàng giảm quy mô dữ liệu (tập học) sao cho vừa với máy móc mình có.

Tôi sẽ bàn kỹ hơn nếu gặp nhau hoặc khi dự án phát triển đến mức thích hợp.

chezz
18-07-2018, 10:12 AM
bác chezz tham dự hội nghị khoa học nào thế ạ?

The 10th International Conference on Computers and Games (CG2018)

chezz
18-07-2018, 10:18 AM
Hy vòng là có pm cờ viết ra để phục vụ người học hỏi, luyện tập chứ pm giờ mạnh quá không thể học hỏi được gì
ý kiến về 1 pm cờ mới

https://drive.google.com/open?id=1nHbf2CE3uTbLdrvt_b_NVDm0nA5pARgG

Ngày xưa tôi có tạo một loạt chương trình cùng một loạt tiện ích để phục vụ người học. Ví dụ chương trình CCW chơi cờ yếu, có cả quyển sách loại tương tác được kèm theo. Saola, XB đi cùng rất nhiều các ván cờ (CSDL cờ), Saola cho xem các nhánh khai cuộc,... Nhưng hình như chẳng có mấy ai biết và khai thác được chúng. Do đó tôi tạm kết luận là những ai muốn học thì chỉ cần một quyển sách cờ là đủ. Còn lại thừa hết ;)

huybaichay
18-07-2018, 01:41 PM
Chào bác Nguyên

Em Huy tác giả của chương trình cờ vua Dolphin hiện đang xếp thứ 271 thế giới https://www.computerchess.org.uk/ccrl/4040/cgi/engine_details.cgi?print=Details&each_game=1&eng=Dolphin%201.0#Dolphin_1_0

Em cũng đam mê viết chương trình cờ, ngày xưa cũng định viết cái cờ tướng như bác, nguyên lý giống nhau, chỉ khác cái hàm lượng giá đánh giá thế cờ và quy tắc đi quân thôi, còn thuật toán thì cờ vua và cờ tướng giống nhau hết.

Theo em nếu bác muốn phát triển thì dùng Trí tuệ nhân tạo mạng nơ ron thần kinh, cho nó học theo nguyên lý của Alpha Go, cho nó quét hết tất cả các ván cờ từ xưa đến nay của Trung Quốc vào rồi train. Việc này hơi tốn thời gian chút, đi theo hướng của bạn Imagine nói ở trên.

Nếu đi theo hướng Search thì lấy luôn cái source code của Fruit hoặc của chương trình cờ vua nổi tiếng thế giới nào đó (open source), rồi sửa lại quy tắc đi quân, kết hợp cùng 1 kiện tướng quốc gia về cờ tướng, viết lại hàm lượng giá. Là cờ mạnh ngay ạ

Em không có thời gian viết tiếp nữa vì còn phải kiếm xiền :)

nghiepdu
18-07-2018, 06:57 PM
Chào bác Nguyên

Em Huy tác giả của chương trình cờ vua Dolphin hiện đang xếp thứ 271 thế giới https://www.computerchess.org.uk/ccrl/4040/cgi/engine_details.cgi?print=Details&each_game=1&eng=Dolphin%201.0#Dolphin_1_0

Em cũng đam mê viết chương trình cờ, ngày xưa cũng định viết cái cờ tướng như bác, nguyên lý giống nhau, chỉ khác cái hàm lượng giá đánh giá thế cờ và quy tắc đi quân thôi, còn thuật toán thì cờ vua và cờ tướng giống nhau hết.

Theo em nếu bác muốn phát triển thì dùng Trí tuệ nhân tạo mạng nơ ron thần kinh, cho nó học theo nguyên lý của Alpha Go, cho nó quét hết tất cả các ván cờ từ xưa đến nay của Trung Quốc vào rồi train. Việc này hơi tốn thời gian chút, đi theo hướng của bạn Imagine nói ở trên.

Nếu đi theo hướng Search thì lấy luôn cái source code của Fruit hoặc của chương trình cờ vua nổi tiếng thế giới nào đó (open source), rồi sửa lại quy tắc đi quân, kết hợp cùng 1 kiện tướng quốc gia về cờ tướng, viết lại hàm lượng giá. Là cờ mạnh ngay ạ

Em không có thời gian viết tiếp nữa vì còn phải kiếm xiền :)

Felicity cũng đã rất mạnh rồi, nó xếp thứ 4 trong giải cờ máy và quan trọng hơn là đứng đồng hạng với Xiexie cùng đối đầu trực tiếp hòa.

chezz
19-07-2018, 07:45 AM
Tôi không đặt mục tiêu gì cho Felicity trong lần đầu đến giải cờ và sẽ chấp nhận mọi kết quả. Cũng không thể kỳ vọng gì hơn vì thời gian đầu tư cho chương trình như vậy là quá ngắn trong khi nhiều đấu thủ đã từng “săn” được Saola (Saola là tên của một loài dê mới được phát hiện gần đây ở Việt Nam). Hơn nữa tôi cũng không có bất cứ đầu tư nào cho phần cứng. Thay vào đó tôi dự định tập trung tìm hiểu mọi mặt của giải cờ, từ kỹ thuật cho đến con người, làm quen, trao đổi kinh nghiệm, nhìn tận mắt bắt tận tay những người đứng đằng sau các chương trình khô khan.

Chơi cờ tại giải là một trải nghiệm thú vị nhưng cũng khá căng thẳng. HaQiKi là đối thủ đầu tiên của Felicity. Nó là trình cờ của ông Muller tôi nói ở trên và từng có lúc “cân” được XieXie. Muller cùng từng tuyên bố nó đã thắng được Saola. Muller là người Âu duy nhất tham gia thi đấu cờ Tướng. Ông có thâm niên đam mê và viết các chương trình cờ lâu nhất: từ những năm 1970. Trong các chương trình cờ còn lại thì chỉ có Felicity gốc Việt. Các chương trình khác đều của các lập trình viên gốc Trung Quốc (Pascal Tang tác giả XieXie là Hoa kiều Vn sang sống ở Pháp).

Quay trở lại trận đấu. Hai chương trình phải đấu với nhau hai ván (mỗi bên đi trước một lần). HaQiKi có cẩm nang khai cuộc nên khởi đầu thuận lợi hơn. Felicity chuyên bỏ quân lấy thế nên thường xuyên kém quân. HaQiKi tận dụng được tối đa phần cứng và có tốc độ tính toán nút / giây gấp bốn lần Felicity dù chạy trên cùng loại máy tính. Lần đầu tiên đối đầu trực tiếp một đấu thủ tính nhanh như gió thế cũng thấy hoảng. Ván cờ căng thẳng. Tôi biết Felicity có tri thức cờ tốt hơn nhưng chẳng có gì đảm bảo trong cờ. Lỗi (bug) vẫn còn đầy ẩn nấp đâu đó và có thể bung ra, tự “vật” ngã nó bất cứ lúc nào. Hai ván thua trắng! Nhưng mà HaQiKi thua ;) Tôi thở phào!

Với một chương trình chưa đầy tuần tuổi thế là đã có màn khởi đầu và ra mắt trôi chảy. Thành thật mà nói tôi cũng dự đoán trước kết quả này. Tôi và Muller vẫn thường xuyên trao đổi trên một số diễn đàn cờ. Muller rất giỏi về kỹ thuật và lập trình, đặc biệt về những gì liên quan đến cờ. Tuy vậy ông không đủ cả về kiến thức lẫn độ tinh tế về cờ Tướng để giúp đứa con đẻ đi xa.

Felicity toàn thắng hai chương trình nữa (đều đến từ Đài Loan) cũng làm tôi trút được gánh nặng. Nó dường như không gặp khó khăn gì nhiều để ép và chiến thắng các chương trình không mấy tên tuổi đó. Điều khó khăn nhất lại là phải thắng được bản thân, không bị bùng phát những lỗi ngớ ngẩn khiến thua cả ván cờ.

Đối thủ khó nhằn đầu tiên chính là XieXie. XieXie thường xuyên dự giải cờ này và thành tích cao nhất hai lần huy chương bạc - tác giả đã rất tự hào công bố trên trang nhà. Đáng tiếc lần này tác giả không đến dự trực tiếp nhưng vẫn tham gia, nhờ người điều khiển giúp. XieXie chạy trên một máy tính mạnh i7 ép xung lên đến 4.7 GHZ đặt tại nhà riêng ở Pháp (người điều khiển truy nhập từ xa). Felicity không có máy tính riêng mà dùng một máy tính dành cho sinh viên của Khoa máy tính nơi diễn ra giải cờ. Máy yếu tốc độ chỉ 3.4 GHZ với bộ nhớ hạn hẹp 8 GB RAM. Tuy vậy Felicity có thể tận dụng và chạy trên toàn bộ 4 lõi (core) của bộ vi xử lý trong khi XieXie vẫn trung thành với công nghệ cũ chạy trên một lõi. Có thể tạm coi cả hai chương trình không ai có ưu thế đáng kể về phần cứng. XieXie luôn ưu thế về thời gian và khai cuộc tốt hơn Felicity (Felicity không có cẩm nang khai cuộc) và đôi khi ép khá mạnh Felicity. Dù ăn mồi bẫy XieXie lại hóa giải được các ưu thế của Felicity và dành chút lợi thế hơn quân về sau. Cuối cùng cả hai ván cờ đều hoà.

Trao đổi với tôi Pascal nói đã ngồi nhà quan sát trực tiếp trận chiến, hồi hộp và vô cùng hoảng sợ trong ván đầu khi XieXie ăn mồi, cảm thấy rất may mắn khi thủ hoà. Trước trận đấu, Pascal còn khăng khăng rằng XieXie sẽ tiếp tục dùng công nghệ trước đây. Nhưng sau trận đấu Pascal bảo rằng đang cân nhắc lại, có thể sẽ theo chân Felicity lột xác công nghệ, để có thể tồn tại lâu dài về sau.

Món nợ xưa chẳng ai trả được. Hai ván cờ không nói gì được nhiều nhưng cùng với kết quả chung kết có thể thấy Felicity đang tạm xoá nhoà khoảng cách nhiều năm phát triển bứt phá của XieXie.

Giờ đến lúc phải đấu với ba ông kễnh của giải cờ!

https://i.imgur.com/XEWAHtQ.jpg?1
Muller đang rầu rĩ xem lại ván cờ sau khi thua Felicity

https://i.imgur.com/2BduntZ.jpg?1
Màn hình bên trái là HaQiKi chạy với Winboard, bên phải là Felicity chạy với MoonRiver

https://i.imgur.com/fRlgGMi.jpg?1
XieXie đang được người điều khiển truy nhập và điều khiển từ xa

(Còn tiếp)

chezz
21-07-2018, 03:44 PM
Lịch thi đấu do ban tổ chức lập, do trùng hợp ngẫu nhiên, ba chương trình mạnh này là những đấu thủ cuối cùng của Felicity. Tôi đều biết tên tuổi của chúng từ trước. Nhưng do lúc đó không phát triển các động cơ nữa nên cũng không hề tìm, chưa từng thử sức hay nghiên cứu chúng. Trong lúc hoàn thành Felicity do quá bận bịu viết các thành phần mới, lắp ráp, chữa lỗi, nên Felicity cũng chỉ kịp thử sức với chính cha nó Saola mà không có thời gian thử với bất cứ chương trình nào khác. Cũng tốt cho cả Felicity lẫn tinh thần của tác giả: chúng tôi vào trận chiến cuối mà lòng vẫn tưng tửng, chẳng mảy may lo sợ và không hề biết các đối thủ của mình “cứng” đến cỡ nào.

Shiga là một tên tuổi lớn, xuất hiện lần đầu từ giải cờ năm 2008. Chương trình phát triển bởi hai Giáo sư Shi-Jim Yen và Ming-Cheng Cheng từ một trường đại học Đài Loan. Cho đến nay nó là chương trình tham gia giải cờ này nhiều nhất và cũng là trình giầu thành tích nhất với tổng cộng 5 huy chương vàng 6 bạc. Ở Vn cũng từng có thời rộ lên việc tìm và chơi Shiga. Theo một số nguồn tin Shiga không được phát triển nhiều trong những năm gần đây (vì thế mà người ta không còn săn tìm nữa). Tuy vậy nó vẫn còn vượt trội khá xa các chương trình tầm dưới. Không những thế, Shiga không thèm dùng loại máy tính rẻ tiền dành cho sinh viên mà dùng loại mạnh có tới 6 lõi (12 luồng) và mênh mông bộ nhớ (128 GB RAM). Mọi thông số của nó đều vượt trội Felicity: tốc độ (nút / giây) nhanh hơn khoảng 10 lần, tìm kiếm luôn hơn vài độ sâu. Xưa nay nó thường xuyên hạ XieXie. Pascal ước tính nó phải hơn XieXie / Felicity trên 300 ELO. Do vậy nàng Felicity mới lớn chẳng có cơ may gì trước một anh chàng hung bạo đến như vậy. Các ván cờ giữa Felicity và Shiga tương đối dài. Shiga tận dụng tốt ưu thế khai cuộc và dần chiếm thượng phong sau các màn rượt đuổi điều binh lòng vòng. Felicity đành phơi áo cả hai trận.

Bugcchess là chương trình của các tác giả LiuZongYuan và LiXiangRu ở TQ, phát triển từ năm 2009, bắt đầu bán ra vào năm 2010 và liên tục được cải tiến từ đó tới nay. Vào năm 2015 họ thay đổi các lập trình viên, thêm các chuyên gia về học máy và chuyên gia cờ. Họ tuyên bố đã cải tiến được việc tìm kiếm tìm được rất sâu. Bugcchess được coi là một trong các trình cờ hàng đầu, mạnh hơn nhiều Shiga và cho đến nay vẫn được người Việt tin dùng cho các cuộc chiến trên mạng. Bugcchess cũng dùng máy tính riêng (đặt tại Trung Quốc) có tới 2 bộ xử lý Xeon đời mới với tổng cộng đến 44 lõi (88 threads), nhiều gấp 11 lần máy của Felicity. Tôi tra thấy rằng mỗi bộ xử lý của nó có giá trên 4000 đô! Có lẽ máy của Bugcchess là khủng nhất trong số các chương trình tham gia. Cũng như Shiga nó luôn tìm kiếm hơn Felicity vài độ sâu. Ván đầu như thường lệ Felicity sẵn sàng bỏ quân làm mồi nhử thì Bugchess lại khiến tôi “bực” nhất vì nó không thèm ăn mồi. Trong ván thứ hai Bugcchess lại chấp nhận ăn quân và để Felicity đánh Pháo trống nhưng rồi kìm hãm và hoá giải được, dần dần dồn ép Felicity chống đỡ thụ động cho đến cuối. Thua trắng hai bàn không gỡ!

Chimo là đối thủ cuối cùng. Chương trình của Giáo sư I-Chen Wu cùng với một đội ngũ phát triển hùng hậu từ trường ĐHQG Đài Loan nơi giải cờ đang diễn ra. Chương trình không nổi tiếng bằng hai chương trình kia, không thấy nhắc đến ở các diễn đàn Việt. XieXie từng vài lần đánh bại Chimo nhưng gần đây nó đã được cải tiến nhiều, vượt trội, đánh bại cả Shiga và XieXie giành giải vàng năm ngoái. Máy của nó cũng “ngồi” chơi từ xa với cấu hình khủng 12 lõi, gấp 3 lần máy Felicity và gấp đôi máy Shiga.

Tuy vậy điều ngạc nhiên đã xẩy ra: Felicity thua một nhưng cũng gỡ gạc hoà được một. Chimo chơi ở cửa trên nhưng bị Felicity ép đổi quân đưa về một tàn cuộc khó, cả hai cùng không biết chơi nên nhùng nhằng không bên nào tiến quân được.

Điều ngạc nhiên cuối cùng khi các trận đấu kết thúc là XieXie cũng có kết quả y hệt Felicity: cũng thua trắng hai chương trình khủng, hoà được một ván với Chimo, hoà lẫn nhau và bắt nạt được các trình còn lại. Do vậy cả XieXie và Felicity cùng chia xẻ vị trí thứ tư - vị trí an ủi cho “đội” Việt lần đầu tham gia! (Kết quả cuối: Bugcchess nhất, Shiga nhì, Chimo ba).

Như vậy có thể coi Felicity đã nhanh chóng bắt kịp được các trình cờ chiếu dưới. Nhưng chặng đường bắt kịp các đội tầm giữa và cao hơn lại còn khá dài, gian nan và cũng rất tốn kém. Tôi không mong đợi phép mầu, điều thần kỳ nào xẩy ra. Chỉ có lao động miệt mài mới thu hẹp khoảng cách cũng do lao động tạo ra giữa các chương trình hàng đầu.

https://i.imgur.com/QgFQyH9.jpg?1
Shiga đang cho Felicity hít khói từ tốc độ cho đến độ sâu tìm kiếm

https://i.imgur.com/GxefrPJ.jpg?1
Bảng điểm kết quả

https://i.imgur.com/RonDueM.jpg?1
Đại diện của Chimo, Bugcchess và Shiga nhận huy chương


Đôi điều về tên Felicity:

Felicity (đọc là Phê-li-xi-ty, dịch sang tiếng Việt Hạnh phúc) là một cái tên bình dị và đơn giản. Một cái tên thường dùng cho phái nữ. Do nhìn đâu cũng thấy những cái tên dữ dằn, quá kêu hoặc quá kỹ thuật nên giờ tôi thích quay ra dùng cái tên đầy nữ tính này. Hy vọng những gì nhẹ nhàng thanh thoát sẽ vui và bền, đủ sức giữ được tôi với cờ lâu hơn lần trước.

Nguồn gốc là vậy, ý nghĩa đẹp là vậy. Nhưng tôi cũng không phiền lòng gì nếu bạn gọi khác đi, kể cả gọi xách mé, ngắn gọn hay trút giận lên nó (chắc chắn bạn sẽ có lần có cảm giác đó khi dùng nó ;) ). Bạn có thể gọi nó là chương trình, phần mềm hoặc nhân xưng hóa như nàng, chị, em, mụ, bà, cô, con… gọi bằng tên đầy đủ Felicity, Felicita hay vắn tắt Fe (đọc là Phe hoặc Phê) như “nàng Fe”, “em Fe”... đều được :)

Cảm hứng đặt tên là bài hát mang tên Felicita của cặp vợ chồng ca sĩ nổi tiếng người Ý:

Hạnh phúc là nắm tay nhau cùng đi,
Hạnh phúc là ánh mắt em ngây thơ nhìn vào đám đông,
Hạnh phúc là ở bên nhau như bầy trẻ nhỏ...

Q0wZQbK938Y

(Hết)

cuoiconbo
21-07-2018, 07:02 PM
Anh Nguyên viết bài này hay quá. Một nhà khoa học có đam mê, tâm huyết và, không kém phần quan trọng, đó là trình độ công nghệ. Nếu em không lầm thì anh chính là tác giả chương trình Viet Res nổi tiếng thời những năm cuối thập niên 90. Một lần nữa xin cảm ơn anh và mong anh cống hiến thêm cho diễn đàn những bài viết tuyệt vời như vậy.

huybaichay
21-07-2018, 09:33 PM
Đùa chứ bác Nguyên viết còn hay hơn cả tiểu thuyết, rất hấp dẫn, nhẹ nhàng và sâu lắng, kể chuyện vừa có duyên lại hồi hộp. Chúc bác thành công.

Sau này em mà rỗi em sẽ lấy luôn source code của StockFish (đang số 1 về cờ vua trên bảng xếp hạng thế giới) em sửa thành cờ tướng xem oánh có ra gì không? :) https://stockfish.s3.amazonaws.com/stockfish-9-src.zip

trung_cadan
21-07-2018, 09:35 PM
Anh Nguyên viết bài này hay quá. Một nhà khoa học có đam mê, tâm huyết và, không kém phần quan trọng, đó là trình độ công nghệ. Nếu em không lầm thì anh chính là tác giả chương trình Viet Res nổi tiếng thời những năm cuối thập niên 90. Một lần nữa xin cảm ơn anh và mong anh cống hiến thêm cho diễn đàn những bài viết tuyệt vời như vậy.

Web cờ đầu tiên tôi xem là xqland , Đất Cờ của Phạm Hồng Nguyên , biên bản đầu tiên của diễn đàn cũng lấy code của SaoLa , trân trọng cảm ơn anh ...

chezz
22-07-2018, 03:55 PM
Anh Nguyên viết bài này hay quá. Một nhà khoa học có đam mê, tâm huyết và, không kém phần quan trọng, đó là trình độ công nghệ. Nếu em không lầm thì anh chính là tác giả chương trình Viet Res nổi tiếng thời những năm cuối thập niên 90. Một lần nữa xin cảm ơn anh và mong anh cống hiến thêm cho diễn đàn những bài viết tuyệt vời như vậy.

Rất ngạc nghiên (và thú vị) vì bạn phát hiện được điều bí mật này của tôi. Nó cũng là một niềm tự hào lớn một thời. Tuy vậy tôi không bao giờ đề cập về chương trình này, chủ yếu do lớp thanh niên giờ không dùng và không biết đến nó. Chương trình đó bắt đầu phát hành từ những năm đầu 90, tức là trên 25 năm rồi! (Bạn nào đã từng dùng nó thì chắc chắn không còn là thanh niên nữa)
Thank bạn, đã nhắc về một kỷ niệm đẹp :)

be_nguyen
23-07-2018, 11:16 AM
Rất ngạc nghiên (và thú vị) vì bạn phát hiện được điều bí mật này của tôi. Nó cũng là một niềm tự hào lớn một thời. Tuy vậy tôi không bao giờ đề cập về chương trình này, chủ yếu do lớp thanh niên giờ không dùng và không biết đến nó. Chương trình đó bắt đầu phát hành từ những năm đầu 90, tức là trên 25 năm rồi! (Bạn nào đã từng dùng nó thì chắc chắn không còn là thanh niên nữa)
Thank bạn, đã nhắc về một kỷ niệm đẹp :)

Em vẫn thích VR hơn BK :) Và em cũng có niềm đam mê lập trình cờ như anh, nhưng em hướng về android hơn

tonetone
16-09-2018, 12:23 AM
Hiện nay tụi em cũng đang lập trình engine cờ tướng, nền móng đầu tiên vẫn bắt đầu từ cảm hứng cũng như những bài viết của anh. Tụi em rất mong nhận được thêm sự hướng dẫn. Nhóm em đã lập trình engine sschess (tác giả chính Phạm Xuân Lộc) với phiên bản 1.0.1 đã share testing; (1 phiên bản cờ liệt thương mại đánh chắc thắng bản 1U của TQ) và 2 phiên bản sau lực cờ mạnh hơn do có sự thay đổi về eval, rất mong được liên lạc cùng anh để testing cũng như nhận được sự hướng dẫn thêm từ anh.
Facebook: https://www.facebook.com/an.thien.tran.2017 Phone: 0934 571 206 - Em Thiện (Nick fb An Thien Tran)

chezz
18-09-2018, 08:44 PM
Ok, hẹn bạn trên messenger

longtubv
26-09-2018, 11:59 AM
Vietres có 1 bộ font mà mình đem vào ứng dụng làm giao diện giả lập windowws (lúc đó là windows 3.11 và windows 95,98) cho niên luận lúc còn học Đại Học viết bằng Pascal

zinzin2
26-09-2018, 07:00 PM
Thầy Nguyên có phải là Diệp Khai Nguyên không bạn?

Thầy Phạm Hồng Nguyên.

tt3bt
27-12-2018, 06:19 AM
Em có PC cũng khá mạnh, tương đương hardware của bugchess, sẵn sàng để anh sử dụng cho Felicity thi đáu và test ạ. Check inbox anh chessz.

hdvd2309
25-08-2019, 04:07 AM
Anh cho xin mã nguồn được không ạ?

xitolala
06-10-2019, 12:51 PM
Tôi từng gắn bó với saola trên điện thoại htc chạy windows mobile cách đây 15 năm. Vẫn mong ngày nào được nói câu cảm ơn tới tác giả. Nay qua diễn đàn xin gởi lời cảm ơn và chúc bác Nguyên dồi đào sức khỏe, nhiều niềm vui trong cuộc sống.

louischan
07-10-2019, 11:02 AM
Cảm ơn bác Nguyên đã viết những chương trình rất ý nghĩa, có phải clubxianqi.com cũng là sản phẩm của bác luôn ko ạ?
Em rất ngưỡng mộ bác, bác cho em xin tk github với facebook đc không ạ cảm ơn bác

chezz
21-04-2020, 09:27 PM
Cảm ơn bác Nguyên đã viết những chương trình rất ý nghĩa, có phải clubxianqi.com cũng là sản phẩm của bác luôn ko ạ?
Em rất ngưỡng mộ bác, bác cho em xin tk github với facebook đc không ạ cảm ơn bác

Không, tôi chỉ cộng tác với CXQ thôi. Github của tôi dưới đây, các bạn có thể download các một số mã nguồn mở về cờ:

https://github.com/nguyenpham

tired_life92
22-04-2020, 02:06 AM
Là em gửi tin nhắn làm phiền thầy chezz đây. Thầy chezz quay lại rồi, trước đây thầy từng làm giảng viên nữa đúng không ạ

taipscode
22-04-2020, 09:32 AM
Xin cho hỏi các bác cao thủ về lập trình cờ tướng , hiện nay có các engine GGchess.exe , xqms.exe ...; làm thế nào mình có thể viết chương trình để chạy các engine này không vậy , nếu được các bác có thể help được không ạ ....
:saythank2

chezz
22-04-2020, 04:41 PM
Xin cho hỏi các bác cao thủ về lập trình cờ tướng , hiện nay có các engine GGchess.exe , xqms.exe ...; làm thế nào mình có thể viết chương trình để chạy các engine này không vậy , nếu được các bác có thể help được không ạ ....
:saythank2

Có phải ý bạn là viết một cái chess GUI, tức là một cái giao diện đồ hoạ chạy bao bên ngoài các chương trình cờ (engine)? Nếu đúng vậy thì tôi tóm tắt thế này:
- Các chương trình cờ (engine) là các chương trình ở dạng terminal/console, tức là các chương trình được điều khiển qua bàn phím và in ra màn hình dạng chữ. Chúng không có đồ hoạ
- Các chess GUI (Graphical User Interface) là các chương trình dạng đồ hoạ, hiện hình bàn cờ, điều khiển bằng chuột... như các chương trình bình thường trên Windows
- Các chess GUI này sẽ chạy các engine trong lòng của nó, bắt và phân tích tất cả những gì chúng in ra để hiểu chúng đang làm gì rồi hiện, hay đi quân cờ tương ứng. Khi người dùng dùng chuột đi quân, các chess GUI này sẽ chuyển thành đoạn text và chuyển cho engines để điều khiển chúng, giống như người ta bấm bàn phím

Viết chess GUI rất vất vả vì người viết phải biết, rành tạo chương trình đồ hoạ, lại phải biết cách điều khiển engine sao cho đúng. Nếu bạn thông thạo cách tạo các chương trình trên Windows và sẵn sàng bỏ nhiều thời gian vào đây thì mới nên bắt đầu.

taipscode
22-04-2020, 10:37 PM
Có phải ý bạn là viết một cái chess GUI, tức là một cái giao diện đồ hoạ chạy bao bên ngoài các chương trình cờ (engine)? Nếu đúng vậy thì tôi tóm tắt thế này:
- Các chương trình cờ (engine) là các chương trình ở dạng terminal/console, tức là các chương trình được điều khiển qua bàn phím và in ra màn hình dạng chữ. Chúng không có đồ hoạ
- Các chess GUI (Graphical User Interface) là các chương trình dạng đồ hoạ, hiện hình bàn cờ, điều khiển bằng chuột... như các chương trình bình thường trên Windows
- Các chess GUI này sẽ chạy các engine trong lòng của nó, bắt và phân tích tất cả những gì chúng in ra để hiểu chúng đang làm gì rồi hiện, hay đi quân cờ tương ứng. Khi người dùng dùng chuột đi quân, các chess GUI này sẽ chuyển thành đoạn text và chuyển cho engines để điều khiển chúng, giống như người ta bấm bàn phím

Viết chess GUI rất vất vả vì người viết phải biết, rành tạo chương trình đồ hoạ, lại phải biết cách điều khiển engine sao cho đúng. Nếu bạn thông thạo cách tạo các chương trình trên Windows và sẵn sàng bỏ nhiều thời gian vào đây thì mới nên bắt đầu.

Bác nói đúng rùi đấy ,vấn đề đồ họa thì không quan trọng (cái này dễ) ,chủ yếu là làm sao chạy được file engine.exe và nguyên lý hoạt động của file này .(có thể dùng c# hay vb.net,visual c++ ,hay ngôn ngữ nào thông dụng cũng được ..)

chezz
23-04-2020, 10:06 AM
Bác nói đúng rùi đấy ,vấn đề đồ họa thì không quan trọng (cái này dễ) ,chủ yếu là làm sao chạy được file engine.exe và nguyên lý hoạt động của file này .(có thể dùng c# hay vb.net,visual c++ ,hay ngôn ngữ nào thông dụng cũng được ..)

Nếu bạn viết được các GUI dễ thì đã được 50% rồi đó. Giờ chỉ còn bỏ công bỏ sức vào nữa thôi :)

1) Cần phải chạy được các engine cờ và phải bắt được chúng in ra cái gì, đồng thời ta phải đưa được các lệnh điều khiển (dạng text) cho các engine đó. Cái kỹ thuật chạy chương trình này trong lòng chương trình kia gọi là chạy pipe
2) Các engine cờ không in "lung tung" ra màn hình, lệnh điều khiển đưa vào cho chúng cũng không "lung tung". Thực chất chúng theo các quy định của cờ máy. Tập hợp các lệnh/quy định đó gọi là Protocol. Hiện có hai protocol phổ biến, có tên là Winboard protocol và UCI protocol. Người viết GUI phải nắm được các protocol này

Nắm được 2 cái trên, rồi viết chương trình đồ hoạ cho chúng nữa là xong :)

Ngày xưa việc 1) là rất khó vì phải nắm sâu hệ thống và có nhiều thứ rất tỷ mỷ. Bây giờ dễ hơn nhiều bởi vì có khá nhiều thư viện, open source giúp cho việc này.

Còn dễ hơn nữa, chess GUI dạng open source giờ trên Internet cũng rất nhiều. Đủ loại ngôn ngữ lập trình: C, C++, C#, Pascal, Python, JavaScript... Giờ chỉ cần bạn tìm hiểu rồi chọn một cái phù hợp, sau đó sửa theo ý mình là xong. Nhiều GUI không có phần Cờ tướng thì có thể thêm vào => 30% công việc nữa :)

Bản thân tôi cũng đã viết và cho trên github một chương trình cờ dùng để quản lý và thi đấu cho các engine. Chương trình này cho cờ Vua, không có đồ hoạ nhưng thực hiện được các công việc quan trọng nhất: chạy được các engine trong lòng nó, hiểu được cả Winboard và UCI protocol, cho các engine này thi đấu với nhau và lấy kết quả. Tôi cũng không tự viết cái việc (1) mà dùng một thư viện mở có tên là TinyProcess.

Chương trình của tôi có tên là Banksia. Mã nguồn ở đây:

https://github.com/nguyenpham/Banksia

Good luck!

taipscode
23-04-2020, 01:05 PM
Nếu bạn viết được các GUI dễ thì đã được 50% rồi đó. Giờ chỉ còn bỏ công bỏ sức vào nữa thôi :)

1) Cần phải chạy được các engine cờ và phải bắt được chúng in ra cái gì, đồng thời ta phải đưa được các lệnh điều khiển (dạng text) cho các engine đó. Cái kỹ thuật chạy chương trình này trong lòng chương trình kia gọi là chạy pipe
2) Các engine cờ không in "lung tung" ra màn hình, lệnh điều khiển đưa vào cho chúng cũng không "lung tung". Thực chất chúng theo các quy định của cờ máy. Tập hợp các lệnh/quy định đó gọi là Protocol. Hiện có hai protocol phổ biến, có tên là Winboard protocol và UCI protocol. Người viết GUI phải nắm được các protocol này

Nắm được 2 cái trên, rồi viết chương trình đồ hoạ cho chúng nữa là xong :)

Ngày xưa việc 1) là rất khó vì phải nắm sâu hệ thống và có nhiều thứ rất tỷ mỷ. Bây giờ dễ hơn nhiều bởi vì có khá nhiều thư viện, open source giúp cho việc này.

Còn dễ hơn nữa, chess GUI dạng open source giờ trên Internet cũng rất nhiều. Đủ loại ngôn ngữ lập trình: C, C++, C#, Pascal, Python, JavaScript... Giờ chỉ cần bạn tìm hiểu rồi chọn một cái phù hợp, sau đó sửa theo ý mình là xong. Nhiều GUI không có phần Cờ tướng thì có thể thêm vào => 30% công việc nữa :)

Bản thân tôi cũng đã viết và cho trên github một chương trình cờ dùng để quản lý và thi đấu cho các engine. Chương trình này cho cờ Vua, không có đồ hoạ nhưng thực hiện được các công việc quan trọng nhất: chạy được các engine trong lòng nó, hiểu được cả Winboard và UCI protocol, cho các engine này thi đấu với nhau và lấy kết quả. Tôi cũng không tự viết cái việc (1) mà dùng một thư viện mở có tên là TinyProcess.

Chương trình của tôi có tên là Banksia. Mã nguồn ở đây:

https://github.com/nguyenpham/Banksia

Good luck!
Cái tui mún biết là :
nguyên lý hoạt động của file engine ggchess.exe hay xqms.exe .
1. input thông tin(có thể là tọa độ các quân cờ runtimes )
2. output thông tin (tọa độ của nước đi hay nhất ,ví dụ (b2,e2):pháo 2 bình 5)

Còn các thứ linh ta linh tinh , như bác nói là lung tung đó ,có lẽ không cần thiết ,vì không phù hợp mục đích . Ví dụ như làm robot đánh cờ thì không cần đồ họa làm gì(goi là form thì đúng hơn) ,sourcecode cờ vua có sẵn trên planetsourcecode.com từ 20 năm nay rùi ,tui cũng có .
Cuối cùng là chém gió thời nào cũng có
:botay

oogwayx
23-04-2020, 08:37 PM
Cái tui mún biết là :
nguyên lý hoạt động của file engine ggchess.exe hay xqms.exe .
1. input thông tin(có thể là tọa độ các quân cờ runtimes )
2. output thông tin (tọa độ của nước đi hay nhất ,ví dụ (b2,e2):pháo 2 bình 5)

Còn các thứ linh ta linh tinh , như bác nói là lung tung đó ,có lẽ không cần thiết ,vì không phù hợp mục đích . Ví dụ như làm robot đánh cờ thì không cần đồ họa làm gì(goi là form thì đúng hơn) ,sourcecode cờ vua có sẵn trên planetsourcecode.com từ 20 năm nay rùi ,tui cũng có .
Cuối cùng là chém gió thời nào cũng có
:botay

tôi vừa quay lại đọc những thành tích của bác này. Thấy bác ấy là người khá là có trình độ. Ông chắc gì đã hơn người ta mà kêu là chém gió ? Tôi thấy ông chỉ gây war trên diễn đàn là giỏi

taipscode
23-04-2020, 10:17 PM
tôi vừa quay lại đọc những thành tích của bác này. Thấy bác ấy là người khá là có trình độ. Ông chắc gì đã hơn người ta mà kêu là chém gió ? Tôi thấy ông chỉ gây war trên diễn đàn là giỏi

Tui thấy ở đây toàn là dân lập trình ,nên người ta cần hỏi gì thì trả lời cái nấy ,còn không thì thui ,chứ nói linh tinh làm gì

chezz
23-04-2020, 10:20 PM
Cái tui mún biết là :
nguyên lý hoạt động của file engine ggchess.exe hay xqms.exe .
1. input thông tin(có thể là tọa độ các quân cờ runtimes )
2. output thông tin (tọa độ của nước đi hay nhất ,ví dụ (b2,e2):pháo 2 bình 5)

Còn các thứ linh ta linh tinh , như bác nói là lung tung đó ,có lẽ không cần thiết ,vì không phù hợp mục đích . Ví dụ như làm robot đánh cờ thì không cần đồ họa làm gì(goi là form thì đúng hơn) ,sourcecode cờ vua có sẵn trên planetsourcecode.com từ 20 năm nay rùi ,tui cũng có .
Cuối cùng là chém gió thời nào cũng có
:botay

Tôi đã trả lời các câu hỏi của bạn theo cái hiểu của tôi. Bình thường nếu có chỗ nào không hiểu thì chúng ta đều có thể trao đổi lại và nói rõ ý mình. Đó là cách các diễn đàn dựa trên tình bạn và tri thức hoạt động.

Điều đáng tiếc là bạn là bạn đã tỏ ra thiếu tôn trọng và khiêu khích người khác một cách không cần thiết. Chả lẽ làm người lịch sự lại khó thế sao???

taipscode
23-04-2020, 10:38 PM
Tui không có hứng thú tranh cãi ,chém gió(xàm xí) với các bác ...
Túm lại tui thấy các engine có sẵn của GGchess.exe hoặc là xqms.exe ,làm thế nào để sử dụng các engine này .
Bác nào chạy được rùi (chứ đừng có đưa lý thuyết linh tinh ,lý thuyết thi ai chả biết ) , thì share sourcecode ,còn hem bán 500k -1000k gì cũng được (nhắn vô Zalo 0377388871) ...
Còn chém gió hay xàm xàm thì miễn bàn (tui sẽ không reply tin xàm nào nữa hết)...

daoquan
24-04-2020, 12:17 AM
Tui không có hứng thú tranh cãi ,chém gió với các bác ...
Túm lại tui thấy các engine có sẵn của GGchess.exe hoặc là xqms.exe ,làm thế nào để sử dụng các engine này .
Bác nào chạy được rùi (chứ đừng có đưa lý thuyết linh tinh ) , thì share sourcecode ,còn hem bán 500k -1000k gì cũng được ...
Còn chém gió thì miễn bàn (tui sẽ không reply tin chém gió nào nữa hết)...

500k - 1tr của bạn lớn quá - người có kiến thức người ta chia sẻ lịch sự thì bác bỏ, còn nói giọng điệu khiêu khích, cứ cắm đầu theo ý mình thì cả đời cũng chả lập được 1 cái gì đâu. Bỏ đi cho đỡ tốn time.

Alent_Tab
24-04-2020, 12:58 PM
rat kham phuc kien thuc cua bac Nguyen. em cung da lam ve do hoa va lap trinh may tinh, nguyen tac tinh toan thuat toan may hoc khi dung no bac tra loi rat chuan. em lam cung thoi 9x khi ca truong moi co vai cai may tinh. o day dan lap trinh xin it lam, anh em ton trong nhau la duoc, bac cung cha can doi co voi vai nguoi trinh do thap lam gi.

Alent_Tab
24-04-2020, 01:07 PM
gio dung moi excel va power cho cong viec thoy. moi thu khac bon de lam het. truoc cung ham nhung gio di buon con nhieu tien hon.

dm truoc lam crack ma nguon, nhung cung chi share cho cong dong la chinh ma mat qua nhieu tg ma cha duoc xu d nao.

Alent_Tab
24-04-2020, 01:31 PM
bac Nguyen va bac Imigration noi ve thuat toan nhan hoc rat hay. xu huong moi ve ky thuat tinh toan cua may tinh.

no tinh ko can chinh xac nhung kha nang tinh cuc nhanh. cha han cho 2+1 =x , muoi ca nhan cung tinh buoc dau no tinh co the 2+1= 4

nhung ngan phep tinh no co the dat loc dua ra ket qua chinh xac hon voi toc do nhanh hon.

Alent_Tab
24-04-2020, 01:46 PM
Bac Nguyen neu co thoi gian viet nhieu bai hon nua nhe! em van doc nhung nhieu khi quen like mac du no rat bo ich.

sory ban quan ly trang Web nay. lau ko dung uikey nen ko go tieng Viet duoc.

vi3tproa7
25-04-2020, 01:04 AM
Tui không có hứng thú tranh cãi ,chém gió với các bác ...
Túm lại tui thấy các engine có sẵn của GGchess.exe hoặc là xqms.exe ,làm thế nào để sử dụng các engine này .
Bác nào chạy được rùi (chứ đừng có đưa lý thuyết linh tinh ) , thì share sourcecode ,còn hem bán 500k -1000k gì cũng được (nhắn vô Zalo 0377388871) ...
Còn chém gió hay xàm xàm thì miễn bàn (tui sẽ không reply tin chém gió nào nữa hết)...

Rõ là bác thiếu tôn trọng bác Chezz thế còn gì. Bác ấy đã bỏ công trả lời khá rõ ràng cho bác mà bác lại bảo là chém gió, thế lần sau bác hỏi còn ai muốn trả lời bác nữa.

Alent_Tab
27-04-2020, 12:32 PM
Hồi trước con Chess Games ông già đánh trên máy 4 nút cũng hay, nhà tôi vẫn còn cái máy 486 chạy win 98 chơi mấy games cũ, như đua xe, cứu công chúa... games cờ bác Nguyên vẫn chơi. chơi để nhớ một thời đã qua nhưng trải nhiệm thì vô cùng tao nhã.

bác Nguyên lúc nào rỗi viết về Assembly, pascal, fox... đi nhé Lowcode hồi trước hay dùng, team work toàn viết ra giấy khi trưởng nhóm thấy ok mới test trực tiếp trên máy.

ai tầm 6x đổ lại nữa nhiều cái hay hay ho phết, như chương trình virust viết cho boot secter 0... đến ngày nó mới phát huy tác dụng.

tinhcatn
28-04-2020, 12:35 AM
Xin cho hỏi các bác cao thủ về lập trình cờ tướng , hiện nay có các engine GGchess.exe , xqms.exe ...; làm thế nào mình có thể viết chương trình để chạy các engine này không vậy , nếu được các bác có thể help được không ạ ....
:saythank2

-- Ông này hỏi xong, người ta mất công trả lời lại bảo người ta chém gió. Nếu ông biết rồi thì đừng có giả vờ hỏi này hỏi nọ
-- Đầu tiên phải kể bác Chezz viết văn rất hay, đọc giàu cảm xúc lôi cuốn cứ như mình ở đó và được chứng kiến trận đấu vậy
-- Thứ 2 mình thấy ở đây ai cũng khen bác Chezz posts bài và trả lời có tâm, có tầm và rất giỏi
-- Còn ông taipscode post bài nào cũng thấy chê người khác và bị người khác chê mà vẫn post nhỉ. Chê bai khích bác vậy có làm mình giỏi hơn đâu

taipscode
28-04-2020, 08:00 AM
-- Ông này hỏi xong, người ta mất công trả lời lại bảo người ta chém gió. Nếu ông biết rồi thì đừng có giả vờ hỏi này hỏi nọ
-- Đầu tiên phải kể bác Chezz viết văn rất hay, đọc giàu cảm xúc lôi cuốn cứ như mình ở đó và được chứng kiến trận đấu vậy
-- Thứ 2 mình thấy ở đây ai cũng khen bác Chezz posts bài và trả lời có tâm, có tầm và rất giỏi
-- Còn ông taipscode post bài nào cũng thấy chê người khác và bị người khác chê mà vẫn post nhỉ. Chê bai khích bác vậy có làm mình giỏi hơn đâu

Tui không có hứng thú tranh cãi ,chém gió(xàm xí) với các bác ...
Túm lại tui thấy các engine có sẵn của GGchess.exe hoặc là xqms.exe ,làm thế nào để sử dụng các engine này .
Bác nào chạy được rùi (chứ đừng có đưa lý thuyết linh tinh ,lý thuyết thi ai chả biết ) , thì share sourcecode ,còn hem bán 500k -1000k gì cũng được (nhắn vô Zalo 0377388871) ...
Còn chém gió hay xàm xàm thì miễn bàn (tui sẽ không reply tin xàm nào nữa hết)...

chezz
28-04-2020, 04:03 PM
Tui không có hứng thú tranh cãi ,chém gió(xàm xí) với các bác ...
Túm lại tui thấy các engine có sẵn của GGchess.exe hoặc là xqms.exe ,làm thế nào để sử dụng các engine này .
Bác nào chạy được rùi (chứ đừng có đưa lý thuyết linh tinh ,lý thuyết thi ai chả biết ) , thì share sourcecode ,còn hem bán 500k -1000k gì cũng được (nhắn vô Zalo 0377388871) ...
Còn chém gió hay xàm xàm thì miễn bàn (tui sẽ không reply tin xàm nào nữa hết)...

Bạn đã viết như vậy một lần rồi, sao lại còn quay lại?

Cảm ơn các bạn khác đã ủng hộ và xin dừng bàn về việc này. Những bài tiếp tục sẽ bị xoá. Chúng ta chỉ nên bàn nhiều về cờ với tinh thần thiện ý.