دليل تطوير المودات
تعلم كيفية إنشاء مودات Terraria رائعة باستخدام واجهة C# API الخاصة بـ tModLoader
المتطلبات الأساسية
بيئة التطوير
- • Visual Studio 2022 (مُوصى به)
- • JetBrains Rider
- • Visual Studio Code مع إضافة C#
- • .NET 6.0 SDK أو أحدث
المعرفة المطلوبة
- • برمجة C# الأساسية
- • مفاهيم البرمجة الكائنية
- • معرفة بأسلوب لعب Terraria
- • فهم أساسي لتطوير الألعاب
إعداد بيئة التطوير
1 تثبيت أدوات التطوير
اختر بيئة تطوير C# المفضلة لديك:
2 إنشاء أول مود لك
استخدم أدوات tModLoader المدمجة لإنشاء قالب مود:
- شغّل tModLoader واذهب إلى "Workshop" ← "Develop Mods"
- انقر على "Create Mod" وأدخل تفاصيل المود
- اختر اسم مود فريد (بدون مسافات أو أحرف خاصة)
- انقر على "Create" لإنشاء قالب المود
هذا ينشئ هيكل مود أساسي في مجلد ModSources مع جميع الملفات اللازمة.
هيكل المود الأساسي
يتبع كل مود في tModLoader هيكلاً قياسياً:
YourModName/
├── build.txt # بيانات المود الوصفية والتبعيات
├── description.txt # وصف المود للمتصفح
├── icon.png # أيقونة المود (64x64 مُوصى به)
├── YourModName.cs # فئة المود الرئيسية
├── Items/ # العناصر المخصصة
├── NPCs/ # الشخصيات غير القابلة للعب المخصصة
├── Projectiles/ # المقذوفات المخصصة
├── Tiles/ # البلاطات/الكتل المخصصة
├── Walls/ # الجدران المخصصة
├── Buffs/ # التعزيزات/الإضعافات المخصصة
└── Sounds/ # ملفات الصوت المخصصة
مثال على فئة المود
إليك هيكل فئة مود أساسي:
using Terraria.ModLoader;
namespace YourModName
{
public class YourModName : Mod
{
public override void PostSetupContent()
{
// Code that runs after all mods are loaded
}
public override void PostUpdateInput()
{
// Code that runs every frame
}
public override void Unload()
{
// Cleanup code when mod is unloaded
}
}
}
إعدادات build.txt
يحتوي ملف build.txt على بيانات وصفية مهمة حول المود:
displayName = Your Mod Name
author = Your Name
version = 1.0.0
modReferences =
buildIgnore = *.csproj, *.user, *.suo, bin/, obj/, .vs/
homepage = https://github.com/yourusername/yourmod
description = A brief description of what your mod does
إنشاء أول عنصر لك
لنُنشئ سيفاً مخصصاً بسيطاً كأول عنصر لك:
إنشاء فئة العنصر
أنشئ ملفاً جديداً: Items/ExampleSword.cs
using Terraria;
using Terraria.ID;
using Terraria.ModLoader;
namespace YourModName.Items
{
public class ExampleSword : ModItem
{
public override void SetDefaults()
{
// Basic item properties
Item.damage = 50;
Item.DamageType = DamageClass.Melee;
Item.width = 40;
Item.height = 40;
Item.useTime = 20;
Item.useAnimation = 20;
Item.useStyle = ItemUseStyleID.Swing;
Item.knockBack = 6;
Item.value = Item.buyPrice(gold: 1);
Item.rare = ItemRarityID.Green;
Item.UseSound = SoundID.Item1;
Item.autoReuse = true;
}
public override void AddRecipes()
{
Recipe recipe = CreateRecipe();
recipe.AddIngredient(ItemID.IronBar, 10);
recipe.AddIngredient(ItemID.Wood, 5);
recipe.AddTile(TileID.Anvils);
recipe.Register();
}
}
}
إضافة نسيج العنصر
أنشئ صورة PNG بحجم 40×40 بكسل واحفظها باسم:
Items/ExampleSword.png
يجب أن يتطابق اسم الملف مع اسم الفئة تماماً.
بناء واختبار المود
سير عمل البناء + إعادة التحميل
ميزة التطوير القوية في tModLoader تتيح لك اختبار التغييرات فوراً:
- في tModLoader، اذهب إلى "Workshop" ← "Develop Mods"
- ابحث عن المود في القائمة وانقر على "Build + Reload"
- انتظر حتى يكتمل التجميع
- سيُعاد تحميل المود تلقائياً مع التغييرات
- اختبر العنصر الجديد داخل اللعبة
نصيحة احترافية: استخدم "Build + Reload" بشكل متكرر أثناء التطوير. إنه أسرع بكثير من إعادة تشغيل اللعبة!
أخطاء البناء الشائعة
- نسيج مفقود: تأكد من أن ملف PNG يتطابق مع اسم الفئة تماماً
- أخطاء التجميع: تحقق من بناء الجملة وعبارات using
- مراجع مفقودة: تحقق من صحة مراجع ModLoader
- أخطاء build.txt: تحقق من تنسيق البيانات الوصفية للمود
مواضيع التطوير المتقدمة
نشر المود
النشر على Steam Workshop
- تأكد من بناء المود بدون أخطاء
- اذهب إلى "Workshop" ← "Develop Mods"
- انقر على "Publish" بجانب المود
- املأ نموذج Steam Workshop بالوصف والعلامات
- ارفع لقطات الشاشة واضبط الرؤية
- انقر على "Publish" لجعله متاحاً
سيكون المود متاحاً في متصفح المودات خلال دقائق من النشر.
أفضل ممارسات النشر
إرشادات المحتوى
- اكتب أوصافاً واضحة ومفصلة
- أضف لقطات شاشة عالية الجودة
- اختبر جيداً قبل النشر
- وثّق المشكلات المعروفة
المتطلبات التقنية
- بدون أخطاء أو تحذيرات تجميع
- التحقق من القيم الفارغة بشكل صحيح
- اختبار توافق اللعب الجماعي
- تحسين الأداء