Book Image

Game Development Projects with Unreal Engine

By : Hammad Fozi, Gonçalo Marques, David Pereira, Devin Sherry
Book Image

Game Development Projects with Unreal Engine

By: Hammad Fozi, Gonçalo Marques, David Pereira, Devin Sherry

Overview of this book

Game development can be both a creatively fulfilling hobby and a full-time career path. It's also an exciting way to improve your C++ skills and apply them in engaging and challenging projects. Game Development Projects with Unreal Engine starts with the basic skills you'll need to get started as a game developer. The fundamentals of game design will be explained clearly and demonstrated practically with realistic exercises. You’ll then apply what you’ve learned with challenging activities. The book starts with an introduction to the Unreal Editor and key concepts such as actors, blueprints, animations, inheritance, and player input. You'll then move on to the first of three projects: building a dodgeball game. In this project, you'll explore line traces, collisions, projectiles, user interface, and sound effects, combining these concepts to showcase your new skills. You'll then move on to the second project; a side-scroller game, where you'll implement concepts including animation blending, enemy AI, spawning objects, and collectibles. The final project is an FPS game, where you will cover the key concepts behind creating a multiplayer environment. By the end of this Unreal Engine 4 game development book, you'll have the confidence and knowledge to get started on your own creative UE4 projects and bring your ideas to life.
Table of Contents (19 chapters)
Preface

Levels

Levels, in gaming, are a section or a part of a game. Since many games are quite large, they are broken down into different levels. A level of interest is loaded into the game for the player to play, and then when they are done with that, another level may be loaded in (while the current one will be loaded out) so that the player can proceed. To complete a game, a player usually needs to complete a set of specific tasks to move on to the next level, eventually completing the game.

A Game Mode can be directly applied to the level. The level, upon loading, will use the assigned Game Mode class to handle all logic and gameplay for that particular level and override the game mode of the project for this level. This can be applied using the World Settings tab after opening a level.

A Level Blueprint is a blueprint that runs with the level, but cannot be accessed outside the scope of the level. Game Mode can be accessed in any blueprint (including the level blueprint) by the Get Game Mode node. This can later be cast to your Game Mode class, to obtain a reference to it.

Note

A level can only have one Game Mode class assigned to it. However, a single Game Mode class can be assigned to multiple levels to imitate similar functionality and logic.

The Unreal Pawn Class

The Pawn class, in Unreal, is the most basic class of actors that can be possessed (either by a player or AI). It also graphically represents the player/bot in the game. Code inside this class should have everything to do with the game entities, including interaction, movement, and ability logic. The player can still only possess a single pawn at any time in the game. Also, the player can unpossess one pawn and possess another pawn during gameplay.

The Default Pawn

Unreal Engine gives developers a DefaultPawn class (which inherits from the base Pawn class). On top of the Pawn class, this class contains additional code that allows it to move within the world, as you would in the editor version of the game.

The Spectator Pawn

Some games offer features to spectate games. Let's say you're waiting for a friend to finish their game before joining you, so you go ahead and spectate their game. This gives you the ability to observe the game the player is playing, through a camera that you can move around to get a view of the players or the game. Some games also offer spectate modes that can travel back in time, to show a particular action of the game that happened in the past or at any point in the game.

As the name suggests, this is a special type of pawn that provides sample functionality to spectate a game. It contains all the basic tools (such as the Spectator Pawn Movement component) required to do so.

The Unreal Player Controller Class

The Player Controller class can be thought of as the player. It is essentially the soul of a pawn. A Player Controller takes input from the user and feeds it to the pawn and other classes for the player to interact with the game. However, you must take note of the following points while dealing with this class:

  • Unlike the pawn, there can only be one Player Controller that the player represents in a level. (Just like when you travel in an elevator. While inside one, you can only control that elevator, but you can then exit it and enter another elevator in order to control that one.)
  • The Player Controller persists throughout the game, but the pawn may not (for example, in a battle game, the player character may die and respawn, but the Player Controller would remain the same).
  • Due to the temporary nature of the pawn and the permanent nature of the Player Controller, developers need to keep in mind which code should be added to which class.

Let's understand this better through the next exercise.

Exercise 2.04: Setting Up the Game Mode, Player Controller, and Pawn

This exercise will use the blank project we created in Exercise 2.01, Creating an Empty C++ Project. We'll be adding our Game Mode, Player Controller, and Pawn class to the game and will be testing to see if our code works in Blueprints.

The following steps will help you complete this exercise:

  1. Open the project we created in Exercise 2.01, Creating an Empty C++ Project.
  2. Right-click inside the Content Browser and select Blueprint Class.
  3. Under the All Classes section, find and select the Game Mode class:
    Figure 2.16: Selecting the Game Mode class

    Figure 2.16: Selecting the Game Mode class

  4. Set its name to BP_MyGameMode.
  5. Repeat Steps 2-4 and select the Pawn class from under the Common Classes section, as shown in the preceding screenshot. Set the name of this class to BP_MyPawn.
  6. Repeat Steps 2-4 and select the Player Controller class under the Common Classes section, as shown in the preceding screenshot. Set the name of this class to BP_MyPC:
    Figure 2.17: Game Mode, Pawn, and Player Controller names

    Figure 2.17: Game Mode, Pawn, and Player Controller names

  7. Open BP_MyGameMode and open the Event Graph tab:
    Figure 2.18: Event Graph tab in Blueprint

    Figure 2.18: Event Graph tab in Blueprint

  8. Left-click and drag from the white pin in the Event BeginPlay node and then release the left mouse button to gain an Options menu. Type print and select the print node highlighted in the list:
    Figure 2.19: Print String node (Blueprint)

    Figure 2.19: Print String node (Blueprint)

  9. In the resultant Print String node that gets placed under the In String parameter, type My Game Mode has started!.
  10. Now, press the Compile and Save buttons on the top menu bar.
  11. Repeat Steps 7-10 for both the BP_MyPawn and BP_MyPC classes, setting the In String parameter to My Pawn has started! and My PC has started!, respectively.
  12. Finally, open the World Settings tab, and under the Game Mode section, use the dropdown to set the GameMode Override, Default Pawn Class, and Player Controller Class options to our respective classes:
    Figure 2.20: World Settings and Game Mode setup

    Figure 2.20: World Settings and Game Mode setup

  13. Click Play to play your game and see the three print statements on the top. This means that the current GameMode Override, Default Pawn Class, and Player Controller Class options have been set to your specified classes and are running their code:
    Figure 2.21: Output prints

Figure 2.21: Output prints

Note

You can locate the completed exercise code files on GitHub, in the Chapter02 -> Exercise2.04 -> Ex2.04-Completed.rar directory, at the following link: https://packt.live/3k7nS1K

After extracting the .rar file, double-click the .uproject file. You will see a prompt asking Would you like to rebuild now?. Click Yes on that prompt so that it can build the necessary intermediate files, after which it should open the project in Unreal Editor automatically.

Now that you know the basic classes and how they work in Unreal, in the next section, we will be looking at animations, what processes are involved, and how they complete them. We'll follow this with an exercise.