লোড করুন এবং কোরোনা এসডিকে গেম ডেটা কিভাবে সংরক্ষণ করবেন

কিভাবে খেলা ডেটা এবং সেটিংস স্টোর করার জন্য SQLite ব্যবহার করুন

প্রায় প্রতিটি অ্যাপ্লিকেশন এবং খেলা সাধারণ মধ্যে আছে এক জিনিস সঞ্চয় এবং তথ্য পুনরুদ্ধার করা প্রয়োজন। এমনকি সবচেয়ে সহজ গেম অ্যাপ্লিকেশন সংস্করণ নম্বর সংরক্ষণ করতে SQLite ব্যবহার করতে পারে, যা আপগ্রেড করার সময় সামঞ্জস্য নিশ্চিত করার জন্য ব্যবহার করা যেতে পারে, অথবা সহজে সেটিংস যেমন খেলা এর শব্দ চালু বা বন্ধ করা যায়

আপনি যদি উপাত্তগুলির সাথে অনেক কাজ না করেন বা কোরোনার SDK- এর ডেটাবেস বৈশিষ্ট্য ব্যবহার করেন, তাহলে চিন্তা করবেন না। এটি আসলে একটি অপেক্ষাকৃত সহজলভ্য প্রক্রিয়া যা লুটা শক্তি এবং কোরোনার এসডিএকে ব্যবহার করা SQLite ডাটাবেস ইঞ্জিনের জন্য ধন্যবাদ। এই টিউটোরিয়ালটি একটি সেটিংস টেবিল তৈরির প্রক্রিয়ার মধ্য দিয়ে চলবে এবং এটি থেকে তথ্য সংগ্রহ ও পুনরুদ্ধার উভয়ই অনুসরণ করবে। কিভাবে আইপ্যাড অ্যাপ্লিকেশন বিকাশ?

এছাড়াও মনে রাখবেন এই কৌশলটি ব্যবহারকারী-ভিত্তিক সেটিংস সংরক্ষণের বাইরে যেতে পারে। উদাহরণস্বরূপ, যদি আপনার একটি খেলা থাকে যা "কাহিনী" মোড এবং "আরক্যাড" মোডের মতো বিভিন্ন গেম মোড ব্যবহার করে প্লে করা যায়। এই সেটিং টেবিল বর্তমান মোড সংরক্ষণ করতে ব্যবহার করা যেতে পারে। বা অন্য কোনও টুকরো ডাটা যেটি আপনি অব্যাহত রাখতে চান এমনকি যদি ব্যবহারকারী গেমটি থেকে বেরিয়ে আসে এবং এটি পুনরায় চালু করেন তবে

ধাপ এক: ডাটাবেস শুরু এবং সেটিংস টেবিল তৈরি

আমরা যা করতে যাচ্ছি প্রথম জিনিস হল SQLite লাইব্রেরী ঘোষণা এবং ডাটাবেস ফাইলটি কোথায় খুঁজে পেতে আমাদের অ্যাপ্লিকেশনকে বলুন। এই কোডটি রাখা সবচেয়ে ভাল জায়গা ডান অন্যান্য। বিবৃতি প্রয়োজনীয়তার সাথে main.lua ফাইলের শীর্ষে। ডাটাবেস ফাইল তৈরি করা হবে যদি কেউ পাওয়া না যায়, এবং আমরা এটি ডকুমেন্টস ফোল্ডারে সংরক্ষণ করব যাতে আমরা এটি থেকে পড়তে এবং এটিকে লিখতে পারি।

"sqlite3" প্রয়োজন
স্থানীয় ডাটা_পথ = system.pathForFile ("data.db", system.documents.directory);
ডিবি = sqlite3.open (data_path);

লক্ষ্য করুন কিভাবে "db" ভেরিয়েবল স্থানীয়করণ করা হয় না। আমরা আমাদের প্রকল্প জুড়ে ডাটাবেস অ্যাক্সেস করতে পারেন তা নিশ্চিত করতে আমরা এটি করেছি। আপনি সমস্ত ডাটাবেস ফাংশনগুলির জন্য একটি নির্দিষ্ট .lua ফাইল তৈরি করতে পারেন এবং সেই ফাইলটিতে ডাটাবেসকে স্থানীয়করণ করতে পারেন।

পরবর্তী, আমাদের ডাটাবেস সারণী তৈরি করতে হবে যা আমাদের সেটিংস সংরক্ষণ করবে:

স্থানীয় এসকিউএল = "সেটিংস তৈরি না হলে টেবিল তৈরি করুন (নাম, মান);"
ডিবি: Exec (SQL);

এই বিবৃতি আমাদের সেটিংস টেবিল তৈরি করে। এটি প্রতিটি বার অ্যাপ্লিকেশন লোড চালানো ঠিক আছে কারণ টেবিলের ইতিমধ্যে বিদ্যমান, এই বিবৃতি কিছু করতে হবে না। আপনি এই বিবৃতিটিকে যেখানে আমরা ডেটাবেস ঘোষণা করেছি বা ফাংশনটি যেটি আপনার অ্যাপ্লিকেশানটি চালানোর জন্য সেট করে রেখেছে তার অধীনে রাখতে পারেন। প্রধান প্রয়োজন হল (1) এই বিবৃতিটি প্রয়োগ করা প্রতিটি সময় অ্যাপ্লিকেশন চালু এবং (2) সেটিংস লোড বা সংরক্ষণ করার জন্য কোন কল আগে এটি চালানো।

