টাইলম্যাপের ডেটা সংরক্ষণ করার একটি ভাল উপায় কী?


13

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

এটি কেবল টাইল মানচিত্রের ফাইল সিস্টেম স্টোরেজ সম্পর্কিত, এটি যখন চলছে তখন ডেটা স্ট্রাকচারটি গেমটি দ্বারা ব্যবহৃত হবে না। টাইল মানচিত্রটি 2 ডি অ্যারেতে লোড করা হয়েছে, সুতরাং কোন উত্সটি থেকে অ্যারে পূরণ করা হবে সে সম্পর্কে এই প্রশ্ন।

ডিবির পক্ষে যুক্তি: আমার দৃষ্টিকোণ থেকে আমি টাইলের ডেটা সঞ্চয় করার জন্য একটি ডেটাবেস ব্যবহার করে ডেটা কম অপ্রয়োজনীয় দেখছি। একই বৈশিষ্ট্যগুলির সাথে একই x, y অবস্থানের টাইলগুলি স্তর থেকে স্তর পর্যন্ত পুনরায় ব্যবহার করা যেতে পারে। দেখে মনে হচ্ছে এটি ডাটাবেস থেকে নির্দিষ্ট স্তরে ব্যবহৃত সমস্ত টাইল পুনরুদ্ধার করার জন্য কোনও পদ্ধতি লিখতে যথেষ্ট সহজ হবে।

জেএসএন / এক্সএমএল যুক্তিযুক্ত: দৃশ্যত সম্পাদনাযোগ্য ফাইলগুলি, পরিবর্তনগুলি খুব সহজেই এসভিএন এর মাধ্যমে ট্র্যাক করা যায়। তবে বারবার সামগ্রী রয়েছে।

অন্যগুলির তুলনায় হয় কোনও ত্রুটি (লোড টাইম, অ্যাক্সেসের সময়, মেমরি ইত্যাদি) রয়েছে কি? এবং সাধারণত শিল্পে ব্যবহৃত হয়?

ফাইলটি বর্তমানে এর মতো দেখাচ্ছে:

....................
....................
....................
....................
....................
....................
....................
.........GGG........
.........###........
....................
....GGG.......GGG...
....###.......###...
....................
.1................X.
####################

1 - প্লেয়ার স্টার্ট পয়েন্ট, এক্স - লেভেল প্রস্থান,। - খালি স্থান, # - প্ল্যাটফর্ম, জি - রত্ন


2
আপনি কোন "ফর্ম্যাট" ব্যবহার করছেন? "পাঠ্য ফাইল" বলার অর্থ কেবল আপনি বাইনারি ডেটা সংরক্ষণ করছেন না। আপনি যখন "পর্যাপ্ত নিয়ন্ত্রণ এবং নমনীয়তা না" বলবেন, তখন বিশেষত কোন সমস্যাগুলি আপনি নিয়ে যাচ্ছেন? এক্সএমএল এবং এসকিউএলাইটের মধ্যে কেন টসআপ? যে উত্তর নির্ধারণ করবে। blog.stackoverflow.com/2011/08/gorilla-vs-shark
Tetrad

আমি আরও পড়তে পারা যায় বলে আমি জেএসএন-র জন্য বেছে নেব।
ডেন

3
লোকেরা কেন এই জিনিসগুলির জন্য এসকিউএলাইট ব্যবহার সম্পর্কে চিন্তা করে? এটি একটি রিলেশনাল ডাটাবেস ; লোকেরা কেন মনে করে যে একটি সম্পর্কযুক্ত ডাটাবেস একটি ভাল ফাইল ফর্ম্যাট তৈরি করে?
নিকল বোলাস

1
@ স্টেফেনটিয়ার্নি: কেন এই প্রশ্নটি হঠাৎ করে এক্সএমএল বনাম এসকিউএলাইট থেকে জেএসএন বনাম কোনও ধরণের ডাটাবেস হতে চলে গেল? আমার প্রশ্নটি বিশেষত কেন এটি ঠিক নয়, "টাইলম্যাপের ডেটা সঞ্চয় করার ভাল উপায় কী?" এই এক্স বনাম ওয়াই প্রশ্ন স্বেচ্ছাসেবী এবং অর্থহীন।
নিকোল বোলাস

