Tidak ada yang seperti rutin mengubah kode, mengkompilasi kode yang membutuhkan waktu beberapa menit, mengeksekusi kode, menyadari bahwa tweak Anda berada di arah yang salah dan mengulangi proses dari awal lagi.
Saya ingin mulai berinteraksi dengan logika permainan saya saat sesi sedang berlangsung. Apa saja cara Anda menangani hal ini?
Saya akan terbuka untuk mendengar solusi untuk iOS, C / C ++ dan C # / XNA.
sumber
Dalam C / C ++ trik sederhana adalah menempatkan tweakable Anda menjadi variabel statis, memicu breakpoint, mengubah statis di debugger dan tetap bertahan sampai keluar.
sumber
Pencatatan HTTP sangat membantu, dan tidak sulit untuk bangkit dan berjalan. Anda bahkan dapat menggunakan mesin Google App sebagai cara cepat untuk menjalankan ini. Data selalu bermanfaat.
Script & XML ini dapat dimuat ulang dengan cepat dan tidak memerlukan reset. Biarkan mereka gagal tanpa menurunkan permainan. Ini memberi banyak kekuatan untuk seniman, penguji dan desainer.
Menu Debug dalam Gim. Menu debug gim yang sederhana yang dapat Anda tumbuhkan sebagai anak kecil dan membekukan gim dengan slider mesin dan slider gim. Mengizinkan Anda mengubah nomor kunci saat runtime dan mungkin melakukan satu atau dua fungsi debug, atau info dump.
Saya juga suka soket ASYNC seperti yang disebutkan dalam jawaban David
Mudah DIGUNAKAN Tim gim Anda harus dapat menambah alat ini dan menggunakannya dengan sangat mudah, atau alat itu tidak akan digunakan.
sumber
Saya tahu Sean James sudah mengatakannya . Tapi serius, Visual Studio (khususnya alat debugging) hebat untuk ini.
Saya tidak menggunakan C ++ banyak hari ini, jadi saya tidak yakin seberapa baik ini berlaku di sana. Tetapi untuk C # (termasuk dalam C # Express) Anda memiliki:
Dan ini mungkin membuat Anda berpikir (itu membuat saya bingung ketika saya mengetahuinya):
Jendela Segera sebenarnya agak sulit ditemukan (ada di menu Debug / Windows).
Satu-satunya kelemahan utama menggunakan debugger Visual C # adalah tidak suka mengubah
const
nilai. Jadi saya biasanya hanya membuat nilai-nilai terkait gameplay sayastatic
sementara saya men-tweak mereka.(Juga: memiliki dua monitor sangat membantu.)
Sekarang saya harus mengakui bahwa metode di atas melibatkan menjeda aplikasi Anda - yang bisa lambat untuk beberapa hal fiddly.
Pada kesempatan langka ini, apa yang saya lakukan (dalam XNA) adalah cukup meretas sedikit kode (mungkin menggunakan Edit dan Lanjutkan, seperti di atas) untuk meraih
Keyboard.GetState().IsKeyDown()
(sebenarnya saya memiliki pembungkus yang lebih mudah diketik untuk ini) dan menyesuaikan nilai dengan penekanan tombol. Apa pun yang lebih rumit tidak sepadan dengan usaha.Dalam praktiknya, apa yang biasanya saya temukan jauh lebih penting adalah mampu memvisualisasikan (daripada memodifikasi) nilai-nilai secara real-time. Untuk ini saya memiliki kelas kecil yang bagus yang dapat buffer garis dan teks yang akan ditarik pada akhir frame. Ini juga berguna untuk pembuatan prototipe cepat.
(Dan, sekali lagi, senang bisa "Edit dan Lanjutkan" visualisasi ini di saat runtime.)
(sumber: andrewrussell.net )
( dari sini )
Saya khawatir saya tidak memiliki sumber "bagus" untuk dipublikasikan saat ini (mungkin nanti). Tapi itu pada dasarnya hanya daftar baris (untuk pustaka garis bundar ini ) dan string (untuk SpriteBatch bawaan XNA). Buat saja di
public static
suatu tempat, dan gambar semuanya dengan transformasi yang sesuai sehingga semuanya muncul di "ruang dunia" (dan kemudian kosongkan daftar untuk frame berikutnya).sumber
Menulis sistem refleksi sederhana untuk C / C ++ cukup sepele. Dengan cara ini Anda dapat menelusuri semua variabel Anda dalam game (baik itu dengan alat jaringan, keyboard atau joypad) dan mengubahnya sesuai dengan isi hati Anda. Ini bekerja untuk saya, tetapi semua jawaban di atas sama-sama valid.
Diedit untuk menambahkan: Thread ini sekarang tentang tweaker, bukan debugging sesuai judul thread.
sumber
Salah satu solusi yang saya lihat di beberapa studio adalah aplikasi debugging eksternal yang melekat pada program Anda menggunakan jaringan. Aplikasi ini menunjukkan variabel terbuka tertentu, dan memungkinkan Anda untuk mengeditnya secara langsung. Menambahkan variabel baru adalah masalah menambahkan beberapa makro ke kode game.
Pengaturan awal makro sisi permainan, protokol server / klien (solusi yang saya lihat hanya serialise xml bolak-balik), dan penulisan klien, sangat besar. Namun itu sangat berguna, terutama karena menggunakan jaringan untuk komunikasi berarti Anda dapat bekerja pada platform apa pun.
sumber
Ikat pemuatan dan pembacaan variabel ke dalam file teks dan jalankan dengan menggunakan keybinding atau perintah tertentu dari konsol.
sumber