This is the documentation for an older version of MMO Starter Kit. The newest documentation can be found at:

MMO Starter Kit 1.1 Documentation

by CodeSpartan

Table of Contents


Getting Started

Opening the project

Setting up the database

Launching for the first time

Exit menu fix

Full configuration

Using your own map

Transferring assets from another project

Customizing the player character

Mesh and animations

Setting up the inventory doll

Materials and highlight

Character sounds

Customizing the NPCs

Creating items and equipment

Creating your own item type

Customizing item quality tiers

Editing multiple assets

Adding your own persistent stats

Creating your own draggable windows

Running the server on your local computer

Listen Server

Dedicated Server

Server IP and clients

Removing the players limit

Setting up Unreal dedicated server on Softlayer

Restarting the server application automatically in case of a crash

Launcher and patch system

Troubleshooting and FAQ

FAQ (not issues)

Debugging PHP

Crashes, game not launching

Other issues


I would love to thank and give credit to the following:

VaRest Plugin - Vladimir Alyamkin (Ufna)

The authors of the free assets that are used in the demo:

Sword Girl model (used only on the demo server, not distributed) - Bunt Games

Inventory icons - Ravenmore, Flare icons

Black & white icons for empty slots -

Inventory sounds - qubodup, Akeroyc

female voices - AderuMoro, MadamVicious

male voices - Michel Baradari

Getting Started

Opening the project

You will need Visual Studio and a source-built version of UE4 to use MMO Starter Kit. If you don’t have it yet, follow the official instructions here: 

Download the ‘release’ branch since it’s the most stable. 

This guide is for UE4 version 4.7.x

The editor will tell you that the project was built with another version, it’s normal, click “Yes”.

Note: If it fails to convert, right-click on the blue .uproject icon in the folder with the project and choose "Switch Unreal Engine version", choose your engine, then right-click again and choose "Generate Visual Studio project files".


Setting up the database

You will need a webserver with PHP 5.5+ and mysql, it can be the same server where you host your website. The free hosting x10 has been reported to have PHP 5.5, so you can check it out.

Note: PHP 5.5+ is required because of the new encryption methods, if you really want to use an older version of PHP, you can modify the password hashing in mmoregistration.php and mmologin.php. However, it is not recommended.

The following instructions assume you already have a hosting provider:

  1. Create a new mysql database and import the dbstructure.sql file to create the structure.

  1. In the mmoconnection.php script in the PHP folder, fill your mysql connection settings:


NOTE: Most hosting providers use the same server for the database and the php so don’t replace ‘localhost’ until you are sure it doesn’t work with it.

  1. Upload the scripts to your web server. Get this script and upload it to the same folder.

  1. In your web browser, go to


If the reported version is 5.5+, proceed to the next step.

  1. Now test the php scripts by going to


If it says {"status":"Login information is incorrect. Check your username and password."} this means the script is working fine, good job!

If it says Connection failed or Access denied, double-check the database connection info that you filled in step 2

 If instead it displays raw php code (with <? and such), this means that the php scripts don't execute properly on your webserver.

  1. In JSONRequests blueprint, set the Hostname variable's default value to the url path where you've put the scripts, ending with a slash. For example:

Launching for the first time

  1. (optional) Run the chat server ( Chat\Server.exe ). This is only needed whenever you want to use chat while you test the game.

  1. Temporary: because of the zeroing variables bug in Unreal, open the GuyModularPC blueprint and add these nodes to BeginPlay.

  1. Open the Start map located in Game\Maps

  1. Click Play, then register and create a character. Don’t try to enter the world.


  1. Click Stop and go to your mysql database. Check that there is a new character in ‘characters’ table and change its id to 0.

You only have to do the steps above once. You need this because when playing in editor, the game assumes you have logged in as the character with id 0, allowing you to fully test everything - saving/loading of position and stats, inventory items, etc.


  1. Open DesertRallyRace map. In Play options check Dedicated server to have a server run in the background. Click Play.

Exit menu fix

There’s a bug in the current version that prevents the Exit Menu from opening. To fix: In Blueprints/UserInterface/EscExit widget set the visibility on Root to "Hidden" and on ExitPanel to "Self hit test invisible". Thanks to Ron Farrell for reporting this!

