পদ্ধতিগত জেনারেশন, গেম আপডেট এবং প্রজাপতি প্রভাব


10

দ্রষ্টব্য: আমি স্ট্যাক ওভারফ্লোতে কিছু দিন আগে এটি জিজ্ঞাসা করেছি তবে খুব কম ভিউ এবং কোনও প্রতিক্রিয়া ছিল না। অঙ্কিত আমার পরিবর্তে gamdev.stackex بدلে জিজ্ঞাসা করা উচিত।

পূর্ববর্তী উত্পন্ন সামগ্রীটি না ভেঙে একাধিক রিলিজ পোস্টের মাধ্যমে প্রক্রিয়াগত প্রজন্মের ব্যবস্থা রক্ষণ সম্পর্কে পরামর্শের জন্য এটি সাধারণ প্রশ্ন / অনুরোধ।

গেমসের জন্য পদ্ধতিগত সামগ্রী তৈরি করার সময় "প্রজাপতি প্রভাব" সমস্যাগুলি এড়াতে তথ্য এবং কৌশলগুলি অনুসন্ধান করার চেষ্টা করছি to বীজযুক্ত এলোমেলো সংখ্যা জেনারেটর ব্যবহার করার সময়, পুনরুত্পাদনযোগ্য বিশ্ব তৈরি করতে এলোমেলো সংখ্যার পুনরাবৃত্তি ক্রম ব্যবহার করা যেতে পারে। কিছু গেমগুলি কেবল একবার তৈরি হওয়া ডিস্কে জেনারেট ওয়ার্ল্ডকে কেবল সংরক্ষণ করে, পদ্ধতিগত প্রজন্মের শক্তিশালী বৈশিষ্ট্যগুলির মধ্যে একটি হ'ল আপনি একইভাবে একাধিকবার অঞ্চলকে পুনরায় তৈরি করতে সংখ্যার ক্রমের পুনরুত্পাদনযোগ্যতার উপর নির্ভর করতে পারেন, প্রয়োজনীয়তা অপসারণ করে অধ্যবসায়। আমার নির্দিষ্ট পরিস্থিতির সীমাবদ্ধতার কারণে, আমাকে অবশ্যই দৃistence়তা হ্রাস করতে হবে এবং যথাসম্ভব খাঁটি বীজযুক্ত মনোনিবেশের উপর নির্ভর করতে হবে।

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

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

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

সুতরাং, আমার প্রশ্নটি তিতলি প্রভাবের এই সমস্যাটি মোকাবেলার জন্য বিশেষত সাধারণ পরামর্শ, কৌশল এবং ডিজাইন-প্যাটার্নগুলির অনুরোধ, বিশেষত রিলিজ-পরবর্তী গেম আপডেটের প্রসঙ্গে। (আশা করি এটি খুব বিস্তৃত প্রশ্ন নয়।)

আমি বর্তমানে ইউনিটি 3 ডি / সি # তে কাজ করছি, যদিও এটি একটি ভাষা অজ্ঞাত প্রশ্ন।

হালনাগাদ:

উত্তরের জন্য আপনাকে ধন্যবাদ।

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

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


আমি এই প্রশ্নটিকে অফ-টপিক হিসাবে বন্ধ করতে ভোট দিচ্ছি কারণ এটি খুব বিস্তৃত।
আলমো

আমি বুঝতে পারি এটি খুব বিস্তৃত। আপনি কি আমি এর পরিবর্তে কোনও গেমদেব ফোরাম বা অন্য কিছু চেষ্টা করার পরামর্শ দিচ্ছি? প্রশ্নটিকে আরও সুনির্দিষ্ট করার কোনও উপায় নেই। আমি আশা করছিলাম যে আমি এই অঞ্চলে অনেক অভিজ্ঞতার সাথে কারও কাছ থেকে শুনতে পাব, এমন কিছু ধূর্ত কৌশল যা আমার কাছে ঘটেনি।
নাল

