সম্পদ প্রকাশের ফাইলগুলি কেন ব্যবহার করবেন?


12

কখনও কখনও আপনি লোকেরা গ্রাফিক্স / সাউন্ড ফাইল / ইত্যাদি ব্যবহার করার পরিবর্তে সেই প্রস্তাবটি দেখতে পাবেন। এটার মত...

// Game code
Image myImage = new Image("path/to/image.png");

... পরিবর্তে আপনার ইন্ডিয়ারেশনের স্তর হিসাবে ম্যানিফেস্ট ফাইলটি ব্যবহার করা উচিত :

// Manifest file
MY_IMAGE: path/to/image.png

// Game code
Manifest myManifest = new Manifest("path/to/manifest");
Image myImage = myManifest.getImage("MY_IMAGE");

এই ধরণের পদ্ধতির গ্রহণের আমার কী কারণ থাকতে হবে? যদি আমি একটি সংকলিত ভাষা ব্যবহার না করে থাকি তবে এখনও কি এটি করার কারণ থাকবে?

উত্তর:


8

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

এই সাজানোর একটি ম্যানিফেস্ট ফাইল ব্যবহার করে আপনি সম্পূর্ণ বিমূর্ত করতে পারেন যেখানে প্রদত্ত ডেটা সংখ্যার তথ্য এসেছে। হতে পারে আপনার ফাইলটি ডিভিডিতে রয়েছে, বা ইন্টারনেট থেকে স্ট্রিম করা হয়েছে, বা একটি জিপ ফাইলের অভ্যন্তরে। এই কেসগুলি মোকাবেলার জন্য আপনাকে কিছু অতিরিক্ত কোড লিখতে হবে, তবে একটি ম্যানিফেস্ট ফাইল ব্যবহার করে আপনার গেমের যুক্তিকে কোনও জিনিস যেখানে বোঝা গেছে সেদিকে কোনও নজর রাখতে হবে না।

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


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

4

একটি কারণ: ডেটা চালিত প্রোগ্রামিং।

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

<material name="wood">
  <diffuse color="1,1,1,1">environment.zip/wood_diffuse.jpg</diffuse>
  <normals>environment.zip/wood_normals.jpg</normals>
  <shader>environment.zip/wood.fx</shader>
  <specular color="1,1,1,1" power="0.5" flat="yes" />
</material>

2

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

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

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


1

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


0

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

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

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

গ্রাফিক্স সিস্টেমের বাইরে টেক্সচার অ্যাটলাসগুলি আরও কিছুটা পারফরম্যান্সের জন্য দুর্দান্ত উপায়। অ্যাটলেসগুলি দ্রুত তবে শিল্পের বিকাশ চলাকালীন সেগুলি নিয়ে কাজ করার ব্যথা pain আমার সমাধানটি হ'ল আমি যখন খেলাটি অনুকূল করে তুলছি তখন কেবলমাত্র আটলাস তৈরি করা। যেহেতু আমি অ্যানলাসের অবস্থানের দিকে ইঙ্গিত করার জন্য ম্যানিফেস্টটি আপডেট করতে হবে এবং গেমটি এখন সোজা ফাইলগুলির পরিবর্তে অ্যাটলাস ব্যবহার করছে man

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