Gagasan menggunakan spreadsheet sebagai lingkungan untuk mengembangkan mainan
bukanlah hal baru . Dalam artikel ini saya akan berbagi pengalaman saya dalam menciptakan mesin untuk game role-playing live-action dan teambuildings yang dapat sangat memudahkan kehidupan para praktisi game.
Mengapa itu perlu?
Misalkan Anda bermain game di mana 50-60 orang berpartisipasi pada saat yang sama. Setiap pemain memiliki seperangkat parameter pribadi (misalnya, pengalaman, uang, kesehatan, reputasi), yang bervariasi tergantung pada tindakan yang dilakukannya. Ada juga sejumlah indikator permainan umum (misalnya, ekologi, anggaran negara atau peringkat pemerintah), yang juga berfluktuasi sesuai dengan tindakan dan keputusan para pemain. Dan ada peristiwa permainan yang terjadi dengan kombinasi faktor eksternal tertentu.
Secara umum, ini adalah aliran informasi yang cukup padat yang perlu segera dihitung dan akurat. Dalam permainan role-playing klasik, fungsi ini biasanya dilakukan oleh master game. Tetapi tuannya tidak aman dari kesalahan, dan dia masih tidak akan memproses banyak informasi - baik di kepalanya, atau bahkan dengan selembar kertas.
Dengan mesin elektronik, satu orang dapat memproses aliran informasi dari volume berapa pun. Pada saat yang sama, statistik game dapat ditampilkan pada proyektor sehingga peserta dapat mengamati secara langsung bagaimana tindakan mereka mempengaruhi tata letak game. Atau, misalnya, Anda dapat menampilkan data rahasia ke setiap pemain yang ditargetkan pada ponsel cerdas. Dan yang paling penting - Anda dapat menggunakan mesin ini secara gratis!
Dibawa oleh praktik permainan sekitar setahun yang lalu, saya berhasil menulis 7 mesin untuk berbagai permainan pengembangan tim. Sebagian besar game ini memiliki kesuksesan komersial, dan satu bahkan telah dijual sebagai waralaba di luar negeri.
Arus kas
Semuanya dimulai dengan game
Cash Flow . Teman-teman mengundang saya untuk bermain di meja Robert Kiyosaki yang terkenal, dan dia benar-benar mengaitkan saya. Satu-satunya hal yang mengganggu permainan adalah kebutuhan untuk terus membuat perhitungan dalam kolom, menghapus data yang sudah ketinggalan zaman dengan penghapus dan menambahkan yang baru. Karena kenyataan bahwa semua peserta, takut melakukan kesalahan, terus-menerus berkonsentrasi pada perhitungan mereka sendiri, permainan kehilangan banyak dinamika dan tertunda selama berjam-jam.
Saya memutuskan untuk mengoptimalkan gameplay dengan menerjemahkan semua biaya ke dalam spreadsheet Google.

Untuk menguji "kalkulator" ini, saya menghabiskan beberapa game untuk teman. Efeknya luar biasa! Alih-alih meneliti perhitungan, para pemain secara aktif terlibat dalam permainan, bernegosiasi, dan menghasilkan skema keuangan dan penipuan yang rumit. Kecepatan game itu sendiri hampir dua kali lipat. Kami pertama-tama berhasil membawanya ke akhir ketika semua pemain meninggalkan trek balap tikus dan mencapai tujuan mereka. Sebagai perbandingan, dalam versi "manual", para peserta hampir tidak memiliki kesabaran untuk menyelesaikan permainan sampai saat ketika setidaknya seseorang sendiri berhasil mencapai lingkaran besar.
"Untuk menjadi gila! - Seru teman saya Ruben selama salah satu pertandingan. - Delapan pria dewasa berkumpul untuk menatap layar dengan tablet Google sepanjang malam. Tapi itu benar-benar lebih menarik daripada film apa pun! "
Piring saya untuk perhitungan dalam permainan "Arus Kas" dapat diunduh
dari sini . Jika tidak sepenuhnya jelas cara menggunakannya, tulis surat kepada saya dan saya akan mengirimkan petunjuk terperinci.
Zombi, Presiden, dan Pembunuh
Beberapa saat kemudian, saya menemukan skrip untuk game role-playing kabinet "
All The President's Zombies " oleh desainer game Amerika Mike Young. Menurut plot, kiamat zombie terjadi di negara itu, dan sekelompok pejabat senior berkumpul di kantor presiden untuk menyusun rencana untuk memecahkan masalah ini.