2
অ্যালমো ভুল হয়েছে। এটি মোটেই বিস্তৃত নয়। এটি একটি দুর্দান্ত প্রশ্ন এবং উত্তরের উত্তরের জন্য যথেষ্ট সংকীর্ণ। এটি এমন একটি বিষয় যা আমি মনে করি আমাদের মধ্যে প্রচুর প্রক্রিয়াগত লোকেরা প্রায়শই চিন্তাভাবনা করে।
ইঞ্জিনিয়ার 8

উত্তর:


8

আমি মনে করি আপনি এখানে বেসগুলি আবরণ করেছেন:

  • পরিবর্তনগুলি থেকে স্পিলওভারকে সীমাবদ্ধ করতে একাধিক জেনারেটর ব্যবহার করা বা বিরতিতে (যেমন স্থানীয় স্থানের হ্যাশ ব্যবহার করে) পুনরায় বীজ বপন করা। এটি সম্ভবত কসমেটিক সামগ্রীর জন্য কাজ করে তবে আপনি যেভাবে উল্লেখ করেছেন এটি এখনও একটি বিভাগের মধ্যে থাকা ভাঙ্গন সৃষ্টি করতে পারে।

  • সেভ ফাইলটিতে ব্যবহৃত জেনারেটর সংস্করণটি ট্র্যাক করে রাখা এবং যথাযথভাবে প্রতিক্রিয়া জানানো। "উপযুক্ত" অর্থ কী হতে পারে ...

    • আপনার গেমের জেনারেটরগুলির পূর্ববর্তী সমস্ত সংস্করণের ইতিহাস নির্বাহযোগ্য এবং কোনওটি সেভের সাথে মিলে যা ব্যবহার করে। খেলোয়াড়রা পুরানো সংরক্ষণগুলি ব্যবহার করা চালিয়ে গেলে বাগ প্যাচ করা আরও শক্ত করে তোলে।
    • এই সেভ ফাইলটি পুরানো সংস্করণ থেকে আসা খেলোয়াড়কে সতর্ক করা এবং পৃথক এক্সিকিউটেবল হিসাবে সেই সংস্করণটি অ্যাক্সেসের জন্য একটি লিঙ্ক সরবরাহ করা। কয়েক ঘন্টা থেকে কয়েক দিন ধরে চলমান প্রচারগুলি সহ গেমগুলির পক্ষে ভাল, আপনি এমন প্রচারের পক্ষে খারাপ যা আপনি সপ্তাহ বা আরও বেশি সময় ধরে খেলবেন বলে মনে করেন।
    • nআপনার এক্সিকিউটেবলের মধ্যে কেবল সর্বশেষ জেনারেটর সংস্করণ রাখুন । সেভ ফাইল যদি সেই সাম্প্রতিক সংস্করণগুলির মধ্যে একটি ব্যবহার করে তবে (অফার করে) সেভ ফাইলটি সর্বশেষ সংস্করণে আপডেট করুন। এটি উপযুক্ত জেনারেটরটিকে কোনও পুরানো রাষ্ট্রকে আক্ষরিক (বা একই বীজের নতুন জেনারেটরের আউটপুট থেকে ডেল্টাসে আনতে যদি তারা খুব একই রকম হয়) আনপ্যাক করতে ব্যবহার করে। এখান থেকে যে কোনও নতুন রাষ্ট্র নতুন জেনারেটর থেকে আসে। যে খেলোয়াড়রা দীর্ঘ সময় ধরে না খেলে তাদের পিছনে ফেলে রাখা যেতে পারে। এবং সবচেয়ে খারাপ ক্ষেত্রে আপনি পুরো গেমের রাজ্যকে আক্ষরিক আকারে সঞ্চয় করে শেষ করেন, সেক্ষেত্রে আপনি সম্ভবত ...
  • আপনি যদি আপনার প্রজন্মের যুক্তিগুলি ঘন ঘন পরিবর্তন করে প্রত্যাশা করেন এবং পূর্ববর্তী সংস্করণগুলির সাথে সামঞ্জস্যতা ভাঙতে না চান তবে জেনারেটর নির্ধারণের উপর নির্ভর করবেন না: আপনার সংরক্ষণের ফাইলটিতে আপনার পুরো রাষ্ট্রটি সংরক্ষণ করুন। (উদাঃ "কক্ষপথ থেকে নোক করুন। এটি নিশ্চিত হওয়ার একমাত্র উপায়")


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

