Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 39 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
39
Dung lượng
2,89 MB
Nội dung
Lời cảm ơn Đầu tiên tác giả xin gửi lời cảm ơn tới thầy Đỗ Quốc Bảo tận tình giúp đỡ suốt thời gian nghiên cứu vừa qua, hướng dẫn tơi hồn thành đề tài Tôi chân thành cảm ơn tới người thân, bạn bè giúp đỡ động viên suốt trình học tập trường thời gian thực đề tài Xin chân thành cảm ơn! Biên Hòa, ngày 10 tháng 11 năm 2017 Sinh viên thực Trần Hoàng Hiệp Trang Mục lục Lời cảm ơn Mục lục Danh mục hình Danh mục bảng Lời mở đầu Tình hình nghiên cứu 1.1 Tình hình nghiên cứu ngồi nước 1.2 Tình hình nghiên cứu nước Mục tiêu đề tài Phương pháp nghiên cứu Bố cục đề tài Chương Tìm hiểu Unreal Engine 10 Hướng dẫn cài đặt 10 1.1 Yêu cầu hệ thống 10 1.2 Hướng dẫn cài đặt 10 Cấu trúc project hoàn chỉnh 11 Giới thiệu Editor 12 3.1 Level Editor 12 3.2 Material Editor 12 3.3 Blueprint Editor 12 3.4 Behavior Tree Editor 12 3.5 Personal Editor 13 3.6 Cascade Editor 13 3.7 UMG UI Editor 13 3.8 Matinee Editor 13 3.9 Sound Cue Editor 13 3.10 Paper 2D Sprite Editor 13 3.11 Physics Asset Editor 13 Trang 3.12 Static Mesh Editor 13 Chương Hướng dẫn lập trình game với Unreal Engine 14 Các bước làm game với Unreal Engine 14 1.1 Giai đoạn tiền phát triển(Pre-production) 14 1.2 Giai đoạn phát triển 14 1.3 Thử nghiệm phát hành 16 Thao tác với tài nguyên game 16 Thiết kế chơi 18 3.1 Actor 18 3.2 Xây dựng Level đơn giản 21 Ứng dụng C++ vào xây dựng trò chơi 28 4.1 Gắn camera vào Pawn 28 4.2 Cài đặt thao tác phím 29 4.3 Tương tác với thao tác phím 29 Làm quen lập trình với Blueprint Visual Scripting 34 5.1 Tạo kẻ địch với Blueprint 34 5.2 Tương tác Blueprint 35 Tổng kết 38 Tài liệu tham khảo 39 Trang Danh mục hình Hình 0.1: Tài liệu Unreal Engine Hình 0.2: Các trường đưa Unreal Engine vào giảng dạy Hình 1.1: Cấu trúc project hoàn chỉnh 11 Hình 1.2: Source Code C++ 12 Hình 2.1: Thiết kế Asset 15 Hình 2.2: Thiết kế chơi 16 Hình 2.3: Content Browser 17 Hình 2.4: Vịng đời Actor 20 Hình 2.5: Giao diện Level Editor 21 Hình 2.6: Tab Bar 21 Hình 2.7: Menu Bar 22 Hình 2.8: Tool Bar 22 Hình 2.9: Viewport 22 Hình 2.10: Chi tiết Actor 23 Hình 2.11: World Outliner 24 Hình 2.12: Khởi tạo Level 25 Hình 2.13: Thay đổi độ cao địa hình 26 Hình 2.14: Thiết kế Material 27 Hình 2.15: Level hoàn chỉnh 28 Hình 2.16: Input Config 29 Hình 2.17: Tab Viewport 34 Hình 2.18: Thay đổi thông số máu kẻ địch 35 Hình 2.19: Sự kiện phát người chơi 35 Hình 2.20: Xây dựng vũ khí 36 Hình 2.21: Tạo Blueprint Interface 36 Hình 2.22: Xử lí kiện xảy va chạm 37 Trang Danh mục bảng Bảng 1-1: Yêu cầu hệ thống 10 Bảng 2-1: Thao tác với Asset 18 Bảng 2-2: Các loại Actor 19 Bảng 2-3: Các chế độ chỉnh sửa 23 Trang Lời mở đầu 91 tỉ USD doanh thu ngành game toàn cầu năm 2016, 108 tỉ số ước tính năm 2017 Chỉ với thơng số ta thấy phát triền tầm vóc ngành game Cuối năm 60 kỉ trước, game biết tới cách hạn chế qua máy chơi game thùng Tiếp theo đó, game phát triển game nhỏ gọn NES hay gameboy, phát triển mạnh mẽ ngày Hiện tại, game diện nơi xung quanh ta; game thiết bị di động, máy tính bảng, hay cỗ máy chuyên dụng PS4, XBOX One máy tính cá nhân Trải qua thời kì, chất lượng game dần cải thiện phần lối chơi, âm đặc biệt đồ họa Bắt đầu với hình khối 2D đơn giản âm MIDI game trở nên khác nhiều so với thời kì ban đầu Ngày nay, với đồ họa 3D, game đạt ranh giới phân biệt thực ảo người Âm game ngày chăm chút với nhạc đầu tư cơng phu Với 1.8 tỉ người chơi tồn giới, nhu cầu game lớn, Game Engine đời để giúp lập trình viên tạo nên sản phẩm hoàn chỉnh với thời gian nhân lực thấp Hiện hầu hết công ty sử dụng Game Engine để phát triển sản phẩm mình: • • • • EA với Frostbite Ubisoft với Anvil Epic games với Unreal Engine V.v… Trong phạm vi lần nghiên cứu khoa học này, tập trung vào Unreal Engine Vậy lại sử dụng Game Engine này? Dưới số lợi ích Engine này: • • • • • • Hồn tồn miễn phí Cộng đồng sử dụng lớn trải khắp giới Cung cấp mã nguồn C++ đầy đủ Thân thiện với đối tượng từ sinh viên đến lập trình viên chun nghiệp Cung cấp cơng cụ chỉnh sửa từ hình ảnh đến âm V.v… Trong đề tài, tác giả tập trung vào tìm hiểu Engine song hành với hướng dẫn người đọc sử dụng để viết game hoàn chỉnh Ngồi ra, đề tài có số từ tiếng anh không dịch để đảm bảo mô tả thực tế Trang Tình hình nghiên cứu 1.1 Tình hình nghiên cứu ngồi nước Hiện nay, Unreal Engine Engine game quen thuộc với nhà lập trình tồn giới Nó nhiều công ty ứng dụng để làm game, kể tới game bom thời gian gần như: • • • • • • Batman™: Arkham Knight Fornite ARK Street Fighter V Hellblade: Senua's Sacrifice V.v… Ngồi cịn có nhiều tựa sách hướng dẫn Engine lập trình nhiều ngơn ngữ khác nhau: Hình 0.1: Tài liệu Unreal Engine Thêm vào đó, Unreal Engine đưa vào giảng dạy nhiều trường đại học khắp giới Trang Hình 0.2: Các trường đưa Unreal Engine vào giảng dạy 1.2 Tình hình nghiên cứu nước Hiện tại, Unreal Engine chưa sử dụng rộng rãi nước ngành game nước ta chưa tập trung vào mảng game PC Chính Unreal Engine chưa có tài liệu tiếng Việt tính tới thời điểm tháng 11 năm 2017 Do vấn đề nghiên cứu Engine Game đưa tài liệu hướng dẫn hoàn chỉnh tiếng Việt cần thiết hữu ích cho để tiếp cận làm việc với Unreal Engine Mục tiêu đề tài Tìm hiểu tài liệu Unreal Engine Ứng dụng lập trình game hồn chỉnh Phương pháp nghiên cứu Phương pháp nghiên cứu lý thuyết: Đọc xem hướng dẫn thông qua Blog, website hướng dẫn Tìm hiểu qua dự án phát triển thêm Phương pháp thực nghiệm: Trình bày ý tưởng game với giảng viên bạn bè Lên kế hoạch phác thảo ý tưởng Lập trình game theo ý tưởng đề Bố cục đề tài Nội dung đề tài có ba phần chính: Trang Phần 1: Tìm hiểu Unreal Engine Phần 2: Hướng dẫn lập trình game với Unreal Engine Phần 3: Tổng kết Trang Chương Tìm hiểu Unreal Engine Hướng dẫn cài đặt 1.1 Yêu cầu hệ thống Bảng 1-1: Yêu cầu hệ thống Ram Thấp Đề nghị 4GB 8GB CPU Hệ điều hành Mơi trường lập trình 1.2 CPU lõi với 2.5GHz cao Window Windows 10 Visual Studio 2017 Visual Studio 2017 Hướng dẫn cài đặt Cài đặt Visual Studio 2017 Express: Tải đây: https://www.visualstudio.com/vs/visual-studio-express/ Tiến hành cài đặt Cài đặt Unreal Engine 4: Truy cập: https://www.unrealengine.com/en-US/blog Chọn Download Cài đặt Epic Game Launcher Mở Epic Game Launcher cài đặt Unreal Engine Trang 10 Xây dựng Level đơn giản Để xây dựng Level ta làm theo bước sau: Khởi tạo Level Sử dụng Asset Level vừa khởi tạo Chỉnh sửa hoàn thiện Level Khởi tạo Level Chọn File – New Level – Default Tạo khung cảnh sử dụng Lanscape Tool, thay đổi thông số kích thước với nhu cầu thân nhấn Create Hình 2.12: Khởi tạo Level Ngồi với Lanscape Tool ta cịn tạo độ cao thấp địa hình game để làm núi, đồi hay sơng hồ v.v… Trang 25 Hình 2.13: Thay đổi độ cao địa hình Tiếp theo, ta thiết kế Material cho địa hình vừa tạo Thêm Material cách kích chuột phải vào Content Browser chọn Material tiến hành đặt tên Mở Material vừa tạo thiết kế Trang 26 Hình 2.14: Thiết kế Material Chọn địa hình vừa khởi tạo tiến hành áp dụng Material cho Sử dụng Asset Level Unreal Engine cung cấp khả kéo thả trực quan Actor Level Chính người dùng thiết kế chơi cách trực quan Ngoài với việc chọn Actor người dùng có lựa chọn thay đổi thuộc tính Actor Một Asset đặt chơi ta thay đổi thông số sau: Vị trí Level Actor Kích thước vật thể Chất liệu cấu thành Khả tương tác với vật thể khác Tính chất vật lí có Mơ hình vật thể V.v… Kết hợp yếu tố ta xây dựng Level hồn chỉnh hình phía dưới: Trang 27 Hình 2.15: Level hồn chỉnh Ứng dụng C++ vào xây dựng trò chơi Trong phần tác giả sử dụng ngôn ngữ C++ để tạo điều khiển góc nhìn camera chơi 4.1 Gắn camera vào Pawn Pawn hiểu Actor đặc biệt, trị chơi người chơi điều khiển thay đổi AI Tạo Pawn với tên PawnWithCamera Mở file header Class vừa tạo Tại ta tạo thêm biến thuộc kiểu SpringArmComponent CameraComponent protected: UPROPERTY(EditAnywhere) USpringArmComponent * OurCameraSpringArm; UCameraComponent * OurCamera; Tiếp tục tiến hành chỉnh sửa file cpp Tại ta thiết lập vị trí SpringArm góc -60 độ khoảng cách 50 Trang 28 RootComponent = CreateDefaultSubobject < USceneComponent > (TEXT("RootComponent")); OurCameraSpringArm = CreateDefaultSubobject < USpringArmCom ponent > (TEXT("CameraSpringArm")); OurCameraSpringArm - > SetupAttachment(RootComponent); OurCameraSpringArm - > SetRelativeLocationAndRotation(FVect or(0.0 f, 0.0 f, 50.0 f), FRotator(-60.0 f, 0.0 f, 0.0 f)); OurCameraSpringArm - > TargetArmLength = 400 f; OurCameraSpringArm - > bEnableCameraLag = true; OurCameraSpringArm - > CameraLagSpeed = 3.0 f; Tiếp tục ta gắn CameraComponent vào vị trí khởi tạo OurCamera = CreateDefaultSubobject < UCameraComponent > (TE XT("GameCamera")); OurCamera - > SetupAttachment(OurCameraSpringArm, USpringAr mComponent::SocketName); 4.2 Cài đặt thao tác phím Tại ta thiết lập thao tác phím nhập vào q trình chơi Chọn Edit – Project Settings tiến hành nhập Hình 2.16: Input Config 4.3 Tương tác với thao tác phím Thêm biến đầu vào file h Trang 29 FVector2D MovementInput; FVector2D CameraInput; float ZoomFactor; bool bZoomingIn; Tiến hành thêm hàm để xử lí thao tác nhập vào : void void void void void void MoveForward(float AxisValue); MoveRight(float AxisValue); PitchCamera(float AxisValue); YawCamera(float AxisValue); ZoomIn(); ZoomOut(); Thực thay đổi file cpp: void APawnWithCamera::MoveForward(float AxisValue) { MovementInput.X = FMath::Clamp < float > (AxisValue, 1.0 f, 1.0 f); } void APawnWithCamera::MoveRight(float AxisValue) { MovementInput.Y = FMath::Clamp < float > (AxisValue, 1.0 f, 1.0 f); } void APawnWithCamera::PitchCamera(float AxisValue) { CameraInput.Y = AxisValue; } 10 void APawnWithCamera::YawCamera(float AxisValue) { 11 CameraInput.X = AxisValue; 12 } 13 void APawnWithCamera::ZoomIn() { 14 bZoomingIn = true; 15 } 16 void APawnWithCamera::ZoomOut() { 17 bZoomingIn = false; 18 } Tiếp theo ta cần thông báo cho Unreal Engine gọi code phía Ta thêm dịng lệnh sau: //Hook up events for "ZoomIn" InputComponent - > BindAction("ZoomIn", IE_Pressed, this, & APawnWithCamera:: ZoomIn); InputComponent - > BindAction("ZoomIn", IE_Released, this, & APawnWithCamera: :ZoomOut); //Hook up every-frame handling for our four axes InputComponent - > BindAxis("MoveForward", this, & APawnWithCamera::MoveForwa rd); InputComponent - > BindAxis("MoveRight", this, & APawnWithCamera::MoveRight); InputComponent - > BindAxis("CameraPitch", this, & APawnWithCamera::PitchCame ra); InputComponent - > BindAxis("CameraYaw", this, & APawnWithCamera::YawCamera); Trang 30 Sau thực thay đổi hai file vừa tạo ta thay đổi camera thao tác nhập vào từ bàn phím Dưới code hoàn chỉnh PawnWithCamera.h // Copyright 1998-2017 Epic Games, Inc All Rights Reserved # pragma once# include "CoreMinimal.h"# include "GameFramework/Pawn.h"# include "PawnWithCamera.generated.h" UCLASS() class HOWTO_PLAYERCAMERA_API APawnWithCamera: public APawn { GENERATED_BODY() public: // Sets default values for this pawn's propertie s APawnWithCamera(); protected: // Called when the game starts or when spawned 10 virtual void BeginPlay() override; 11 public: // Called every frame 12 virtual void Tick(float DeltaSeconds) override; // Called to bi nd functionality to input 13 virtual void SetupPlayerInputComponent(class UInputComponent * Inpu tComponent) override; 14 protected: UPROPERTY(EditAnywhere) USpringArmComponent * OurCameraS pringArm; 15 UCameraComponent * OurCamera; //Input variables 16 FVector2D MovementInput; 17 FVector2D CameraInput; 18 float ZoomFactor; 19 bool bZoomingIn; //Input functions 20 void MoveForward(float AxisValue); 21 void MoveRight(float AxisValue); 22 void PitchCamera(float AxisValue); 23 void YawCamera(float AxisValue); 24 void ZoomIn(); 25 void ZoomOut(); 26 }; PawnWithCamera.cpp // Copyright 1998-2017 Epic Games, Inc All Rights Reserved # include "HowTo_PlayerCamera.h"# include "PawnWithCamera.h" // Sets default values APawnWithCamera::APawnWithCamera() { // Set this pawn to call Tick() every fr ame You can turn this off to improve performance if you don't need it PrimaryActorTick.bCanEverTick = true; //Create our components RootComponent = CreateDefaultSubobject < USceneComponent > (TEXT("Roo tComponent")); OurCameraSpringArm = CreateDefaultSubobject < USpringArmComponent > ( TEXT("CameraSpringArm")); OurCameraSpringArm - > SetupAttachment(RootComponent); Trang 31 10 OurCameraSpringArm - > SetRelativeLocationAndRotation(FVector(0 f, 0.0 f, 50.0 f), FRotator(-60.0 f, 0.0 f, 0.0 f)); 11 OurCameraSpringArm - > TargetArmLength = 400 f; 12 OurCameraSpringArm - > bEnableCameraLag = true; 13 OurCameraSpringArm - > CameraLagSpeed = 3.0 f; 14 OurCamera = CreateDefaultSubobject < UCameraComponent > (TEXT(" GameCamera")); 15 OurCamera - > SetupAttachment(OurCameraSpringArm, USpringArmCom ponent::SocketName); //Take control of the default Player 16 AutoPossessPlayer = EAutoReceiveInput::Player0; 17 } // Called when the game starts or when spawned 18 void APawnWithCamera::BeginPlay() { 19 Super::BeginPlay(); 20 } // Called every frame 21 void APawnWithCamera::Tick(float DeltaTime) { 22 Super::Tick(DeltaTime); //Zoom in if ZoomIn button is down, zoo m back out if it's not 23 { 24 if (bZoomingIn) { 25 ZoomFactor += DeltaTime / 0.5 f; //Zoom in over half a second 26 } else { 27 ZoomFactor = DeltaTime / 0.25 f; //Zoom out over a quarter of a second 28 } 29 ZoomFactor = FMath::Clamp < float > (ZoomFactor, 0.0 f, 1.0 f); //Blend our camera's FOV and our SpringArm's length based on ZoomFactor 30 OurCamera - > FieldOfView = FMath::Lerp < float > (90.0 f, 60.0 f, ZoomFactor); 31 OurCameraSpringArm - > TargetArmLength = FMath::Lerp < floa t > (400.0 f, 300.0 f, ZoomFactor); 32 } //Rotate our actor's yaw, which will turn our camera because we're attached to it 33 { 34 FRotator NewRotation = GetActorRotation(); 35 NewRotation.Yaw += CameraInput.X; 36 SetActorRotation(NewRotation); 37 } //Rotate our camera's pitch, but limit it so we're always loo king downward 38 { 39 FRotator NewRotation = OurCameraSpringArm - > GetComponentR otation(); 40 NewRotation.Pitch = FMath::Clamp(NewRotation.Pitch + Camera Input.Y, -80.0 f, -15.0 f); 41 OurCameraSpringArm - > SetWorldRotation(NewRotation); 42 } //Handle movement based on our "MoveX" and "MoveY" axes 43 { 44 if (!MovementInput.IsZero()) { //Scale our movement input a xis values by 100 units per second 45 MovementInput = MovementInput.SafeNormal() * 100.0 f; Trang 32 46 FVector NewLocation = GetActorLocation(); 47 NewLocation += GetActorForwardVector() * MovementInput X * DeltaTime; 48 NewLocation += GetActorRightVector() * MovementInput.Y * DeltaTime; 49 SetActorLocation(NewLocation); 50 } 51 } 52 } // Called to bind functionality to input 53 void APawnWithCamera::SetupPlayerInputComponent(class UInputComponent * InputComponent) { 54 Super::SetupPlayerInputComponent(InputComponent); //Hook up eve nts for "ZoomIn" 55 InputComponent - > BindAction("ZoomIn", IE_Pressed, this, & APa wnWithCamera::ZoomIn); 56 InputComponent - > BindAction("ZoomIn", IE_Released, this, & AP awnWithCamera::ZoomOut); //Hook up every-frame handling for our four axes 57 InputComponent - > BindAxis("MoveForward", this, & APawnWithCam era::MoveForward); 58 InputComponent - > BindAxis("MoveRight", this, & APawnWithCamer a::MoveRight); 59 InputComponent - > BindAxis("CameraPitch", this, & APawnWithCam era::PitchCamera); 60 InputComponent - > BindAxis("CameraYaw", this, & APawnWithCamer a::YawCamera); 61 } //Input functions 62 void APawnWithCamera::MoveForward(float AxisValue) { 63 MovementInput.X = FMath::Clamp < float > (AxisValue, 1.0 f, 1.0 f); 64 } 65 void APawnWithCamera::MoveRight(float AxisValue) { 66 MovementInput.Y = FMath::Clamp < float > (AxisValue, 1.0 f, 1.0 f); 67 } 68 void APawnWithCamera::PitchCamera(float AxisValue) { 69 CameraInput.Y = AxisValue; 70 } 71 void APawnWithCamera::YawCamera(float AxisValue) { 72 CameraInput.X = AxisValue; 73 } 74 void APawnWithCamera::ZoomIn() { 75 bZoomingIn = true; 76 } 77 void APawnWithCamera::ZoomOut() { 78 bZoomingIn = false; 79 } Trang 33 Làm quen lập trình với Blueprint Visual Scripting 5.1 Tạo kẻ địch với Blueprint Chuột phải vào phần Content Browser – BluePrint Class chọn Character tiến hành đặt tên Mở File vừa tạo ta quan tâm tới hai thành phần Tab Viewport Tab Event Graph Trong Tab Viewport cung cấp cho người dùng hình dáng bên ngồi vật thể vừa tạo Hình 2.17: Tab Viewport Tab Event Graph nơi người dùng lập trình kiện diễn trò chơi Cũng giống C++, Blueprint sở hữu điều kiện rẽ nhánh, vịng lặp v.v… giống với ngơn ngũ truyền thống Ngồi ra, ta tạo biến hàm xử lí bên Như Blueprint kẻ địch ta tạo cho chúng biến như: Health – máu nhân vật, IsDead? – trạng thái sống hay không, DetectPlayer? – phát người chơi hay không hàm HealthChange – thay đổi thông số máu kẻ địch Trang 34 Hình 2.18: Thay đổi thơng số máu kẻ địch Tương tự ta lập trình cho kiện khác: Hình 2.19: Sự kiện phát người chơi 5.2 Tương tác Blueprint Ở ta tạo tương tác mà có vũ khí va chạm với kẻ địch làm giảm máu chúng Tạo Blueprint Class để xây dựng vũ khí Chọn mơ hình phù hợp tiến hành thêm Box Collison cho vũ khí vừa tạo Trang 35 Hình 2.20: Xây dựng vũ khí Chọn Add Component tiến hành thêm Skeletal Mesh Box Collisions Trong Skeletal Mesh cho phép lập trình viên thêm mơ hình tạo sẵn vào Blueprint Class vừa tạo Box Collisions có nhiệm vụ phát va chạm với đối tượng khác trả kiện Tiếp theo, ta tạo Blueprint Interface Nó có nhiệm vụ giao tiếp hai lớp vũ khí kè địch Hình 2.21: Tạo Blueprint Interface Trang 36 Lưu ý phần Class Setting, ta thêm Blueprint Interface vừa tạo mục Implemented Interface Trên vũ khí, chọn Box Collison vừa tạo, bên tab Detail lựa chọn kiện Actor Begin Overlap Ta thực chỉnh sửa bên tab Event Graph Hình 2.22: Xử lí kiện xảy va chạm Và bước cuối gọi kiện để thay đổi thông số máu kẻ địch đề cập ta hoàn thành yêu cầu đặt Trên bước để tạo nên tương tác đối tượng game sử dụng Blueprint Người đọc áp dụng Blueprint vào nhiều trường hợp phục vụ cho cơng việc lập trình Trang 37 Tổng kết Một số kết đạt được: Đã tìm hiểu nghiên cứu làm game với Unreal Engine từ nguồn : Blog, Youtube v.v… Ứng dụng tài liệu vào làm game với Unreal Engine Trong đó, sản phẩm có sử dụng kiến thức: o Ứng dụng C++ vào lập trình game o Xây dựng nhân vật hồn chỉnh o Xây dựng AI cấp độ đơn giản o Xậy dựng chơi hồn chỉnh o Tìm hiểu lập trình với Blueprint Viết tài liệu hướng dẫn để phục vụ cho lập trình làm quen với Unreal Engine Tuy nhiên, đề tài số hạn chế sau: Chưa ứng dụng hết công cụ mà Engine cung cấp Làm game khơng giống với quy trình chuẩn nên gặp nhiều sai sót Trong q trình chơi game cịn mắc nhiều lỗi Hướng phát triển: Tối ưu hóa game để chạy thiết bị có cấu hình thấp Sửa lỗi tồn đọng Nghiên cứu mở rộng để áp dụng tính tân tiến mà Engine cung cấp cho lập trình viên Trang 38 Tài liệu tham khảo Sách tham khảo: [1] William Sherif , Learning C++ by Creating Games with UE4 [2] Brenden Sewell (2015), Blueprints Visual Scripting for Unreal Engine [3] Aram Cookson (Author), Ryan DowlingSoka (Author), Clinton Crumpler (Author)(2016), Unreal Engine Game Development in 24 Hours, Sams Teach Yourself [4] Mitch’s VR Lab(2017), Unreal Engine VR Cookbook: Developing Virtual Reality with UE4 Internet: [1] Unreal Engine Docs, ngày truy cập 05/11/2017, https://docs.unrealengine.com/latest/INT/ [2] UE4: 16 Principles - How to Start Learning Unreal Engine 4, http://www.worldofleveldesign.com/categories/ue4/ue4-how-to-learnunreal-engine4.php [3] Introduction to Unreal Engine 4, https://www.pluralsight.com/courses/introduction-unreal-engine-4-1609 Trang 39 ... hiểu nghiên cứu làm game với Unreal Engine từ nguồn : Blog, Youtube v.v… Ứng dụng tài liệu vào làm game với Unreal Engine Trong đó, sản phẩm có sử dụng kiến thức: o Ứng dụng C++ vào lập trình game. .. sử dụng Game Engine để phát triển sản phẩm mình: • • • • EA với Frostbite Ubisoft với Anvil Epic games với Unreal Engine V.v… Trong phạm vi lần nghiên cứu khoa học này, tập trung vào Unreal Engine. .. Trang Tình hình nghiên cứu 1.1 Tình hình nghiên cứu ngồi nước Hiện nay, Unreal Engine Engine game quen thuộc với nhà lập trình tồn giới Nó nhiều cơng ty ứng dụng để làm game, kể tới game bom thời