2 ডি গেমসে ইচ্ছামত বৃহত চিত্রগুলি কীভাবে মোকাবেলা করবেন?


13

প্রশ্ন

যখন আপনার কাছে একটি 2 ডি গেম থাকে যা সত্যিই বড় চিত্রগুলি ব্যবহার করে (আপনার হার্ডওয়্যার এর চেয়ে বড় সমর্থন করতে পারে) আপনি কী করবেন? সম্ভবত এই সমস্যার কিছু আকর্ষণীয় সমাধান আছে যা আমার আগে কখনও ঘটেনি।

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

প্রসঙ্গ

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

সাধারণত এটি 2 ডি গেমগুলিতে খুব বেশি সমস্যা তৈরি করে না কারণ তাদের বেশিরভাগেরই স্তরগুলি ছোট ছোট পৃথক টুকরা (যেমন টাইলস বা রূপান্তরিত স্প্রাইটস) থেকে তৈরি করা যায় have

তবে কয়েকটি ক্লাসিক পয়েন্ট'অন ক্লিক গ্রাফিক অ্যাডভেঞ্চার গেমগুলি (উদাঃ বানকি দ্বীপ) সম্পর্কে ভাবেন। গ্রাফিক অ্যাডভেঞ্চার গেমের ঘরগুলি সাধারণত কোনও পুরোপুরি ডিজাইন করা হয়, যেমন কোনও চিত্রকর যেমন কোনও প্রাকৃতিক দৃশ্যে কাজ করে little বা সম্ভবত ফাইনাল ফ্যান্টাসি 7 এর মতো একটি গেম যা বড় প্রাক-রেন্ডারযুক্ত ব্যাকগ্রাউন্ড ব্যবহার করে।

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

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

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

সম্পাদন করা

এক্সএনএ বাস্তবায়ন দৃষ্টিকোণ থেকে আমি যা ভাবছিলাম তা এখানে।

আমার 2 ডি ইঞ্জিনে কেবল টেক্সচার 2 ডি এর কার্যকারিতাটির খুব সামান্য উপসেট প্রয়োজন। আমি আসলে এই ইন্টারফেসে এটি হ্রাস করতে পারি:

public interface ITexture
{
    int Height { get; }
    int Width { get; }
    void Draw(SpriteBatch spriteBatch, Vector2 position, Rectangle? source, Color  color, float rotation, Vector2 origin, Vector2 scale, SpriteEffects effects, float layerDepth);
}

আমি টেক্সচার 2 ডি এর উপর নির্ভর করে কেবলমাত্র বাহ্যিক পদ্ধতিটি হ'ল স্প্রাইটব্যাচ ra ড্র () যাতে আমি একটি এক্সটেনশন পদ্ধতি যুক্ত করে তাদের মধ্যে একটি সেতু তৈরি করতে পারি:

    public static void Draw(this SpriteBatch spriteBatch, ITexture texture, Vector2 position, Rectangle? sourceRectangle, Color color, float rotation, Vector2 origin, Vector2 scale, SpriteEffects effects, float layerDepth)
    {
        texture.Draw(spriteBatch, position, sourceRectangle, color, rotation, origin, scale, effects, layerDepth);
    }

এটি যখনই আমি আগে কোনও টেক্সচার 2 ডি ব্যবহার করতাম তখন এটি আমাকে আইটেকচারটি ইন্টারচেঞ্জযোগ্যভাবে ব্যবহার করতে দেয় to

তারপরে আমি আইটেমচারের দুটি পৃথক বাস্তবায়ন তৈরি করতে পারি যেমন রেগুলার টেকচার এবং লার্জ টেক্সচার, যেখানে রেগুলার টেক্সচারটি কেবল একটি নিয়মিত টেক্সচার 2 ডি মোড়ান।

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

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

কিছুটা ওভারকিল নাকি ঠিক শোনাচ্ছে?


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

বিষয়বস্তু পাইপলাইনে এটি করা সর্বাধিক বুদ্ধিমান পন্থা। তবে আমার ক্ষেত্রে আমার রানটাইমের সময় আমার ইমেজগুলি লোড করা দরকার ছিল এবং আমি ইতিমধ্যে রানটাইম সলিউশন নিয়ে আসতে সক্ষম হয়েছি (এ কারণেই আমি গতকাল এই প্রশ্নটি জিজ্ঞাসা করেছি )। তবে আসল সৌন্দর্যটি এই "টাইল মানচিত্র" গ্রহণ এবং এটিকে একটি সাধারণ জমিনের মতো আচরণ করা থেকে আসে। অর্থাত আপনি এখনও আঁকা spritebatch তা পাস করতে পারেন, এবং আপনি এখনও অবস্থান, ঘূর্ণন, স্কেল, SRC / DEST আয়তক্ষেত্র, ইত্যাদি উল্লেখ করতে পারেন আমি halfway আছে এখন দ্বারা :) আছি
ডেভিড Gouveia,

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

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

