Saya membangun game indie sendiri, tetapi saya biasanya kehabisan energi begitu saya telah mengambil game yang baru dikembangkan ke tingkat di mana dimungkinkan untuk bermain dengan perilaku, jadi saya puas dengan perbaikan daripada eksplorasi. Dengan hasil yang mengerikan.
(gambar dari blog Intercom )
Sebagai contoh, saya menemukan bahwa siklus iterasi untuk perilaku tweaker (yaitu menautkan dan memulai kembali aplikasi C ++) begitu lama sehingga mereka membunuh semua kreativitas. Saya sedang membangun alat untuk menangani ini.
Apa cara lain yang ada untuk mengeksplorasi perilaku game dengan cepat? Saya tertarik pada metodologi yang digunakan oleh pengembang indie serta perusahaan besar.
c++
game-design
prototyping
Jonas Byström
sumber
sumber
Jawaban:
Seperti yang telah Anda catat, saat Anda mengerjakan mekanika game, kecepatan iterasi sangat penting. Semakin lama waktu antara memikirkan modifikasi dan mampu menguji dengan modifikasi itu, semakin tidak produktif Anda, dan semakin Anda akan terganggu. Akibatnya, Anda pasti ingin mengatur waktu iterasi Anda.
Bagi saya, saya menemukan bahwa produktivitas saya benar-benar mulai menurun ketika waktu untuk menguji perubahan sederhana melebihi sekitar lima detik. Jadi, ketika Anda bereksperimen untuk menyempurnakan cara permainan terasa, salah satu tujuan Anda harus mencari tahu "bagaimana saya bisa membuat perubahan dan kemudian bermain menggunakan perubahan itu dalam waktu kurang dari lima detik". Tidak masalah bagaimana Anda melakukannya, selama Anda dapat menahan waktu iterasi hingga ke tingkat itu.
Banyak mesin modern besar (Unity, Unreal, dll) cenderung melakukan ini dengan menempatkan editor mereka di dalam mesin game, sehingga Anda dapat membuat sebagian besar modifikasi hidup, tanpa harus memulai kembali permainan. Mesin / game yang lebih kecil biasanya memfokuskan kerja ke arah lain; buat kompilasi game dan luncurkan begitu cepat sehingga tidak masalah jika Anda harus memulai ulang game untuk setiap perubahan; Anda akan tetap berada di dan menguji sebelum lima periode kedua habis.
Dalam proyek saya saat ini, dibutuhkan sekitar sepuluh detik bagi saya untuk melakukan kompilasi ulang kecil, menautkan, meluncurkan game, dan kemudian mencapai gameplay (sebagian besar menghasilkan geometri dunia yang dapat diulang saat memuat game yang disimpan). Dan itu terlalu lama. Jadi saya telah membuat mode permainan "pengujian" terpisah yang memungkinkan saya menguji berbagai bagian permainan tanpa memuat semua aset gim nyata, sehingga saya bisa masuk dan keluar lebih cepat, lebih cepat; biasanya sekitar dua hingga tiga detik. Jika saya ingin menguji beberapa UI, saya bisa melakukannya tanpa memuat ke dalam game nyata. Jika saya ingin menguji rendering, saya memiliki mode lain di mana saya dapat mengujinya, lagi tanpa memuat seluruh sistem permainan.
Saya telah melihat orang lain yang telah mendekati masalah dengan menempatkan logika game ke dalam DLL, dan membiarkan game yang sudah ada di dalam memori dapat dieksekusi memuat ulang DLL saat game sedang berjalan, sehingga Anda dapat membangun kembali DLL dan hanya memuatnya kembali di dalam sebuah sudah dapat dieksekusi, jadi Anda tidak perlu memuat ulang / membangun kembali aset seni gim Anda. Ini sepertinya gila bagi saya, tetapi saya telah melihatnya selesai.
Jauh lebih sederhana daripada itu untuk menentukan perilaku permainan dan / atau konfigurasi dalam skrip atau file data, dan menyediakan cara untuk membuat sistem Anda memuat ulang file-file itu, baik sesuai permintaan, atau mungkin hanya menontonnya untuk modifikasi, tanpa harus menutup gim turun, tautkan kembali, lalu mulai lagi.
Ada banyak pendekatan. Pilih yang terbaik untuk Anda. Tetapi salah satu kunci keberhasilan penyempurnaan mekanik gim adalah pengulangan yang sangat cepat. Jika Anda tidak memilikinya, hampir tidak masalah apa pun yang Anda lakukan.
sumber
IF DEBUG
arahan kompiler literal ) yang langsung menuju ke status "pengujian" saya (melewatkan menu permainan) dll.), yang hanya merupakan area bermain tanpa tulang dengan aset apa pun yang saya uji pada saat itu. Jadi pada dasarnya saya mengkompilasi executable alternatif yang secara otomatis memuat level yang sangat rendah (lebih sedikit aset untuk dimuat + tidak ada omong kosong dengan menu game setiap saat).Untuk membuat prototipe dengan baik, kurangi biaya pengujian ide.
Alur kerja saya disetel untuk gim kecil, tetapi menurut saya hal ini bermanfaat:
Makefile
denganmake watch
target yang berjalaninotifywait
dalam satu lingkaran, bereaksi terhadap perubahan file dengan secara otomatis mengkompilasi / menjalankan permainan. Dalam bahasa yang ditafsirkan atau dikompilasi JIT , ini instan.sumber
Sebagai pengembang yang sebagian besar berfokus pada pembuatan prototipe, inilah sedikit saran dari pengalaman saya.
Lihatlah berapa banyak waktu yang dibutuhkan prototipe Anda. Dalam pengalaman saya, Anda ingin memiliki versi apa pun yang dapat dimainkan dalam maksimal dua hari - mulai dari awal; dan Anda ingin menguji satu atau dua fitur baru setiap hari. Jika Anda tidak memenuhi target ini, cari cara untuk menjadi lebih cepat.
sumber
Satu dapat membagi pengembangan game antara empat fase ini:
Eksplorasi gameplay yang saya percaya sebagian besar terjadi pada fase prototyping dan ini adalah beberapa saran yang saya coba ikuti:
Mulailah mendesain dengan prototipe kertas. Setelah Anda memiliki gagasan yang jelas tentang apa permainan itu, mulailah mengkodekannya sehingga Anda benar-benar dapat merasakan interaksinya. Mungkin ini tidak berguna untuk game 3D tetapi secara pribadi ini telah banyak membantu saya di masa lalu.
Kode mengetahui bahwa Anda akan membuang kode setelah selesai. Ini akan memungkinkan Anda untuk menjadi liberal ketika harus memilih mesin permainan apa.
Siklus iterasi yang cepat adalah penting (seperti yang telah disebutkan sebelumnya). Pilih mesin game berdasarkan kemampuannya untuk dengan cepat menunjukkan kepada Anda apa yang Anda kodekan. Anda juga tidak perlu peduli dengan kinerja atau kesetiaan grafis pada fase ini.
Batasi ruang lingkup Anda. Jika gameplay sebenarnya adalah 2D (game strategi biasa, JRPG), prototipe dalam 2D. Pada fase ini Anda hanya peduli tentang umpan balik pada gameplay .
Jangan buang waktu memoles atau mencari aset. Mencorat-coret sesuatu di atas kertas, mengambil foto itu, memotongnya di Photoshop, mungkin mewarnai dan menggunakannya sebagai sprite. Nyalakan mikrofon Anda dan ucapkan "pew pew". Letakkan dua kubus dan satu bulatan bersama dan Anda memiliki robot. Selalu ingat, menjelajahi kemungkinan gameplay adalah prioritas pertama dan satu-satunya Anda.
Setelah memutuskan prototipe yang menyenangkan, mulailah menyempurnakannya. Saya tidak berpikir ada alasan untuk beralih teknologi, kecuali jika ada elemen gameplay yang membutuhkannya.
Kemudian dalam fase pengembangan, Anda akan menjaga prototipe yang disempurnakan di tangan sambil mengembangkan baru, jauh lebih tampan, terdengar lebih baik, perasaan permainan jauh lebih baik. Di sini Anda harus memilih mesin gim yang sebenarnya untuk digunakan.
Pada akhirnya, ambil apa yang Anda miliki dan sesuaikan untuk menggunakan lebih sedikit sumber daya.
Sebagian besar dari apa yang saya jelaskan di atas adalah pengetahuan umum tetapi memasukkannya ke dalam daftar, mengelompokkan seluruh proses pengembangan, membantu saya menempatkan setiap langkah dalam perspektif. Saya harap ini membantu Anda juga.
sumber
Saya setuju dengan jawaban Trevor Powell bahwa kecepatan iterasi sangat penting bagi Anda untuk tetap dalam suasana kreatif daripada hanya memoles. Sumber inspirasi besar bagi saya adalah ceramah Bret Victor, "Menciptakan Prinsip" . Sayangnya, sulit untuk menemukan alat nyata di tingkat itu. Saya mencoba membuat sendiri untuk pengembangan Python yang memungkinkan saya menjalankan kode Python saya saat saya mengetiknya. Ini disebut Pengodean Langsung dengan Python .
sumber
Saya membangun alat prototyping yang disebut Trabant yang:
Saya membuat 30 prototipe uji untuk memverifikasi di atas.
Sebagaimana Trevor Powell menekankan iterasi harus <5 detik, dan saya menemukan iterasi hampir lima kali lebih baik.
:)
Anko menyebutkan bahwa menggunakan bahasa dinamis adalah ide yang bagus, saya memilih Python karena itu adalah salah satu yang paling banyak digunakan . Mengenai otomatisasi pembuatan, pengujian di Trabant sama cepatnya dengan menekan F5 di IDE (atau F6 untuk mengujinya di iPad Anda), dan karena tidak ada langkah pembangunan yang terlibat, tidak jadi lebih instan dari ini.
Kode Throwaway adalah salah satu takeaways Nevermind . Saya sepenuhnya setuju, dan Trabant menegakkannya.
sumber
Selain kecepatan iterasi Trevor Powell yang sangat penting, berikut adalah beberapa pertimbangan berguna lainnya:
Seperti kode yang bagus ...
Banyak IF di sana.
Semakin solid konsep semakin sedikit Anda perlu bermain-main. Jika Anda tahu apa yang ingin Anda lakukan, membuat prototipe menjadi - apa yang akan diletakkan dan bagaimana mengatur hal-hal yang terkait dengan pilar utama (hal utama Anda).
Jika Anda memulai seperti banyak orang lain - tidak yakin apa yang ingin Anda lakukan, Anda menuju ke suatu arah dan mengeksplorasi banyak cara gambar yang Anda tunjukkan.
Apa pun komitmen terhadap suatu teknologi tidak relevan jika apa yang Anda cari dapat disimulasikan tanpa banyak kedalaman - prototipe pada apa pun yang Anda inginkan / dapat.
Jangan buang satu detik pun pada sumber daya. Unduh semuanya dari internet. Milik eksklusif atau tidak. Anda ingin merasakan konsep Anda di tempat kerja - kecuali grafis adalah fitur utama Anda, tidak ada yang akan menuntut Anda karena bereksperimen dengan suara, tekstur, dan segalanya milik orang lain, Anda belum meletakkannya di rak di toko dulu. Kecuali jika Anda sudah didanai - meyakinkan orang bahwa konsep itu bermanfaat adalah hal yang akan memberi Anda uang untuk mendapatkan sumber daya yang Anda inginkan. Saya telah melihat orang-orang di studio game menyajikan konsep game dengan versi mod dari game eksklusif yang tidak mereka miliki haknya.
Seperti Anda sedang membangun model skala. Sementara itu luar biasa untuk memiliki replika kehidupan mini dari apa yang Anda inginkan. Terkadang cukup untuk memotongnya dari majalah, kerajinan tangan dan rekatkan potongan-potongan itu. Semua orang dengan noda imajinasi tidak akan menganggap Anda benar-benar akan membangun gedung pencakar langit dari kardus yang sama dengan yang Anda tunjukkan dengan model skala. Dan di industri kreatif - jenisnya lebih disukai untuk bekerja dengan orang-orang dengan imajinasi. Jika mereka tidak dapat melihat melewati beberapa masalah rancangan untuk melihat potensi di balik keseluruhan konsep, mereka jarang akan menghargai suatu produk. Tidak ada penghargaan berarti mereka kurang mau berkomitmen dan itu spiral ke bawah. Ini perbedaan antara mengatur sikap anak Anda untuk menaklukkan dunia dan bukannya mengatakan "Anda bahkan tidak bisa mengikat sepatu Anda dengan benar, Anda bajingan kecil,
Apa pun yang Anda lakukan, selalu ingat bahwa sikap saja sudah lebih dari cukup untuk menghancurkan apa pun tanpa mempedulikan potensi teknologis atau ekonomisnya.
Saya pernah membuat prototipe permainan menggunakan gambar gif eksklusif dan memberi mereka sedikit hubungannya dengan javascript. Itu tidak menyilaukan tetapi melayani tujuan menunjukkan apa yang ingin saya tunjukkan. Tidak masalah jika nanti Anda mengembangkannya untuk Xbox secara eksklusif.
Jika ide Anda lebih kompleks daripada prototipe sederhana, maka Anda harus melakukan penelitian ke dalam teknologi yang akan Anda gunakan - karena prototipe akan menjadi perancah untuk hal terakhir (hanya karena banyak yang diinvestasikan dalam dan itu tidak bisa dibuang dengan mudah) - jika Anda mendapatkannya jelas disetujui.
sumber