1
@ কাইলোটান: তবে এটি খুব ভাল কাজ করে না। এটি সম্পাদনা করা অবিশ্বাস্যভাবে শক্ত, কারণ আপনি কেবল এসকিউএল কমান্ডের মাধ্যমে ডেটাবেস সম্পাদনা করতে পারবেন। এটি পড়া শক্ত, কারণ টেবিলগুলি আসলে কোনও টাইলম্যাপ দেখার এবং কী চলছে তা বোঝার একটি কার্যকর উপায় নয়। এবং যখন এটি অনুসন্ধান করতে পারে, তখন দেখার পদ্ধতিটি অবিশ্বাস্যরূপে জটিলভাবে জটিল c কিছু কাজ করা গুরুত্বপূর্ণ, তবে যদি এটি আসলে গেমটি আরও শক্তিশালী করে গড়ে তোলার প্রক্রিয়াটি তৈরি করে চলেছে, তবে ছোট পথটি গ্রহণ করা ভাল নয়।
নিকোল বোলাস

উত্তর:


14

সুতরাং আপনার আপডেট হওয়া প্রশ্নটি পড়ে মনে হচ্ছে আপনি লোডের সময় এবং শিল্পটি কী ব্যবহার করে সে সম্পর্কে কিছু গৌণ উদ্বেগ নিয়ে ডিস্কের "রিডানড্যান্ট ডেটা" সম্পর্কে আপনি সবচেয়ে বেশি উদ্বিগ্ন।

প্রথমে, আপনি নিরর্থক তথ্য সম্পর্কে কেন উদ্বিগ্ন? এমনকি এক্সএমএলের মতো স্ফীতিত ফর্ম্যাটের জন্যও, সংক্ষেপণ বাস্তবায়ন করা এবং আপনার স্তরের আকার নীচে নেওয়ার পক্ষে এটি বেশ নগণ্য। আপনি আপনার স্তরের ডেটার চেয়ে টেক্সচার বা শব্দ সহ স্থান গ্রহণের সম্ভাবনা বেশি।

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

কিছু ইঞ্জিন কী করে (এবং আমি কী একটি আদর্শ পরিস্থিতি বিবেচনা করি) তা দুটি লোডিং পাথ বাস্তবায়ন করে। বিকাশের জন্য, আপনি কোনও ধরণের একটি পাঠ্য-ভিত্তিক ফর্ম্যাট ব্যবহার করেন। আপনি কোন নির্দিষ্ট ফর্ম্যাটটি ব্যবহার করেন না কেন আপনি যতক্ষণ শক্ত a মুক্তির জন্য, আপনি একটি বাইনারি (ছোট, দ্রুত লোডিং, সম্ভবত ডিবাগ সংস্থাগুলি থেকে ছাঁটা) সংস্করণ লোড করতে স্যুইচ করুন। স্তরগুলি সম্পাদনা করার জন্য আপনার সরঞ্জামগুলি উভয়ই থুথু দেয়। এটি কেবলমাত্র একটি ফাইল ফর্ম্যাটের চেয়ে অনেক বেশি কাজ, তবে আপনি উভয় পৃথিবীর মধ্যে সেরাটি পেতে পারেন।

যা যা বলা হচ্ছে, আমার মনে হয় আপনি বন্দুকটি কিছুটা লাফিয়ে যাচ্ছেন।

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

যদি আপনার বিরুদ্ধে পরীক্ষা করার জন্য কোনও ব্যবহারের মামলা থাকে তবে আপনি যাকে গুরুত্বপূর্ণ বলে মনে করেন (লোডিং টাইম, মেমরির ব্যবহার, ডিস্কের আকার ইত্যাদি) যাচাই করার জন্য আপনি কয়েকটি বিভিন্ন স্টোর / ডেটা লোড করার বিভিন্ন পদ্ধতি পরীক্ষা করতে পারেন। এর কোন কিছু না জেনেও আরও নির্দিষ্ট করে বলা শক্ত।


9
  • এক্সএমএল: হাতে সম্পাদনা করা সহজ তবে একবার আপনি প্রচুর ডেটা লোড করা শুরু করলে, এটি ধীর হয়ে যায়।
  • এসকিউএলাইট: আপনি একবারে বা কেবলমাত্র ছোট ছোট অংশগুলি পুনরুদ্ধার করতে চাইলে এটি আরও ভাল This তবে, আপনি যদি আপনার গেমের অন্য কোথাও এটি ব্যবহার না করেন তবে আমি মনে করি এটি আপনার মানচিত্রের জন্য অতিরিক্ত (এবং সম্ভবত অতিরিক্ত জটিল) ill

