টাওয়ার ডিফেন্স গেমটিতে একটি * বাস্তবায়নের উপর ধীর পারফরম্যান্স


9

আমি কোনও পূর্বনির্ধারিত পথ ছাড়াই ফ্ল্যাশে একটি টাওয়ার ডিফেন্স গেমটি তৈরি করছি।

যদিও আমার গ্রিড 40x40 (ছোট?), প্রতিটি সময় পুনরায় গণনা করার সময় A * লড়াই করছে। সুতরাং পুনঃ গণনাকে সহজ করতে আমি আমার নিজস্ব পরিবর্তন করেছি এবং স্পর্শকৃত সেল সংখ্যা প্রায় 900 এ নেমে এসেছিল (মূলের কাছাকাছি পরিবর্তন করার সময়)। এটি এখনও একটি নতুন টাওয়ার স্থাপনের সময় খুব সংক্ষিপ্ত, তবে সনাক্তকরণযোগ্য সময়ের জন্য হিমশীতল।

এটি কি বাস্তবায়নের সমস্যা, বা 40x40 খুব বেশি?

সম্পাদনা:

আমার কোডের কাঠামো:

  • সমস্ত ডেটা ঘর 2d অ্যারে সংরক্ষণ করা হয়।
  • প্রতিটি ঘরে তার অভিভাবককে পথের দিকে থাকে (1-8 ক্লকওয়াস) এবং বিটওয়াইস এ এনকোডেড অ্যারেটি বাচ্চাদের পথে (প্রতিটি বিট একটি শিশুকে উপস্থাপন করে)।
  • ইউক্যালিডিয়ান দূরত্বের অনুমানের সাথে অনুসন্ধান এ * দ্বারা সম্পাদিত হয়।

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

1
আমি যখন শেষবারের জন্য এ * প্রয়োগ করলাম তখন আমি মনে করি এটি প্রায় 1 এমএসে 64x64 গ্রিডের মধ্য দিয়ে চলছে running হ্যাঁ, এটি আপনার বাস্তবায়নে সমস্যা বলে মনে হচ্ছে। আমি আপনার কোড বা এর সংক্ষেপে পোস্ট করার পরামর্শ দিচ্ছি যাতে আমরা আপনাকে আরও সাহায্য করতে পারি।
মার্ক মুলার

আমি যুক্ত সম্পাদনা দেখুন
ড্যানি

1
40x40 যদি খুব ধীর হয় তবে সম্ভাবনা ভাল থাকে আপনি খুব খারাপ কিছু করছেন। হয় আপনার কোড পোস্ট করুন বা এটি প্রোফাইল করুন। বিকল্পভাবে, এটি স্কেল করুন এবং দেখুন কী ঘটে - যদি কোনও 80x80 গ্রিড দীর্ঘ চারবারের বেশি সময় নেয়, তবে আপনি সেখানে খুব চুরমার হয়ে গেছেন।
জোর্বাথুত

দয়া করে শিরোনামটি আরও কিছু তথ্যপূর্ণ হতে পারে?
tenpn

উত্তর:


4

আমি মন্তব্য করতে পারি না, তবে ফ্লেক্সের প্রথম প্রোফাইল, অনুমানের সমস্ত everything


আমি ফ্ল্যাশ প্রকল্পে ফ্ল্যাশ প্রকল্পের প্রোফাইল কীভাবে করব?
দানি

হ্যা এবং না. আমি মনে করি না আপনি সরাসরি ফ্ল্যাশ প্রকল্পটি লোড করেছেন। আমি মনে করি আপনি উত্স ব্যতীত swf প্রোফাইল করতে সক্ষম হতে পারেন এবং এখনও ফাংশন স্তরের তথ্য পেতে পারেন। আমি "ফ্লেক্সে ফ্ল্যাশ প্রকল্পের প্রোফাইলিং" বা এর মতো একটি গুগল অনুসন্ধান করব। আমি এটি করেছি এবং পেয়েছি: flexblog.edchipman.ca/… যা আশাব্যঞ্জক বলে মনে হচ্ছে।
জোনাথন ফিশফফ

ধন্যবাদ, সত্যই আমাকে সমস্যাযুক্ত অংশটি খুঁজে পেতে সহায়তা করেছে (অ্যালগরিদমে ছিল না, প্রশ্নের মন্তব্য দেখুন)
দানি

