Skip to main content

Creating a Project

After you have finished installing the Evaluation Version, this page guides you on how to create a project using one of Redwood's gameplay templates. This is recommended to get started quickly, but you can also integrate Redwood with your own project.

Starting Unreal

Since you can't use the Epic Games Launcher to run a prebuilt engine that doesn't have a project yet, we have provided a simple script to run the corresponding executable.

In the root of the install directory you'll find a Start UnrealEditor.bat file. You can double click on this from the File Explorer to start Unreal. You'll eventually see the project browser where you can select or create a new project:

Unreal Project Browser

Creating a Project with a Gameplay Template

The easiest way to get started with Redwood is to start with a ready-to-launch gameplay template.

Click on the Redwood category on the left to see the list of supporting gameplay templates. Here you can see the Blank and Match templates; we'll be using the Blank template in this guide, but you can start with the Match template if you'd like. Pick a Project Location and Project Name, and click the Create button.

note

All Redwood Gameplay Templates will only have a C++ option as it's required to package client and server specific builds. They will include Blueprints as well as C++.

Redwood Blank Template

After Unreal finishes creating the project, you should see a level L_Match open:

Redwood Blank Start

info

If you don't have any multiplayer experience in Unreal Engine, we highly recommend you check out Intro to Multiplayer first.

In this template, players are just a cube that can fly around. You can test this out by pressing Play in the L_Match map, but before you do you need to change your launch settings to increase the Number of Players (2 is usually more than enough for this step but 1 can be fine in most cases) and Play As Client. You can select Play as Listen Server, but Redwood is designed for dedicated servers, so all players are Clients and Play As Client makes more sense. Conversely, if you're testing the main menu experience, we tend to pick Number of Players as 1 and Play Standalone.

Match Launch Settings

Redwood Blank Match

Maps

To break down the basics of how to integrate Redwood, we've created 3 maps:

MapDescription
/Maps/L_TitleThe Title map is loaded for clients when they launch the game client. This is sometimes called the Main Menu. This template treats this map as a single player experience, but in some more advanced games there can be some multiplayer aspects here.
/Maps/L_EmptyA completely empty map used for startup of the dedicated server. When a match is made via the matchmaker, a message is sent to the server to load a configurable map and mode (/Maps/L_Match in this case and there's only one match mode). This is useful to keep server starting lightweight, but allow you to create just a single server image to support multiple maps/modes.
/Maps/L_MatchThis map is the actual multiplayer match/session. Most games treat this as an ephemeral game session, but in some other genres (e.g. RPG, sandbox) it may be a persistent game session.

The Blank template provides a crude, but functional main menu widget found at /UI/W_MainMenu which is added to the viewport automatically on Begin Play of the L_Title map. Players then go through this process to eventually join a match:

  1. Automatically connects the client to the Redwood Director Frontend service
  2. Player registers an account
  3. Player logs into their account
  4. Player creates a character (with customizable, non-structured character data [e.g. name])
  5. Player can edit a character
  6. Player creates a matchmaking ticket to request to join a match
  7. The associated Realm Backend automatically adds the ticket to the Open Match match-making service
  8. Updates on the player's ticket are sent to the player (when a match is found, when a server is allocated, when the server is ready, if the ticket goes stale)
  9. When the match is found, the Unreal widget itself handles that update to run the open <server string> console command with additional parameters for the server to verify authenticity of the incoming player

It's possible to automate some of these steps based on your desired experience; for example you may want to have automatic authentication for anonymous play or automatic character creation based on the authentication (i.e. the character name might always be the Steam user name). The Blank template has the player do each of the steps so you can understand what the whole process entails and you can customize further.

All of the communication between the Redwood services and the game client for the main menu are done via the ARedwoodTitlePlayerController class, which is provided by the Redwood Unreal Engine plugin. The source for this class isn't included in the Evaluation version.

info

We've started mentioning terms like Director, Realm, Frontend, and Backend; these are terms of the different parts of the Redwood system. You can find detailed explanations in our Architecture page.

Match

When players are in the match, they should get all of the game-related data from the game server via replication. For all intents and purposes, client logic in matches does nothing special to support Redwood. It's easier to test subsystems if you keep your systems decoupled, both from an automation standpoint as well as manually testing game logic in the normal game development process. Ideally, the backend services should only be needed during full-system tests and not during PIE (Play in Editor).

Currently Redwood just serves as a data provider during matches, as well as gathering any updates from the match/session for metrics and/or displaying to users in the main menu. However, adding more backend services yourself, like a global chat or marketplace, will be much easier with Redwood's easily extensible architecture and code.

Redwood automatically provides character data to the game server when the player joins; the event of the player joining, along with the raw JSON character data, is broadcast to the game server logic. You can subscribe to this message topic and customize how the data is used; it is not replicated to any of the clients by default.

success

Now that you have a project that supports Redwood, learn how run it alongside the backend and test an actual match.