Full configuration

If you want to concentrate on customization and gameplay first, you can skip this for now.

Follow the steps below if you want to configure the full MMO Starter Kit demo setup (launcher/patcher, dedicated server on Softlayer or other VPS):

  1. Run the standalone listen server + client, and check that everything works fine.
  2. Build the dedicated server
  3. Order and set up a virtual server
  4. Configure the patch system and distribute the launcher to your users

Using your own map

  1. If you want to use the map from another project: In the project with the map, right-click on the map that you wish to use and choose Migrate, then choose the Content folder of the MMO project. A list of dependencies will appear, click OK.

        If you want to create a map from scratch: Create the map as you would normally.

  1. In MMO project, place a JSONRequests actor located in MMO/Blueprints anywhere in the map.

  1. Go to Settings > Project Settings > Maps & Modes and change Editor Startup Map and Server Default Map to the map you migrated over in step 1. Don’t change Game Default Map - the game should still start in the main menu.


  1. If this is the map where new characters should start, in mmocreatecharacter.php set the correct starting coordinates and rotation (yaw).

  1. Make sure that there is a Player Start actor somewhere in the map since it will be used for the location where players respawn after death.

  1. If there are going to be NPCs with pathfinding on this map, make sure that you have a Nav Mesh Bounds Volume for them to use.

  1. If when you play in editor, your character (the one with id 0) falls through the ground, change the saved coordinates in mysql ‘characters’ table for that character to an appropriate location on this map.  

  1. Go to Window - Levels, click Levels - Add Existing and choose “DollMap”. This is needed for the “character doll” to work correctly in the equipment window.

Transferring assets from another project

  1. Right-click on the asset that you wish to migrate and choose Asset Actions > Migrate.

  1. A list of dependencies will appear, click OK, then choose the Content folder of the MMO project.

Customizing the player character

Mesh and animations

This guide assumes you have the following animations for your model: idle, walk, jumpstart, jumpend, jumploop, combat idle, attack, and death. If you don’t have them all, everything will still work but the t-pose will be displayed in place of the clip that you haven’t specified.

  1. Import the skeletal mesh and desired animations, or you could migrate the assets from another Unreal project.

  1. Duplicate the GuyModularPC (if you want the player character to have modular equipment) or GuyPlayerCharacter blueprint located in MMO/Blueprints and name it appropriately. You will work with this new blueprint for the rest of the steps.


  1. Find the GuyAnim animation blueprint (MMO/NewCharacter/). Right-click on it and choose Retarget Anim Blueprints > Duplicate Anim Blueprints and retarget, then choose your character’s skeleton. You will probably have to uncheck Show only compatible skeletons.

  1. Find the newly created animation blueprint - it should be in the same folder as your new character’s skeleton and it has a dark orange line on the bottom of it’s icon. Open its Anim Graph and click on the first node (State Machine). In the state machine open the Idle/Run state, choose the central Blendspace node (it will be named like IdleRun_TPP_Copy) and double-click on it to open the Blendspace.

  1. Drag and drop your run, walk and idle animations to the three circles, top to bottom.
  2. Repeat the steps 4 and 5 for CombatIdleRun node.

  1. Back in state machine, double-click on JumpStart node, click on the Play node there and change the animation sequence to your model’s jump start animation.

  1. Repeat the previous step for JumpEnd, JumpLoop, Dead and Attack nodes.

  1. When you created the new animation blueprint, several retargeted animations were created in the folder with your character’s skeleton, with names ending with “_Copy” and possibly a thumbnail looking black. You can delete them now, just make sure you don’t delete anything that has a reference left.

  1. Open the character blueprint that you’ve created, and set the default skeletal mesh and animation blueprint to the new mesh and animation blueprint that you have created. If the character is modular you will have to set the skeletal mesh of each body part, but you only have to set the animation blueprint for the chest mesh - the other parts will follow it automatically.

  1. Open the GameMode “MMOGame”, located in MMO\Blueprints\GameModes, go to Defaults and set Default Pawn Class to your new character.  

