كيف أستمر في تعلم UE4 أثناء صنع لعبتي

يوم جيد للجميع


في هذه المقالة ، أريد أن أتحدث عن المشاكل التي واجهتها أثناء الاستمرار في تطوير محاكي السيارة وما توصلت إليه عند محاولتي الالتفاف عليها.

التكوين العالمي


في مقال سابق ، تحدثت عن كيفية إنشاء عالم كبير في UE4 بطريقة بسيطة وسريعة ، مقسمة إلى قطع لتحسين التحميل. ونتيجة لذلك ، تخليت عن هذا الوضع للأسباب التالية:

  • بادئ ذي بدء ، لفتت الانتباه إلى حقيقة أنه في جميع الأمثلة ومقاطع الفيديو ، فإن Epics أنفسهم (ومطورين آخرين) يصنعون بطاقات 8 كم × 8 كم "كاملة". هذا أكثر مما أحتاج إليه ، لذا يبدو أن التكوين العالمي بالنسبة لي هو نوع من التحسين المفرط.
  • رصف الطرق بمساعدة تنسيق المناظر الطبيعية ، لاحظت أن UE4 لا يكسرها بحجم خلية الخريطة (عند المفاصل) ، ولكن يمتد حدودها بحجم الخط الناتج الناتج. يتسبب هذا في مشاكل عند محاولة تحريك الخريطة ، ويبدو أيضًا أنه يفسد منطق التحميل الديناميكي ، ويحمل على الفور كل شيء تمر به الطريق (في حالتي ، هذا نصف العالم).
  • بشكل عام ، فإن حدود أجزاء الخريطة هي سؤال مثير للاهتمام. لقد قمت بإعادة تصميم الطرق الخاصة بـ Blueprint Spline محلي الصنع (المزيد عن ذلك أدناه) ، ولكي لا أكرر "أخطاء" المناظر الطبيعية ، كان علي أن أقوم بتطبيق تقسيم تلقائي للقطع إلى قطع عند حدود المستوى ، ومزامنة الانحناءات في هذه الأماكن ، وإنشاء كائنات تابعة (بحيث يكون لكل واحد خاص به ضع مستوى التحميل التلقائي) ... لست متأكدًا من أن هذا ممكن من حيث المبدأ ، ومن المؤكد أن الأمر سيستغرق الكثير من الوقت (لم أجد إشارات إلى وظائف حدود المستوى ، وما إلى ذلك في المخططات)
  • تقع من خلال الخريطة. حول تجاوز هذه "الميزة" باستخدام BlockTillLevelStreamingCompleted () التي تحدثت عنها بالفعل في تلك المقالة. ومع ذلك ، أدى هذا الحل إلى المشكلة التالية:
  • . ( ) OpenLevel ( World Composition), «» -, .. spawn , , . , ++, «StreamingPauseRendering» override «BeginLoadingScreen». , , .
  • , World Composition ++

    void UMyGameInstance::OnWorldChanged(UWorld * OldWorld, UWorld * NewWorld)
    {
    	Super::OnWorldChanged(OldWorld, NewWorld);
    
    	if (NewWorld) {
    		if (NewWorld->WorldComposition) {
    			const TArray<ULevelStreaming*> TilesStreaming = NewWorld->WorldComposition->TilesStreaming;
    			NewWorld->ClearStreamingLevels();
    			NewWorld->SetStreamingLevels(TilesStreaming);
    		}
    	}
    }
    

Blueprints Spline


, Blueprints Spline «» ( , , «» ), Landscape Splines «Deform Landscape to Splines». , «», "Editor Apply Spline" Landscape + Spline! «Call In Editor» Blueprint Spline ( ) . .


Widgets


, Vehicle Variety Pack , , , , , . 3D , Widget, , ! Workaround' «Render Target», 3 , «» , , , Widget. , « » .



, UE4, ( , ). Udemy , , , , , \ . , , , «» ( PlayerController) . AI Controller Class «dummy» AIController, .



فجأة اتضح أن هناك مشكلة في إغلاق القائمة في اللعبة بالضغط على Esc. لم تكن هناك صعوبة في الإمساك بـ Esc في اللعبة ، وإيقاف اللعبة مؤقتًا وفتح أداة القائمة في وضع ملء الشاشة ... لكنه لم يستعجل إغلاق Esc مرة أخرى ، بدأ تجاوز "On Key Down" يعمل في بعض المواقف غير الواضحة ، مثل "الاتصال بوحدة التحكم UE4 بواسطة ~ ، ثم أغلقه ، ثم اضغط على شيء ... "اتضح أن الحل بسيط للغاية - حدد مربع الاختيار" Is Focusable "في مصمم القطعة على عنصر الجذر (على القطعة نفسها).


شكرًا لك على انتباهك ، إذا تمكنت من الخروج من Mount & Blade II: Bannerlord وعدم الوقوع في Snowrunner المنتهية ولايته ، فسأستمر في تطوير مشروعي والكتابة عن جميع الأشياء غير الواضحة التي استغرقت الكثير من الأعصاب والوقت.


All Articles