একটি একক প্লেয়ার ইঞ্জিনকে কীভাবে জোর করে অবৈধ ডেটা প্রত্যাখ্যান করা উচিত?


11

একটি একক খেলোয়াড়ের খেলায়, বাহ্যিক স্ক্রিপ্টগুলিতে বর্ণিত উপাদানগুলির বাইরে কোনও সত্তা তৈরির চেষ্টা করার সময়, উপাদানগুলির মধ্যে কোনওটি দূষিত হয়ে গেলে কী ঘটবে বলে আপনি মনে করেন:

  • ইঞ্জিনটি কি সেই উপাদানটি এড়িয়ে চলা উচিত এবং কেবল সেই উপাদানগুলিকেই ভাল লেখা ছিল যা খেলা বিশ্বে বাঁচতে দেওয়া উচিত?
  • অথবা এটির উপাদানটি কোনওরূপে গঠিত না হলে এটিকে সত্তা যুক্ত করা উচিত নয়?

দ্রষ্টব্য, আমি ত্রুটিগুলি লগ করার বিষয়ে কথা বলছি না - এটি না বলেই আসা উচিত - সত্তার কী হবে সে সম্পর্কে।


আমরা কি একক প্লেয়ার বা মাল্টি প্লেয়ার সম্পর্কে কথা বলছি?
o0 '

@ লোহরিস সিঙ্গল প্লেয়ার
পল মানতা

2
বেশিরভাগ উত্তরে ইতিমধ্যে ইঙ্গিত দেওয়া হয়েছে, আপনার শ্রোতা কে? আপনি কি একটি পরিবর্তনযোগ্য গেম তৈরি করছেন বা আপনি অভ্যন্তরীণ উন্নয়নের উদ্দেশ্যে কথা বলছেন?
টেট্রাড

@ টেট্রাড আমি চাই গেমটি যতটা সম্ভব মডেল বান্ধব হোক।
পল মানতা

উত্তর:


11

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


2
আমি মনে করি এটি ব্যবহারকারীর ত্রুটি এবং বিকাশকারী ত্রুটির মধ্যে পার্থক্য করে এটি একটি দুর্দান্ত দ্বৈতত্ত্ব। ঠিক একই কারণে এটি সংজ্ঞায়িত হয় যে সংকলক ত্রুটিগুলি সাধারণত ঠিক করা সহজ তবে রানটাইম / শব্দার্থক ত্রুটি শয়তান।
ধাওয়া করে

গেমটি শুরু হয়ে যাওয়ার পরে ইঞ্জিনটি সত্তাগুলি সংশোধন করার কোনও উপায় অন্তর্ভুক্ত করে, আপনি ব্যর্থ হওয়ার আগে কমপক্ষে নিজেকে ত্রুটি সমাধানের সুযোগ দেওয়া উচিত।
Blecki

7

গেম বিকাশে ব্যবহারকারী এবং বিকাশকারীদের মধ্যে পার্থক্য সর্বদা পরিষ্কার হয় না। "ব্যর্থ দ্রুত" এর মতো স্ট্যান্ডার্ড প্রোগ্রামিং কৌশলগুলি সর্বদা সুবিধাজনক নয়, বিশেষত দলের মাপ বাড়ার সাথে।

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

সুতরাং আপনার ডেমো 2 পিএম দ্বারা প্রস্তুত নয় এবং আপনার বিনিয়োগকারীরা ভাবছেন কেন আপনি এমনকি খেলায় একটিও শত্রু পেতে পারেন না এবং আপনার প্রকল্পটি বন্ধ হয়ে যায়।

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

সেই কারণে, আমি প্রায় সর্বদা প্রথম বিকল্পটির পক্ষে থাকব - যতটা সত্তা পারে ততটুকু উত্‍পাদন করুন। ব্যর্থ-দ্রুতগতির ক্ষেত্রে রয়েছে - যেমন বিল্ডগুলি করতে সক্ষম লোকেরা (যেমন প্রোগ্রামারস এবং প্রযুক্তিগত প্রযোজক) ছাড়া ডেটা কখনই সম্পাদনা করা উচিত নয় এবং সর্বদা 100% লোড থাকা অবস্থায় পরীক্ষা করা হয়, বা আপনি যদি নিশ্চিত হন যে দায়বদ্ধ ব্যক্তি সমস্যাটি হ'ল সম্পাদকটি ব্যবহার করা ব্যক্তি - তবে সেগুলি সাধারণ ক্ষেত্রে হয় না এবং প্রতি সেয়ে প্রচুর প্রযুক্তিগত অবকাঠামো প্রয়োজন যা আপনি বিনিয়োগের জন্য প্রস্তুত নন।


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

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

@ জন: বড় প্রকল্পগুলিতে বিল্ডগুলি কয়েক ঘন্টা সময় নিতে পারে (বা পুরো দিন)। সুতরাং আপনার প্রকৃতপক্ষে একটি দ্বি দ্বি-দৃষ্টিভঙ্গি প্রয়োজন - আপনার কেবল উত্স নিয়ন্ত্রণ নয়, বাইনারি নিয়ন্ত্রণের প্রয়োজন, যাতে কোনও নন-প্রোগ্রামার পুরো আগের বিল্ডগুলিতে ফিরে যেতে পারে। তবে অবশ্যই, নিজস্ব ঝুঁকি ও খরচ আছে যা কারণ এখন আপনি বিরুদ্ধে নতুন বিষয়বস্তু উন্নয়নশীল করছি অন্যান্য , আউট-অফ-ডেট কন্টেন্ট এক্সেকিউটেবল থাকতে পারে যে সঙ্গে অন্যান্য খারাপ বাগ। এমনকি সঠিক বিল্ডটি ফিরে পেতে 30+ মিনিট সময় লাগতে পারে - যদি আপনার ডিজাইনাররা যদি বিল্ডগুলির সাথে আধ ঘন্টা এবং ফ্রিডল থামাতে হয় তবে এটি বড় অর্থ ব্যয় হচ্ছে।

@ জো র্রেছনিগ: এটি বোধগম্য। সুতরাং আমি অনুমান করি যে এখানে একটি পয়েন্ট থাকতে হবে যেখানে দ্রুত ব্যর্থ হওয়া আর কোনও সম্পদ নয়। হয় এটি যে ধরণের লোকেরা এটি ব্যবহার করে বা কোনও নির্দিষ্ট আকারের প্রকল্পে। আমি মনে করি এটি তাদের জন্য কী কাজ করে তা সিদ্ধান্ত নেওয়ার বিষয়টি দলের লোকদের উপর।
জন ম্যাকডোনাল্ড

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

1

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

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

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


0

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

void setValue(int value) {
    if (value < MIN_VALUE) {
       log(value + " is too low, using " + MIN_VALUE);
       value = MIN_VALUE;
    }
    if (value > MAX_VALUE) {
       log(value + " is too high, using " + MAX_VALUE);
       value = MAX_VALUE;
    }
}

এমনকি একাধিক খেলোয়াড়ের খেলায় এটি গ্রহণযোগ্য যদি না আপনি যদি ধরে না নেন যে একজন খেলোয়াড় সিস্টেমকে ঠকানোর চেষ্টা করছে।

সফ্টওয়্যারটি প্রকাশ করার পরে, খেলোয়াড়রা এই লগগুলি পড়বে না এই ধারণার ফলে আপনি ডিফল্টরূপে এই লগিংটি বন্ধ করতে চান।


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

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