এপিআইতে এটি লুকিয়ে রাখা গেম লেখকদের জীবন সহজ করার জন্য দুর্দান্ত উপায় বলে মনে হচ্ছে। আমি সম্ভবত এটি বহুভুজ (স্প্রাইট) এবং টেক্সচার ক্লাসগুলিতে বাস্তবায়ন করতাম এবং ছোট চিত্রগুলি বিশেষ করে না, বরং কেবল তাদের 1x1 টাইল তৈরি করি make সুতরাং টেক্সচার ক্লাসটি একটি টেক্সচার গ্রুপ যা সমস্ত টাইল এবং কতগুলি সারি / কলাম বর্ণনা করে। বহুভুজ শ্রেণি তারপরে নিজেকে আলাদা করতে এবং উপযুক্ত টেক্সচারের সাথে প্রতিটি টাইল আঁকতে এই তথ্যের দিকে নজর দেয়। এই ভাবে, এটা হল একই শ্রেণীতে। বোনাস পয়েন্টগুলি যদি আপনার স্প্রাইট শ্রেণিটি কেবল দৃশ্যমান টাইলগুলি আঁকায় এবং টেক্সচার গ্রুপগুলি প্রয়োজনীয় না হওয়া পর্যন্ত টেক্সচার লোড করে না।
uliwitness

উত্তর:


5

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

অ্যাডভেঞ্চার গেমগুলির জন্য আপনি বিশেষভাবে করতে পারেন এমন কিছু কৌশল রয়েছে। আমি ভাবছি সমস্ত ক্লাসিক অ্যাডভেঞ্চার গেমগুলির মতো আপনার এই টেক্সচারের কয়েকটি স্তর থাকবে যাতে ... আপনার চরিত্রটি গাছ বা ভবনের পিছনে যেতে পারে ...

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

যদি আপনার প্যারাল্যাক্সিং এফেক্ট না থাকে তবে 2-4 দৈত্য চিত্রের সাথে পুরো দৃশ্যটি coveringেকে দেওয়ার পরিবর্তে আপনি কেবল 32 টি বিট গভীরতা তৈরি করতে পারবেন। এবং আপনার কাছে স্টেনসিলিং বা গভীরতা স্তর থাকতে পারে যা পিক্সেলটিতে কেবল 8 বিট হবে।

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

ক্লাসিক গেমগুলি এটি কীভাবে করছিল তা সম্পর্কে। আমি নিশ্চিত নই যে তারা সম্ভবত সিমিলার ট্রিকস করেছে তবে আপনার মনে রাখতে হবে যে স্ক্রিনটি 320x240 ছিল তখন গেমগুলি 16 টি রঙের সাথে ছিল যা প্যালেটেলাইজড টেক্সচার ব্যবহার করার সময় আপনাকে একক বাইটে 2 পিক্সেল এনকোড করতে দেয়। তবে বর্তমান স্থাপত্যগুলি এভাবে কাজ করে না: ডি

শুভকামনা


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

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

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

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

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

2

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

আপনি আপনার গ্রাফিক অ্যাডভেঞ্চার গেম মেকারটিতে যা করতে যাচ্ছেন তা হ'ল গেমটি চালানোর আগে প্যাকেজ হওয়ার আগে কোনও ধরণের "বিল্ড" বা "ইন্টিগ্রেটেড" পদক্ষেপের সময় সেই বড় চিত্রগুলির প্রাক-প্রক্রিয়া করা হয়।

আপনি যদি নিজের লেখার পরিবর্তে কোনও বিদ্যমান এপিআই এবং লাইব্রেরি ব্যবহার করতে চান তবে আমি পরামর্শ দেব যে আপনি সেই "বিল্ড" এর সময় সেই বড় চিত্রগুলিকে টাইলগুলিতে রূপান্তর করুন এবং একটি 2 ডি টাইল ইঞ্জিন ব্যবহার করুন, যার মধ্যে অনেকগুলি রয়েছে।