Note: make sure your skeletal mesh has a Physics Asset specified. It is required to be able to click on dead characters. You can create a Physics Assets by right-clicking on a Skeletal Mesh and choosing Create > Physics Asset.

Setting up the inventory doll

This guide assumes you have changed your player character sucessfully and now want to change the inventory doll accordingly.

  1. Open the ModularDoll blueprint (MMO/Blueprints) and change the skeletal mesh for components attached to the Body (Legs, Head, Hands…).

  1. In the Event graph of the same blueprint find the node Set Skeletal Mesh and set the mesh for the chest there

  1. If you’ve added additional body parts to the ModularPlayerCharacter, plug in the the new body parts to the Set Master Pose Component node in the Event graph

Materials and highlight

If you want the characters be highlighted on mouse hover, the material of your character’s mesh needs to have a scalar parameter “Highlight Amount” - the highlight effect is up to you, for example you can add an emissive color. If you would like to know more about this you can check out the GuyMaterial located in MMO\NewCharacter. Note that player’s own character is not highlighted on mouse over, only other players and NPCs are.


Character sounds

  1. For character sound navigate to the character blueprint that you’ve created in Mesh and animation tutorial
  2. In the Defaults tab under the category “Sounds” you can find three arrays: Pain, Attack and Death sounds. Each of them can have as many sounds as you wish - they are chosen at random.

Chance Of Sound variable determines how often the pain and attack sounds will be played (death sound is always played).

Customizing the NPCs

To customize the NPCs you will need to follow the same steps used earlier when learning how to customize the player character. The only difference will be instead of duplicating GuyPlayerCharacter blueprint you will duplicate GuyRoamingCharacter blueprint located in MMO/AI/Roaming.

After you’ve created your new NPC, you can place it on the map and it will appear in game.

Creating items and equipment

  1. In MMO/Blueprints/Inventory folder you can find some demo items. You can duplicate one of them, or create an item from scratch by doing the following: right-click > Miscellaneous > Data Asset > ItemData (or Equipment) if the new item should be a piece of equipment. 

2. Open the new item and customize its details. If you open the item and its details are not visible, click on Window menu and put a check next to Details.  

Note: The current method of storing the items in the mysql database is not optimal for shipping (though it’s easy to use for internal testing). It stores the full path to the item in your Unreal folder - this results in long strings that take time to transfer, but allows the developer not to worry about ids or where they store their item assets. To optimize the network load you could either implement some id system, or at least store only the name of the item in the db and let Unreal add the path to the folder (and make sure you place the items in one folder).

Creating your own item type

In this example I will create a new item type called Book that derives from regular item (ItemData) class. It will have one additional field used to store the book’s text.

  1. Save your project.

  1. In UE2, click File - Add Code to Project

  1. Check Show all classes

  1. Choose ItemData, click Next

  1. Enter your new class name (for example Book), click Create Class

  1. Wait for Visual Studio to load. Open your new Book.h file and the ItemData.h file

  1. Copy a field from ItemData.h, for example I'm going to copy this string field:

UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Item)

 FString Description;

  1. Paste it to Book.h after GENERATED_BODY()

  1. Right after the GENERATED_BODY() add a new line:


  1. Then you just have to rename the new field and maybe change its category

I renamed it like this:

UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Book)

FString BookText;

  1. In UE4 click Compile, wait until it says compile success, close UE4 right away (don’t save anything if it prompts you) and open again. Done! :)

After that you will be able to create a Book asset with 1 additional string field.


Customizing item quality tiers

  1. In the Content Browser, navigate to C++ Classes/CleanThirdPerson/ItemData and double-click on it to open Visual Studio
  2. Add or remove the item quality tiers.

Editing multiple assets

If you want to edit multiple NPCs or items at once or if you want to edit them individually but there is a lot of them, use the property matrix:

  1. Select the assets that you want to edit, right-click > Asset Actions > Property Matrix
  2. In the resulting window, you can select a single asset and edit its properties (to the right).
  3. To edit multiple assets at once, select all the assets that you want to modify with shift and modify the properties that you want just like you would to with a single item.

