Pendekatan: Tingkat simulasi yang lebih tinggi
Waktu Anda untuk antarmuka pengguna Anda harus dipisahkan dari loop game Anda yang sebenarnya, sebagaimana rendering Anda. Katakan misalnya dunia Anda berjalan dengan kecepatan 4x. Katakanlah pada kecepatan dasar (1x) Anda, game Anda menjalankan 30 pembaruan per detik.
Anda kemudian akan memiliki sesuatu seperti berikut ini, ketika dalam mode maju cepat:
- World logic menjalankan 4 pembaruan untuk setiap pembaruan UI dan renderer. Ini berarti perlu menjalankan 120 pembaruan per detik. Dengan demikian, model dunia Anda (data) diperbarui pada tingkat ini.
- Renderer dan logika UI terus melakukan jajak pendapat atau melakukan apa pun dengan 30 pembaruan per detik.
Dengan kata lain, game secara keseluruhan tidak berjalan lebih cepat. Bagian simulasi adalah.
Anda dapat menyimpulkan dua hal dari ini:
Anda perlu menjaga logika permainan Anda cukup sederhana sehingga Anda dapat dengan mudah menjalankannya empat kali lebih cepat pada platform target Anda, ATAU Anda perlu memperkenalkan metode untuk mengekstrapolasi berbagai aspek gameplay lebih cepat - ini dapat menghasilkan, meskipun, dalam model yang berbeda dari yang seharusnya jika Anda hanya menggunakan simulasi yang berjalan lebih cepat. Jadi tradeoff akan memproses biaya untuk akurasi. Lihat pendekatan 2, di bawah ini.
Ini adalah pemisahan dari kekhawatiran yang memungkinkan Anda untuk dengan cepat mempercepat simulasi dunia Anda, pemisahan itu menjadi model, view and controller ( MVC ). Jika data dunia Anda (M), logika render (V), dan logika game (C) semuanya tercampur, Anda benar-benar tidak akan dapat melakukan ini, setidaknya bukan tanpa migrain yang masif.
Pendekatan: Ekstrapolasi berdasarkan delta waktu
Seperti yang disebutkan di atas, Anda harus menghitung gerakan berdasarkan seberapa jauh sesuatu akan terjadi dalam waktu tertentu. Ini mengasumsikan fisika permainan Anda secara inheren lebih realistis dalam simulasi mereka, namun, yang mungkin tidak terjadi. Ini adalah topik yang agak besar dan jauh lebih kompleks. Anda perlu bertanya lebih banyak tentang apakah Anda ingin tahu. Pada dasarnya, Anda akan melakukan beberapa kalkulus untuk memperbaiki keadaan. Anda harus berurusan dengan interpenetrasi dalam tabrakan dan sejumlah masalah lain yang tidak akan saya bahas di sini.
Untuk menyimpulkan
Ini memberi Anda garis besar umum. Pilihan bahasa Anda adalah milik Anda sendiri, mungkin Anda juga tahu bagaimana melakukannya di Unity atau tidak. Pengaturan waktu dalam bahasa apa pun mengharuskan Anda untuk memahami seluk beluk secara terperinci, saya sarankan mulai dengan artikel Gaffer dan memeriksa dokumen Unity API.