How to make an online Leaderboard / Highscore in Unreal - Quick & Easy - Tutorial

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
Hello and welcome to a new tutorial. Today, we're  going to create a simple online leaderboard.   To do this, we'll be using a plugin  from Epic Games themselves. Go to   "Settings" -> "Plugins" and activate the HTTP  Blueprint plugin, then restart Unreal Engine.   As our data storage, we'll use Dreamlo. It's free  and super easy to use. To create a leaderboard,   simply click on "Get yours now"  (no registration needed).   There are several ways to implement an online  leaderboard. I've created a small list of options,   each with its pros and cons. Except for  security, I believe we have a good free   solution for small games or game jams. Let's get started. First, create a new   empty level and import an image for  visual aesthetics in this tutorial.   Now, let's create a new widget  called "WB_leaderboard."   We need a Canvas Panel, so simply drag it in.  Then add two images: one for the background and   the other for our created leaderboard image.  Uncheck "Is Variable." Anchor the background   to fullscreen, and adjust the color as per  your preference. I've chosen a dark blue.   Anchor the other image to the  left and select your texture.   Next, add a Vertical Box and a Text Block.  We'll use this to display player information,   so position them roughly for now. Name them "verticalbox_player" and   "verticalbox_score" and activate "Is Variable." Repeat this process for the score. Align them   roughly and set a test value of 100. Now, we need to display our widget. Open the   Level Blueprint. Remove the "Tick" node. Create a  widget and choose our leaderboard. Set the owning   player to your player controller, then add it  to the viewport. To display the mouse cursor,   enable "Show Mouse Cursor" in the  Player Controller settings.   Inside our widget, we want to create a  way to enter and submit scores. For this,   we need an Editable Text field to enter  player names, a button to submit the scores,   and some text for labeling. For our example, let's generate the   score randomly by making it a variable. You can design the button appearance by   adjusting the image under "Image  Normal" and copying the values.   Let's take a look. Entering data works, but  we still need to program the submit button.   To have a score to submit, go to the  graph. Under "Event Construct," generate   a random score and set the text with a random  integer value, in the range of 50 to 200.   After setting the score, we need to retrieve data  from the leaderboard. Create a new custom event,   "GetLeaderboard," and execute it right  after generating the random score.   Dreamlo offers multiple ways to fetch data: XML,  JSON, Pipe, and Quote, which we'll use. Just enter   the URL in your browser to see the results. Now, let's fetch the data in Unreal. Search   for "HTTP Request" and choose "GET" for the  method. Enter your Dreamlo address as the URL,   and you can limit the output with "/10," for  example, to get only 10 scores in total.   Once the request is successful,  add a "Print String" node for   testing. The results will appear above. Next, we'll format the output to extract   only the player names and scores as individual  strings. You can use "Replace" and "Parse Into   Array" to isolate each data field. With a "For Each Loop," you can iterate   through the array. It may not be the cleanest  solution, but it gets the job done. Test the   output, and you'll see that all values are  separated. Now, we need to filter them.   Create a new variable called  "Leaderboard_ArrayIndex." In our array,   every 5th field holds the player name,  and every 6th field holds the score. So,   check if our index matches the Leaderboard_Index  (0, 5, 10, etc.). Then, do the same for   Leaderboard_Index + 1 to get the 1st, 6th,  11th, etc., values. This works when we increment   Leaderboard_Index by 5 after each loop. Perform another test, and don't forget to connect   the element to the output. It should work now.  We have the name and the corresponding score.   I'll show you the process step by  step. I'll set a breakpoint.   This is the original result. Now, without the commas.   And then, it's added to the array. Now, I'll add a few more entries in the browser   using the URL, and you'll see the results. Now you  understand why we need every 5th and 6th value.   To display this in our widget, dynamically  create a Text Block. Set its text using "Set   Text" and use your player value. Add the Text  Block as a child to the Vertical Box and adjust   the padding. You may need to play with the  values; try 50. If it looks good, you're all   set.   Copy this process for the score area; it's  essentially the same. Just remember to change   the Vertical Box from "Player" to "Score." Next, let's program the new entries. It's quite   simple. Name your variable and click  on the button's "On Click" event.   You can copy your HTTP request and change  it to "POST." The error message is normal;   the node wants a string value for both  the body and the result body. Just create   an empty string to specify the type. With this URL, we can add new entries to   the leaderboard. To adjust our values,  use "Format Text." Change "Carmine" to   your player variable and "100" to your score  variable. Then, put this output in the URL.   Retrieve the "Score" and "Player" from your  variables and get the contents using "Get   Text." Plug that into the URL. In essence, that's it. Add a "Print   String" for testing, and if the entry is  successful, let's reload our leaderboard   by calling the "Get Leaderboard" function. Let's test it with "John" and a score of "137,"   "alex2," and "noob." You'll see our print  string with "OK" in the top left and your   entry correctly sorted in the leaderboard. As mentioned, you can limit the entries. For   example, if you only want to see the  top 3, you can do that. When set to 10,   you'll see all 10 entries, or in our case, 8. That's it! Thank you for watching.
Info
Channel: Unreal Expand
Views: 1,008
Rating: undefined out of 5
Keywords: Unreal, Unreal Engine, UE, UE5, Blueprint, Game Development, devlog, no communication, c++, tutorial, beginner, game jam, gamejam, ue 5.1, ue 5.2, ue5.3, unreal tutorial, ue tutorial, unreal challenge, unreal game challenge, unreal expand challenge, no talking, unreal engine, unreal engine 5, unreal leaderboard, unreal highscore, unreal online leaderboard, unreal online highscore, leaderboard ue5, highscore ue5
Id: RQPI6cNNEaY
Channel Id: undefined
Length: 13min 49sec (829 seconds)
Published: Tue Oct 31 2023
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.