Note: in property matrix you can sort the assets by any property by pinning the property so it shows up in the table and clicking on the column name.

Adding your own persistent stats

  1. Add your new fields to the 'characters' table in the database, preferably at the end of the row. If you add them in the middle, make sure the order of all fields is correct in step 4.

  1. Add the new fields to your player character blueprint (or to MMOCharacter if the enemies/NPCs also need to have them).

  1. In JSONRequests blueprint add the new fields to CreateSaveCharacterRequest and OnResponseGetCharacter (don’t confuse the latter with OnResponseGetCharacterS!).

  1. Add your new fields to mmosavecharacter.php, mmogetcharacter.php and mmocreatecharacter.php scripts. Look how other fields are handled there and do the same.

Note: When you modify the stats in game, make sure you’re doing it on the server, since it’s the server that will send them to the database.

Creating your own draggable windows

This guide will show you how to create your own draggable windows that can gain focus and appear on top of others just like the Inventory/Equipment windows in the demo.

Note: I intend to make this a bit easier in the next release, but decided to provide the guide for the current version nevertheless:


  1. Create a new UMG widget (Right-click in any folder - User Interface - Widget Blueprint) and open it

  1. In the User Created category find a Draggable Window widget and drag it onto CanvasPanel in the Hierarchy. Rename it to delete the C_1 text (to just “DraggableWindow”).

  1. Choose the new window in the Designer view and resize it to the desired size

  1. In the Details tab enter the desired name into Default - Window Title field. (The change won't be visible in the Designer, it will still be called “Window Title”, it's normal).

  1. Drag any content you want into ContentSlot of the window in the Hierarchy. Here I dragged a Horizontal Box and then two buttons:
  2. Go to the Graph view and create a new Variable of type UserWidget named Owner. Check Editable for it.

  1. Go to Class Settings and under Interfaces add a Draggable Window Interface. Compile.

  1. Add a new Event Focus event like this:
  2. And an Event Construct like this:

  1. Save the widget and close.

  1. Now open the FullUI widget, located in MMO/Blueprints/UserInterface

  1. In the User Created category find your newly created widget and drag it onto the Canvas panel in the Hierarchy. Rename it to delete the C_1 text.

  1. In Details, choose the anchor in the lower right corner:

  1. Set all Offsets to 0. The widget should take all the available space now.

  1. Go to the Graph view. In the beginning of Event Construct, set the Owner variable on your new window to Self, just like it's done for Inventory/Equipment windows:

  1. At the end of Event Construct, add a pin to the Make Array node and add connect your new window there.

  1. (skip this if your window doesn’t need use a hotkey to open it) Now we need to assign some key to toggle our new window on and off. Open the MMOPlayerController in MMO/Blueprints and find the yellow comment block "C key: toggle equipment". Make a similar one with the key of your choice.

Q: Why do we have a Canvas panel as the root for the draggable window widget and not the window itself?

A: This way the window can have popups that exceed the window’s own borders.

Running the server on your local computer

Note: if you want to set up a server that will run 24/7, you could look into ordering a virtual server instead.

Listen Server

A listen server acts both as a server and as a client. Since the focus of this kit is to create a MMO running on a dedicated server, the listen server doesn’t fully act as a regular client (it doesn’t have UI, etc). However, it is very useful for testing standalone builds since there often are differences between Play in Editor and standalone. It is highly recommended to test your builds with Listen Server + Client combination before packaging.


  1. Go to your engine’s \Engine\Binaries\Win64 folder and make a shortcut of UE4Editor.exe. Place it in your project’s folder and name “listen server”


  1. Right-click on it, and choose Properties. In the “Target” field add the full path to your .uproject file, surrounded by “ “

  1. Make a copy of the shortcut and name it “client”

  1. Add these parameters to the shortcuts:

for the listen server: DesertRallyRace?listen -game -local

for the client: -game -local

  1. Run the Listen Server. When your map has appeared, run one or more clients.

Note: The “-local” parameter is specific to MMO Starter Kit and tells the client that it needs to connect to local game and chat servers. If you want other people to connect to your server, remove the -local parameter and follow these instructions.  

