MMO Starter Kit

Demo does not work…

You can register, login, create a character but nothing else. “Enter world” does absolutely nothing, and you get disconnect notification after a while.

Quest system is a little broken. If you edit the ‘Defending the village’ quest by adding in a bring item, it completely breaks it. Makes it unusable. I dont see why it would be having problems with kill + bring item. It places the order wrong too. I would think the bring item would be at the top of the quest list but instead its at the bottom under the kill enemy parts, then when you do collect the item you need it actually takes the kill count down by 1. I imagine this is because its supposed to be the bring item on line 1 and not a kill enemy. Either way its behaving in a broken manner.

Thanks for the report, will fix it for 4.27

Yeah, that happens sometimes. UE4 server wasn’t made to be running permanently, so it needs to be restarted once a week. I sometimes forget to do it, and it becomes inaccessible. I’ve rebooted it now.

I spent like 5 to 6 hours on this tonight slowly modifying and testing over and over again. Eventually i found the issue -.-
My code may be a little different because i switched over to use data tables, but the loops are the same so for those of you who want to fix it, it shouldnt be hard to see what to do.

Blueprint: MMOPlayerCharacter - Function: Update Collect Task Progress

Bug report and how to fix:
Bug: Target Panel remains with unpopulated info when you run out of site and it unloads the AI, or if you teleport away.

Fix: Navigate to MMOPlayerController. In event graph, goto event tick. Just after current target ‘is not valid’ node drag out and make a sequence and hook it up into the new code as shown in image.


Is this template being converted to UE5?



When it gets out of early access, sure.


Can you please check the .PHP samples? Some of them seems to be broken (like mmogetcharacter.php or mmo_clan_list.php) .


What problem are you having, what errors are you getting?

Are you sure you have the right PHP version on your server, the one indicated in the docs?

If you call for example tmmo_clan_list.php:

Fatal error: Call to a member function execute() on a non-object in /var/www/html/mmo_clan_list.php on line 11

This is what stock mmo_clan_list.php is:

$mydata = json_decode(file_get_contents('php://input'));

$output = array();

$stmt = $conn->prepare("SELECT,, clans.leader_id,, FROM clans INNER JOIN characters ON = characters.clan WHERE characters.clan != 0");
$stmt->bind_result($row_clan_id, $row_clan_name, $row_leader_id, $row_character_name, $row_character_id);

while ($stmt->fetch())
	$is_leader = ($row_leader_id == $row_character_id); 
	$output[] = array('character_id'=>$row_character_id, 'character_name'=>$row_character_name, 'clan_id'=> $row_clan_id, 'clan_name'=> $row_clan_name, 'is_leader'=> $is_leader);

echo json_encode(array('status'=>'OK', 'clans'=>$output));

But it should use the format:


It seems you are correct in that bind_result should occur after execute and before fetch.
This has never caused a fatal error for me or anyone who used the Kit over the years, and those scripts haven’t changed in years, either. Looks like it just goes unnoticed with the default warning level of the php interpreter, and works correctly, too. Weird, but interesting.
Thanks for bringing this up, I’ll change it for UE 4.27.

cool. Take a lot, as others php files has the same wrong format.



I got a couple of questions @CodeSpartan:

Why don’t you have your own discod server ?

Why are you using data assets instead of just a list and a structure for example the quest system or the inventory system?

Why don’t you create a wiki or docs that can be edited by the community so there will be more documentation for understanding the template/kit. The Diagram you posted is already great but if the whole system had those diagrams it would be amazing! And maybe the community can add more diagrams or information about the mmokit on the wiki/community docs which you created then :blush:

Kind regards,



Real-time communication can be distracting. I don’t use messengers during the day while I’m working.

It’s easy to cross reference data assets. For example, if a quest rewards an item, you just assign an item (data asset) from a dropdown list, and you can instantly open that item and inspect it, jumping between data assets as needed. Data tables don’t allow that.

Google docs allows people to “suggest changes”. I’ve not had any suggestions in all the years.

@CodeSpartan Hope you are doing well. I purchased your kit and am having problems getting connected. I’ve followed the instructions through many times and still have the same errors starting the Server. Doesn’t matter if it is on my Dedicated server, my local machine, or remote web server. Still same issue. On 4.26.2. Please help?

Open the server with -log and I get:

[2021.07.22-03.52.37:537][ 0]LogInit: Display: Game Engine Initialized.
[2021.07.22-03.52.37:538][ 0]LogInit: Display: Starting Game.
[2021.07.22-03.52.37:538][ 0]LogNet: Browse: /Game/MMO/Maps/DesertRallyRace?Name=Player
[2021.07.22-03.52.37:538][ 0]LogLoad: LoadMap: /Game/MMO/Maps/DesertRallyRace?Name=Player
[2021.07.22-03.52.37:539][ 0]LogWorld: BeginTearingDown for /Temp/Untitled_0
[2021.07.22-03.52.37:541][ 0]LogWorld: UWorld::CleanupWorld for Untitled, bSessionEnded=true, bCleanupResources=true
[2021.07.22-03.52.37:544][ 0]LogUObjectHash: Compacting FUObjectHashTables data took 0.50ms
[2021.07.22-03.52.37:550][ 0]LogStreaming: Error: Couldn’t find file for package /Engine/EditorMaterials/Thumbnails/SkySphereMaterial requested by async loading code. NameToLoad: /Engine/EditorMaterials/Thumbnails/SkySphereMaterial
[2021.07.22-03.52.37:551][ 0]LogStreaming: Error: Found 1 dependent packages…
[2021.07.22-03.52.37:551][ 0]LogStreaming: Error: /Game/MMO/Meshes/SM_EditorSkySphere
[2021.07.22-03.52.37:595][ 0]LogAIModule: Creating AISystem for world DesertRallyRace
[2021.07.22-03.52.37:595][ 0]LogLoad: Game class is ‘BP_MMOGame_C’
[2021.07.22-03.52.37:596][ 0]LogNet: ReplicationDriverClass is null! Not using ReplicationDriver.
[2021.07.22-03.52.37:596][ 0]LogNetCore: DDoS detection status: detection enabled: 0 analytics enabled: 0
[2021.07.22-03.52.37:597][ 0]LogInit: WinSock: Socket queue. Rx: 131072 (config 131072) Tx: 131072 (config 131072)
[2021.07.22-03.52.37:597][ 0]LogNet: Created socket for bind address: on port 7790
[2021.07.22-03.52.37:597][ 0]PacketHandlerLog: Loaded PacketHandler component: Engine.EngineHandlerComponentFactory (StatelessConnectHandlerComponent)
[2021.07.22-03.52.37:597][ 0]LogNet: GameNetDriver IpNetDriver_2147482560 IpNetDriver listening on port 7791
[2021.07.22-03.52.37:607][ 0]LogWorld: Bringing World /Game/MMO/Maps/DesertRallyRace.DesertRallyRace up for play (max tick rate 30) at 2021.07.21-20.52.37
[2021.07.22-03.52.37:609][ 0]LogWorld: Bringing up level for play took: 0.011003
[2021.07.22-03.52.37:609][ 0]LogGameMode: Display: Match State Changed from EnteringMap to WaitingToStart
[2021.07.22-03.52.37:611][ 0]LogVaRest: Request (json): POST
[2021.07.22-03.52.37:611][ 0]LogGameState: Match State Changed from EnteringMap to WaitingToStart
[2021.07.22-03.52.37:611][ 0]LogLoad: Took 0.073843 seconds to LoadMap(/Game/MMO/Maps/DesertRallyRace)
[2021.07.22-03.52.37:612][ 0]LogInit: Display: Engine is initialized. Leaving FEngineLoop::Init()
[2021.07.22-03.52.37:612][ 0]LogLoad: (Engine Initialization) Total time: 1.09 seconds
[2021.07.22-03.52.37:612][ 0]LogInit: First time updating LLM stats…
[2021.07.22-03.52.37:646][ 1]LogVaRest: Response (200):
[2021.07.22-03.52.37:647][ 1]LogBlueprintUserMessages: [BP_MMOInstance_C_2147482600] Received server address:
[2021.07.22-03.52.37:648][ 1]LogTemp: Log: Created thread
[2021.07.22-03.52.37:680][ 1]LogTemp: Log: Starting Tcp socket thread.
[2021.07.22-03.52.39:665][ 61]LogTemp: Log: Couldn’t connect to server. TcpSocketConnection.cpp: line 409
[2021.07.22-03.52.39:665][ 61]LogTemp: Log: Tcp socket thread was destroyed.
[2021.07.22-03.52.40:656][ 91]LogTemp: Log: Created thread
[2021.07.22-03.52.40:656][ 91]LogTemp: Log: Starting Tcp socket thread.
[2021.07.22-03.52.42:670][152]LogTemp: Log: Couldn’t connect to server. TcpSocketConnection.cpp: line 409
[2021.07.22-03.52.42:670][152]LogTemp: Log: Tcp socket thread was destroyed.
[2021.07.22-03.52.43:660][182]LogTemp: Log: Created thread
[2021.07.22-03.52.43:660][182]LogTemp: Log: Starting Tcp socket thread.
[2021.07.22-03.52.45:674][243]LogTemp: Log: Couldn’t connect to server. TcpSocketConnection.cpp: line 409
[2021.07.22-03.52.45:674][243]LogTemp: Log: Tcp socket thread was destroyed.

Try launching the game server, the chat server and the client all on the same machine and use the ip (except php scripts, which you can host on a webhost).

For anyone who would like to see a more advanced project built on mmokit please check out our facebook page. Legacy of Ares.
there you can find a link to download our client for our live test server.

Thank you for replying. I think I got it figured out. Can I also specify the port for the server to use by adding :7781 (or similar) at the end of the IP