1
এটি সাধারণভাবে সম্ভব নয়। আপনি এমনকি গ্যারান্টিযুক্তও নন যে নতুন জেনারেটরের জন্য এমন একটি বীজ রয়েছে যা পুরানোটির মতো একই আউটপুট দেয়। সাধারণত এই বীজগুলিতে প্রায় 64৪ বিট থাকে তবে আপনার গেমটি যে পরিমাণ সম্ভাব্য পৃথিবী সমর্থন করতে পারে তার সংখ্যা 2 ^ 64 এর চেয়ে বেশি হতে পারে, সুতরাং প্রতিটি জেনারেটর কেবল এগুলির একটি উপসেট তৈরি করে। জেনারেটর পরিবর্তন করার ফলে খুব সম্ভবত স্তরের নতুন উপসেট তৈরি হবে, যার পূর্ববর্তী জেনারেটরের সেটটির সাথে সামান্য বা এমনকি কোনও ছেদ নেই।
ডিএমগ্রিগরি

"সঠিক" উত্তরটি নির্বাচন করা কঠিন ছিল। আমি এটিকে বেছে নিয়েছি কারণ এটি সংক্ষিপ্ত ছিল এবং মূল বিষয়গুলিকে স্পষ্ট উপায়ে সংক্ষিপ্ত করে তুলেছিল। ধন্যবাদ।
নাল

4

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

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

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

10 এর পরে, আপনার কাছে 20 টি স্লট বিনামূল্যে রয়েছে যা আপনি গেম ডিজাইনের অগ্রগতির সাথে সাথে অন্যান্য দিকগুলির জন্য ব্যবহার করতে পারেন। এখানে ব্যয়টি অবশ্যই হ'ল 11-30 স্লটগুলির জন্য আপনার অবশ্যই সংখ্যা তৈরি করতে হবে যদিও তারা বর্তমানে ব্যবহৃত হচ্ছে না , অর্থাত্ পিরিয়ডটি সম্পূর্ণ করুন, 1-10 পরবর্তী পরবর্তী ক্রমটিতে ফিরে যেতে। এটিতে একটি সিপিইউ খরচ হয়, যদিও এটি অপ্রাপ্ত হওয়া উচিত (ফ্রি স্লটের সংখ্যার উপর নির্ভর করে)। অন্য খারাপ দিকটি আপনার নিশ্চিত হওয়া দরকার যে আপনার চূড়ান্ত নকশাটি আপনার বিকাশের প্রক্রিয়াটির খুব শুরুতে আপনি যে স্লট উপলভ্য করেছেন তার সাথে সামঞ্জস্য করা যেতে পারে ... এবং আপনি যত বেশি শুরুতে নির্ধারণ করবেন তত বেশি "খালি" স্লট পাবেন জিনিসগুলি কাজ করতে আপনাকে সম্ভাব্য প্রতিটিটির মধ্য দিয়ে যেতে হবে।

এর প্রভাবগুলি হ'ল:

  • আপনার কাছে প্রতিটি জিনিসের জন্য এক জেনারেটর রয়েছে
  • আপনার পক্ষে সংখ্যাগুলি তৈরি করার জন্য প্রয়োজনীয় দিকগুলির সংখ্যা পরিবর্তন করা নির্ধারণের উপর প্রভাব ফেলবে না (তবে আপনার সময়কালটি সমস্ত দিককে সামঞ্জস্য করার জন্য যথেষ্ট পরিমাণে বড়)

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