Note: the listen server won’t have any UI, it’s normal, the kit is supposed to be running a console server anyways. I run the listen server + client combo only to ensure that the standalone is working before packaging.

Tip: you can run those shortcuts even when you have the editor open.

Dedicated Server

A console dedicated server is needed in order to run your game on a virtual/bare metal server (for example, Softlayer or Amazon) which normally have no video cards and to maximize performance.

  1. Make sure that everything works fine when you run a Listen Server + Client, it can save you hours of packaging.

  1. Open VS (File > Open Visual Studio), choose Development Server configuration. If you don’t have this option, make sure you’re using a source-built version of Unreal.

  1. In Solution Explorer right-click on your project and choose Build: 

  1. Depending on your machine, this can take from 30 minutes to about 2 hours. You will only have to do it once per the version of Unreal or until you modify something in the engine or game code.

  1. After it’s done, switch the configuration from Development Server back to Development and close the Visual Studio.

  1. Now it’s time to package your game since a dedicated server only works with a packaged game. First, go into File > Package Project > Packaging settings and check Full Rebuild. Next time you package the game, you can uncheck this setting and the packaging will be much faster - around 2 minutes. But each time you modify the source code of either the engine or the game, you will have to do a Full Rebuild again.


  1. Make sure Use Pak file is unchecked:

  1. Go to File > Package Project and choose the target hardware and an empty folder for the packaged game. The packaging process will take about an hour.
  2. After the packaging stops, go to the folder that you chose for the packaged game and check if it has something in it. If it is empty, this means there was an error during the packaging. You can check Window > Developer Tools > Output Log to see what the error was.

  1. If the packaging was successful, go to your project folder, and copy the Binaries\Win64\<ProjectName>Server.exe to the  Binaries\Win64 folder of the packaged game.

  1. Create a shortcut for the file you copied in the previous step, and add a -log parameter. Run the shortcut. A console window should appear - this is the dedicated server.

  1. Create a shortcut for the client .exe located in the same folder and add a -local parameter. Run the shortcut and test if you can connect to the dedicated server and play.

  1. If you want other people to connect to this server, follow these instructions.  


Server IP and clients

In order for the clients to be able to connect to your dedicated or listen server, you need to specify the server IP address in mmologin.php. Find this text “'address'=>” , and specify your ip address there.

Note: when the client is being run from shortcut, there should be no -local parameter in the shortcut in order to use the address from the php script.

Removing the players limit

To remove the default players limit, in your packaged game folder open file Engine\Config\BaseGame.ini and look for “MaxPlayers=”. Set it to the desired number.  

Setting up Unreal dedicated server on Softlayer

At some point you will want to have a server that is online 24/7 and doesn’t interfere with your other activities on your computer. You can maintain this server yourself on a dedicated machine or order it from a hosting provider of your choosing. This guide explains how to order and set up a virtual server on Softlayer, where MMO Starter Kit demo server is being hosted.

If you don't have the dedicated (console) server ready, follow this guide first