Saya menyukai konsep itu, dan saya memutuskan untuk membuat game sendiri, melokalisasi kreasi Young. Hasilnya adalah game "
Rapat Darurat ", yang cukup jauh dari aslinya. Ini didasarkan pada pohon rindang acara yang terjadi secara real time tergantung pada keputusan tertentu yang dibuat oleh para pemain di pertemuan. Alih-alih dengan susah payah mengajar master game, saya membuat tabel Google, yang secara otomatis menghitung konsekuensi dari setiap tindakan yang dilakukan oleh para pemain. Presenter hanya perlu mencentang layar dan mengambil kartu dari dek, yang jumlahnya ditampilkan di tabel.

Kesulitan tertentu disebabkan oleh kebutuhan untuk melacak dinamika parameter game. Lagi pula, ketika nilai sel berubah, tabel langsung menghitung ulang semua rumus yang terkait dengannya, tanpa menyimpan nilai lama di mana saja. Saya menemukan cara untuk mengatasi kompleksitas ini, tetapi saya akan membicarakan ini di bawah.
Setelah menghabiskan beberapa lusin โRapat Daruratโ untuk teman dan kenalan, saya menyadari bahwa ini adalah format yang menjanjikan untuk semua jenis pembangunan tim dan kisah perusahaan. Hanya pembatasan jumlah maksimum peserta dalam 12 orang yang diintervensi. Dan saya mulai membuat game baru yang bisa dimainkan oleh tim besar. Pada saat yang sama, satu pemimpin masih seharusnya mengelola ekosistem game. Jadi ada permainan "
Freaky Venice " yang didasarkan pada franchise Assassin's Creed, "World Domination" pada konfrontasi negara-negara adidaya di panggung dunia, "Hari Pemilihan" tentang teknologi yang jujur โโdan tidak terlalu politis, dan beberapa game lagi yang menyelesaikan tugas-tugas khusus pelanggan tertentu.
Ketika mengembangkan masing-masing game ini, saya mengalami kesulitan tertentu, dan sekarang saya akan menganalisis beberapa contoh yang paling menarik.
Masalah - Solusi
Dasar dari setiap mesin permainan adalah urutan tindakan berikut: 1) mengumpulkan informasi tentang keputusan yang dibuat oleh pemain, 2) memasukkan informasi ini ke dalam sistem, 3) memeriksa kondisi dan menghitung data baru dengan sistem, 4) mengeluarkan data baru kepada pemain. Bergantung pada alur permainan, siklus ini dapat diulang dari yang satu hingga yang tak terbatas bersyarat kali. Pada saat yang sama, semua komunikasi para pemain sebelum adopsi keputusan akhir tetap "di belakang layar", dan sistem permainan tidak diperhitungkan dengan cara apa pun. Jadi secara umum, prosesnya tidak menghasilkan sensasi permainan komputer, meninggalkan ruang untuk interaksi emosional yang hidup.
Emulasi loopKesulitan utama dalam mengembangkan mesin di tabel Google adalah kurangnya familiar bagi entitas programmer sebagai variabel, loop, interrupt, prosedur.
Misalkan Anda dapat mengganti tombol yang hilang dengan sel dengan nilai "kotak centang" - dalam sel yang terpisah maka akan ada rumus yang memeriksa keadaan kotak centang dan menghitung nilai sel target tergantung pada ini. Tetapi bagaimana dengan fakta bahwa seluruh tabel statis dalam waktu, dan ketika Anda mengubah nilai satu sel variabel, nilai semua sel lain yang merujuknya dalam rumus adalah langsung dan "tanpa permintaan"? Saya belum menemukan sesuatu yang lebih baik daripada mengkompensasi kurangnya rutinitas dan loop menggunakan tab. Anda cukup membuat tab di tabel karena ada siklus dalam permainan dan berapa kali per game, secara teoritis, satu variabel dapat mengubah nilainya. Kemudian, misalnya, sel di tab-2 akan mewarisi nilai sel yang sama di tab-1, mengalami beberapa perubahan dan mentransfer nilainya ke sel yang sama dari tab-3. Misalnya, lihat tab untuk siklus dalam permainan Dominasi Dunia.

Menurut plot, game selalu berakhir setelah 6 tahun, jadi ada 6 tab dengan bidang game di tabel.
Dan di sini, misalnya, adalah formula yang menghitung anggaran negara pada tahun ketiga permainan, meringkas anggaran awal tahun kedua dan jumlah pertumbuhan anggaran tahun kedua:

Di sini E41 adalah jumlah dalam anggaran pada awal tahun, X44 adalah jumlah perubahan dalam anggaran selama tahun tersebut.
Atau di sini adalah rumus yang menampilkan data tentang kondisi ekonomi kota dalam sel di tablet pemain, tergantung pada tahun berapa yang ada di halaman. Bergantung pada nilai sel "penghitung tahun" $ F $ 1, nilai sel E36 yang sama ditampilkan, tetapi dari tab yang berbeda sesuai dengan tahun tertentu.

Sayangnya, solusi semacam itu memungkinkan untuk mengembangkan hanya game berbasis giliran yang terdiri dari siklus tertentu (siang, malam, bulan, tahun, dll.). Selain itu, jumlah siklus harus terlihat, jika tidak, akan butuh selamanya untuk menulis kode. Namun, jika tidak ada tugas untuk memberi tahu para pemain tentang nilai-nilai menengah dari parameter permainan dan melacak dinamika mereka dalam proses, dengan siklus-tab Anda tidak dapat mengganggu sama sekali.
Distribusi peranKadang-kadang, sebelum dimulainya permainan, saya ingin mendistribusikan peran dengan bijak sehingga, misalnya, karakter yang paling aktif pergi ke pemain yang lebih ramah, dan peran double-bottom pergi ke para peserta yang dapat menggertak dan menahan emosi. Dalam permainan "Rapat Darurat" tugas ini juga otomatis. Sebelum awal permainan, peserta menerima tautan ke kuesioner dalam format Google Forms, tempat mereka menjawab beberapa pertanyaan tentang preferensi permainan mereka.

Data-data ini jatuh ke dalam tabel di mana algoritma berdasarkan mereka mendistribusikan peran antara para pemain.
Pengumpulan data pemainBagaimana cara mengatur pengumpulan data dari pemain, jika ada 80 dari mereka? Pada awalnya, sepertinya ide bagus untuk menggunakan utusan untuk tujuan ini. Setiap pemain (atau setiap kapten tim) memiliki ruang obrolan langsung dengan tuan rumah, di mana ia dapat mengirim tim dan perintahnya, memberi tahu tentang keputusan yang diambil. Namun, game uji menunjukkan bahwa kurir adalah ide yang buruk. Pemain mulai membanjiri, mengajukan banyak pertanyaan, melakukan kesalahan dan membatalkan pesanan yang sebelumnya dikirim. Akibatnya, kecepatan pemrosesan menurun, tumpukan kueri bertambah, dan pemain harus menunggu beberapa menit agar pesanan mereka berlaku. Selain itu, peserta menghabiskan sebagian besar permainan dengan duduk di smartphone mereka, dan ini tidak berkontribusi pada komunikasi dan pembangunan tim yang hidup.
Keputusan yang baik adalah mengumpulkan data dari pemain melalui kuesioner dan kartu. Misalnya, dalam "Wabah Venesia", pemain sepanjang pertandingan menyerahkan kartu yang lengkap kepada tuan rumah dengan kata-kata seperti "Paolo Alighieri mengirim pembunuh ke Giacomo Sforza" atau "Leonardo Bertolucci menggoda Lucretia Medici", dan tuan rumah hanya perlu memeriksa meja di persimpangan nama-nama yang sesuai dan nama keluarga.

Dan dalam permainan "Hari Pemilihan", tim siswa senior mengirimkan kuesioner lengkap format ini setelah setiap siklus permainan.