আমার প্রস্তাবটি হ'ল একটি কাস্টম বাইনারি ফাইল ফর্ম্যাট ব্যবহার করা। আমার গেমের সাথে আমার কেবল একটি SaveMapপদ্ধতি রয়েছে যা প্রতিটি ক্ষেত্রকে একটি ব্যবহার করে সংরক্ষণ করে BinaryWriter। এটি আপনাকে চাইলে সংকোচনের চয়ন করতেও আপনাকে অনুমতি দেয় এবং ফাইল আকারের উপর আপনাকে আরও নিয়ন্ত্রণ দেয়। উদাহরণস্বরূপ, এটির shortপরিবর্তে একটি সংরক্ষণ করুন intযদি আপনি জানেন যে এটি 32767 এর চেয়ে বড় হবে না a একটি বড় লুপে, shortপরিবর্তে কিছু সংরক্ষণ করার intঅর্থ ফাইলের আকার অনেক ছোট হতে পারে।

এছাড়াও, আপনি যদি এই রুটে যান তবে আমি ফাইলটিতে আপনার প্রথম ভেরিয়েবলের সংস্করণ নম্বর হওয়ার পরামর্শ দিচ্ছি।

উদাহরণস্বরূপ, একটি মানচিত্র শ্রেণি বিবেচনা করুন (খুব সরলীকৃত):

class Map {
    private const short MapVersion = 1;
    public string Name { get; set; }

    public void SaveMap(string filename) {
        //set up binary writer
        bw.Write(MapVersion);
        bw.Write(Name);
        //close/dispose binary writer
    }
    public void LoadMap(string filename) {
        //set up binary reader
        short mapVersion = br.ReadInt16();
        Name = br.ReadString();
        //close/dispose binary reader
    }
}

এখন, ধরুন যে আপনি নিজের মানচিত্রে একটি নতুন সম্পত্তি যুক্ত করতে চেয়েছিলেন, Listকিছু Platformবস্তুর কথা বলুন । আমি এটি বাছাই কারণ এটি কিছুটা বেশি জড়িত।

প্রথমত, আপনি ইনক্রিমেন্ট বাড়িয়ে MapVersionযোগ করুন List:

private const short MapVersion = 2;
public string Name { get; set; }
public List<Platform> Platforms { get; set; }

তারপরে, সংরক্ষণের পদ্ধতিটি আপডেট করুন:

public void SaveMap(string filename) {
    //set up binary writer
    bw.Write(MapVersion);
    bw.Write(Name);
    //Save the count for loading later
    bw.Write(Platforms.Count);
    foreach(Platform plat in Platforms) {
        //For simplicities sake, I assume Platform has it's own
        // method to write itself to a file.
        plat.Write(bw);
    }
    //close/dispose binary writer
}

তারপরে এবং এখান থেকে আপনি সত্যিই উপকারটি দেখতে পাচ্ছেন, লোড পদ্ধতিটি আপডেট করুন:

public void LoadMap(string filename) {
    //set up binary reader
    short mapVersion = br.ReadInt16();
    Name = br.ReadString();
    //Create our platforms list
    Platforms = new List<Platform>();
    if (mapVersion >= 2) {
        //Version is OK, let's load the Platforms
        int mapCount = br.ReadInt32();
        for (int i = 0; i < mapCount; i++) {
            //Again, I'm going to assume platform has a static Read
            //  method that returns a Platform object
            Platforms.Add(Platform.Read(br));
        }
    } else {
        //If it's an older version, give it a default value
        Platforms.Add(new Platform());
    }
    //close/dispose binary reader
}

আপনি দেখতে পাচ্ছেন, LoadMapsপদ্ধতিটি কেবল মানচিত্রের সর্বশেষ সংস্করণটিই নয়, পুরানো সংস্করণগুলিও লোড করতে পারে! এটি যখন পুরানো মানচিত্রগুলি লোড করে, এটির ব্যবহৃত ডিফল্ট মানগুলির উপর আপনার নিয়ন্ত্রণ থাকে।


9

ছোট গল্প

