دليل المبتدئين لبرمجة Verse: أول جهاز UEFN خاص بك
ما هي Verse؟
Verse هي لغة البرمجة من Epic Games المصممة خصيصًا لـ UEFN. إذا استخدمت Python من قبل، ستجد Verse مألوفة — تستخدم صياغة قائمة على المسافات البادئة وتُقرأ تقريبًا كاللغة الإنجليزية. لكنها تستعير أيضًا أفكارًا من لغات البرمجة الوظيفية مثل Haskell، مما يجعلها قوية لمنطق الألعاب.
كل سلوك مخصص في UEFN يتجاوز أجهزة Creative الأساسية يتطلب Verse. أنظمة النقاط، وواجهات المستخدم المخصصة، ومديري التجهيزات، وإدارة الجولات، والتقدم التصنيفي — كلها Verse.
إعداد أول جهاز Verse خاص بك
في UEFN، أنشئ جهاز Verse جديدًا:
- افتح مشروعك في UEFN
- اذهب إلى قائمة Verse ← Create New Verse File
- اختر Creative Device كقالب
- سمّه
my_first_device
ينشئ UEFN ملفًا أوليًا يبدو هكذا:
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }
my_first_device := class(creative_device):
OnBegin<override>()<suspends>:void=
Print("Hello, Fortnite!")دعنا نحلّل هذا.
فهم الأساسيات
عبارات `using` — هذه تستورد واجهات البرمجة. /Fortnite.com/Devices تمنحك الوصول إلى أجهزة Creative. /Verse.org/Simulation توفر ميزات المحاكاة الأساسية. /UnrealEngine.com/Temporary/Diagnostics تمنحك Print() لتصحيح الأخطاء.
تعريف الصنف — my_first_device := class(creative_device) ينشئ صنف جهاز جديدًا يرث من creative_device. هذا هو جهازك المخصص الذي ستضعه في العالم.
OnBegin — هذه الدالة تُنفّذ عند بدء اللعبة. علامة <override> تعني أنك تستبدل OnBegin الخاصة بالصنف الأب. علامة <suspends> تعني أن هذه الدالة يمكنها استخدام عمليات غير متزامنة (مثل Sleep()).
بناء عدّاد القتل
دعنا نبني شيئًا مفيدًا — جهاز يتتبع عمليات القتل ويعرضها. أولاً، تحتاج إلى الإشارة إلى جهاز واجهة مستخدم في مستواك:
using { /Fortnite.com/Devices }
using { /Fortnite.com/Characters }
using { /Verse.org/Simulation }
kill_counter := class(creative_device):
@editable
EndGameDevice : end_game_device = end_game_device{}
var KillCounts : [agent]int = map{}
OnBegin<override>()<suspends>:void=
# Subscribe to elimination events
GetPlayspace().PlayerAddedEvent().Subscribe(OnPlayerAdded)
OnPlayerAdded(Player : player):void=
if (FortCharacter := Player.GetFortCharacter[]):
FortCharacter.EliminatedEvent().Subscribe(OnEliminated)
OnEliminated(Result : elimination_result):void=
if (Eliminator := Result.EliminatingCharacter):
if (Player := player[Eliminator.GetAgent[]]):
if (set KillCounts[Player] += 1) {}مفاهيم Verse الأساسية
التعبيرات القابلة للفشل — تستخدم Verse if للعمليات التي قد تفشل. Player.GetFortCharacter[] قد لا تُرجع شيئًا إذا لم يكن للاعب شخصية. الأقواس المربعة [] تشير إلى استدعاء قابل للفشل، ولفّه بـ if يتعامل مع حالة الفشل بسلاسة.
قابلية التغيير — المتغيرات المُعلنة بـ var يمكن تغييرها. بدون var، القيم غير قابلة للتغيير افتراضيًا. هذا يمنع تغييرات الحالة العرضية.
الأحداث والاشتراكات — تستخدم Verse نمط أحداث. تشترك في الأحداث (PlayerAddedEvent، EliminatedEvent) وتوفر دوال رد الاتصال. هكذا تتفاعل مع اللعب بدون استقصاء مستمر.
القواميس والمصفوفات — [agent]int هو نوع قاموس يربط العملاء بأعداد صحيحة. map{} ينشئ واحدًا فارغًا.
الأنماط الشائعة
إليك أنماطًا ستستخدمها في كل جهاز Verse تقريبًا:
مؤقت/تأخير:
Sleep(5.0) # Wait 5 secondsحلقة:
loop:
DoSomething()
Sleep(1.0)التكرار على اللاعبين:
Players := GetPlayspace().GetPlayers()
for (Player : Players):
# Do something with each playerالخطوات التالية
يغطي هذا الدليل الأساسيات المطلقة. للتعمق أكثر:
- اقرأ توثيق Verse الرسمي من Epic
- ادرس مشاريع Verse مفتوحة المصدر على GitHub
- تمرّن بإعادة بناء أجهزة Creative الموجودة بلغة Verse
- انضم إلى مجتمع UEFN على Discord للحصول على المساعدة
بناء أجهزة Verse مخصصة هو ما يفصل مطوّري UEFN المحترفين عن الهواة. إذا كنت بحاجة إلى آليات مخصصة معقدة لخريطتك، فريقنا متخصص في برمجة Verse — من أنظمة النقاط المخصصة إلى أُطر أوضاع اللعب الكاملة.
تحقق من معرض أعمالنا لرؤية Verse في العمل عبر 10 خرائط منشورة بأكثر من 4.8 مليار دقيقة لعب.
Kaio
مطور خرائط UEFN في Kaio Corporation
مطور خرائط Fortnite UEFN محترف. أكثر من 4.8 مليار دقيقة لعب عبر 10 خرائط. اعرف المزيد →
تحتاج خريطة مخصصة؟
تواصل معنا →