(আপনি হাস্যকর মানসিক চিত্র ব্যতীত অন্য কিছু না হলে "বানর প্যাচিং" বা "হাঁসের খোঁচা" শব্দটি সম্পর্কে জানতে চাইতে পারেন ))
এটি একদিকে: যদি "আচরণ" পরিবর্তনের জন্য আপনার লক্ষ্যটি পুনরাবৃত্তির সময় হ্রাস পাচ্ছে, তবে কিছু উপায়ের চেষ্টা করুন যা আপনাকে বেশিরভাগ পথে নিয়ে যায় এবং ভবিষ্যতে আরও কিছু সক্ষম করার জন্য সুন্দরভাবে একত্রিত হন।
(এটি কিছুটা স্পর্শকাতর হয়ে উঠবে, তবে আমি প্রতিশ্রুতি দিচ্ছি যে এটি ফিরে আসবে!)
- ডেটা দিয়ে শুরু করুন এবং ছোটটি শুরু করুন: সীমানায় পুনরায় লোড করুন ("স্তরগুলি" বা এর মতো), তারপরে ফাইল পরিবর্তনের বিজ্ঞপ্তিগুলি পেতে বা কেবল নিয়মিত ভোট দেওয়ার জন্য ওএস কার্যকারিতাটি ব্যবহার করার পথে কাজ করুন ।
- (বোনাস পয়েন্ট এবং লোড লোমের সময়গুলির জন্য (আবার, পুনরাবৃত্তির সময় হ্রাসের সময়) ডেটা বেকিংয়ের দিকে নজর দিন ))
- স্ক্রিপ্টগুলি ডেটা , এবং আপনাকে আচরণ পুনরাবৃত্তি করার অনুমতি দেয়। আপনি যদি কোনও স্ক্রিপ্টিং ভাষা ব্যবহার করেন তবে এখন আপনার কাছে বিজ্ঞপ্তি / সেই স্ক্রিপ্টগুলি পুনরায় লোড করার ক্ষমতা আছে, ব্যাখ্যা করা বা সংকলিত। গেম কনসোল, একটি নেটওয়ার্ক সকেট বা বর্ধমান রানটাইম নমনীয়তার জন্য আপনিও আপনার দোভাষীকে হুক করতে পারেন।
- কোডটি ডেটাও হতে পারে : আপনার সংকলক ওভারলে , শেয়ার্ড লাইব্রেরি, ডিএলএল, বা এর মতো সমর্থন করতে পারে । সুতরাং ম্যানুয়াল বা স্বয়ংক্রিয় যাই হোক না কেন, আপনি এখন ওভারলে বা ডিএলএল আনলোড এবং পুনরায় লোড করার জন্য একটি "নিরাপদ" সময় চয়ন করতে পারেন। অন্যান্য উত্তরগুলি এখানে বিশদে যায়। মনে রাখবেন যে এর কিছু রূপগুলি ক্রিপ্টোগ্রাফিক স্বাক্ষর ভেসিফিকেশন, এনএক্স (নন-এক্সিকিউট) বিট বা অনুরূপ সুরক্ষা ব্যবস্থার সাথে গোলমাল করতে পারে ।
- একটি গভীর, সংস্করণযুক্ত সেভ / লোড সিস্টেম বিবেচনা করুন। আপনি যদি কোড পরিবর্তনগুলির পরেও শক্তিশালীভাবে আপনার রাজ্য সংরক্ষণ এবং পুনরুদ্ধার করতে পারেন তবে আপনি আপনার গেমটি বন্ধ করে দিতে পারেন এবং ঠিক একই পয়েন্টে নতুন যুক্তি দিয়ে এটি পুনরায় চালু করতে পারেন। সম্পন্ন করার চেয়ে সহজেই বলা হয়েছে, তবে এটি করণীয় এবং নির্দেশাবলী পরিবর্তন করতে মেমরির পোকার চেয়ে এটি স্পষ্টতই সহজ এবং বহনযোগ্য।
- আপনার গেমের গঠন এবং নির্ধারণের উপর নির্ভর করে আপনি রেকর্ডিং এবং প্লেব্যাক করতে সক্ষম হতে পারেন । যদি সেই রেকর্ডিংটি কেবল "গেম কমান্ড" এর চেয়ে বেশি হয় (একটি কার্ড গেমটি মনে করুন, উদাহরণস্বরূপ), আপনি চান সমস্ত রেন্ডারিং কোড পরিবর্তন করতে পারেন এবং আপনার পরিবর্তনগুলি দেখতে রেকর্ডিংটি পুনরায় খেলতে পারেন। কিছু গেমের জন্য এটি কিছু সূচনা পরামিতি (যেমন একটি এলোমেলো বীজ) এবং তারপরে ব্যবহারকারীর ক্রিয়া রেকর্ড করার মতো "সহজ"। কারও কারও কাছে এটি অনেক জটিল is
- সংকলন সময় কমাতে চেষ্টা করুন । পূর্বোক্ত সেভ / লোড বা রেকর্ড / প্লেব্যাক সিস্টেমগুলির সাথে বা এমনকি ওভারলে বা ডিএলএলগুলির সাথে একত্রে এটি অন্য কোনও জিনিসের তুলনায় আপনার টার্নরাউন্ডকে আরও হ্রাস করতে পারে।
আপনি ডেটা বা কোড উভয়ই পুনরায় লোড করার সমস্ত উপায় না পেয়েও এই পয়েন্টগুলির মধ্যে অনেকগুলি উপকারী।
সহায়ক উপাখ্যান:
একটি বৃহত পিসি আরটিএসে (~ 120 ব্যক্তির দল, বেশিরভাগ সি ++), সেখানে একটি অবিশ্বাস্যভাবে গভীর রাষ্ট্রীয় সংরক্ষণ ব্যবস্থা ছিল, যা কমপক্ষে তিনটি উদ্দেশ্যে ব্যবহৃত হয়েছিল:
- একটি "অগভীর" সেভটি ডিস্কে নয় বরং সিআরসি ইঞ্জিনকে খাওয়ানো হয়েছিল যাতে মাল্টিপ্লেয়ার গেমগুলি প্রতি 10-30 ফ্রেমে লক-স্টেপ সিমুলেশন থেকে একটি সিআরসি থাকে; এটি নিশ্চিত করেছে যে কেউ প্রতারণা করছে এবং পরে কিছু ফ্রেম ডিজাইন বাগগুলি ধরেছিল
- যদি এবং যখন কোনও মাল্টিপ্লেয়ার ডিজাইনক বাগ ঘটে থাকে তবে প্রতিটি ফ্রেমের জন্য একটি অতিরিক্ত-গভীর সংরক্ষণ করা হয়েছিল এবং আবার সিআরসি ইঞ্জিনকে খাওয়ানো হয়েছিল, কিন্তু এবার সিআরসি ইঞ্জিনটি অনেকগুলি সিআরসি তৈরি করবে, প্রতিটি ছোট ছোট ব্যাচের জন্য বাইট for এই পদ্ধতিতে, এটি আপনাকে বলতে পারে যে ঠিক কোন রাজ্যের অংশটি শেষ ফ্রেমের মধ্যে বিভক্ত হওয়া শুরু করেছিল। এটি ব্যবহার করে এএমডি এবং ইন্টেল প্রসেসরের মধ্যে একটি বাজে "ডিফল্ট ফ্লোটিং পয়েন্ট মোড" পেয়েছি।
- একটি সাধারণ গভীরতা সেভ সংরক্ষণ করতে পারে না যেমন আপনার ইউনিটটি অ্যানিমেশনের সঠিক ফ্রেমটি খেলছিল তবে এটি গেমপ্লে চলাকালীন যে কোনও সময়ে আপনাকে সংরক্ষণ এবং পুনরায় শুরু করার অনুমতি দিয়ে আপনার ইউনিটগুলির সকলের অবস্থান, স্বাস্থ্য ইত্যাদি পেতে পারে।
আমি তখন থেকে ডিএসের জন্য সি ++ এবং লুয়া কার্ড গেমটিতে ডিটারমিনিস্টিক রেকর্ড / প্লেব্যাক ব্যবহার করেছি। আমরা এআই (সি ++ সাইডে) এর জন্য ডিজাইন করা এপিআইতে হুক করেছি এবং সমস্ত ব্যবহারকারী এবং এআই ক্রিয়া রেকর্ড করেছি। আমরা গেমটিতে এই কার্যকারিতাটি ব্যবহার করেছি (প্লেয়ারের জন্য একটি রিপ্লে সরবরাহ করতে), তবে সমস্যাগুলি নির্ণয়ের জন্যও: যখন কোনও ক্র্যাশ বা বিজোড় আচরণ ছিল তখন আমাদের সংরক্ষণের ফাইলটি পেতে এবং এটি একটি ডিবাগ বিল্ডে ফিরে খেলতে হয়েছিল।
আমি তখন থেকে কয়েকবারেরও বেশি ওভারলেগুলি ব্যবহার করেছি এবং আমরা আমাদের "স্বয়ংক্রিয়ভাবে এই ডিরেক্টরিটি স্পাইডার করব এবং হ্যান্ডহেল্ড" সিস্টেমে নতুন সামগ্রী আপলোড করব combined আমাদের যা করতে হবে তা হ'ল চটজলদি / স্তর / যা কিছু ছেড়ে আবার ফিরে আসবে এবং কেবলমাত্র নতুন ডেটা (স্প্রাইটস, স্তর স্তর বিন্যাস ইত্যাদি) লোড করবে না তবে ওভারলেতে কোনও নতুন কোড থাকবে। দুর্ভাগ্যক্রমে কপি সুরক্ষা এবং বিশেষত কোড আচরণ করে এমন অ্যান্টি-হ্যাকিং প্রক্রিয়াগুলির কারণে আরও সাম্প্রতিক হ্যান্ডহেল্ডগুলির সাথে এটি আরও শক্ত হয়ে উঠছে। আমরা এখনও লুয়া স্ক্রিপ্টগুলির জন্য এটি করি।
সর্বশেষে তবে সর্বনিম্ন নয়: আপনি (এবং আমার বিভিন্ন খুব ছোট নির্দিষ্ট পরিস্থিতিতে) সরাসরি নির্দেশিকা ওপকোডগুলি প্যাচ করে কিছুটা হাঁসের খোঁচা করতে পারেন। আপনি যদি স্থির প্ল্যাটফর্ম এবং সংকলকটিতে থাকেন তবে এটি সবচেয়ে ভাল কাজ করে এবং যদিও এটি প্রায় অভাবনীয়, খুব বাগ-প্রবণ এবং আপনি যেটি দ্রুত সম্পাদন করতে পারবেন তাতে সীমাবদ্ধ তাই আমি বেশিরভাগই কেবল এটি ডিবাগ করার সময় পুনরায় রুট কোডে ব্যবহার করি। এটা তোলে করেন আপনি তাড়ার মধ্যে আপনার নির্দেশ সেট স্থাপত্য সম্পর্কে অনেক একটি জাহান্নাম, যদিও শেখান।