در این مطلب، قصد دارم به صورت مرتب، مپ‌سازی برای GoldSrc را آموزش می‌دهم.

در جلسه اول، قصد دارم برخی از اصطلاحات پرکاربرد را توضیح دهم و هم‌چنین برخی از ابزارهای موجود برای این‌کار را معرفی کنم. متأسفانه هیچ بسته متمرکزی برای این کار از سوی شرکت Valve توزیع نشده است، لذا طرفداران اقدام به جمع‌آوری این پک‌ها کرده‌اند.


ابتدا به معرفی چند اصطلاح و نرم‌افزار می‌پردازم.

Map: محیطی که در آن بازی انجام می‌شود و حاوی اشیاء، NPCها، Entityها و Brushهاست.

Hammer: نرم‌افزار اصلی جهت ایجاد مپ که توسط شرکت Valve عرضه شده و ما قصد داریم که از نسخه اصلی آن استفاده کنیم.

نمایی از صفحه‌ی اصلی نرم‌افزار Hammer


Game: بازی هدف برای ساختن مپ، در این سری آموزش‌ها، من از بازی Counter-Strike v1.6 استفاده می‌کنم. من شخصاً از نسخه Pro که توسط طرفداران، ویرایش شده و محتوایی جانبی به آن اضافه شده است، استفاده می‌کنم. [دانلود فایل - حجم حدود 280 مگابایت]


Brush: در تعریفی هندسی، درواقع مکعب‌هایی شش‌وجهی هستند که دیوارها، سطح زمین و سقف (حتی آسمان!) را تشکیل می‌دهند و محدوده‌ی بازی کاربر را تعیین می‌کنند. همان‌طور که تصویر مربوط به Hammer دیدید، من مکعب ساخته‌ام که می‌تواند به عنوان سطح زمین استفاده شود و بستگی به خودتان دارد.


Brush دو خصوصیت مهم دارد: 1. Texture می‌گیرد (درمورد Texture توضیح خواهم داد)

2. فیزیک بر آن تأثیری ندارد (!)، انفجار، شلیک و علناً هیچ‌چیز بر روی آن تأثیری ندارد و سرجای خود ثابت است.


Entity: نقاطی هستند که موارد مختلفی روی مپ را تعیین می‌کنند. برای مثال، نقطه ظهور بازیکن روی مپ، از طریق یک Entity مشخص می‌شود، یا نقطه‌ی ظهور یک NPC نیز همین‌طور. در صورتی که بازی Half-Life را انجام داده باشید، متوجه هستید که ممکن است صدایی از جایی بیاید، نقطه‌ی منبع صدا نیز یک Entity است (Ambient)


Entityها دو ویژگی مهم دارند: 1. آن‌ها باید برای عمل‌کردن توسط یک Trigger بیدار شوند. 2. حجم و تکسچر مشخصی ندارند.


Trigger: تریگرها، بیدارکننده Entityها برای انجام کارشان هستند. برای مثال، یک Entity برای نقطه ظهور پلیر مشخص می‌کنیم. اما هیچ پلیری در این نقطه ظهور نمی‌کند تا هنگامی که توسط یک Trigger بیدار شود.

Triggerها دو حالت دارند:

1. Auto: به طور خودکار و پس از بازه زمانی مشخصی بیدار می‌کنند.

2. Scripted: توسط برنامه‌نویسی، در شرایط مناسب بیدار می‌کنند.


Texture: اگر با نرم‌افزارهای گرافیکی کار کرده باشید، حتماً این نام به نظرتان آشنا می‌آید. تکسچر یک تصویر تکراری است که بر روی وجه‌های Brush اعمال می‌شود تا جلوه‌ای طبیعی به خود بگیرد. برای مثال، برای سطح زمین، می‌توان Texture مربوط به براش را تغییر داد.


4 براش در کنار هم، هر یک با تکسچری متفاوت


Class: در واقع نوع Entityها را مشخص می‌کنند و می‌گویند که هر Entity چه کاری انجام می‌دهد. برای مثال یک Entity با کلاس info_player_start مشخص می‌کند که این Entity مربوط به نقطه ظهور پلیر است.


Brush-Entity: در کلامی ساده، یک نوع از Entityها هستند که مانند Brushها، حجم و تکسچر قبول می‌کنند. برای مثال، برای طراحی آب، نیاز داریم که یک Brush با تکسچر آب ایجاد کنیم (در شکل بالا، براش بالا-سمت راست). اما اگر این مپ را در بازی، بخواهیم ببینیم، می‌بینیم که آب صرفاً در حال حرکت است و مانند زمینی سخت، نمی‌توان به آن وارد شد!

بنابراین نیاز داریم تا به موتور بازی بگوییم که این آب است و به پلیر اجازه شنا در آن را بدهد. بنابراین آن را به یک Entity اصطلاحاً Tie (گره زدن) می‌کنیم (به کلاس func_water که به زودی توضیح خواهم داد) تا مانند Entity به صورت پویا کاری را انجام دهد.


Sky box: شبیه ساز آسمان هستند که در واقع منظره بیرون را مشخص می‌کنند. آن‌ها در واقع یک فایل tga با فرمت 16 بیت هستند که عکسی از دوردست را نمایش می‌دهند، اما پلیر باید از رفتن به سمت آن منع شود. Sky box ترسناک نیست و صرفاً توسط یک براش با یک تکسچر مشخص(SKY) ساخته می‌شود.


فکر می‌کنم، در حال حاضر تعریف اصطلاحات بس است و اصطلاحات بعدی را برای وقت آن توضیح می‌دهم.

موفق باشید.