আমি কীভাবে 2 ডি সাইড স্ক্রোলিং গেমটিতে "ঘর" সনাক্ত করতে পারি?


24

আমি এমন একটি সিস্টেম তৈরি করতে চাই যা টেরারিয়া কীভাবে "আবাসগুলি সনাক্ত করে" এর মতো আপনি গেমটিতে তৈরি করতে পারেন এমন নির্দিষ্ট ধরণের বিল্ডিং এবং কক্ষগুলিকে স্বীকৃতি দেয়। সেই গেমটিতে, শৈলীর একটি সেট সন্তুষ্ট করে একটি জোন ব্লক তৈরি করে টাইল ভিত্তিক বিশ্বে একটি বাড়ি তৈরি করা যেতে পারে:

  1. জোনটি "বাইরের" থেকে প্লেয়ার-স্থাপন করা ব্লকগুলি দ্বারা সম্পূর্ণ নিরোধক হয়।
  2. অঞ্চলটি 5x7 আয়তক্ষেত্রের সাথে ফিট করতে পারে।
  3. বদ্ধ জায়গায় কমপক্ষে একটি টেবিল, একটি আলোর উত্স এবং চেয়ার রয়েছে।
  4. জোন থেকে বেরিয়ে আসা একটি দরজা রয়েছে।
  5. টেরারিয়াতে অগ্রভাগ এবং পটভূমি উভয় টাইল স্তর রয়েছে। জোনের পুরো পটভূমি অবশ্যই প্লেয়ার-স্থাপন ব্লকগুলি দিয়ে পূর্ণ হতে হবে।

যখন কোনও খেলোয়াড় যথাযথ আকারের অঞ্চল তৈরি করেন তখন আমি কীভাবে দক্ষতার সাথে সনাক্ত করতে পারি এবং আমি কীভাবে দক্ষতার সাথে পরীক্ষা করতে পারি যে ওই অঞ্চলে প্রয়োজনীয় সমস্ত আসবাবপত্র / উপাদান রয়েছে?

অভ্যন্তরীণ অঞ্চলের উদাহরণ যা আবাসন সংক্রান্ত সমস্ত প্রয়োজনীয়তা পূরণ করে:

এখানে চিত্র বর্ণনা লিখুন


5
আপনি বিস্তারিত বলতে পারেন? "বিল্ডের ধরণগুলি" বলতে কী বোঝায় এবং টেরারিয়ায় "আবাস" কী? মনে রাখবেন যে সবাই সেই খেলাটি খেলেনি, আপনি যদি জনগণকে সহায়তা করতে চান তবে একটি প্রশ্নের উপরও ফোকাস দিন এবং নিশ্চিত করুন যে সেই প্রশ্নের একটি নির্দিষ্ট উত্তর রয়েছে (মতামত নয়)
টমটস্যাগ

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

1
একপাশে, নিশ্চিত হয়ে নিন যে কোনও ঘর এবং আবাসের মধ্যে পার্থক্য রয়েছে । আপনার বুলেট তালিকা আপনাকে একই সংজ্ঞা হিসাবে দেখছে বলে পরামর্শ দেয়। টেরারিয়া উদাহরণ হিসাবে ব্যবহার করে শত্রুরা ঘরে বসেই না, এমনকি তারা আবাস হিসাবে উপযুক্ত না হলেও (যেমন একটি টেবিল হারিয়েছে, বা মাত্র 5x5 মাত্রায়)
ফ্ল্যাটার

উত্তর:


37

আমি টেরিয়ারিয়ার সাথে পরিচিত নই, তবে বন্যা-পূরণের অ্যালগরিদম ব্যবহার করে এটি সহজেই করা যায় ।

পিক্সেলের পরিবর্তে, আপনি টাইলগুলি পরীক্ষা করে দেখুন এবং প্রতিটি টাইল চেক করার জন্য, আপনি মূল্যায়ন করেন যে প্রক্রিয়া চলাকালীন কোন অ্যারে বা তালিকাতে কোন বস্তুগুলি পাওয়া যায় তা সংরক্ষণের সময় অ্যালগরিদম অন্যান্য টাইলগুলি পরীক্ষা করতে পারে কিনা।

চরিত্রটি যেখানে রয়েছে সেই টাইল থেকে অ্যালগরিদম শুরু হয়। আপনি প্রতি 1 সেকেন্ড, 2 শুরু করতে পারেন ... সেরা অন্তর সন্ধান করার জন্য এটি টুইট করার বিষয়।

