Friday, December 18, 2015

Unreal хөдөлгүүрт хэрэглэгддэг нэр томъёо, классуудын тайлбар



  • Object
    Object бол Unreal Engine-д ашиглагдаж буй бүх класуудын суурь класс болно. Object классаар үүсгэсэн объектийг world-руу нэмэх боломжгүй(level дотор байрлуулж, шинээр төрүүлэх боломжгүй) юм. Гэхдээ энгийн өгөгдөл болон функцүүдийг агуулах бололцоотой. Хэрвээ level дотор зурагдах шаардлагагүй ямар нэгэн зүйлийг дүрслэх хэрэгтэй бол Object класс ашиглаж болно, Object класс дотор draw call дуудалт хийгддэггүй. Одоогоор Object ийг Blueprint-ээр ашиглах боломжгүй байгаа. 

  • Actor
    Actor классаар үүсгэсэн объектийг level дотор төрүүлж болдог бөгөөд Actor-ийн график дүрслэлийг төлөөлөх Static Mesh Component агуулах бололцоотой. Хэрэв Actor-т хандалт хийхийг хүсвэл үүнийг эхлээд level дотор spawn хийх буюу төрүүлсэн байх шаардлагатай. Ингэснээр Actor-оос draw call дуудалтууд хийгдэн дэлгэцэнд объект зурагдана.
  • Pawn
    Pawn бол зүгээр л нэг энгийн Actor бөгөөд ялгаатай тал нь гэвэл PlayerController болон AIController-уудаар удирдуулагдах боломжтойд байдаг. Жишээлбэл Pawn нь тоглогчоор удирдагддаг нохой ч юм уу аль эсвэл RTS тоглоомны AI-аар удирдагддаг unit ч байх боломжтой.
  • Character
    Character бол MovementComponent нэмэгдсэн Pawn л гэсэн үг. Navigation хэрэглэж энд тэрүүнгээр хөдлөх бололцоотой. Мөн Character-т SkeletalMeshComponent угаасаа нэмэгдцэн байдаг тул ямар нэгэн хөдөлгөөнт дүрийг төлөөлүүлэх бололцоотой. Шинээр Character үүсгээд тэрийгээ GameplayCharacter ч юм уу нэр өгч болох юм. Mobile төхөөрөмжүүд дээр үүнийг ашиглавал тооцоолол их авдаг тул Pawn ашиглан character-ээ бүтээх боломжтой.
  • PlayerController
    PlayerController-ийн хамгийн чухал хэрэглээ гэвэл тоглогчийн гар, хулгана, тоуч, пэд гэх мэтийн оролтын үйлдлүүдийг мэдрэх боломжтойд байдаг бөгөөд Pawn болон Character-аар үүсгэсэн объектуудыг удирдах боломжтой. Хэрэв янз бүрийн ялгаатай хөдөлгөөний функционал хэрэгжүүлэхийг хүсвэл хэд хэдэн PlayerController үүсгэж болно. Жишээлбэл машин жолоодохоор болвол CarPlayerController хэрэглээд машинаас буунгуутаа чарактерээ удирдахаар болвол PlayerController хэрэглэх гэх мэтээр ашиглаж болно. Мөн бас тоглоомын үндсэн цэс аль эсвэл Gameplay-г удирдахыг хүсвэл сая дурдсан байдлаар өөр өөр PlayerController-ууд үүсгэн ашиглаж болно. 
  • AIController
    Энэ класс яг PlayerController шиг бөгөөд Pawn болон Character нарыг удирдаж чадна а харин ялгаатай тал нь гэвэл тоглогчийн оролтын өгөгдлүүдийг мэдэрч боловсруулж чадахгүй энэнийхээ оронд behavior tree, мэдрэгч компонентүүд гэх мэтийн янз бүрийн AI хэрэгслүүдээр хангагдсан байдаг.
  • Pawn болон Controller
    Үндсэндээ Pawn-ийг mesh, animation гэх мэтийн график дүрслэлд хэрэглэдэг бол Controller-уудыг болохоор Pawn-ий уураг тархи нь гэж ойлгож болох юм өөрөөр хэлбэл хаашаа хөдлөх юу хийх ёстойг нь зааварчилдаг гэсэн үг.
  • Game Instance
    Тоглоомын глобал өгөгдлүүдийг хадгалан боловсруулахыг хүсвэл энэ класс яг тохирно. Тоглоом эхлэхэд энэ класс үүсээд тоглоомын туршид ажилласаар дусах үед нь устдаг. Бусад классууд level эхлэх үед spawn хийгдээд level дуусах үед устаж байдгаараа ялгаатай. GameInstance-рүү Blueprint-ээс хандан ажиллаж болно. Шинээр ShooterGameInstance нэртэй Game Instance үүсгэж болох юм. Game Instance-ийг Unreal прожекттэйгээ холбож өгөх шаардлагатай байдаг ба үүний тулд Edit -> Project Settings -> Maps & Modes руу ороод default game instance ийг ShooterGameInstance-аараа солин өөрчлөх бололцоотой. Энэ тохиргоо хийгдсэнээс хойш тоглоом эхлэх тоолонд ShooterGameInstance классаар үүсгэгдсэн объект ажиллана. Үүнлүү бусад бүх классуудаас хандан ажиллах бололцоотой.
  • Game Mode
    Game Mode -ийн хамгийн чухал хэрэглээ бол үүнлүү зөвхөн сервэрээс хандах бололцоотой байдагт юм. Ганц гарын тоглоомонд сервэр заавал нээх хэрэглэгдээд байх шаардлагагүй ч энэ бол заавал мэдэж байх ёстой ойлголтонд ордог. Level-рүү хэн нэгэн холбогдох болон холболт салах гэх мэтийн үзэгдлүүдийг энэ класс дотор боловсруулж чадна. Үндсэндээ GameMode-д level-тэй холбоотой дараах шинж чанарууд бий. Үүнд :
    - Unreal хөдөлгүүр дэх level бүр ямар нэгэн байдлаар Game Mode-д холбогдсон байдаг.
    - Game Mode-д урьдчилсан бэлтгэсэн Pawn, Player Controller, HUD классууд болон Game State-үүдийг агуулж байдаг.
    - Эдгээр нь level шинээр үүсэх үед даган үүсгэгддэг гэсэн үг. Ихэнхидээ Game Mode-ийг аль тоглогч ялсан бэ аль эсвэл энэ үеийг дуусгахад ямар ямар нөхцөлүүд байдгийн тэрийг нь тодорхойлоход хэрэглэдэг гэсэн үг. Энгийнээр хэлбэл Game Mode бол level-ийн дүрэм болоод дүрмүүдтэй ажиллахад хэрэглэдэг тэр класс юм.
    GameplayGameMode нэрээр шинээр Game Mode класс үүсгэж болох юм. Дараа дараачаар нь тоглоомын цэс болоод gameplay үйл ажиллагаануудад зориулан өшөө олон GameMode-үүд үүсгэж болно. GameMode үүсгэсний дараа level-рүүгээ оноож өгөх шаардлагатай байдаг. Settings -> World Settings рүү ороод сольж болно.
  • Game State
    Game State бол тоглоомын үеийн явцыг хянах зориулалттай бөгөөд бүгд Game State-рүү хандах эрхтэй байдаг. Жишээлбэл нүүдэлд суурилсан тоглоом байлаа гэхэд тоглогч нь одоо нүүхүү үгүй юу гэдгийгээ Game State-ийн тусламжтайгаар мэдэж болно аль эсвэл shooter тоглоом байлаа гэвэл одоогийн үе давах зорилго нь юу вэ гэдгийгээ эндээс мэдэх бололцоотой. GameplayGameState нэрээр шинэ Game State үүсгээд Unreal-ийн GameplayGameMode-ийн утганд үүнийгээ тохируулан оноож өгч болно.
    GameMode болоод GameState-ийн хоорондын ялгаа үүрэг зориулалтыг мэдэхийг хүсвэл дараах холбоосоор орж унших бололцоотой https://answers.unrealengine.com/questions/122429/gamemode-vs-gamestate.html  
  • HUD
    HUD нь Heads Up Display гэсэн үгний товчлол бөгөөд тоглоомын цэс тохиргоо самбар gui удирдлага гэх мэтэд хэрэглэгддэг, HUD класс нь Unreal Engine 3-ийн хувьд 2D UI-г бүтээх үндсэн класс нь байжээ. Харин Unreal Engine 4-т бол үүнийг UMG ашиглан гүйцэтгэдэг. Гэсэн хэдий ч HUD классыг одоо хүртэл UMG Widget-ийн reference-ийг хадгалах зориулалтаар хэрэглэсээр байна. Шинээр GameplayHUD нэртэй HUD класс үүсгэлээ гэвэл үүнийгээ GameMode-доо тохируулан оноож өгөх шаардлагатай. 

UE4-ийг товчхондоо тайлбарлавал
  1. Тоглоомыг ажиллуулах үед GameInstance классаар объект үүснэ.
  2. Урьдчилан бэлтгэсэн level ачаалагдана.
  3. Level нээгдвэл GameMode-ийг эхлээд шалгах ба GameMode-оос урьдчилан бэлгэсэн классуудаар объектүүд үүсгэнэ.
  4. DefaultPlayerController нь DefaultPawn-ийг удирдахаар тохируулагдсан байх ба ингэснээр тоглогч гараар удирдан тоглох бололцоо бүрдсэн байдаг гэсэн үг.
  5. Ингээд дараагаар нь level дотор өрж тавьсан бүх Actor классуудын объектүүдийг үүсгэнэ.
Хэрэв өөр level нээх аль эсвэл level-ээ restart хийвэл GameInstance-аас бусад бүх классуудаар үүсгэгдсэн объектүүд санах ойгоос устана.