Dagaz: The End of Solitude

Kebahagiaan untuk semua, untuk apa pun
dan jangan ada yang tersinggung!

A. dan B. Strugatsky "Piknik di sela-sela"


Bot, tidak peduli seberapa bagus mereka bermain, adalah pengganti yang buruk untuk pemain live. Jika bot bermain buruk - ini tidak menarik. Jika kuat, itu menghina dan sekali lagi tidak menarik. Sangat sulit untuk menjaga keseimbangan (lebih-lebih karena itu bersifat individual untuk setiap pemain). Untuk waktu yang lama saya akan mengimplementasikan permainan jaringan, tetapi semuanya bertumpu pada kebutuhan untuk memelihara server saya sendiri. Untungnya, keputusan itu datang dari sudut yang tidak terduga.

Ed van Zon adalah orang yang telah saya hubungi selama beberapa waktu. Kebetulan dialah yang mengambil spanduk Zillions yang jatuh ketika pengembang (Jeff Mallett dan Mark Lefler) tiba-tiba kehilangan minat dalam pengembangan proyek. Jadi, semua game ini dipublikasikan di situs oleh pasukannya. Dan juga, ia dan Christian Freeling terlibat dalam dukungan dan pengembangan situsnya sendiri (tentu saja, juga tentang permainan papan):


Tapi semua ini hanya ucapan. Kisah ini dimulai dengan fakta bahwa di situs ini ada sebuah lubang (atau lebih tepatnya, sebuah lubang , tetapi ini bukan intinya), di mana pemain live dapat bermain melalui korespondensi. Sebaliknya, mereka bisa, sampai teknologi applet Java menjadi usang. Baru-baru ini, karena penggunaannya oleh manusia biasa menjadi sulit, Ed telah memikirkan solusi yang lebih modern. Dan kemudian saya muncul, bersama dengan proyek saya.


Setelah tur pelatihan yang sangat singkat, bagi saya, Ed, selama beberapa bulan, membuat tiga lusin game baru di mesin Dagaz dan mempostingnya di situs. Biarkan saya mengingatkan Anda bahwa lisensi MIT (seperti saya), mendukung tindakan tersebut dalam segala hal.

Namun, ada satu masalah.
Dipahami bahwa para pemain dapat memainkan semua game ini di antara mereka sendiri, dan tidak hanya dengan bot, tetapi Dagaz, dalam implementasi awalnya, tidak memberikan kesempatan seperti itu. Saya harus dengan cepat menemukan sesuatu. Untungnya, saya sudah memiliki manajer sesi yang memungkinkan saya untuk melakukan gerakan yang salah. Sebagai bonus, ia menyimpan sejarah game dalam RAM dan diputuskan untuk menggunakan ini.

Hemat
SessionManager.prototype.save = function() { if (_.isUndefined(this.current) || _.isUndefined(this.current.board)) return null; var states = []; var board = this.current.board; while (board.parent !== null) { states.push(board); board = board.parent; } var r = "("; while (states.length > 0) { var board = states.pop(); r = r + ";" + Dagaz.Model.playerToString(board.parent.player); r = r + "[" + Dagaz.Model.moveToString(board.move) + "]"; } r = r + ")"; return r; } 

dan memuat
 SessionManager.prototype.load = function(sgf) { var res = Dagaz.Model.parseSgf(sgf); this.states = []; delete this.current; var board = Dagaz.Model.getInitBoard(); this.addState(Dagaz.Model.createMove(), board); for (var i = 0; i < res.length; i++) { var p = res[i].name; if (p != Dagaz.Model.playerToString(board.player)) return false; if (res[i].arg.length != 1) return false; var move = this.locateMove(board, res[i].arg[0]); if (move === null) return false; board = board.apply(move); this.addState(move, board); } this.controller.setBoard(board); return true; } 

Mereka melakukannya hanya beberapa lusin baris (saya tentu tidak berpikir pengurai format SGF itu sendiri, siapa pun dapat melihatnya di sini ). Ngomong-ngomong, baik SGF dan manajer sesi itu sendiri mendukung bekerja dengan pohon, dan tidak hanya dengan sejarah permainan, tetapi untuk tujuan kita saat ini ini tidak diperlukan.