অ্যালগরিদমকে খুব দীর্ঘ সময় ধরে চালানো রোধ করাও একটি ভাল ধারণা, যা অ্যালগরিদম প্রতি রান চালাতে পারে এমন টাইলসের সংখ্যা সীমাবদ্ধ করে সম্পন্ন করা যেতে পারে, অন্যথায় চরিত্রটি যখন কোনও উন্মুক্ত অঞ্চলে থাকে তখন আপনার অ্যালগরিদম দীর্ঘ সময় পাতায় পড়ে।

সম্পাদন করা

মন্তব্যে যেমন বলা হয়েছে, অ্যালগরিদম কখন শুরু করবেন সে সম্পর্কে আপনি অন্যান্য পন্থাগুলি ব্যবহার করতে পারেন, যেমন প্লেয়ার যখন কোনও টাইল পরিবর্তন করেন বা টাইলগুলির একটি am I modified?ভেরিয়েবল থাকে true, যদি , অ্যালগরিদম শুরু হয়। তবে আপনাকে অবশ্যই এই পদ্ধতির সাথে সতর্ক থাকতে হবে:

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

আপনার চরিত্রটি নেই এমন টাইলগুলিতে এই পরিবর্তনগুলি সনাক্ত করতে আপনি কিছু প্রকারের পদ্ধতির প্রয়োগ করতে পারেন তবে অন্তরগুলিতে অ্যালগরিদম চালানো হ'ল সহজ পদ্ধিতি এবং ত্রুটি-প্রবণতা কম। কেবল প্রতিটি ফ্রেমে বন্যা-পূরণকে কার্যকর না করার বিষয়টি নিশ্চিত করুন।

সম্পাদনার সমাপ্তি


9
কেন কেবল "প্লেয়ার-স্থাপন ব্লক" টাইলসের মধ্যে বন্যা পূর্ণ হবে না? এটি খোলা জায়গাগুলিতে অসীম বন্যা-প্রতিরোধ বা হ্রাস করতে পারে (যতক্ষণ না "প্লেয়ার-স্থাপন ব্লকগুলি" গুহাগুলি / ম্যানশনগুলি ভরা না হয়))
jimbo1qaz

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

3
@ মিমিবিস: আমি বেশ নিশ্চিত যে টেরিয়ারিয়া আপনার মেঝে পরিবর্তন করার প্রয়োজন নেই। টাইলটি কে রেখেছিল তার উপর ভিত্তি করে কোনও গেমটি রুমটি স্বীকৃতিজনক আচরণের পরিবর্তনের কোনও প্রত্যাশা করব না। যদি আমি উদাহরণস্বরূপ একটি পর্বত সংলগ্ন একটি ঘর তৈরি করি?
ফ্লাটার

3
টেরারিয়াতে ব্যাকগ্রাউন্ড দেয়াল লাগানো দরকার এবং প্রাকৃতিক পটভূমির ময়লা / শিলা দিয়ে কোনও ঘর তৈরি করবে না। এটি সত্যিই কেবল প্লেয়ার-স্থাপন ব্লকগুলি পরীক্ষা করে।
loa_in_

3
সিপিইউ সংরক্ষণ করতে, আমি কেবল ব্লক পরিবর্তনে অ্যালগরিদম চালাতাম এবং তারপরে প্রতিটি ব্লকের জন্য রাষ্ট্র সঞ্চয় করব। এটির সাথে এটি একটি সাধারণisRoom()
হের ডার্ব

3

@ ফেরিরা দা সেলভা বলেছিলেন, বন্যা ভরাট অ্যালগরিদমের চেষ্টা করুন। যদিও, অ্যালগোরিদমটি সংযুক্ত রয়েছে কিনা তা নির্ধারণের জন্য আপনি চালনার সময় কয়েকটি আলাদা মানদণ্ড ব্যবহার করতে পারেন।

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

এর সংমিশ্রণটি ব্যবহার করা আপনাকে এটিকে আরও দক্ষ ও কার্যকরভাবে করার অনুমতি দেয়।


3

কম্পিউটার বিজ্ঞানে 2 টি সমস্যা রয়েছে। নামকরণ জিনিস, ক্যাশে অবৈধকরণ এবং একের পর এক ত্রুটি।

এটি একটি ক্যাশে অবৈধ সমস্যা।