এই সমস্যার একটি ঝরঝরে বিকল্প হ'ল আপনার স্তরগুলি বিটম্যাপে, টাইল প্রতি এক পিক্সেল সংরক্ষণ করা। আরজিবিএ ব্যবহার করে এটি সহজেই একক চিত্রে চারটি ভিন্ন মাত্রা (স্তর, আইডিস, ঘূর্ণন, আভা ইত্যাদি) মজুত করতে দেয়।

দীর্ঘ কাহিনী

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

মূলত, তিনি তার স্তরগুলি সংরক্ষণ করতে বিটম্যাপ ব্যবহার করেছেন। বিটম্যাপের প্রতিটি পিক্সেল বিশ্বের একটি "টাইল" এর সাথে মিলিত হয় (সত্যই এটি তার ক্ষেত্রে একটি টাইল নয় যেহেতু এটি একটি রেসকেস্টেড খেলা ছিল তবে যথেষ্ট কাছে)। তার একটি স্তরের উদাহরণ:

এখানে চিত্র বর্ণনা লিখুন

সুতরাং আপনি যদি আরজিবিএ (চ্যানেল প্রতি 8-বিট) ব্যবহার করেন তবে আপনি প্রতিটি চ্যানেলকে আলাদা স্তর হিসাবে ব্যবহার করতে পারেন এবং সেগুলির প্রতি 256 টি পর্যন্ত টাইল ব্যবহার করতে পারেন। তা কি যথেষ্ট হবে? বা উদাহরণস্বরূপ, কোনও চ্যানেল আপনার উল্লিখিত টাইলের জন্য ঘূর্ণন ধরে রাখতে পারে। তদ্ব্যতীত, এই ফর্ম্যাটটি সহ কাজ করার জন্য একটি স্তর সম্পাদক তৈরি করা খুব তুচ্ছ হওয়া উচিত।

সর্বোত্তম, আপনার এমনকি কোনও কাস্টম সামগ্রী প্রসেসরের প্রয়োজন নেই যেহেতু আপনি এটিকে অন্য কোনও টেক্সচার 2 ডি এর মতো এক্সএনএ-তে লোড করতে এবং পিক্সেলগুলি একটি লুপে পড়তে পারেন।

আইআইআরসি তিনি শত্রুকে সিগন্যাল করার জন্য মানচিত্রে একটি খাঁটি লাল বিন্দু ব্যবহার করেছিলেন এবং সেই পিক্সেলের আলফা চ্যানেলের মানের উপর নির্ভর করে এটি শত্রুর ধরণ নির্ধারণ করবে (যেমন, 255 এর একটি আলফা মান একটি ব্যাট হতে পারে এবং 254 হবে) একটি জম্বি বা অন্য কিছু)।

আর একটি ধারণা হ'ল আপনার গেমের বিষয়গুলিকে গ্রিডে স্থির করা আছে এবং টাইলগুলির মধ্যে "সূক্ষ্মভাবে" সরাতে পারে এমনগুলিতে তাদের ভাগ করা। বিটম্যাপে স্থির টাইলস এবং গতিশীল অবজেক্টগুলিকে একটি তালিকায় রাখুন।

এমনকি এই 4 টি চ্যানেলের একাধিক তথ্য এমনকি মাল্টিপ্লেক্সে যাওয়ার উপায়ও রয়েছে। কারও যদি এ সম্পর্কে কিছু ধারণা থাকে তবে আমাকে জানান। :)


3

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

আপনি যদি ড্রেকিরের পরামর্শ মতো বাইনারি ফর্ম্যাটটি তৈরি করে "ডান" জিনিসটি করতে চান তবে আপনি যদি কিছু নির্বোধ কারণে অন্য কোনও পছন্দ করেন তবে সম্ভবত এটি ফিরে আসবে না এবং আপনাকে কামড় দেবে না (কমপক্ষে পারফরম্যান্স বুদ্ধিমান নয়)।


1
হ্যাঁ, এটি অবশ্যই আকারের উপর নির্ভর করে। আমার কাছে একটি মানচিত্র রয়েছে যা প্রায় 161,000 টাইলস। যার প্রত্যেকটিতে 6 টি স্তর রয়েছে। আমার কাছে এটি XML এ ছিল, তবে এটি 82MB ছিল এবং চিরতরে লোড নিতে নিয়েছিল । এখন আমি এটি একটি বাইনারি বিন্যাসে সংরক্ষণ করি এবং এটি প্রায় 500 মিমি সংক্ষেপণের আগে এবং প্রায় 200 মিমি লোড হয়। :)
রিচার্ড মার্স্কেল - ড্র্যাকির

