আমরা এই প্রচলিত সম্মেলনে কীভাবে এসে পৌঁছলাম তার দীর্ঘ ইতিহাস রয়েছে, পথে প্রচুর মনোমুগ্ধকর চ্যালেঞ্জ রয়েছে, তাই আমি এটিকে পর্যায়ক্রমে প্রেরণা দেওয়ার চেষ্টা করব:
1. সমস্যা: ডিভাইসগুলি বিভিন্ন গতিতে চালিত হয়
কোনও আধুনিক পিসিতে কখনও কোনও পুরানো ডস গেমটি খেলতে চেষ্টা করুন, এবং এটি খেলতে পারা যায় না - কেবল একটি ঝাপসা?
প্রচুর পুরানো গেমগুলির একটি খুব নিখুঁত আপডেট লুপ ছিল - তারা ইনপুট সংগ্রহ করতে, গেমের অবস্থা আপডেট করতে এবং হার্ডওয়ারটি যতটা সময় পার করত তার জন্য হিসাব না করে যত দ্রুত অনুমতি দিত nder যার অর্থ হার্ডওয়্যার পরিবর্তন হওয়ার সাথে সাথে গেমপ্লে পরিবর্তন হয়।
আমরা সাধারণত আমাদের খেলোয়াড়দের বিভিন্ন ডিভাইসগুলির উপর ধারাবাহিক অভিজ্ঞতা এবং গেম অনুভব করতে চাই, (তারা যতক্ষণ না কিছু ন্যূনতম বৈশিষ্টের সাথে মিলিত হয়) তারা গত বছরের ফোনটি ব্যবহার করছে বা সর্বাধিক মডেল, একটি শীর্ষ-গেমিং ডেস্কটপ বা একটি মধ্য স্তরের ল্যাপটপ।
বিশেষত, গেমগুলির জন্য যেগুলি প্রতিযোগিতামূলক হয় (একাধিক প্লেয়ার বা লিডারবোর্ডের মাধ্যমে) আমরা চাই না যে কোনও নির্দিষ্ট ডিভাইসে চলমান খেলোয়াড়দের অন্যের চেয়ে সুবিধা হয় কারণ তারা দ্রুত চালাতে পারে বা প্রতিক্রিয়া জানাতে আরও বেশি সময় পায়।
এখানে নিশ্চিত আগুনের সমাধানটি হ'ল যে হারে আমরা গেমপ্লে স্টেট আপডেট করি lock এইভাবে আমরা গ্যারান্টি দিতে পারি ফলাফল সর্বদা এক রকম হবে।
২. সুতরাং, কেন কেবল ফ্রেমরেটটি লক করবেন না (উদাহরণস্বরূপ, ভিএসআইএনসি ব্যবহার করে) এবং এখনও গেমপ্লে স্টেট আপডেটগুলি এবং লকস্টেপে রেন্ডারিং চালাচ্ছেন?
এটি কাজ করতে পারে তবে শ্রোতাদের কাছে সর্বদা স্বচ্ছ হয় না। একটি দীর্ঘ সময় ছিল যখন একটি শক্তিশালী 30 এফপিএসে চালানো গেমসের জন্য স্বর্ণের মান হিসাবে বিবেচিত হত। এখন, খেলোয়াড়রা নিয়মিতভাবে ন্যূনতম বার হিসাবে 60 fps আশা করে, বিশেষত মাল্টিপ্লেয়ার অ্যাকশন গেমগুলিতে এবং কিছু পুরানো শিরোনাম এখন আমাদের প্রত্যাশাগুলি পরিবর্তিত হওয়ায় উল্লেখযোগ্যভাবে চপ্পল দেখাচ্ছে। বিশেষ করে পিসি প্লেয়ারগুলির একটি ভোকাল গ্রুপ রয়েছে যারা লকগুলি ফ্রেমারেটে মোটেও আপত্তি করে না। তারা তাদের রক্তপাতের ধারক হার্ডওয়্যারটির জন্য প্রচুর অর্থ প্রদান করেছে এবং স্মার্টতম, সর্বোচ্চ-বিশ্বস্ততা রেন্ডারিংয়ের জন্য সেই কম্পিউটিং পেশীটি ব্যবহার করতে সক্ষম হতে চায়।
বিশেষত ভিআর-তে, ফ্রেমরেট রাজা এবং মানটি ক্রমবর্ধমান থাকে। ভিআর এর সাম্প্রতিক পুনরুত্থানের প্রথম দিকে, গেমগুলি প্রায়শই প্রায় 60 পিপিএসে চলত। এখন 90 আরও বেশি স্ট্যান্ডার্ড এবং পিএসভিআরের মতো হারওয়ার 120 টি সমর্থন করতে শুরু করেছে This এটি এখনও বাড়তে পারে। সুতরাং, যদি কোনও ভিআর গেমস তার ফ্রেমরেটকে আজ করণীয় এবং গ্রহণযোগ্য কিসের মধ্যে সীমাবদ্ধ করে রাখে তবে হার্ডওয়্যার এবং প্রত্যাশাগুলি আরও বিকশিত হওয়ায় এটি পিছনে ফেলে রাখা দায়বদ্ধ।
(একটি নিয়ম হিসাবে, সতর্ক থাকুন যখন বলা হয় "প্লেয়াররা XXX এর চেয়ে দ্রুত কিছু বুঝতে পারে না" কারণ এটি সাধারণত নির্দিষ্ট ধরণের "উপলব্ধি" এর উপর ভিত্তি করে ক্রম অনুযায়ী কোনও ফ্রেমকে স্বীকৃতি দেয় motion গতির ধারাবাহিকতা ধারণা সাধারণত অনেক বেশি সংবেদনশীল।)
এখানে সর্বশেষ সমস্যাটি হ'ল লক করা ফ্রেমরেট ব্যবহার করে এমন একটি খেলাও রক্ষণশীল হওয়া দরকার - আপনি যে গেমটিতে এমন কোনও মুহুর্তটি আঘাত করেন যেখানে আপনি আপডেট করছেন এবং একটি অসাধারণ সংখ্যক অবজেক্ট প্রদর্শন করছেন, আপনি আপনার ফ্রেমটি মিস করতে চান না সময়সীমা এবং একটি লক্ষণীয় তোলা বা এইচেনা কারণ। সুতরাং আপনাকে হয় আপনার কন্টেন্ট বাজেটগুলি যথেষ্ট পরিমাণে হেডরুম ছেড়ে দেওয়ার জন্য সেট করতে হবে, বা পুরো খেলার অভিজ্ঞতাটি কমপক্ষে স্পেস হার্ডওয়ারের খারাপ-কেস পারফরম্যান্সে পেগিং এড়াতে আরও জটিল গতিশীল মান সমন্বয় বৈশিষ্ট্যে বিনিয়োগ করতে হবে।
এটি বিশেষত সমস্যাযুক্ত হতে পারে যদি আপনার সমস্ত বিদ্যমান সিস্টেমগুলি নির্মিত হয় এবং লকস্টেপ রেন্ডারিং ফ্রেমরেট ধরে নেয় যে এখন আপনি সবসময় আঘাত করতে পারবেন না তখন পারফরম্যান্সের সমস্যাগুলি বিকাশে দেরীতে দেখা যায়। আপডেট এবং রেন্ডারিং হারগুলি ডিক্লোলিং পারফরম্যান্সের পরিবর্তনশীলতার সাথে আচরণ করার জন্য আরও নমনীয়তা দেয়।
৩. একটি নির্দিষ্ট টাইমস্টেপে আপডেট করার ক্ষেত্রে (২) এর মতো সমস্যা নেই?
আমি মনে করি এটিই আসল প্রশ্নের মাংস: যদি আমরা আমাদের আপডেটগুলি ডিকুয়াল করি এবং মাঝে মধ্যে কোনও গেম স্টেট আপডেট না করে দুটি ফ্রেম রেন্ডার করি তবে এটি কোনও নিম্ন ফ্রেমেররে লকস্টেপ রেন্ডারিংয়ের মতো নয়, যেহেতু কোনও দৃশ্যমান পরিবর্তন নেই since পর্দাটি?
গেমগুলি এই আপডেটগুলি ডিকোপলিংকে ভাল প্রভাবের জন্য ব্যবহার করে এমন বিভিন্ন উপায় রয়েছে:
ক) আপডেটের হার রেন্ডার করা ফ্রেমরেটের চেয়ে দ্রুততর হতে পারে
অন্য উত্তরে টাইজকেন নোট হিসাবে, বিশেষত পদার্থবিজ্ঞান প্রায়শই রেন্ডারিংয়ের চেয়ে উচ্চতর ফ্রিকোয়েন্সিতে পদক্ষেপ নিয়ে আসে যা ইন্টিগ্রেশন ত্রুটিগুলি হ্রাস করতে এবং আরও সঠিক সংঘর্ষে সহায়তা করে। সুতরাং, রেন্ডারযুক্ত ফ্রেমের মধ্যে 0 বা 1 আপডেট না করে আপনার 5 বা 10 বা 50 থাকতে পারে।
এখন ১২০ fps এ রেন্ডারিং করা প্লেয়ারটি ফ্রেমে প্রতি 2 টি আপডেট পেতে পারে, যখন 30 fps এ লোয়ার স্পেস হার্ডওয়ারের খেলোয়াড়ের ফ্রেম প্রতি 8 আপডেট পাওয়া যায় এবং তাদের উভয় গেম একই গেমপ্লে-টিক্স-প্রতি-রিয়েলটাইম-সেকেন্ড গতিতে চালিত হয়। আরও ভাল হার্ডওয়্যার এটিকে মসৃণ দেখায়, তবে গেমপ্লেটি কীভাবে কাজ করে তা আমূল পরিবর্তন করে না।
এখানে একটি ঝুঁকি রয়েছে যে, আপডেটের হারটি যদি ফ্রেমরেটের সাথে মিলে যায় তবে আপনি দুজনের মধ্যে একটি "বীট ফ্রিকোয়েন্সি" পেতে পারেন । যেমন। বেশিরভাগ ফ্রেমগুলিতে আমাদের 4 গেমের স্টেট আপডেট এবং একটি সামান্য অবশিষ্টের জন্য পর্যাপ্ত সময় থাকে, তবে প্রতিবার প্রায়শই আমাদের একটি ফ্রেমে 5 আপডেট করার জন্য পর্যাপ্ত পরিমাণ সাশ্রয় হয়, কিছুটা লাফিয়ে যায় বা চলাচলে হাঁপিয়ে যায়। এটি দ্বারা সম্বোধন করা যেতে পারে ...
খ) ইন্টারপোলটিং (বা এক্সট্রাপোলটিং) আপডেটগুলির মধ্যে গেমের অবস্থা
এখানে আমরা প্রায়শই ভবিষ্যতে গেমের রাজ্যটিকে একটি নির্ধারিত টাইমস্টেপ বাঁচতে দেব এবং সাম্প্রতিক 2 টি রাষ্ট্রের কাছ থেকে পর্যাপ্ত তথ্য সঞ্চয় করব যা আমরা তাদের মধ্যে একটি নির্বিচার পয়েন্ট রেন্ডার করতে পারি। তারপরে যখন আমরা অন-স্ক্রিনে একটি নতুন ফ্রেম দেখানোর জন্য প্রস্তুত হই, আমরা কেবল প্রদর্শনের উদ্দেশ্যে উপযুক্ত মুহুর্তে মিশ্রিত করি (যেমন আমরা এখানে অন্তর্নিহিত গেমপ্লে অবস্থাটি পরিবর্তন করি না)
ঠিকঠাক হয়ে গেলে এটি চলাচলকে বাটরিটিকে মসৃণ করে তোলে এবং ফ্রেমরেটে কিছুটা ওঠানামাও মাস্ক করতে সহায়তা করে, যতক্ষণ না আমরা খুব কম না নামি ।
গ) নন-গেমপ্লে-রাজ্যের পরিবর্তনগুলিতে মসৃণতা যুক্ত করা
এমনকি গেমপ্লে স্থিতিকে ইন্টারপোলেট না করেও আমরা কিছুটা মসৃণতা জিততে পারি।
খাঁটি অ্যানিমেশন, কণা সিস্টেম বা ভিএফএক্স এবং এইচইউডি-র মতো ব্যবহারকারী ইন্টারফেস উপাদানগুলির মতো খাঁটি চাক্ষুষ পরিবর্তনগুলি প্রায়শই গেমপ্লে রাজ্যের স্থির টাইমস্টেপ থেকে পৃথকভাবে আপডেট হয়। এর অর্থ আমরা যদি ফ্রেম প্রতি একাধিকবার আমাদের গেমপ্লে স্টেটটি টিক দিই, তবে আমরা প্রতিটি টিক দিয়ে তাদের দাম দিচ্ছি না - কেবল চূড়ান্ত রেন্ডার পাসে। পরিবর্তে, আমরা ফ্রেমের দৈর্ঘ্যের সাথে মেলে এই প্রভাবগুলির প্লেব্যাকের গতি স্কেল করি, সুতরাং রেন্ডারিং ফ্রেমারেটের অনুমতি অনুসারে এগুলি সহজেই খেলতে পারে, (1) এ আলোচিত গতির গতি বা ন্যায্যতার প্রভাব ছাড়াই।
ক্যামেরা চলাচল এটিও করতে পারে - বিশেষত ভিআর-তে, আমরা মাঝে মাঝে একই ফ্রেমটি একাধিকবার প্রদর্শন করব তবে এর মধ্যে প্লেয়ারের মাথা চলাচলকে বিবেচনায় নিতে পুনরায় প্রজেক্ট করব , তাই আমরা অনুভূতভাবে বিলম্ব এবং স্বাচ্ছন্দ্যের উন্নতি করতে পারি, এমনকি যদি আমরা পারি নেটিভলি যা দ্রুত সবকিছু রেন্ডার করে না। কিছু গেম স্ট্রিমিং সিস্টেম (যেখানে গেমটি কোনও সার্ভারে চলছে এবং প্লেয়ার কেবল একটি পাতলা ক্লায়েন্ট চালায়) এটির একটি সংস্করণও ব্যবহার করে।
৪. কেন সকল কিছুর জন্য কেবল (গ) স্টাইলটি ব্যবহার করবেন না? যদি এটি অ্যানিমেশন এবং ইউআইয়ের পক্ষে কাজ করে, তবে বর্তমান ফ্রেমরেটের সাথে মেলে আমরা কী কেবল আমাদের গেমপ্লে স্টেট আপডেটগুলি স্কেল করতে পারি না?
হ্যাঁ * এটি সম্ভব, তবে না এটি সহজ নয়।
এই উত্তরটি ইতিমধ্যে কিছুটা দীর্ঘ তাই আমি সমস্ত ক্ষতিকারক বিবরণগুলিতে যাব না, কেবল একটি দ্রুত সংক্ষিপ্তসার:
রৈখিক পরিবর্তনের deltaTime
জন্য পরিবর্তনশীল-দৈর্ঘ্যের আপডেটগুলিতে সামঞ্জস্য করতে কাজগুলি দ্বারা গুণ করা (উদাহরণস্বরূপ ধ্রুব বেগের সাথে চলাচল, টাইমারের গণনা বা একটি অ্যানিমেশন টাইমলাইন বরাবর অগ্রগতি)
দুর্ভাগ্যক্রমে, গেমগুলির অনেকগুলি দিক অ-রৈখিক । এমনকি মহাকর্ষের মতো সাধারণ কিছু আরও বিভিন্ন ধরণের ফ্রেমরেটগুলির অধীনে ফলাফলগুলি ডাইভারিং এড়াতে আরও পরিশীলিত ইন্টিগ্রেশন কৌশল বা উচ্চ-রেজোলিউশন সাবসেটসগুলির দাবি করে। প্লেয়ার ইনপুট এবং নিয়ন্ত্রণ নিজেই অ-রৈখিকতার একটি বিশাল উত্স।
বিশেষত, পৃথক সংঘর্ষ সনাক্তকরণ এবং রেজোলিউশনের ফলাফলগুলি আপডেটের হারের উপর নির্ভর করে, ফ্রেমগুলি বেশি দীর্ঘ হলে টানেলিং এবং জিটারিং ত্রুটির দিকে পরিচালিত করে। সুতরাং একটি পরিবর্তনশীল ফ্রেমরেট আমাদের আরও বেশি সামগ্রীতে আরও জটিল / ব্যয়বহুল ক্রমাগত সংঘর্ষ সনাক্তকরণ পদ্ধতি ব্যবহার করতে বা আমাদের পদার্থবিজ্ঞানে পরিবর্তনশীলতা সহ্য করতে বাধ্য করে। এমনকি অবিরত সংঘর্ষ শনাক্তকরণ চ্যালেঞ্জগুলির মধ্যে চলে যখন বস্তুগুলি আর্কে সরানো হয়, সংক্ষিপ্ত টাইমস্টেপগুলি প্রয়োজন ...
সুতরাং, মাঝারি জটিলতার খেলার জন্য সাধারণ ক্ষেত্রে, deltaTime
স্কেলিংয়ের মাধ্যমে সম্পূর্ণরূপে সামঞ্জস্যপূর্ণ আচরণ এবং ন্যায্যতা বজায় রাখা খুব কঠিন এবং রক্ষণাবেক্ষণের মধ্যবর্তী কোথাও একেবারে অক্ষম থেকে অক্ষত।
একটি আপডেটের হারকে মানসম্মত করা আমাদের প্রায়শই সরল কোড সহ আরও বিভিন্ন শর্ত জুড়ে আরও ধারাবাহিক আচরণের গ্যারান্টি দেয় ।
আপডেটের হারটিকে রেন্ডারিং থেকে ডেকে আনা করা গেমপ্লে যুক্তির কোনও পরিবর্তন না করে অভিজ্ঞতার সাবলীলতা এবং পারফরম্যান্সকে নিয়ন্ত্রণ করতে আমাদের নমনীয়তা দেয় ।
তারপরেও আমরা কখনই সত্যিকারের "নিখুঁত" ফ্রেমরেট স্বাধীনতা পাই না তবে গেমগুলিতে অনেকগুলি পদ্ধতির মতো এটি আমাদের প্রদত্ত গেমের প্রয়োজনের জন্য "যথেষ্ট ভাল" দিকে ডায়াল করার একটি নিয়ন্ত্রণযোগ্য পদ্ধতি দেয়। এ কারণেই এটি একটি দরকারী সূচনা পয়েন্ট হিসাবে সাধারণত শেখানো হয়।