Cara Memuat dan Menyimpan Data Game di Corona SDK

Cara Menggunakan SQLite untuk Menyimpan Data dan Pengaturan Game

Satu hal yang hampir setiap aplikasi dan game memiliki kesamaan adalah kebutuhan untuk menyimpan dan mengambil data. Bahkan gim paling sederhana pun dapat menggunakan SQLite untuk menyimpan nomor versi aplikasi, yang dapat digunakan untuk memastikan kompatibilitas ketika melakukan peningkatan, atau pengaturan sederhana seperti mengaktifkan atau menonaktifkan suara gim.

Jika Anda belum pernah melakukan banyak pekerjaan dengan basis data atau menggunakan fitur basis data di Corona SDK , jangan khawatir. Ini sebenarnya proses yang relatif mudah berkat kekuatan LUA dan mesin database SQLite yang digunakan dalam Corona SDK. Tutorial ini akan berjalan melalui proses pembuatan tabel pengaturan dan baik menyimpan dan mengambil informasi dari itu. Cara mengembangkan aplikasi iPad.

Juga perlu diingat bahwa teknik ini dapat melampaui menyimpan pengaturan berbasis pengguna. Misalnya, bagaimana jika Anda memiliki permainan yang dapat dimainkan menggunakan mode permainan yang berbeda seperti mode "cerita" dan mode "arcade". Tabel pengaturan ini dapat digunakan untuk menyimpan mode saat ini. Atau bagian data lain yang Anda ingin tetap gigih meskipun pengguna keluar dari game dan meluncurkannya kembali.

Langkah Satu: Menginisialisasi database dan membuat tabel pengaturan

Hal pertama yang perlu kita lakukan adalah mendeklarasikan pustaka SQLite dan beri tahu aplikasi kita di mana menemukan file database. Tempat terbaik untuk meletakkan kode ini tepat di bagian atas file main.lua bersama dengan pernyataan lain yang diperlukan. File database akan dibuat jika tidak ada yang ditemukan, dan kami akan menyimpannya di folder Dokumen sehingga kami dapat membaca darinya dan menulisnya.

membutuhkan "sqlite3"
local data_path = system.pathForFile ("data.db", system.DocumentsDirectory);
db = sqlite3.open (data_path);

Perhatikan bagaimana variabel "db" tidak dilokalkan. Kami telah melakukan ini untuk memastikan kami dapat mengakses basis data di seluruh proyek kami. Anda juga dapat membuat file .lua spesifik untuk semua fungsi basis data dan menjaga basis data dilokalisasi ke file itu.

Selanjutnya, kita perlu membuat tabel database yang akan menyimpan pengaturan kami:

sql lokal = "BUAT TABEL JIKA TIDAK ADA pengaturan (nama, nilai);"
db: exec (sql);

Pernyataan ini menciptakan tabel pengaturan kami. Tidak apa-apa untuk menjalankannya setiap kali beban aplikasi karena jika meja sudah ada, pernyataan ini tidak akan melakukan apa-apa. Anda dapat menempatkan pernyataan ini tepat di bawah tempat kami mendeklarasikan database atau dalam fungsi yang menyiapkan aplikasi Anda untuk dijalankan. Syarat utamanya adalah (1) untuk mengeksekusi pernyataan tersebut setiap kali aplikasi diluncurkan dan (2) menjalankannya sebelum panggilan untuk memuat atau menyimpan pengaturan.

Langkah Kedua: Menyimpan pengaturan ke database

function setSetting (nama, nilai)
sql = "HAPUS DARI pengaturan WHERE name = '" .. name .. "'";
db: exec (sql)

sql = "INSERT INTO settings (nama, nilai) VALUES ('" ..name .. "'," .. value .. ");";
db: exec (sql)
akhir

function setSettingString (nama, nilai)
setSetting (nama, "'" .. value .. "'");
akhir

Fungsi setSetting menghapus pengaturan sebelumnya yang disimpan ke tabel dan memasukkan nilai baru kami. Ini akan bekerja dengan bilangan bulat dan string, tetapi menyimpan string membutuhkan tanda kutip tunggal di sekitar nilai, jadi kami telah menggunakan fungsi setSettingString untuk melakukan itu sedikit tambahan bekerja untuk kami.

Langkah Tiga: Memuat pengaturan dari database

function getSetting (nama)

sql lokal = "SELECT * FROM settings WHERE name = '" .. name .. "'";
nilai lokal = -1;

untuk baris dalam db: nrows (sql) lakukan
value = row.value;
akhir

mengembalikan nilai;
akhir

function getSettingString (nama)
sql lokal = "SELECT * FROM settings WHERE name = '" .. name .. "'";
nilai lokal = '';

untuk baris dalam db: nrows (sql) lakukan
value = row.value;
akhir

mengembalikan nilai;
akhir

Seperti di atas, kami telah membagi fungsi menjadi dua versi: satu untuk bilangan bulat dan satu untuk string. Alasan utama kami melakukan ini adalah agar kami dapat menginisialisasi mereka dengan nilai spesifik jika tidak ada pengaturan dalam database. Fungsi getSetting akan mengembalikan -1, yang akan memberi tahu kami bahwa pengaturan belum disimpan. GetSettingString akan mengembalikan string kosong.

Fungsi getSettingString benar-benar opsional. Satu-satunya perbedaan antara fungsi getSetting normal dan apa yang dikembalikan jika tidak ditemukan dalam database.

Langkah Empat: Menggunakan tabel pengaturan kami

Sekarang setelah kami melakukan kerja keras, kami dapat dengan mudah memuat dan menyimpan pengaturan ke database lokal. Misalnya, kita dapat mematikan suara dengan pernyataan berikut:

setSetting ('sound', false);

Dan kita bisa memanfaatkan pengaturan dalam fungsi global untuk memutar suara:

function playSound (soundID)
jika (getSetting ('sound')) lalu
audio.play (soundID)
akhir
akhir

Untuk mengaktifkan kembali suara, kami cukup mengatur pengaturan suara ke true:

setSetting ('sound', true);

Bagian yang bagus tentang fungsi-fungsi ini adalah Anda dapat menyimpan string atau bilangan bulat ke tabel pengaturan dan mengambilnya dengan mudah. Ini memungkinkan Anda melakukan apa pun dari menyelamatkan nama pemain untuk menyimpan skor tinggi mereka.

Corona SDK: Cara Membuat Layer Grafis, Memindahkan Grafis, dan Membawa Grafik ke Depan