ওহে. এটি আমি করছি এমন কিছু জিনিসের অনুরূপ। আমি সাধারণত প্রাথমিক বিশ্ব বীজের উপর ভিত্তি করে সামনে একগুচ্ছ উপ-বীজ উত্পন্ন করি। সম্প্রতি আমি একটি দীর্ঘ আওয়াজ শুরুর প্রাক-উত্পাদন শুরু করেছি এবং তারপরে প্রতিটি "স্লট" কেবল সেই অ্যারেতে একটি সূচক index এইভাবে প্রতিটি উপ-সিস্টেম কেবলমাত্র সঠিক বীজ দখল করতে পারে এবং বিচ্ছিন্ন হয়ে কাজ করতে পারে। আর একটি দুর্দান্ত কৌশল হ'ল প্রতিটি জায়গার জন্য বীজ তৈরি করতে এক্স, ওয়াই স্থানাঙ্ক ব্যবহার করা। আমি euphoric এর উত্তর থেকে কোড ব্যবহার করছি এই স্ট্যাকের পৃষ্ঠাতে: programmers.stackexchange.com/questions/161336/...
নাল

3

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

অবশ্যই, সর্বাধিক জনপ্রিয় পদ্ধতির হ'ল উত্সযুক্ত ডেটাকে স্ট্যাটিক ডেটাতে রূপান্তর করা, যেমনটি আপনি উল্লেখ করেছেন।

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


এটি একটি চতুর ধারণা, কেবলমাত্র বিভিন্ন অঞ্চলে বিভিন্ন জেনারেটর ব্যবহার করা।
নাল

2

আমি প্রায় 30000 বর্গ কিলোমিটারের ক্ষেত্রটি বজায় রাখি, সিএ 1 মিলিয়ন বিল্ডিং এবং অন্যান্য বস্তুগুলি, মিসক্যাম জিনিসগুলির এলোমেলো স্থান ছাড়াও। একটি বহিরঙ্গন সিমুলেশন অফ। সঞ্চিত ডেটা সিএ 4 জিবি। আমি সঞ্চয়ের জায়গা পেয়ে ভাগ্যবান, তবুও এটি সীমাহীন নয়।

র্যান্ডম এলোমেলো, নিয়ন্ত্রণহীন। তবে কেউ এটি একটি সামান্য খাঁচা করতে পারেন:

  • এটির শুরু সমাপ্তি নিয়ন্ত্রণ করুন (অন্যান্য পোস্টে যেমন উল্লেখ করা হয়েছে, বীজ সংখ্যা এবং কতটি উত্পন্ন সংখ্যা)।
  • এটির সংখ্যাসূচক স্থানটি সীমাবদ্ধ করুন eg শুধুমাত্র 0 এবং 100 এর মধ্যে পূর্ণসংখ্যা উত্পন্ন করে।
  • একটি মান যুক্ত করে এর সংখ্যাসূচক স্থানটি অফসেট করুন (উদাহরণস্বরূপ 100 + [0 থেকে 100 এর মধ্যে উত্পন্ন সংখ্যা] 100 এবং 200 এর মধ্যে এলোমেলো সংখ্যা তৈরি করে)
  • এটি স্কেল করুন (উদাহরণস্বরূপ, ০.০ দিয়ে গুণ করুন)
  • এবং এর চারপাশে বিভিন্ন খাঁচা লাগান। এটি হ্রাস করছে, প্রজন্মের অংশকে সরিয়ে ফেলছে। যেমন। যদি 2-মাত্রিক স্থানে উত্পন্ন হয়, তবে কেউ সংখ্যার জোড়ার শীর্ষে একটি আয়তক্ষেত্র স্থাপন করতে পারে এবং বাইরে যা স্ক্র্যাপ করতে পারে। বা একটি বৃত্ত বা বহুভুজ যদি 3 ডি-স্পেসে থাকে তবে কেউ উদাহরণস্বরূপ কেবল গোলকের অভ্যন্তরে অবস্থানকারী তিনটি বা অন্য কোনও আকারের জন্য গ্রহণ করতে পারে (এখন ভিজ্যুয়াল ভাবে ভাবছেন তবে বাস্তবে এর দৃশ্যধারণ বা অবস্থানের সাথে কিছু করার দরকার নেই)।

এটা সম্বন্ধে. দুর্ভাগ্যক্রমে, খাঁচাগুলিও ডেটা গ্রাস করে।

ফিনিশ ভাষায় একটি কথা আছে, হাজোটা জা হলিটিস। বিভাজন এবং বিজয় মধ্যে অনুবাদ ।

