درخت رفتار در بازی ها

درخت رفتار یک ساختار داده است که در آن ما قوانین نحوه رفتار خاص را تنظیم و تعیین می­کنیم که با چه نظمی اجرا شود. اصطلاح درخت به این دلیل انتخاب شده چون از قوانین سنتی ساختار داده درخت در علوم پایه استفاده می­کند. این درخت یک سری گره دارد که از ریشه شروع می­شود و توسط اتصالات به گره­های دیگر پیوند داده می­شود.درخت رفتاردرخت­ رفتار یا Behavior Tree مجموعه­ای از گره­هایی (nodes) است که به یکدیگر متصل هستند، اما در هر حالت یک جهت ثابت وجود دارد و دستور برنمی­گردد یا تکرار نمی­شود. منطق از پایین به بالا است ، یک بخش خاص که مجموعه­ای از یک یا چند گره که یک رفتار خاص در آن جریان دارد که باید اجرا شود.گره­ای که توسط دیگری در بالای آن متصل شده است، آن گره را فراخوانی می­کند. به گره بالایی، گره والد و به هر گره­ای که زیر آن پیوند داده می­شود گره فرزند نامید می­شود. نحوه انتخاب یک رفتار براساس نحوه حرکت آن به سمت پایین درخت و گره­ها است. به طور معمول گره­ها چهار نوع دارند. ابتدا گره ریشه (Root) وجود دارد که در بالا درخت است و هیچ والدی ندارد و همیشه فزرند دارد که عمل برای انجام از آن آغاز می­شود.گره بعدی گره برگ(Leaf) است این گره همان جایی است که ما رفتارهای هوش منصوعی را قرار می­دهیم. مثل دویدن به یک موقعیت ثابت ، شلیک به دشمن یا تعامل با یک شی . این گره برعکس گره ریشه است، فقط می تواند والد داشته باشد و هیچ فرزندی نداشته باشد. سپس گره­های مرکب یا کامپوزیتی را داریم این گره­ها که جریانی که از درخت حرکت می­کند را کنترل می­کنند. دو نوع اصلی از این گره­ها وجود دارد:گره انتخابگر(Selector) : این گره تصمیم می­گیرد کدام فرزند را براساس منطق موجود در جهان را اجرا کند. برای مثال اگر دشمن خیلی دور باشد گره فرزندی را که حمله با چاقو است را اجرا نمی­کند و تصمیم می­گیرد گره فرزندی را که استفاده از اسلحه است را اجرا کند.گره توالی(Sequence): این گره امکان اجرا چندین گره فرزند را به ترتیب یکی پس از دیگری را دارد. برای مثال فرض کنید شما در زیر آتش دشمن هستید و می­خواهید به سمت پوشش بدوید ، مخفی شوید سپس اقدام به تیراندازی کنید.تزئینی (Decorator‌): این گره منطق موجود در گره فرزند را دریافت کرده و سپس آن را تغییر می­دهد. این کار باعث می­شود که اقدامات را تکرار کنیم، یا اینکه عکس منطق تصمیم گیری کنیم.همانطور که در شکل بالا مشاهده می­کنید شروع به تجسم این طرح و اجرای آن آسان است.وقتی درختان رفتاری برای اولین بار ابداع شدند، ایده این بود که هر فریم از یک ریشه بروزرسانی به نام تیک اجرا می­کند، سپس سیستم در درون درخت به دنبال گره فعال می­گردد و دوباره چک می­کند که کدام گره در طول مسیر باید فعال باشد این کار زمان بر است. مخصوصا زمانی درخت بزرگتر می­شود، بنابراین امروزه درخت اشارگر­ به گره فعال را حفظ می­کند و حواس درخت به گره­ای که پردازش تیک را انجام می­دهد است و اگر پردازش به اتمام رسید درخت چک می­کند که کار بعدی چیست.یک مولفه دیگر که درخت رفتار از آن استفاده می­کند تخته سیاه (Black board) است. تخته سیاه برای ذخیره داده­های مفیدی که درخت از آن برای قسمتی از رفتار چند گره استفاده می­کند. موقعیت­های دشمن ، نزدیک­ترین پوشش، نزدیک­ترین خودرو، کاپیتان مرده است؟و آیا زیر آتش دشمن هستیم؟ مثال­هایی هستند که در تخته سیاه ذخیره می­شوند. همچنین از تخته سیاه می­توان برای چندین درخت رفتار استفاده کرد. این باعث آسان شدن اشتراک اطلاعاتی که هوش مصنوعی برای چندین شخصیت خود استفاده می­کند می­شود. برای مثال یکی از شخصیت­هایی که توسط هوش مصنوعی کنترل می­شود این سوال را مطرح می­کند که بازیکن اصلی کجاست؟ سپس از تخته سیاهی که توسط درخت­های رفتار دیگر به اشتراک گذاشته شده پاسخ سوال را پیدا می­کند.