ধাপ দুই: ডাটাবেসের সেটিংস সংরক্ষণ করা

ফাংশন সেট সেট (নাম, মান)
sql = "সেটিংস থেকে যে নামটি মুছে ফেলুন = '" .. নাম .. "'";
db: exec (sql)

sql = "সেটিংসে (নাম, মান) মানগুলি লিখুন ('" ..name .. "," .. মান .. ");";
db: exec (sql)
শেষ

ফাংশন setSettingString (নাম, মান)
setSetting (নাম, " '" .. মান .. "'");
শেষ

SetSetting ফাংশন সারণিতে সংরক্ষিত পূর্ববর্তী সেটিংস মুছে ফেলে এবং আমাদের নতুন মান সন্নিবেশ করায়। এটি উভয় পূর্ণসংখ্যা এবং স্ট্রিং সঙ্গে কাজ করবে, কিন্তু একটি স্ট্রিং সংরক্ষণ মূল্য কাছাকাছি একক কোট প্রয়োজন, তাই আমরা setSettingString ফাংশন ব্যবহার করেছি আমাদের জন্য যে অতিরিক্ত বিট কাজ করতে

ধাপ তিন: ডাটাবেস থেকে সেটিংস লোড হচ্ছে

ফাংশন getSetting (নাম)

স্থানীয় sql = "নির্বাচন করুন সেটিংস থেকে যেখানে নাম = '" .. নাম .. "'" ";
স্থানীয় মান = -1;

db সারিতে জন্য: nrows (sql) করবেন
মান = row.value;
শেষ

ফেরত মূল্য;
শেষ

ফাংশন getSettingString (নাম)
স্থানীয় sql = "নির্বাচন করুন সেটিংস থেকে যেখানে নাম = '" .. নাম .. "'" ";
স্থানীয় মান = '';

db সারিতে জন্য: nrows (sql) করবেন
মান = row.value;
শেষ

ফেরত মূল্য;
শেষ

হিসাবে উপরে, আমরা দুটি সংস্করণ মধ্যে ফাংশন বিভক্ত করেছি: এক পূর্ণসংখ্যার জন্য এবং স্ট্রিং জন্য এক। আমরা এই কাজটি করেছি মূল কারণ যাতে ডাটাবেসের মধ্যে কোন সেটিং বিদ্যমান না হলে আমরা নির্দিষ্ট মানগুলির সাথে তাদের আরম্ভ করতে পারি। GetSetting ফাংশন -1 ফিরে আসবে, এটি আমাদের জানাবে যে সেটিংটি সংরক্ষণ করা হয়নি। GetSettingString একটি ফাঁকা স্ট্রিং ফিরে আসবে।

GetSettingString ফাংশন সম্পূর্ণরূপে ঐচ্ছিক। এটি এবং স্বাভাবিক getSetting ফাংশন মধ্যে শুধুমাত্র পার্থক্য কি ডাটাবেসের মধ্যে কিছুই পাওয়া না হয় ফেরত হয়।

ধাপ চার: আমাদের সেটিংস টেবিল ব্যবহার করে

এখন যে আমরা হার্ড কাজ সম্পন্ন করেছি, আমরা সহজেই লোড এবং একটি স্থানীয় ডাটাবেস সেটিংস সংরক্ষণ করতে পারেন। উদাহরণস্বরূপ, আমরা নিম্নলিখিত বিবৃতি দিয়ে শব্দ নিঃশব্দ পারে:

setSetting ( 'শব্দ', মিথ্যা);

এবং আমরা শব্দ ব্যবহার করার জন্য একটি গ্লোবাল ফাংশন সেটিং ব্যবহার করতে পারে:

ফাংশন খেলাসাউড (সাউন্ডআইডি)
যদি (getSetting ('শব্দ')) তারপর
অডিও.প্লে (সাউন্ডআইডি)
শেষ
শেষ

শব্দ ফিরে চালু, আমরা শব্দ সেটিং সত্য সেট:

setSetting ( 'শব্দ', সত্য);

এই ফাংশন সম্পর্কে চমৎকার অংশ আপনি সেটিংস টেবিলের স্ট্রিং বা পূর্ণসংখ্যার সঞ্চয় এবং সহজে তাদের উদ্ধার করতে পারেন। এটি আপনাকে তাদের উচ্চ স্কোর সংরক্ষণ করার জন্য একটি প্লেয়ারের নাম সংরক্ষণ থেকে কিছু করতে দেয়।

কোরোনা এসডিকিঃ লেয়ার গ্রাফিক্স, মুভি গ্রাফিক্স এবং সামনে গ্রাফিক্স লঞ্চার কিভাবে করবেন?