রানটাইমে গতিশীল পরিবেশে আমি কীভাবে 2 ডি নেভিগেশন জাল তৈরি করতে পারি?


9

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

আমি "কীভাবে" একটি জাল কাজ করে তা ধারণাটি উপলব্ধি করে (বহুভুজগুলির কিনারা এবং / অথবা বহু কোণগুলির কেন্দ্রগুলি নোডের মাধ্যমে একটি পথ খুঁজে বের করি)।

আমার গেমটি গতিশীল বাধাগুলি ব্যবহার করে যা নিয়মিতভাবে রান-টাইমে উত্পন্ন হয়।

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

নেভিগেশনাল জাল

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

আমি নোডেজগুলিতে জাভাস্ক্রিপ্ট ব্যবহার করছি, যদি এটি গুরুত্বপূর্ণ হয়।


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

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

1
এটি মূল্যবান জন্য, আমি এই কাগজ উপর ভিত্তি করে একটি সমাধান উপর কাজ করছি: গ্রেডওয়ার্কস.উম.মি. / 3493710.pdf আমি সফল হলে আমি আমার সমাধান পোস্ট করব।
স্টিফেন

1
নেভিগেশন জাল নেই 100% আপনাকে বলছে আপনি কোথাও যেতে পারেন বা না, এটি হাঁটাচলা জায়গাগুলির কেবল একটি প্রাথমিক রূপরেখা, আপনাকে এখনও গতিশীল বস্তুর বিরুদ্ধে সংঘর্ষের চেক করতে হবে, সম্পাদনা করুন: রায় যা বলেছিলেন তা অনেকটা
ড্রেটা

@ স্টেফেন - দীর্ঘ মন্তব্যের উত্তর দেখুন।
ম্যাথিউ আর

উত্তর:


3