আপনার যদি "এটি ভিতরে এটি" রেকর্ড থাকে তবে যখনই কোনও ব্লক স্থাপন করা হয় বা সরিয়ে ফেলা হয় তবে এটি এবং এটির অঞ্চলটিকে বন্যার ভরাটের মাধ্যমে আপডেট করা বেশ সহজ।

এটিকে অনুকূল করতে আপনার কাছে "বিমূর্ততা" এর স্তরগুলির একটি সেট থাকতে পারে।

একটি "সেল" এমন একটি অঞ্চল যা প্লেয়ার-বসানো ব্লকগুলি (একটি নির্দিষ্ট আকার পর্যন্ত) দ্বারা বেষ্টিত।

একটি "ঘর" ব্যাকগ্রাউন্ড টাইলস সহ একটি ঘর।

"ভিতরে" একটি ঘর, একটি দরজা, একটি আলো এবং একটি চেয়ার।

আপনি যখন কোনও খেলোয়াড় স্থাপন করা অগ্রভাগের ব্লক স্থাপন করেন, একটি নতুন ঘর তৈরি হয় কিনা তা দেখার জন্য একটি ঘড়ির কাঁটা / ঘড়ির কাঁটার দিক দিয়ে করুন do আপনি যখন কোনও প্লেয়ার-স্থাপন করা অগ্রভাগের ব্লকটি সরিয়ে ফেলেন, এটি পরীক্ষা করে যদি এটি কোনও কোষ ভেঙে যায় কিনা - যদি তা হয় তবে দেখুন যে দুটিটি মার্জ করে একটি নতুন ঘর গঠিত হয়েছে।

যখন কোনও নতুন ঘর গঠন বা অরক্ষিত হয়, তখন এটি কোনও ঘর বা অভ্যন্তর হিসাবে পরীক্ষা করুন।

কক্ষগুলি কতগুলি ব্যাকগ্রাউন্ড টাইলস প্রয়োজন তা ট্র্যাক রাখতে পারে। তারপরে একটি সাধারণ গণনা যখন কোনও ঘর গঠিত হয়, একটি পটভূমি টাইল যোগ করা হয় বা ঘর থেকে সরানো হয়, এটি কোনও ঘর কিনা তা নির্ধারণ করতে পারে।

একইভাবে, ঘরগুলি কতগুলি চেয়ার এবং আলোর উত্সগুলি (এবং প্রকৃতপক্ষে সমস্ত ধরণের অবজেক্টগুলি) রয়েছে তার উপর নজর রাখতে পারে। তারপরে ভিতরের চেকটি তুচ্ছ।

প্রবেশের একটি গণনাও করা যেতে পারে।


সুতরাং আমরা "ঘর" দিয়ে মানচিত্রটি বৃদ্ধি করি। টাইলস যুক্ত বা সরিয়ে ফেলা হলে আমরা লোকেশনটির ঘরটি পরীক্ষা করি এবং সেলটিতে গণনা বৃদ্ধি / হ্রাস করি।

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

বোনাস হিসাবে, আপনার কাছে এখন "ধনাত্মক" কক্ষগুলি সম্পর্কে কথা বলার সস্তা উপায় বা "ঘরটি একটি পবিত্র ঝর্ণা দ্বারা আশীর্বাদযুক্ত", বা কোনও ঘর সম্পর্কে অন্য কোনও বিষয় রয়েছে, কারণ রুমগুলির মধ্যে প্রতিটি বস্তুর ধরণের একটি সংখ্যা রয়েছে। (বা কক্ষগুলি আকারের সাথে আবদ্ধ থাকায় কেবল একটি পুনরাবৃত্তি করুন; এটি একটি ক্যাশে সরিয়ে দেয়)।

প্রতিটি অবস্থান সর্বাধিক একটি ঘরে থাকে, তাই আপনি প্রতিটি মানচিত্রের সেল-আইডি মূল মানচিত্রে সঞ্চয় করতে পারেন।


0

বন্যা ভরাট অ্যালগরিদম ব্যবহার করার সময়, একটি পরিবর্তনশীলও তৈরি করুন, যা প্রতিটি টাইল চেক করে বাড়ানো হবে, সুতরাং যদি এটি 35 (7 * 5, ঘরের সর্বাধিক আকার) এর চেয়ে বেশি হয় তবে এটি কেবল চেক করা বন্ধ করে দেয়!


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