Sebagai game pertama dari Dagaz, dengan kemungkinan bermain di internet, saya ingin memilih sesuatu yang asli (terutama karena Ed sudah memiliki Checkers , Chess and Go ). Pilihannya jatuh pada Turnover . Permainan ini, dalam banyak hal mirip dengan Catur, baru-baru ini ditemukan oleh Lúcio José Patrocínio Filho.


Angka-angka di sini adalah prefabrikasi. Cincin terbesar bergerak seperti bidak catur , yang di tengah seperti gajah , dan intinya adalah benteng . Kombinasi benteng dan gajah memberi sang ratu (yang cukup logis), dan kedua cincin itu memberikan ksatria catur . Ketiga bagian bersama-sama membentuk sebuah kastil - tokoh utama yang perlu dilindungi. Perlu dikatakan di sini bahwa hanya satu, bagian paling eksternal, yang selalu bergerak. Dengan demikian, lingkaran luar kastil, setiap saat, dapat bergerak dengan pion (termasuk melompat melalui lapangan), tetapi kastil akan dihancurkan.

Ada masalah lain yang belum terselesaikan.
Setelah kehilangan kastil terakhir, pemain kalah. Faktanya, pemain tidak dapat kehilangan semua kunci, karena permainan memiliki aturan check and checkmate . Kastil tidak boleh dibiarkan diserang, tetapi hanya dengan syarat bahwa mereka semua diserang. Selain itu, intrik dalam permainan ini ditambahkan oleh fakta bahwa tokoh baru (dan kastil juga) dapat dibuat dari komponen di sepanjang jalan (termasuk dari bahan lawan). Semua ini membuat pemeriksaan untuk check dan checkmate merupakan tugas yang sangat sulit dan berikut ini adalah contoh yang masih belum dapat dia atasi:


Padahal, tidak ada matras, tetapi cukup sulit. Lapangan D1 diserang oleh gajah di E2 dan ini adalah kastil terakhir. Yang emas dapat membangun kastil kedua dengan menginjak benteng dari C3 ke C4, tetapi bidang ini juga diserang! Kuncinya adalah bahwa kedua bidang diserang oleh angka yang sama, dan dia tidak bisa makan kedua kunci sekaligus! Lúcio menemukan kesalahan ini baru-baru ini dan ini adalah sesuatu yang akan saya kerjakan dalam waktu dekat.

Tidak ada castling dan mengambil lorong di permainan, dan memang, Pergantian tidak sangat mirip dengan Catur. Ada banyak raja dalam permainan, tetapi mereka tidak dapat bergerak (dalam hal apa pun, tanpa kehancuran), dan kuda-kuda dan ratu "sekali pakai", karena bergerak, cincin luar menghancurkan sosok itu. Menurut saya, gamenya terlihat cukup menarik, meski sama sekali belum dijelajahi. Anda bisa bermain di sini:


Untuk bermain di jaringan, tentu saja, Anda harus mendaftar (permainan melalui korespondensi) dan mengirim seseorang "Tantangan". Jika Anda ingin bermain dengan bot (atau hanya memindahkan barang di papan ), tidak diperlukan pendaftaran. Namun, dalam mode ini, gim tidak akan jauh berbeda dari yang diterbitkan di GitHub . Juga, pendaftaran tidak diperlukan untuk memantau permainan saat ini atau yang sudah dimainkan sebelumnya.

Sebagai bonus
Dagaz mendukung mode permainan lain:


Jadi, mereka yang berharap bisa mencoba bermain secara membabi buta (kali ini, hanya melawan bot).

Menang / kalah turnover belum disimpan, tetapi semuanya ada di tangan Anda. Jika gim ini populer, Ed berjanji untuk memberi peringkat padanya. Dan akhirnya, sebuah jajak pendapat kecil tentang topik pengembangan lebih lanjut dari proyek:

Source: https://habr.com/ru/post/id470065/


All Articles