Data dalam kuesioner semacam itu disederhanakan sebanyak mungkin, dan tuan rumah membutuhkan tidak lebih dari 5 detik untuk mengarahkan mereka ke dalam tabel.
Penyesuaian saldoDalam permainan permainan peran, keseimbangan permainan itu penting: sumber daya harus selalu sedikit, dan berbagai alat untuk mencapai tujuan kira-kira sama efektifnya. Balance dapat dibangun hanya secara manual dan hanya secara empiris, melakukan serangkaian game uji. Agar tidak menjadi gila, mengubah parameter di setiap rumus dan di setiap sel bolak-balik, solusi yang sangat mudah adalah tab referensi terpisah, di mana semua parameter khusus ditampilkan, dan rumus dari sisa tabel merujuk pada mereka. Menggunakan direktori, Anda juga dapat, misalnya, mengubah bahasa permainan dengan satu sakelar kotak centang. Fungsi seperti itu diimplementasikan dalam game "Dominasi Dunia".
Memasukkan data ke dalam sistemUntuk mencegah permainan melorot, tuan rumah harus dapat memasukkan data ke dalam tabel secepat dan seergonomis mungkin. Di tabel Google, Anda dapat mengonfigurasi format input data (validasi dada). Format tercepat dan paling nyaman adalah kotak centang. Benar, tidak semua rumus bisa berfungsi dengan nilai TRUE dan FALSE. Oleh karena itu, lebih baik untuk segera menerjemahkan nilai-nilai kotak centang menjadi nol atau satu di beberapa sel teknis tetangga, dan kemudian lakukan apa pun yang Anda inginkan dengan nol dan satu ini.
Daftar drop-down juga merupakan format input yang sangat nyaman jika lebih dari dua nilai diasumsikan dalam sel. Kehadiran opsi yang sudah jadi dalam daftar melindungi presenter dari kesalahan ketik, yang dalam permainan dapat memainkan peran penting.
Berikut adalah contoh bidang entri data di Dominasi Dunia.
Indikasi acaraPenting bagi fasilitator untuk memperhatikan peristiwa permainan tepat waktu dan menanggapinya. Jadi, dalam "Pertemuan Darurat" Anda perlu memperhatikan perubahan dalam sel dengan jumlah kartu yang perlu dikeluarkan untuk para pemain pada waktunya. Dan dalam "Dominasi Dunia" Anda harus memberi tahu para pemain pada waktunya bahwa kota tersebut telah mengalami serangan nuklir. Agar presenter tidak melewatkan apa pun, Anda dapat menggunakan properti pemformatan bersyarat sel (pemformatan bersyarat) - dengan bantuannya Anda dapat, misalnya, membuatnya sehingga ketika teks "kota dihancurkan" muncul, sel itu sendiri dicat merah. Di bidang pandang presenter akan ada titik merah terang yang tidak mungkin untuk tidak diperhatikan.
Informasi IndividuMungkin ada situasi dalam permainan ketika beberapa data diketahui oleh satu tim dan yang lainnya tidak. Misalnya, dalam permainan Dominasi Dunia, informasi tentang keberadaan senjata nuklir di negara tertentu diklasifikasikan. Dalam hal ini, nyaman untuk menggunakan perangkat output terpisah untuk setiap perintah, dan untuk hanya menampilkan informasi yang tersedia untuk umum di layar utama. Secara teknis, ini dipecahkan sebagai sekelompok tabel yang terpisah (file untuk setiap tim) di mana hanya informasi yang diperlukan ditarik dari tabel utama menggunakan fungsi IMPORTRANGE.
Ngomong-ngomong,
Google Sheets menyediakan kemampuan untuk mengekspor data dari tabel ke antarmuka web , jadi jika Anda mau, alih-alih tabel kering, pemain dapat menampilkan data pada tablet dalam bentuk infografis yang ditata dengan indah dan animasi.
Grafik rapiDalam permainan, terkadang, alih-alih angka, Anda ingin menampilkan grafik, tetapi diagram standar mengganggu Anda dengan redundansi mereka. Dan juga karena mereka tidak tahu cara menempel pada sel dan selalu terlihat sangat berantakan. Untungnya, tabel Google memiliki fungsi SPARKLINE. Fungsi ini menampilkan grafik mini di dalam sel. Ini memiliki pengaturan tertentu, dan dapat digunakan untuk visualisasi singkat beberapa data.
Berita GamingKadang-kadang diperlukan tidak hanya untuk menampilkan nomor dalam sel, tetapi juga untuk merumuskan ide dalam bentuk kalimat yang dibangun secara kompeten (misalnya, di bagian "Berita Terbaru"). Dalam hal ini, fungsi CONCATENATE hadir untuk menyelamatkan, yang dapat merekatkan potongan teks dengan nilai digital dari sel yang berbeda. Begini rumusnya menggunakan fungsi ini.
RingkasanDalam "Dominasi Dunia" dan "Wabah Venesia", tidak hanya pemenang utama, tetapi juga tim-tim yang membedakan diri mereka dalam berbagai nominasi diumumkan di final pertandingan. Untuk meringkas, sangat nyaman untuk menggunakan fungsi MAX, yang menghitung jumlah maksimum dalam kisaran. Tuan rumah tidak perlu melakukan apa pun ekstra - cukup baca nama-nama tim yang menang dari layar.