13

আমি ধরে নিচ্ছি যে টিডি 'টাওয়ার ডিফেন্স'

আমি মনে করি এ * এর জন্য কিছুটা ওভারবোর্ডে চলেছে।

গেমের শুরুতে, বন্যার গতিবেগের মানচিত্র তৈরি করতে প্রস্থানস্থান থেকে প্রস্থান অঞ্চলটি পূরণ করুন:

 |---------|
 |5|4|3|3|3|
 |5|4|3|2|2|
->5|4|3|2|1->
 |5|4|3|2|2|
 |5|4|3|3|3|
 |---------|

এবং চলাচল সর্বদা নিম্ন মানের সহ একটি বর্গের দিকে থাকে towards

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

খেলোয়াড় যখন একটি টাওয়ার সরিয়ে ফেলেন, তখন সর্বনিম্ন সংলগ্ন বর্গক্ষেত্রের চেয়ে চলাচলের মান আরও সেট করুন এবং উপরের প্রক্রিয়াটি পুনরাবৃত্তি করুন।

একটি সহজ পদ্ধতির বন্যা পূরণ পুনরায় কাজ করা হবে।


6
অল্প অল্প সংখ্যক ইউনিটের জন্য মোটামুটিভাবে বোর্ডের দৈর্ঘ্য - এ-এর চেয়ে বন্যা পূরণ পুনরায় করা ব্যয়বহুল (এবং যেহেতু এটি ফ্ল্যাশ, মেমরি বিন্যাসের মতো অ-অ্যালগরিদমিক ধ্রুবক সম্ভবত পারে ' টি খুব কার্যকরভাবে ব্যবহার করা হবে)। যাইহোক, এই অনেক যোগাযোগ ইউনিট জন্য একটি খুব ভাল মডেল, এবং সহযোগীতা আশ্লেষ বলা হয় - scalablegamedesign.cs.colorado.edu/wiki/Collaborative_Diffusion

@ জো র্রেছনিগ: বাহ সুন্দর লিঙ্ক। আমি সেই কৌশলটি আগে ব্যবহার করেছি তবে কখনই জানত না এটি কী বলে। ধন্যবাদ।
টেন্পেন

@ জো, যতক্ষণ না মানচিত্রে কমপক্ষে কয়েকটি প্রতিবন্ধকতা রয়েছে আমি এ * কে ফোন করার চেয়ে বেশি অদক্ষ বলে মনে করি না। এটি হ'ল আমি বিশ্বাস করি যে কয়েকটি ইউনিট সহ কেবল বিস্তৃত উন্মুক্ত, প্রায় বাধা মুক্ত ম্যাপের জন্য এটি আরও খারাপ হতে পারে।
এডিএ-কিএ মর্ট-ওরা-ই

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

@ জো, আমি যে যুক্তি দিচ্ছি তা হ'ল এমনকি কয়েক মুঠো টাওয়ার দিয়েও এ * সম্ভবত প্রায় সমস্ত স্থান স্পর্শ করবে। তবে এন দানবদের পক্ষে বন্যার তুলনায় কম দক্ষ হওয়ার জন্য কেবল মোট_স্কোয়ার / এন ছাড়িয়ে যাওয়া দরকার।
এডিএ-কিএ মার্ট-ওরা-ই

2

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


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

যথেষ্ট ফর্সা। আমি একমাত্র উত্তর দিতে পারি যা বাস্তবায়নের বিশদ না জেনে সমস্যার সমাধান করবে যা মন্দার কারণ হতে পারে।
কাজ

0

শুরু করার জন্য আপনি আপনার অ্যারেটিকে একটি ভেক্টরে পরিবর্তন করতে পারেন - আপনার কিছু গতি উন্নতি করা উচিত। কোড পোস্ট করুন এবং আমরা আরও অনুকূলিতকরণ প্রস্তাব করতে সক্ষম হতে পারে।


0

আমি অনুমান করব যে আপনার মন্থরতা কারণ আপনি একই সাথে সমস্ত চরিত্রের জন্য একটি পাথ গণনা করছেন। একটি চরিত্রের জন্য একটি পাথ গণনা করা দ্রুত তবে দৃশ্যে যদি দুই ডজন অক্ষর থাকে তবে তা দমন করতে পারে।

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


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

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