আমি দ্রুততম ক্ষুদ্র বিবরণের সুনির্দিষ্ট সংজ্ঞার ধারণাটি ত্যাগ করেছি। র্যান্ডম স্বাধীনতা চায়, তাই এটি স্বাধীনতা পেয়েছিল। প্রজাপতিটি উড়তে দিন - এর খাঁচার ভিতরে। পরিবর্তে আমি খাঁচাগুলি সংজ্ঞায়নের জন্য একটি সমৃদ্ধ উপায় (এবং মাইনেন !!) উপর মনোনিবেশ করেছি। যতক্ষণ তারা নীল বা গাl় ব্লু (কোনও একঘেয়ে নিয়োগকর্তা একবার বলেছিলেন :-)) তারা কী গাড়ি তা বিবেচ্য নয়। "নীল বা গা here় ব্লু ব্লু" রঙের মাত্রা সহ এখানে (খুব ছোট) খাঁচা।

সংখ্যাসূচক স্থানগুলি নিয়ন্ত্রণ ও পরিচালনার জন্য কী ব্যবস্থাপনযোগ্য?

  • একটি বুলিয়ান গ্রিড (বিটগুলি ছোট!)
  • কর্নার পয়েন্ট হয়
  • যেমন একটি গাছের কাঠামো (= "খাঁচাগুলি ধারণ করে খাঁচা" অনুসরণ করার জন্য)

রক্ষণাবেক্ষণ-ভিত্তিক এবং সংস্করণ আন্তঃসংযোগযোগ্যতা অনুসারে ... আমাদের রয়েছে
: যদি সংস্করণ = এন হয়
: অন্য সংস্করণ = মি তখন ...
হ্যাঁ, কোড বেসটি আরও বড় হয় :-)।

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

ডিএমগ্রিগরির প্রস্তাবিত মজার "নিউক ইট ফম অরবিট" এর সাথে সম্পূর্ণ বেমানান নয়, তবে সম্ভবত ছোট এবং নির্ভুল সংখ্যার ব্যবহার করবেন? :-)


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

সমস্ত উত্তরগুলির মধ্যে, আমি নিজেকে এই সম্পর্কে সবচেয়ে বেশি চিন্তা করি। আমি আপনার জিনিসগুলির সামান্য দার্শনিক বর্ণনা উপভোগ করেছি। আইডিয়াগুলি ব্যাখ্যা করার সময় আমি "খাঁচা" শব্দটি খুব দরকারী বলে মনে করি, তাই এর জন্য ধন্যবাদ। প্রজাপতি উড়ে যাক ... তার খাঁচায় :)
নাল

PS আপনি কোন গেমটিতে কাজ করছেন তা জানতে সত্যিই আমি আগ্রহী। আপনি কি এই তথ্য ভাগ করতে সক্ষম?
নাল

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

পূর্ববর্তীটির মূল্যায়ন করে, একটি ছোট যানবাহন চলাচল, 0.01 [মিটার, ইউনিট] এর 1-ফ্রেম বৃদ্ধি বিবেচনা করুন: আপনি 3200-বিট সংখ্যার নির্ভুলতার (একক) মধ্যে 10000.1 + 0.01 নিখুঁতভাবে গণনা করতে পারবেন না তবে আপনি 0.1 + 0.01 গণনা করতে পারেন। অতএব, যদি "ক্রিয়া" খুব দূরে হয় (পর্বতের পিছনে :-)), সেখানে যাবেন না, পরিবর্তে পর্বতগুলি আপনার দিকে সরান (10000 নিয়ে যান, তবে আপনি এখন 0.1 এ আছেন)। স্টোরেজ স্পেসের জন্যও বৈধ। একে অপরের নিকটে সংখ্যার মান সংরক্ষণের সাথে লোভজনক হতে পারে। এগুলির সাধারণ অংশটি একবারে এবং পৃথকভাবে পৃথক করে রাখুন - বিটগুলি বাঁচাতে পারে! আপনি লিঙ্কটি খুঁজে পেয়েছেন? ;-)
18:37
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.