@ স্টেফেন - দীর্ঘ মন্তব্য - এই কাগজটি দেখে মনে হচ্ছে কিছুটা সময় পড়লে এটি পড়ার পক্ষে উপযুক্ত। মূলত আমি যা পরামর্শ দেব তা হের্টেল-মেহলহর্ন অ্যালগোরিদমের ধারায় কিছু রয়েছে যা কাগজে বর্ণিত হয়েছে (এই নির্দিষ্ট অ্যালগরিদমের জন্য একটি রেফারেন্স এখানে পাওয়া যেতে পারে http://www.bringyou.to/compgeom/ ) সংযোজন সহ কোণে গঠিত একাধিক ছোট ত্রিভুজগুলির উপস্থিতি হ্রাস করার জন্য মানচিত্রের দিকগুলি (প্লে এলাকার সীমানার বাইরে) বিভক্ত করার কিছু সময়। এই ছোট ত্রিভুজগুলি সমস্যাযুক্ত হতে পারে কারণ আপনি যে পথে পাথ সন্ধান করছেন তা তার চেয়ে ছোট হতে পারে। হার্টেল-মেহলহর্ন ত্রিভুজাকার পার্টিশন দ্বারা উত্পাদিত বহুভুজ হ্রাস করার জন্য যদি আপনি এখানে আগ্রহী হন তবে ত্রিভুজায়নের বিষয়ে আরও আগ্রহী:http://www.personal.kent.edu/~rmuhamma/Compgeometry/MyCG/PolyPart/polyPartition.htm

এছাড়াও, আপনি যদি চাকাটি পুনরায় উদ্ভাবন না করেন তবে আমার মনে হয় এই লাইব্রেরিটি আপনার যা প্রয়োজন তা আসলেই করবে: http://code.google.com/p/polypartition/ । এটি হার্টেল-মেহলহর্ন সহ বিভিন্ন বিকল্পের একটির সাথে ত্রিভুজগুলি এবং হ্রাসকে অগ্রসর করে। এটি একটি এমআইটি লাইসেন্স যার অর্থ এটি যদি সমস্যা হয় তবে এটি বন্ধ-উত্স এবং বাণিজ্যিক প্রকল্পগুলির জন্য ব্যবহার করা যেতে পারে।

আপনি যদি নিজের প্রয়োগের উপর কাজ চালিয়ে যাওয়ার সিদ্ধান্ত নেন, আপনি কী নিয়ে আসছেন তা দেখতে আমি পছন্দ করব।


1
দুর্দান্ত উত্তর, ম্যাথিউ এবং আপনি অবশ্যই কাগজটি পড়া উচিত! একটি দুর্দান্ত কৌশল অনুসরণ করা এবং ব্যাখ্যা করা সহজ (বিশেষত পরিশিষ্ট এ যা জালটির এজেন্ট ভিত্তিক আবিষ্কার / জেনারেশন সম্পর্কে কথা বলে)। আমি জাভাস্ক্রিপ্টের জন্য এই অ্যালগরিদমের একটি সংস্করণ কোডিং করছি, এবং এটি পাশাপাশি চলে আসছে। এটি হয়ে গেলে আমি উত্তর হিসাবে পোস্ট করব।
স্টিফেন

@ স্টেফেন এই কাজটি দেখতে পছন্দ করবে
কেভজিটলার

@ স্টিফেন আমিও একটি জাভাস্ক্রিপ্ট সংস্করণ খুঁজছি
অ্যাপোলো

6

একটি জাল পরিবর্তে, আপনি কেবল একটি শ্রেণিবদ্ধ এ * পদ্ধতির বিবেচনা করতে পারেন। একটি জাল এর বৃহত্তম সুবিধা গ্রিড থেকে জটিলতা হ্রাস করার পরিবর্তে গ্রিড সারিবদ্ধ নয় এমন গেম ওয়ার্ল্ডগুলির সাথে ডিল করা।

একটি শ্রেণিবিন্যাসিক পদ্ধতির সাহায্যে আপনি আপনার বিশ্বকে বারবার বিভক্ত করেন (অনেকটা চতুষ্পদ গাছের মতো) এবং নোডগুলির মধ্যে সংযোগের তথ্য উত্পন্ন করেন। এরপরে আপনি দ্রুত বিশ্বের বৃহত অংশগুলির মধ্যে একটি পাথ তৈরি করতে পারেন এবং কেবলমাত্র বৃহত্তর অংশের মধ্যে সন্ধানের জন্য উচ্চ-রেজোলিউশন গ্রিড ব্যবহার করতে পারেন।

শ্রেণিবিন্যাসের পদ্ধতিটি প্রবণতা আরও ভাল পারফরম্যান্সের আদেশ দেবে, অন্যদিকে জাল কেবলমাত্র আপনাকে একটি ছোট রৈখিক উন্নতি দিতে চলেছে।

নিখরচায় দৃষ্টিভঙ্গি হ'ল X কে X দ্বারা আরও বৃহত্তর গ্রিড সারিবদ্ধ খণ্ডগুলিতে ভাগ করুন, তাদের মধ্যে সংযোগের তথ্য উত্পন্ন করুন (উদাহরণস্বরূপ, টান 2x1 থেকে 3x1 থেকে 2x2 এর মধ্যে কোনও পথ রয়েছে এবং গড় পথের দূরত্ব কত)? ।

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


1
আমার আরও ব্যাখ্যা করা উচিত: আমার গেমটি গ্রিড সারিবদ্ধ নয়। আমি একটি 800 x 600 পিক্সেল অঞ্চলে একটি গ্রিড তৈরি করছিলাম, প্রতিটি পিক্সেল গ্রিডে একটি জায়গা হওয়ায় (আমি তখনও এ * বের করছিলাম, তাই আমি এখনও এর পারফরম্যান্স সম্পর্কে ভাবছিলাম না)। আমার বাধা রয়েছে যা উপরের উদাহরণের চিত্রের মতো সহজ নয়, আমি সমস্যাটি বোঝানোর চেষ্টা করছিলাম। স্পষ্টতই এই জাতীয় খেলার ক্ষেত্রটি সংশোধন করা দরকার এবং কিছু গবেষণার পরে আমি মনে করি একটি এনএভি জাল সঠিক পথ হবে।
স্টিফেন

3

আমি মনে করি আপনি এটিকে অতিরিক্ত জটিল করে তুলছেন। আপনার সম্ভবত ফ্লাইতে নেভিগেশন মেস তৈরি করার দরকার নেই। পরিবর্তে আপনার বেস ওয়ার্ল্ডের জন্য একটি স্থিতিশীল নেভিগেশন জাল করুন।

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

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