1. Make sure everything works correctly, then archive and upload to your favorite cloud (for example the following :

If your upload speed is not ideal, wait until the files have uploaded successfully before proceeding to step 2.

2. Order a Softlayer virtual server with Windows Server OS through . You can order an hourly server first to test things out, and if everything is fine, order a monthly server.

The lowest virtual server configuration is enough for small-scale testing, though you might want to increase the disk space. With a 25 GB hard drive you will have only around 2.5 gb free space with the fresh Windows install.

When determining which data center to use - if your users are from Europe you could use Amsterdam, and you could choose Dallas for the US. MMO Starter Kit demo server is hosted in the data center in Washington to provide decent ping for Europe and the US both.

You could check the stats at to have an estimate at what your users' ping will be.

If you have PayPal, you can pay with it instead of a credit card, then your order will be processed instantly. Credit card orders can take longer or even fail if for example you live in Europe and your bank requires a special verification. The website says your order will be processed within 15 minutes. If you don't receive an email from Softlayer in 15-30 minutes, you can contact their live chat directly - they answer immediately 24/7 and are very helpful!

3. Once your order has been approved, you'll receive your login and a temporary password, log in and change the password to a permanent one.

4. Wait until you get the email saying the server has been provisioned and is ready to use.

5. In Windows, Run > Remote Desktop Connection. You might want to pin it for ease of access in the future. In Softlayer control panel, go to Devices, double click on your server and use the ip address, username and password from there for the remote connection.

6. On your server, open up Internet Explorer and go to the cloud where you’ve uploaded the files in step 1. Download all the files that you've put there.  

7. On your new server, install the prerequisites located in your packaged game’s folder Engine\Extras\Redist\en-us. Start your dedicated server and chat server. Copy the ip of your server from the Devices page to 'mmologin.php' script. Try to run the game as a client (using the .exe from your packaged game folder) and see if it connects to your new server.

If everything is ok, go to your Softlayer control panel, click Devices, click on your server's name to open a Device Details page then Actions > Create image from device. This will allow you to create new servers that are exactly like the one you've setup (with Unreal already there and dependencies already installed) without going through all the steps again. Making an image can take more time than is estimated, give it around 30 minutes.

Restarting the server application automatically in case of a crash

 After you’ve got your dedicated server running 24/7 you probably will want to ensure that it will restart automatically in case of a crash - even AAA game servers sometimes crash! For this, I’ve found RestartOnCrash free application very handy - it doesn’t require installation, is only 2.5MB and has everything I need including a log file.

Launcher and patch system

There’s a separate documentation for the Launcher/Patcher, you can find it here.

Troubleshooting and FAQ

FAQ (not issues)

Q: Why does the engine have to be built from the source?

A: You can only build a dedicated server when using the source-built version of UE4. It's not specific to MMO Starter Kit, it's like that for all UE4 projects

Q: Which ports does the server use?

A: The server uses the default Unreal 7777 port, and the chat server uses the port 3456.

Q: Are you planning to release the girl model used in the demo?

A: The sword girl model is not by me, it’s by Bunt Games and can be found on Unity Asset Store

Q: Are the future updates going to be free? How can I get them?

A: Yes, all updates will be free and available for download automatically to all customers.

Q: How can I rename the project?

A: I haven't tried renaming the project yet, it's not trivial for code projects in UE4. Here are the instructions posted by UE4 staff member:

Q: How can I implement travel between zones?

A: In the game I’m working on we use this system: each physical server has several mmo kit dedicated servers running, one for each zone, each uses a certain fixed port: 7777, 7778, 7779, etc. To transfer between servers, when a player walks into a trigger volume, OpenLevel blueprint is called on the client with the correct zone's ip and port.

Q: How would I go about creating multiple zones with different PvP rules?

A: It is definitely possible. I can see two main features that you would have to add (in blueprints):

1. Different PvP rules per map: the easiest way is to create an bool or enum "PvPMode" in your main GameMode and set the default value, for example "Safe Zone", then create a GameMode derived from your main GameMode and set PvPMode in it to something different, for example "Conquerable". Note that GameMode only exists on the server, but you probably need that info on the client as well for some visual effects  - for that you can send the map's PvPMode value from the server to the client when the client joins the map.

2. Zone transition: this can also be handled in blueprints, you can create a Map enum with all your map names and a Portal actor with a collider. Add a variable of Map enum's type to the portal. When the player walks into portal's collider, call Open Level node with the IP and port of your portal's destination map (you can have many server instances on the same physical server by using different ports, that's what we're doing in the commercial game I'm working on).

Debugging PHP

Q: One of my PHP scripts is not working, how do I find the error?

A: After each VaREST request the response is written to the UE4’s Output Log (Window - Developer tools - Output log).

A) If the response code is 200, this means the php script is working fine:

B) If the response code is not 200, it will usually also list your php version. If the php version is lower than 5.5, you need to upgrade your php server.

C) If the response code is not 200 and the php version is 5.5+, you have to look for your php server logs - the location of these can vary depending on your hosting, some of the hosting providers allow you to access those from the control panel, others allow ftp access.

If you’ve written the new php script yourself, you can also use the online php checker to check it for syntax errors.

