শারীরিক প্ল্যাটফর্মের সীমাবদ্ধতা এবং কন-কন সিদ্ধান্ত সম্পর্কে শন এবং ব্লুয়ের দুর্দান্ত উত্তরের সাথে, আমি একটি মন্তব্যকে একটি ভিন্ন পদ্ধতির মধ্যে প্রসারিত করতে যাচ্ছি:
আপনার সম্ভবত স্তরের স্তরটি সম্পূর্ণ পুনরায় লোড করা উচিত
সুতরাং আপনি আপনার লোড লেভেল () কলটি পুরোপুরি কাজ করছেন, হ্যাঁ! আপনি একটি স্তরের ফাইলের তথ্য স্রোতে নিয়ে যান এবং এর ভিত্তিতে বিশ্ব গড়তে, অবজেক্ট তৈরি করতে এবং টেক্সচার এবং শব্দগুলি লোড করার সাথে সাথে পদক্ষেপ নিন। তারপরে, যখন এটি শেষ হয়ে যায় - বা নাটকটি শুরু করতে "যথেষ্ট" হয়ে যায়, আপনি স্টার্টপ্লে () কল করেন এবং আপনার বিশ্ব প্রকাশিত হয় এবং আপনার সংগীত বাজতে শুরু করে।
এখন আপনি যখন স্তরটি সম্পন্ন করেন, বা মেনুতে পালাতে বা খেলাটি থেকে বেরিয়ে আসেন, আপনি মসৃণ অভিজ্ঞতার অনুমতি দেওয়ার জন্য আপনি যে সমস্ত সংস্থান এবং মেমরিটি ধারণ করেছেন তা মুক্ত করার জন্য আপনি আনলোডলভেল () কল করুন।
এখন, আপনি যখন "পুনঃসূচনা স্তর" বৈশিষ্ট্যটি যুক্ত করতে চান তখন কী হবে? আচ্ছা ...
unloadLevel(currentLevel);
loadLevel(currentLevel);
startPlay();
এবং আপনি শেষ! কোনও নতুন কোড নয়, সর্বাধিক কয়েকটি সাধারণ ফাংশন কল করে, এবং আপনি ইতিমধ্যে সমস্ত কিছু লিখে এবং ডিবাগ করেছেন তাই এখন আপনার নতুন চকচকে পুনঃসূচনা বৈশিষ্ট্যটি আপনার তালিকার বাইরে চলে গেছে, এবং সম্ভবত আর কখনও মুখোমুখি হবে না - ক্রুফলেস, অ-মরিচা কোড সেরা ধরনের! কোডটিকে একটি পুনঃসূচনাকেনার লেভেল () ফাংশনে সরিয়ে ফেলুন এবং আপনি সেই কোডটি ভাঁজ করতে পারেন এবং এটিকে আবার কখনও দেখবেন না - সম্ভবত পুনরায় চালু করার কোনও স্তর আছে কিনা তা নিশ্চিত করার পরে অবশ্যই :)
তবে আপনি ভাবছেন যে এটি কোনও অপচয় নয়, জিনিসগুলি আনডলোড করা হচ্ছে আপনি যেভাবেই আবার আবার লোড করতে চলেছেন। ঠিক আছে, যদি আপনার স্তর এবং সংস্থানগুলি অল্প হয় তবে আপনাকে সবচেয়ে বেশি লাভ করতে হবে প্রতিবার "রিস্টার্ট" ধীরে ধীরে সিস্টেমে (এবং সম্ভবত পুরানো স্মার্টফোনগুলি) বলা হয়, তবে কে যত্ন করে? "অকাল অপ্টিমাইজেশন", আপনার সময়ের সাথে আরও ভাল জিনিসগুলি করতে হবে।
আহ, তবে এখন আপনার স্তরগুলি বৃদ্ধি পাচ্ছে এবং আপনার টেক্সচার আরও বিশদ আকার ধারণ করছে এবং প্রতিটি ভয়েস এবং বাদ্যযন্ত্রের জন্য পৃথক চ্যানেল সহ সাউন্ডট্র্যাকটি 512 কেবিপিএসে ছিঁড়ে গেছে (সময়টি এটি একটি ভাল ধারণা বলে মনে হয়েছিল, তবে কেন আপনি তা মনে করতে পারেন না)। ..) এবং "রাষ্ট্র-উত্স নির্ভর নির্ভর ভক্সেল রে ট্রেসিং মাল্টিমাইডেনশনাল ফুরিয়ার ট্রান্সফর্ম ম্যাট্রিক্স" সম্পর্কে যা আপনার মনে হয় যে পুরোপুরি তৈরি এবং বাস্তব জিনিস নয়, এবং স্তর লোডিং আসলে কিছুটা সময় নেয় এবং এটি আপনাকে বিরক্ত করতে শুরু করে। এমনকি আপনি প্রকৃত লোকদের সাথেও পরীক্ষা করেছেন এবং অপেক্ষার সময়গুলির জন্য এটি একই ধরণের গেমগুলির চেয়ে খারাপ হিসাবে প্রকৃতপক্ষে একটি বিপর্যয় দেখায় (আপনি এমএমওআরপিজি রাজধানী শহরটির প্রত্যাশা করছেন না যে 100 জন খেলোয়াড় সম্পূর্ণ <2 সেকেন্ডে লোড করবে, আপনি কি?), এবং এটি একটি সমস্যা।
তাহলে আপনি কীভাবে অপ্টিমাইজ করবেন? ঠিক আছে, যদি স্তর পুনরায় লোডিং সমস্যা হয়, তবে স্তরের লোডিং কোনও সমস্যা নয়? আপনি যদি মনে করেন এটি কেবল পুনরায় লোড হচ্ছে, পৃথিবীতে লোকেরা কেন প্রথম স্তরের লোড লোড করার চেয়ে আপনার স্তরে এত বেশি বার বার লোড করছে? কোনও গেম প্লে সমস্যা মনে হচ্ছে, কোড-ইঞ্জিনিয়ারিং সমস্যা নয়। বারবার এবং একবারে একটি স্তর পুনরায় লোড করা এর মজাদার কে মনে করে এবং পুরোপুরি এড়ানো যায় তার পরিবর্তে এটি দ্রুততর হওয়ার ইচ্ছা করে ?
প্রথমে আসল সমস্যাটি ঠিক করুন!
তবে আসুন আমরা বলি যে আপনার গেমটি এমনভাবে ডিজাইন করা হয়েছে যাতে আপনার অন্তত মাঝেমধ্যে পুনরায় আরম্ভ হওয়ার কথা, এবং বোঝার সময়টি এত দীর্ঘ যে এটি একবারে করা এবং একেবারে অনিবার্য নয়, তবে আপনি এটি আর করতে চান না। এটি কোন ধরণের খেলা, যাইহোক? কিছুটা অদ্ভুত সমস্যার মতো মনে হচ্ছে ... সম্ভবত কোনও উচ্চ-রেজোলিউশন পোর্টাল-এর মতো খেলা যেখানে ধারণা করা হয়েছে আপনি বার বার ধাঁধা ধাবিত করছেন?
প্রথমত, আপনাকে বুঝতে হবে যে এটি তুচ্ছ হবে না। আপনাকে সম্পূর্ণ নতুন, অনির্ধারিত কোড লিখতে হবে এবং এটি "রাষ্ট্র-নির্ভর" রয়েছে যাতে আপনি এমনকি স্তরের নাটকের মধ্যে কী ব্যবহার করছেন বা পুনরায় ব্যবহৃত হবে না তাও জানেন না। এলোমেলো উপাদান, স্প্যানস, ভেরিয়েবল টেক্সচার (আপনার কঙ্কালগুলি কি কখনও কখনও কেবল বর্ম পরিধান করে?), বা আপনার স্তরের অন্যান্য পরিবর্তনকারী উপাদান রয়েছে? খেলোয়াড়ের সাথে এমন কি কি জিনিসগুলি আলাদা করা যায় যেমন একটি পোশাক বা কাস্টমাইজড মডেল বা রঙ / দরজা / ফাঁদ?
আপনি তুলনা করছেন, এবং তাদের প্রচুর। আপনি এখন স্তরের উপাদানগুলির সাথে লুপিং করতে যাচ্ছেন, এখনই কী লোড করা হয়েছে তার তুলনায় এখন কী প্রয়োজন হবে তা তুলনা করুন (আপনি যে স্টাফটি শেষ স্তরের জন্য বোঝানো হয়েছিল তবে এটির জন্য নয় তবে তাদের ছেড়ে দিন বা ভবিষ্যতের প্রতিরোধের জন্য ধরে রাখুন ভার?). এটি যদি আপনার গেমের জন্য সত্যিই বড় চুক্তি হয় তবে আপনি সম্ভবত নিজের লোড / আনলোড কোডটি এটি লোড করার আগেই কিছু লোড হয়েছে কিনা তা দেখতে চান (কোডটি বহুমুখী করে তবে সম্ভাব্যভাবে পূর্ববর্তী কার্যকরী বৈশিষ্ট্যগুলি এবং ফাংশনগুলিতে নতুন বাগগুলি প্রবর্তন করছে যা সতর্কতার সাথে রিলিজ করে যা নিকট ভবিষ্যতে ব্যবহারযোগ্য হবে না)। দীর্ঘশ্বাস.
আপনার গেমটি সহজ হলেও, আপনি যা করেন তা কোনও ব্যাপার নয়, আপনি স্তরটি প্লেয়ারের ভিত্তিতে তৈরি অস্পষ্ট বাগগুলিতে যেতে চলেছেন যখন কোনও স্তর পুনরায় আরম্ভ করা হয় যা আপনার সাথে প্রথমবারের স্তরটি লোড হয় না। সুতরাং আপনি যেমন পাঠ্য সঙ্গে গেম আপডেট লিখতে পেতে:
"একটি টাইলের উপরে বোমাতে একটি হেলমেট ফেলে রাখা যার কাছে একটি ক্ষেপণাস্ত্রটি প্রায় 200 পিক্সেলের জলের মধ্যে বিস্ফোরিত হয়েছিল যার ফলে আপনার গেমের ডেটাটি আর দূষিত হবে না বা গেমটি ক্রাশ হবে না।"
আসল কারণ সর্বাধিক গেমগুলি বিরক্ত করবেন না
আপনি কি কখনও খেয়াল করেছেন যে বেশিরভাগ লোকেরা কেবল বেস স্তরে নামার পরিবর্তে কেবল তাদের বিদ্যমান দেয়ালগুলিতে আঁকেন বা ড্রাইভওয়াল করেন, বা কার্পেটগুলি উপরে টানার পরিবর্তে শক্ত কাঠের মেঝেতে রেখে দেন?
সাধারণ সত্যটি হ'ল ন্যূনতম পুরষ্কারের জন্য এটি আরও সমস্ত কাজ। আপনার বিদ্যমান দেয়ালগুলির উপরে রঙ করা বেশিরভাগ সময় সূক্ষ্মভাবে কাজ করে এবং শক্ত কাঠের মেঝেগুলি ছিটিয়ে দেওয়ার মান প্রায়শই ন্যূনতম বা অস্তিত্বহীন।
গেমস থেকে শুরু করে মাল্টিমিডিয়া পাওয়ার পয়েন্ট উপস্থাপনা পর্যন্ত সফ্টওয়্যারটিতেও এটি সত্য - যদি আপনি সমস্ত কিছু লোডিং স্ক্রিনের কয়েক সেকেন্ড শেভ করে থাকেন তবে লোকেরা তাদের সময়টির 1% সময় দেখার জন্য ব্যয় করে, তবে এটি আরও ভাল করা অবিশ্বাস্যরূপে তুচ্ছ বা আপনি পাচ্ছেন আপনার বিনিয়োগকৃত সময়ে খুব খারাপ রিটার্ন
এবং তাই বেশিরভাগ গেমগুলি বিরক্ত করে না, এবং খুব প্রচুর গেমের ভাবতে আমার সমস্যা হয় যেখানে কয়েকটি চরম উদাহরণ বাদে লোডিং স্ক্রিনগুলি অন্যথায় ভাল গেমকে কম সার্থক করে তোলে; চূড়ান্ত উদাহরণগুলি হ'ল দ্রুত স্তরের লোডিংয়ের জন্য অনুকূলকরণটি বোধগম্য হয় এবং এটি গেমগুলির একটি ক্ষুদ্র ভগ্নাংশ যা এটিকে জনসাধারণের কাছে তোলে এবং সম্ভবত গেমগুলির একটি ছোট ভগ্নাংশ যা কেউ কখনও দেখেনি কারণ তারা কখনই মুক্তি পায় না।