2

এই প্রশ্নটি দেখুন: গেম ডেটার জন্য 'বাইনারি এক্সএমএল'? আমি জেএসএন বা ওয়াইএমএল বা এমনকি এক্সএমএল-এর জন্যও বেছে নেব তবে এতে বেশ ওভারহেড রয়েছে। এসকিউএলাইট হিসাবে, আমি স্তরটি সংরক্ষণের জন্য এটি কখনই ব্যবহার করব না। রিলেশনাল ডাটাবেস হ'ল যদি আপনি সম্পর্কিত প্রচুর ডেটা সংরক্ষণ করার আশা করেন (যেমন রিলেশনাল লিঙ্ক / বিদেশী কী রয়েছে) এবং যদি আপনি প্রচুর পরিমাণে বিভিন্ন প্রশ্ন জিজ্ঞাসা করতে চান, টাইলম্যাপগুলি সংরক্ষণ করে এই ধরণের কাজ করে না বলে মনে হয় জিনিস এবং অযথা জটিলতা যোগ করবে।


2

এই প্রশ্নের মূল সমস্যাটি হ'ল এটি দুটি ধারণা ধারণ করে যাগুলির একে অপরের সাথে কোনও সম্পর্ক নেই:

  1. ফাইল স্টোরেজ দৃষ্টান্ত
  2. মেমরি উপাত্ত উপস্থাপনা

আপনি কিছু নির্বিচারে বিন্যাসে সাধারণ পাঠ্য হিসাবে আপনার ফাইল সঞ্চয় করতে পারেন, তাদেরকে JSON, অ্যাপ্লিকেশন Lua স্ক্রিপ্ট, এক্সএমএল, একটি অবাধ বাইনারি ফর্ম্যাটে, ইত্যাদি কিন্তু কেউই তার ইচ্ছার প্রয়োজন যে ডেটার আপনার ইন-মেমোরি উপস্থাপনা কোন বিশেষ ফর্মে নিতে।

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

এটা না কিছু আপনার ফাইল ফরম্যাট চাহিদার সঙ্গে সংশ্লিষ্ট করা হয়। এবং এখানে কেন: সেই ফাইলগুলি কোথাও থেকে আসতে হবে।

হয় আপনি এগুলি হাতে লিখে লিখতে যাচ্ছেন, বা আপনি এমন কোনও ধরণের সরঞ্জাম ব্যবহার করতে যাচ্ছেন যা স্তর তৈরি করে এবং ডেটা তৈরি করে। যদি আপনি সেগুলি হাতে লেখেন, তবে আপনার সর্বাধিক গুরুত্বপূর্ণ জিনিসটি এমন একটি ফর্ম্যাট যা পড়তে এবং পরিবর্তন করতে সহজ to ডেটা রিডানডেন্সি এমন কিছু নয় যা আপনার ফর্ম্যাটটিকেও বিবেচনা করা উচিত, কারণ আপনি ফাইল সম্পাদনা করার জন্য আপনার বেশিরভাগ সময় ব্যয় করবেন । ডেটা রিডানডেন্সি সরবরাহ করতে আপনি যে পদ্ধতিটি নিয়ে এসেছেন তা কি আপনাকে ম্যানুয়ালি ব্যবহার করতে চান? আপনার স্তরের লোডারটিকে কেবল এটি হ্যান্ডেল করা কি আপনার সময়ের আরও ভাল ব্যবহার নয়?

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

সমস্যা সমাধান.

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

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


1
  • এক্সএমএল: ব্যবহার করা সত্যিই সহজ, তবে কাঠামো গভীর হওয়ার সাথে সাথে ওভারহেড বিরক্তিকর হয়ে ওঠে।
  • এসকিউএলাইট: বৃহত্তর কাঠামোর জন্য আরও সুবিধাজনক।

সত্যিই সাধারণ ডেটার জন্য, আপনি সম্ভবত এক্সএমএল রুটটি যেতে পারতেন, যদি আপনি ইতিমধ্যে এক্সএমএল লোডিং এবং পার্সিংয়ের সাথে পরিচিত হন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.