Crashes, game not launching

Q: I tried to run the packaged game (or server) on another machine and it doesn’t launch

A: First of all, make sure you’ve transferred the whole packaged game’s folder (WindowsNoEditor/).

To be able to run UE4 games you have to install the UE4 prerequisites first, located in the packaged game’s Engine/Extras/ folder.

Q: When running the game in editor, I get a crash after I choose a character and try to enter world

A: You can’t enter world from start menu when running in editor, use standalone client+listen server (check Listen Server part of the documentation)

Q: When I open your project in Unreal version *.xx, it crashes

A: Are you using the latest stable version? The “sneak peek” versions and branches can have unexpected behaviour, I recommend you use the latest stable version of Unreal Engine.

Q:When I switch levels, the game crashes with this error: “X not cleaned up by garbage collection!”

A: If you haven’t modified anything in the demo project, check the first question in this section instead. Make sure your persistent classes such as GameInstance(MMOInstance) have no references to the actors in the previous level. Check the log for the information on which classes to look for. You can clear the references by setting them and not attaching anything to the set node.  Also, when you create UMG widgets, add to them to an array and destroy the widgets in that array before loading a new level.

Q: When I try to enter world, the game crashes and reports an error in SocketSubsystemBSDPrivate.h

A: Try running the game as administrator. If this doesn’t help, change the name of your computer (make sure it doesn’t have any special characters!), reboot and try again.

Q: The game crashes with BSOD/system reboot, what to do?

A: This is a hardware error, most probably your video card overheats. It can be fixed by running the game with shortcut parameter -VSync (Unreal doesn’t use VSync by default so your framerate can go very high which can cause the videocard to overheat). If it still crashes, but you can play for a few minutes, try entering in console in game: t.maxfps 30, that will set the max fps even lower. If the crash happens right when you start the game,  you will have to add t.maxfps=30 to an .ini file instead.

Other issues

Q: I can’t connect to my remote dedicated server. The IP address in mmologin.php is correct. If I run a local dedicated server and use -local parameter on the client, I can connect just fine.

A: Check your firewall settings on your local machine and on the dedicated server machine. Check that the 7777 and 7778 ports and the client and server UE4 applications are not blocked.

If you’re hosting the dedicated server yourself, check the ip in the server console. If the ip is private (starts with 192.168.  ), most likely you are behind a router.

Q: How do I check if my PHP server is 5.5 or higher?

A: Create a myphpversion.php file:


// prints e.g. 'Current PHP version: 4.1.1'

echo 'Current PHP version: ' . phpversion();

// prints e.g. '2.0' or nothing if the extension isn't enabled

echo phpversion('tidy');


Upload this file to your webserver to the same folder where you’ve put the other php scripts. Run the script from browser, it should output something like:

Current PHP version: 5.5.16-pl0-gentoo2.0

Q: Everything looks low quality/like the resolution is very low, how to fix this?

A: Setting Resolution Scale to 100% should help:  

Q: Where is <some functionality> done in blueprints? I can’t find it.

A: You can ask me on PM/Skype/forum thread, however I recommend you use Edit->Find in blueprints feature to save some time. For example you could search for "Create Widget" to find where the UI is created. :) Note that this search doesn't include level blueprints, except for the currently open level.

Q: When a player character dies, it falls through the terrain

A: Check Using your own map step 6.

Q: I walked off the edge of the map and now my character falls when I play in editor

A: In your mysql database, in ‘characters’ table find the character with id 0 and set their posx, posy and posx to some appropriate coordinates in your map.

Q: My inventory item textures show as white sometimes

A: Hi, all inventory item icons should be placed in the same folder as the demo item icons (/Game/MMO/Textures), since they are loaded from that folder when the game starts. (UE4 doesn't load textures which are not referenced automatically, and item icons are not referenced when the game starts)

If you want to change that folder, change this node in MMOPlayerController:


Q: When testing things in editor, I can’t seem to block the controller movement/mouse look in the starting map with the menu. SetIgnoreMouseInput and SetIgnoreMovementInput don’t work.

A: Make sure you are running the starting map with Dedicated server turned off and 1 player.