MMO Starter Kit

Replace the bools with an enum, do a switch on it.

@

oh man you’re awesome, you helped me fix 2 things with that same area haha. I was actually already using 1 enumeration for each one of my town teleports but i had it hooked into a sequence with 9 ports (0 through 8) and each one did a true/false and if true, teleport to x town. Now its just using the switch like you suggested and its so much cleaner!

Happen to know of a way to make it so when looting an enemy, right clicking enemy items wont activate those items?

@

Forgive me if this is a stupid question as I am a severe rookie at this point.

I purchased the MMO Starter Kit a while ago and set it up with the database, etc. and had no issues playing around with it.

I am now wanting to use the Chaos fracturing in UE4 4.26 as I was waiting for that to come out before I got too far into development.

My UE4 server source build works with chaos but when I bring MMO Starter Kit 4.26 into it I get the error “Could not be compiled. Try rebuilding from source manually.”]("Could not be compiled. Try rebuilding from source manually." - Ask - GameDev.tv)

So I opened MMO.sln in Visual Studio to build the source there and am now getting the following error when starting the build:

Build started…
1>------ Build started: Project: MMO, Configuration: Development_Editor x64 ------
1>Creating makefile for MMOEditor (.uproject file is newer)
1>UnrealBuildTool : error : MMOEditor modifies the value of bCompileChaos. This is not allowed, as MMOEditor has build products in common with UE4Editor.
1> Remove the modified setting, change MMOEditor to use a unique build environment by setting ‘BuildEnvironment = TargetBuildEnvironment.Unique;’ in the MMOEditorTarget constructor, or set bOverrideBuildEnvironment = true to force this setting on.
1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.MakeFile.Targets(46,5): error MSB3073: The command “C:\UE426\Engine\Build\BatchFiles\Build.bat -Target=“MMOEditor Win64 Development -Project=“C:\ROTStart\MMO426\MMO.uproject”” -Target=“ShaderCompileWorker Win64 Development -Quiet” -WaitMutex -FromMsBuild” exited with code 6.
1>Done building project “MMO.vcxproj” – FAILED.
========== Build: 0 succeeded, 1 failed, 2 up-to-date, 0 skipped ==========

Any direction you could provide would be greatly appreciated as I’m excited to dive in with using chaos as well.

Cancel this one. I figured it out. Rookie mistake learning to understand the error messages. I now have both the latest 4.26 server source build working as well as the 4.26 MMOKit with chaos now enabled woohoo!! Onward with the development now!

So i’ve moved on to the next area iive been meaning to work on and ive spent the last 12 hours (literally) trying to set up a weapon that can be equipped/unequipped so that i can then copy/paste more in for item assets. I just cant get this to work. I have the ‘Weapon’ data all being saved/loaded and such but when i equip it, nothing shows up. if i pan the view left/right in a certain area the weapon will flicker on/off.

The weapon i used was a static weapon that i exported then imported so i could create a skeleton from it.
I then added a new socket on the mannequin skeleton called ‘Wep’ in the Hand_R area as well as a preview mesh inside Wep.
I rotated the wep the way i want it and continued.
After that i went into bp_modularplayercharacter and in ‘Mesh’ i added a new one called ‘Weapon’ and changed its socket to ‘Wep’.
I then set the weapon and material on it for the first testing phase so that i can see how it all looks without having to have the item just yet. And here we are. No idea why its flickering on/off but 99% off all the time. I know its there since its flickering on that rare 1% occasion when i turn view.

edit: I think i figured it out. I just happend to right click the ‘Weapon’ spot on modularcharacter and ‘add component’ and saw i could add the greatsword. Did that and now it shows in game! I then removed its default to none and went back into the modularcharacter and changed all the ‘Weapon’ links into ‘greatsword’ and now i can equip/unequip the weps!
No idea if im doing all this correctly but it does work so far.


The issue with the weapon was having the ‘Weapon’ component hooked into the master pose stuff. As pictures below, by leaving them not hooked up it fixed the problem.

My best guess is because the weapon doesnt have a full skeleton bone setup that matches the character’s bone setup, it cant follow along? I dont understand how all that works yet but i did manage to get things to work. Once i fixed that issue i went and removed the Weapons ‘child skeletal mesh component’ and used ‘Weapon’ component where applicable and now it all works as it should.

@ I have spent the last 3 days for 8+ hours each day trying to figure out how the hell to get a ‘account is already logged in’ feature. I can not for the life of me get one to work. I’ve tried a few differeing ways but the way the kit works with the whole saving character then loading character on map changes and on logout, then there’s the issue that the character doesnt actually logout but just saves all info on exit. I just dont know what to do anymore.

I have tried so many different ways now that my mind is spent and i just dont know what to do. I have succeeded in creating a bool in the characters database called ‘isonline’ and have successfully made it change from True/False depending on if the character itself is online via the below: You can see i’ve added a ‘savecharacter2’ into the enum and connected it accordingly. This is an exact copy of savecharacter but with the addition of a bool isonline set to True. This is fired the moment a player has logged in whereas the normal savecharacter has a bool set for isonline to False, which that one is called as you coded it (when the character changes map or leaves game).


Here below is just showing how savecharacter and savecharacter2 are set for the bool:
and lastly below is just to show that i set it so it launches the function to savecharacter2 right after the character has loaded in.