আপনি যদি নিজের নিজস্ব 3 ডি কৌশল ব্যবহার করতে চান তবে আপনি এখনও টাইলগুলিতে বিভক্ত হয়ে যেতে পারেন এবং এটির জন্য নিজের 3 ডি লাইব্রেরিটি লিখতে একটি সুপরিচিত এবং সুনির্দিষ্ট ডিজাইন করা 2D এপিআই ব্যবহার করতে পারেন, এইভাবে আপনার গ্যারান্টিযুক্ত কমপক্ষে শুরু করার সাথে আপনার পক্ষে একটি ভাল এপিআই নকশা এবং কম ডিজাইন প্রয়োজন।


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

1

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

রান টাইম এগুলি কাটাতে অস্থায়ীভাবে আরও মেমরির প্রয়োজন হয় এবং লোডের সময়কে কমিয়ে দেয়। আমি বলব যদিও এটি শারীরিক স্টোরেজ সম্পর্কে আপনার বেশি যত্নশীল বা আপনার সম্পাদকের সাহায্যে কোনও ব্যবহারকারী গেমের লোড টাইম সম্পর্কে বেশি যত্নশীল কিনা তা নির্ভর করে।

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

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

  1. এটি একটি একক ফাইল
  2. সমস্ত ফাইলের প্রায় একই ধরণের বিন্যাস থাকবে
  3. কখন এবং যদি এটি আলাদা টেক্সচারে কাটা যায় তবে আপনি সহজেই বেছে নিতে পারেন
  4. স্বতন্ত্র চিত্রগুলি যদি ইতিমধ্যে একক বোঝা .gif এ থাকে তবে এটি অ্যাক্সেস করা সহজ হতে পারে যেহেতু এটির জন্য মেমোরিতে ইমেজ ফাইলগুলির বিশৃঙ্খলার পরিমাণের বেশি প্রয়োজন হবে না if

ওহ এবং যদি আপনি .gif পদ্ধতি ব্যবহার করেন তবে আপনার .gif অ্যানিমেট যেমন ভাঙা ফাইল রয়েছে এমন সময় আপনার কম পরিমাণ বিভ্রান্তির জন্য ফাইল এক্সটেনশনটি অন্য কোনও কিছুর (.gif -> .kitten) এ পরিবর্তন করা উচিত। (এর বৈধতা সম্পর্কে চিন্তা করবেন না, .gif একটি মুক্ত ফর্ম্যাট)


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

তবে কৌতূহলের বাইরে, আপনি চিত্রের কোন অঞ্চলটি প্রতিটি বিভাগে গিয়েছিলেন তা বেছে নেওয়ার জন্য আপনি কী মানদণ্ডটি ব্যবহার করেছেন তা আরও কিছুটা ব্যাখ্যা করতে পারেন?
ডেভিড গাউভিয়া

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

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

রজার, আমি জিআইএফ ফ্রেমকে প্রকারের সংরক্ষণাগার হিসাবে ব্যবহার করার অংশ পেয়েছি। তবে আমি আরও ভাবছি, জিআইএফ কি সীমিত রঙ প্যালেট সহ একটি সূচক বিন্যাস নয়? আমি কি প্রতিটি ফ্রেমে পুরো 32bpp আরজিবিএ চিত্রগুলি সঞ্চয় করতে পারি? এবং আমি এটি লোড করার প্রক্রিয়াটি আরও জটিল হয়ে ওঠার কল্পনা করি, কারণ এক্সএনএ এর কিছুই সমর্থন করে না।
ডেভিড গাউভিয়া

0

এটি সুস্পষ্ট শোনায়, তবে, কেন কেবল আপনার ঘরটিকে ছোট ছোট টুকরো টুকরো করা যাবে না? একটি স্বেচ্ছাসেবী আকার চয়ন করুন যা কোনও গ্রাফিক্স কার্ডের বিরুদ্ধে মাথা ঘুরিয়ে দেবে না (যেমন 1024x1024 বা এর চেয়ে বেশি বড়) এবং কেবলমাত্র আপনার ঘরগুলি একাধিক টুকরো টুকরো টুকরো করে।

আমি জানি যে এটি সমস্যা এড়ায়, এবং সত্যই, এটি সমাধানের জন্য খুব আকর্ষণীয় সমস্যা is যাইহোক, এটি একটি তুচ্ছ সমাধানের মতো, যা আপনার জন্য কিছু সময়ের জন্য কার্যকর হতে পারে।


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

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