From this point on when i had finally accomplished getting a bool to correctly save and load based on if character is online or not, i tried many different options to setup so that when character trys to login again with same character is spits out a message saying Character is already online. I failed at every single attempt in many different ways across multiple blueprints.
My main goal here is to stop multiple logins, not multiple character logins but this is just how i started it. I am utterly stumped. I’m new to php so its not so easy to figure out how to code in php to set a field for ‘isactive’ bool and actually figure out how to link it in correctly with the blueprints. I’ve only been able to get by so far because i’ve used your own coded examples and copy/pasted/tweaked (blueprints). php is a whole other animal.

Please help me figure this out, as a mmokit i honestly thought a multi-login blocker would have been included but im sure you have your reasons :stuck_out_tongue: I just dont know the best way to go about it. If i had to guess the best way would be to add something into one of the php scripts. It just comes down to how the hell to do it. I’ve spent way longer than it should take anyone to try and figure this out so i need to move on to other things while i wait for your reply :frowning:

EDIT: Small step forward. I have finally succeeded in creating my own new php script ‘isonline.php’ that will save the characters online status as True after character has loaded into server. Upon player disconnect, in the ‘savecharacter’ request i have it set to change the bool to False. I’m hoping i can figure out some way to delay it when changing map or on exit so to stop players from spamming login to try to get 2 of the same characters online while 1 is transitioning over to another map. This is small progress and its not exactly a login blocker but i feel like its likely on the right track. Still hoping to hear from you :3

@8DrunkenGods Your approach with setting “isOnline” in the database is error prone, because imagine the server marks you as online and then crashes? You character becomes forever unplayable.

Whether a character is online or not must be checked on game server or on chat server.

But there may be multiple game servers, because an MMO requires many people at once, so one server per large area is the logical thing to do. So you can’t check on game server either.

Chat server is where the check must be made then.

Just do this: before retrieving your character from DB on game server, game server must ask chat server “is player with this nickname already online?” If the answer is “yes”, then destroy player controller - this will disconnect the player. If the answer is “no”, then you’re good to go to retrieve it from DB and do everything as usual.

Of course when you start making people travel between servers, this will require sending some additional info to chat server like “ok, this character is now traveling between servers, so allow the next game server to authenticate this player despite him already being online”, just using a bool somewhere.

P.S. as for disallowing multiple characters login on the same account, it just requires one more step, where chat server must make sure that not only this character is not logged in, but neither is any other character from the same account. So this would require the chat server to get a list of all other characters using a php script.

a promo shot for our game built on mmokit.

https://scontent-msp1-1.xx.fbcdn.net/v/t1.0-9/133306594_723368228293084_1566911063473025165_o.jpg?_nc_cat=108

For what it’s worth: The authority of externally-visible state should be the database. For preventing multiple logins, this means storing “this character was last seen on server X at time Y” in the database. Make each server update the record every 30 seconds they have the character. When trying to log in, if the record is less than 60 seconds old, assume the player is already logged in. If the record is over 60 seconds old, contact the server that last updated the record, and ask whether it has that character.
This mechanism lets any server in your system determine whether a player is “already online” or not, and “where it is.” Note that, as players travel between servers, there will be small time intervals where you may have to re-try a request. Also, this system lets your servers detect whether two separate servers both think they have the player (this happens in real distributed systems!) – when a server goes to update the record, if it was recently updated by another server, at a time when the original server believes it should have had the player, sound the alarm!

i want to make a nice mmo i have a lot of brilliant ideas for unique mmo but i’m fixed on one I need a working unreal engine MMO projet T_T I have to do a completely unique thing any mmo template is only for the server connection part chat friend guild shop I can play a very cool game but the mmo part is a problem I need an Blueplrint 100% MMO stand box template I would be delighted to give a royalty only basic things are needed basic damage an 1 attack a 1 spell a 1 skill to gather resources and inventory bags 1 ciaracter 4 stat exp basik UI a craft skill with only 1 craftable item a one resource I do the rest but it must work online from pre pre pre teta

LogHttp: Warning: 00000200662BB900: invalid HTTP response code received. URL: http://31.11.81.131/getserver.php, HTTP code: 0, content length: 0, actual payload size: 0
LogHttp: Warning: 00000200662BB900: request failed, libcurl error: 56 (Failure when receiving data from the peer)
LogHttp: Warning: 00000200662BB900: libcurl info message cache 0 ( Trying 31.11.81.131…)
LogHttp: Warning: 00000200662BB900: libcurl info message cache 1 (TCP_NODELAY set)
LogHttp: Warning: 00000200662BB900: libcurl info message cache 2 (Connected to 31.11.81.131 (31.11.81.131) port 80 (#1))
LogHttp: Warning: 00000200662BB900: libcurl info message cache 3 (We are completely uploaded and fine)
LogHttp: Warning: 00000200662BB900: libcurl info message cache 4 (Recv failure: Connection was reset)
LogHttp: Warning: 00000200662BB900: libcurl info message cache 5 (Closing connection 1)
LogVaRest: Error: Request failed (0): http://31.11.81.131/getserver.php
LogHttp: Warning: 000002006287B900: invalid HTTP response code received. URL: http://31.11.81.131/mmologin.php, HTTP code: 0, content length: 0, actual payload size: 0

why ? Apache Restart, All right

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.

Hi

Is this template being converted to UE5?

Cheers,

When it gets out of early access, sure.

Hi.

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

Thanks!