Here's the model link of the entire project in the video! If you're having issues, join my Discord (link in description) and ask for help! Or you can download this and compare scripts. create.roblox.com/store/asset/70818165544202
@frankmurphy94265 күн бұрын
Thanks so much for this video! I really appreciate how you broke down the official example code and improved it with a module. Including the Data Store Editor plugin was a great touch, too. It’s clear that you have real development experience and put a lot of thought into making this tutorial genuinely helpful. I also love that you use type annotations in functions; so many tutorials skip them, but they’re an important habit to develop. When projects get more complex, having clear type definitions makes debugging and maintaining code so much easier. I wish I had started using them earlier when learning Lua and Python!
@Rileybytes4 күн бұрын
Thank you so much for commenting, this made my day! I like to sprinkle in more advanced skills into tutorials for intermediates/beginners. Being exposed to high quality code is one of the best ways to improve as a beginner programmer. I'm glad to see you're someone with previous experience outside of Luau too!
@エニエ12 күн бұрын
Incredibly underrated channel, I'm only about 22 minutes in the video so far but everything has been really understandable and clear what's going on. Thank you for this, it'll help a lot with my projects😄😄
@Rileybytes12 күн бұрын
@@エニエ Glad to hear you’re enjoying it! Good luck with your projects and thank you 🙏
@Gowy_YT3 күн бұрын
WOW, one of the cleanest tutorial I ever seen! Thank you so much for taking the time to make this video by the way! ..and for reading this comment (I hope 😂) 😁
@Rileybytes3 күн бұрын
Thank you so much bro! You just made my day. I just released a Part 2 if you're interested! It's on Developer Products via ProfileStore, since that's a very common problem for developers
@davidfreshh71606 күн бұрын
you should upload more often man you make great videos 😊
@Rileybytes4 күн бұрын
thank you so much! i will do my best to upload more
@kwinten6 күн бұрын
I was planning to include global leaderboards in my upcoming game. After some research I found out that OrderedDataStores are pretty much required for that. Seemed like a headache to me since every statistic must be in its own seperate DataStore, which requires way more API calls to Roblox. And also I was doing DataStores manually already which I wasn't very comfortable about. So I just ditched that idea and decided it was time to upgrade to ProfileStore. It seems pretty neat. Thank you for guiding me through! I'm currently rewriting parts of my game to adapt to ProfileStore.
@Rileybytes6 күн бұрын
thank you for commenting and I'm glad this was helpful for you! It does everything extremely well except global leaderboards - you still need a different solution for those
@matejcerv11 күн бұрын
This is such a huge time saver. Love you for showing me this
@Rileybytes11 күн бұрын
@@matejcerv glad to help!
@bloxyutre38 күн бұрын
Again the goat with the goat stuff 🐐
@Lars0derso12 күн бұрын
Nice video, keep going!
@Rileybytes12 күн бұрын
thank you so much!
@koainanis584011 күн бұрын
HI. This is one of best tutorials about ProfilStore i found. You explain it so well. But can you make a second part with: - Folder Handling like Settings, User Items or Dev Products/GamePasses I really need this to handle all my datas with the ProfilStore ;) Thank you in advance. Btw: what DataStore Editor did you use and Its free?
@Dehhoy11 күн бұрын
You can just put settings table to template and use it in settings and items can be in table
@koainanis584011 күн бұрын
@@Dehhoy thanks for comment but atm i dont understand that :( I must see it how this works :)
@Rileybytes11 күн бұрын
@@koainanis5840 absolutely I will! I planned on doing that in this video, but it got too long. I’ll cover game passes and developer products mainly, but I can also add in settings or items/pets!
@Rileybytes11 күн бұрын
@@koainanis5840 I used the DataStore Editor by Sleitnick. I think it’s $9.99, but it’s 100% worth the money. It’s my most used plugin
@koainanis584011 күн бұрын
@thank you very much. I am looking forward to it. I appreciate it 👍
@yarik_superpro3 күн бұрын
istg all this "datastore" modules look like being made by people who make backdoors so they will know right keys
@Rileybytes3 күн бұрын
@@yarik_superpro if you’re worried about backdoors, you can easily read the entire source code. It’s open-source, and no sketchy business. Not only that, but Loleris the creator is one of the most well-known, widely respected developers on Roblox! Thousands of games have used this module and its predecessor over the years.
@Rileybytes3 күн бұрын
@@yarik_superpro I hope you decide to give it a shot! This one’s worth it
@_barskii11 күн бұрын
I'm gonna have a hard time transferring my scripts from using regular data store to profile store lol. Gonna take me hours even WITHOUT bugs happening in the meantime.
@Rileybytes10 күн бұрын
Just try to do it as programmatically as possible... when I started transferring my data in an old game it was a pain. But very worth it in the long run
@ogyo54810 күн бұрын
can u make a vid showing how to recode an old datastores to ProfileStore, like a code already using the roblox one with it saving stuff
@Rileybytes7 күн бұрын
yes I will give this a look
@UnbocusedКүн бұрын
Make a video on how to set this up for trading mechanics, please!
@RileybytesКүн бұрын
@@Unbocused that’s actually my next planned video. Stay tuned!
@alexfindlay289211 күн бұрын
So good! Also Face reveal??? 👀
@Rileybytes11 күн бұрын
bro not you too 😭
@alexfindlay289211 күн бұрын
😈 muhhaaha 🤣
@RoboGameOfficial2 күн бұрын
ProfileStore and Sera together would make a great combo
@Rileybytes2 күн бұрын
@RoboGameOfficial I’ll have to look into that, I’ve never heard of Sera before
@iamsylr4 күн бұрын
very interesting. I'm thinking about switching to this library for my game though i have a few questions. I'm making an mmorpg game and i have quite a massive data to manage per player so i was wondering if you think that itd still be worth it to use it as the data store would be storing the leaderstats, inventory, redeemed codes, skills level and XP data and all of that knowing that a player can create up to 30 "character" slots. I'm just curious about your way of how you'd manage such data using profileStore
@Rileybytes4 күн бұрын
30 character slots is a lot! Even large MMOs like WoW usually capped players at 10 per realm, and they had the luxury of storing data on the Client's hard drive. For an MMO, ProfileStore itself is going to greatly benefit you. It's blazing fast, even in servers with tons of players, and super efficient with API calls. You'll be able to implement complicated player-to-player features (e.g. trading, gifting, mail) much easier with ProfileStore than by trying to create your own datastore solution. A profile's data limit is roughly 4,000,000 characters, the same as a regular key in a Data Store. For your use case, I would probably create a unique profile for each character slot when a player creates a new character. Also, I would have a player profile that contains the keys of all the character slots and other data you need for the entire account, totaling 31 profiles max. Don't create the additional profiles unless a player creates a new character! You can limit your DataStore use. If you have any other questions, feel free to join my discord server!
@iamsylr3 күн бұрын
@@Rileybytes Thanks a lot, this is what i had in mind pretty much. Yeah i also had plans for trading. I had made a global notification system that allowed you to invite player on your character slot to play a coop rather than solo (since its a skyblock mmorpg). I struggled a lot due to the rate limiting to update notifications on client, kind of a pain. I managed to find a way around but i might just completely overhaul it with profileStore.
@Rileybytes3 күн бұрын
@@iamsylr That sounds very intriguing... ProfileStore's messaging system will for sure be a help there. If you'd like to join my discord server, I'd be interested to know more about your process and progress with this!
@tsaritsaarchon7 күн бұрын
i didn't understand anything, however i love datastores
@Rileybytes7 күн бұрын
Thank you for taking the time to comment! I hope you were able to learn something or get a useful script!
@AlphaMaleRoblox10 күн бұрын
15:42 criminal... criminal... criminal...
@AlphaMaleRoblox10 күн бұрын
Jokes aside, this tutorial was really helpful. I'm glad there's an easier way to handle data much faster as well.
@fatminnn90813 күн бұрын
Hey there man, i just came across this video on my recommended, and i have to ask about something, is it possible to call something from the server, like for example a gui on the players screen, and they have an item out/skill equipped they wanna switch out of, how do i handle that? do i just make it fire to the server like, "game.ReplicatedStorage.Remotes.Storage:FireServer("keycodeforsecurity")" and then in the serverscript, it will check what the player is holding out currently and remove it from the player then display its name on the gui name, like an empty slot with the text displaying "None", but as soon as the player holds out an item and clicks on said button, it will remove the item and display its name on the button, sorry for repeating my words, as i wanna implement this to a game i work on which uses roblox's default datastore service to handle data, hopefully you can answer me, cheers!
@Rileybytes3 күн бұрын
I might be misunderstanding your question, so let me know if I am. Here's my idea: You're trying to display the name of a player's currently equipped skill on their GUI. When they deselect the skill, you want it to remove the name. It also sounds like you're creating a custom hotbar to manage skills, instead of Roblox's default hotbar. You need to save the currently equipped slots and what they have in the player's Profile, so the player still has skills equipped when they leave/rejoin. Use a RemoteEvent to tell the server when/what the changes to the hotbar are, add some basic sanity checks for security, and save the current hotbar into the Profile. Changes to skill hotbars can be left to the client - there's not much room for exploits. Just also check which skill the player is currently holding, and if the player is allowed to use it. You can make the changes on the client and let the server know. If someone's exploiting, it will only break for them! The server just needs a copy of the changes to verify and save.
@tz_dee10 күн бұрын
i love profilestore
@Rileybytes10 күн бұрын
@@tz_dee it’s super handy!
@ehtancab9 күн бұрын
Can you create a video on making clan spins
@Rileybytes7 күн бұрын
like a spinner wheel from ps99? or something else
@mirtlife77409 сағат бұрын
please help me, I have been actively writing a script for half a year and have not been able to write more than one video clip and scripts from the forums have not helped me with the correct and working writing of the script. Everything is as simple as possible, I need the player to join the game, click on the Button on the screen and receive the currency, then the player can exchange this currency for another one or collect gifts or activate a promo code and all this should add up. the problem is that when receiving a gift or entering a promo code, the stat is not added, that is, it gives a number but takes away what the player accumulated before and when exiting or re-entering the game, the player does not save anything except gifts and after the player has re-invested or accumulated currency, he will either have 0 on the balance or the number the currency from the gifts or promo code, and what he added additionally, it will not be saved.
@RabbtVTСағат бұрын
This requires a data store. you need to save the data with something like profile store - the thing in this video
@davidfreshh716012 күн бұрын
Please when you are doing a video in scripting just zoom in so people dont have to squint or zoom in so we can see. Thanks
@Rileybytes12 күн бұрын
Usually I'm more zoomed in but I forgot to during this recording. Thanks for letting me know
@davidfreshh716012 күн бұрын
no problem
@justinmanchame19377 күн бұрын
How can I add the profile data to my GUIs that track my leader stats
@Rileybytes7 күн бұрын
Use the RemoteEvents from the video. In your GUI scripts you can connect to them and update the numbers when they are fired.
@setmini_gamingwitjcamera76732 күн бұрын
How to make coins value show in a text label and it updates every time the coins value changes?
@Rileybytes2 күн бұрын
@@setmini_gamingwitjcamera7673 you’ll want a local script in a GUI. Connect to the UpdateGold (or coins) remote event and change the text label to be the new number
@sirgoofy561211 күн бұрын
nice module, i would like to use it for my existing system but i have a system that uses slots how would i apply it there
@Rileybytes11 күн бұрын
@@sirgoofy5612 depending on your system you’ll need to migrate the data to new profiles. You can do this in the Initialize() function or create another one. Just check if there is preexisting data, and migrate it if it is. Also, only migrate it once. For new players you don’t need to migreate
@sirgoofy561211 күн бұрын
@Rileybytes What I did is each slot gets saved under the same profile, but you'll be able to select a profile, which sets a temporary object in the datastore. I just do everything needed for the player based on the selected table's data. My only concern is whether this might affect performance.
@Rileybytes11 күн бұрын
@ Oh I see... I would actually keep all of the data for each slot in just 1 profile. A profile can hold up to 4,000,000 characters of data, so you're not going to run out of room. You just need to limit the number of slots players can have, maybe 3 or 5. In your Template script, make several empty tables within the main table called "Slot1", "Slot2", "Slot3"... etc. Then have another table that's the base template for a slot, and use a deepcopy function to overwrite the empty Slot table when a player creates a slot. If you then have a variable in the main Template table that stores which Slot a player is on, it should be super easy to find the right data. Keep it all in 1 profile! That's the least confusing way to handle it in my opinion. If you want more help join my discord server! I can help you more directly there. Good luck!
@sirgoofy561211 күн бұрын
@@Rileybytes I hadnt thought about the creation of new slots yet, Thanks for the help! ill def be joining ur server
@fitmotheyap9 күн бұрын
You can just have profiles for slots as UserID_1 (slot 1), UserID_2 (slot 2) At least I find it simpler that way, have a seperate game for slot selection though. That's the way Vesteria, Deepwoken, Type Soul among other games do it
@V1per1Real11 күн бұрын
At first when i heard about playerstore I thought it was this complex thing that only super advanced scripters could understand and use but turns out even a amateur level scripter can understand this and use it in their own game and it is probably even simpler than doing datastore the "normal" way. so if any new scripter is watching this and is intimidated don't be this is honestly probably simpler than doing it the old fashioned way. that's just my opinion tho. (for the creator): do you know how you would do a global leaderboard with this? I've always had trouble making global leaderboards it would be nice if you make a tutorial on how to make a global leaderboard with playerstore or something :)
@Rileybytes11 күн бұрын
Absolutely! It's far easier than trying to create your own datastore system, especially for new players. To answer your question, global leaderboards are not suggested to be made with ProfileStore, since it wasn't created with real-time cross-server data updating in mind. It's best to use an OrderedDataStore for that! And I've got a tutorial on my todo list about that!
@V1per1Real10 күн бұрын
@@Rileybytes sorry to bother you again but could playerstore and ordered data store co exist and what I mean by that is that they wont cause any issues like sending to many requests? also thanks for answering
@Rileybytes10 күн бұрын
@V1per1Real nope there won’t be any problems. You can have multiple data stores per experience. If you want to check the limits, look on create.roblox.com for ordered data stores!
@V1per1Real10 күн бұрын
@@Rileybytes hey sorry to bother you AGAIN 😥 but I was looking back at the code for the data manager and I need help understanding this why do you need to do profile.data.cash += amount but then do player.leaderstats.Cash.Value = profile.Data.Cash ??? why not just player.leaderstats.Cash.Value += amount ? I'm so confused on why it needs those two and not one or the other. Thanks
@Rileybytes10 күн бұрын
@ either one can work, but it’s just semantics! I view it as easier to understand this way: you add the change to stored cash value in profile. Leader stats just reads the current cash value, it doesn’t store it for use, so we get the new one instead of adding or subtracting from it.
@alt_baconxd11 күн бұрын
how is this different to ProfileService
@Rileybytes11 күн бұрын
@alt_baconxd there are a few reasons I talked about in the video. It’s a big performance improvement, it’s updated for Roblox’s changes to the DataStore API in 2025, it’s a simpler API, and it’ll be more future proof since the author is going to be focused on updating it
@V1per1Real11 күн бұрын
also what if you dont want it to save a piece of data? is there a way so that piece of data doesn't save or should I just make a different data script just for things that don't need saving cause that's what I'm currently doing
@Rileybytes11 күн бұрын
One common approach is to make another storage point in DataManager called "SessionData" (similar to our approach with DataManager.Profiles, create DataManager.SessionData), and create an additional table there for each player while in game. When they leave, you can just delete their entry. ^ A good place to do this would be the Initialize() function in DataInit. If you keep SessionData in DataManager, you can use the same module script to mutate temporary session data as well as permanent data.
@thisisaperson15367 күн бұрын
How bout suphi's datastore module? i think it's worth checking too
@Rileybytes7 күн бұрын
Yes suphi's datastore module is another great option. I went with ProfileStore since it's so new and will continue being maintained by Loleris for quite a while. It's a little more up to date
@Mustafajaloudi12 күн бұрын
Bro remembered his KZbin password 💀
@Rileybytes12 күн бұрын
@@Mustafajaloudi 😭💀 you’re not wrong
@CuttingDebtYT11 күн бұрын
Lol
@alexfindlay289211 күн бұрын
😂 I’m dead
@lucapagano36856 күн бұрын
How you make a script wait for the DataManager to get all profiles from the DataInit script? if you ask for a player profile very quickly at the start of a new server, it will return no profile, as no profile is in the profiles table, someone know how fix this?
@lucapagano36856 күн бұрын
Okey this is dumb but i just added ReplicatedStorage:WaitForChild("DATAREADY") in the scripts who asks the data manager to early, and added in the data Init script a bit of code that creates a instance called "DATAREADY" in replicated storage when loads the first profile successfully (only one time)
@Rileybytes6 күн бұрын
local function WaitForProfile(player) local profile = DataManager.Profiles[player] while not profile do task.wait() profile = DataManager.Profiles[player] end return profile end
@aqaisback951711 күн бұрын
how use print
@Rileybytes11 күн бұрын
print("words")
@matthewrichard51267 күн бұрын
Hey, where would I add a player kill function to record player kills? function onPlayerKilled(player) local playerLeaderstats = player.leaderstats playerLeaderstats.Kills.Value = playerLeaderstats.Kills.Value + 1 end game.Players.PlayerAdded:Connect(function(player) player.CharacterAdded:Connect(function(character) character:WaitForChild("Humanoid").Died:Connect(function() onPlayerKilled(player) end) end) end) something like this?
@matthewrichard51267 күн бұрын
I tried just putting that function in a script and it works great, but profilestore does not save the kill data like it does the gems and gold in the video. I also followed exactly what to do in the video for adding a new value to save.
@murilogamerzao_ofc7 күн бұрын
@@matthewrichard5126 You Have to do it Like this function onPlayerKilled(Profile,player) local playerLeaderstats = player.leaderstats Profile.Data.Kills += 1 playerLeaderstats.Kills.Value = playerLeaderstats.Kills.Value + 1 end
@Rileybytes7 күн бұрын
Try making a function in DataManager that logs a player kill, using the same format as gold or gems function, but for TotalKills. Then use the DataManager to set profile.Data.TotalKills += 1, and update the leaderstats there as well
@matthewrichard51266 күн бұрын
@ I tried both of these. The kills do not save. I copied all the steps in the process of adding a new stat to save
@matthewrichard51266 күн бұрын
function DataManager.AddKills(player: Player, amount: number) local profile = DataManager.Profiles[player] if not profile then return end profile.Data.Kills += amount player.leaderstats.Kills.Value = profile.Data.Kills ReplicatedStorage.UpdateKills:FireClient(player, profile.Data.Kills) end
@dmystic8 күн бұрын
Would you recommend your code over the code in MonzterDevs ProfileStore video 2 months ago?
@Rileybytes7 күн бұрын
Well since I wrote it yeah... but I love MonzterDev's channel and content and think his code is also great!
@Mamyschn1_39 күн бұрын
i didn't watch the video yet, but something i've been confused about since i heard about profile store around a month or 2 ago, how is it any different from profile service?
@Rileybytes9 күн бұрын
hopefully the video answered that question for you, it's one of the first things I talk about
@Cell_Scape3 күн бұрын
Im having issues but your discord server link is broken or expired
@Kevvv_Plays8 күн бұрын
Does ProfileService allow for global leaderboards? (not the roblox built in one but one you attach to a model/screengui?)
@Rileybytes8 күн бұрын
no it's not supported. ProfileService excels in isolating data and keeping changes to one source. Global leaderboards need data to be accessed and manipulated from many sources simultaneously. The best bet is an ordered data store
@Kevvv_Plays8 күн бұрын
@@Rileybytes So, you're able to use an ordered data store alongside your leaderstats profilestore saving? (I think I'm saying that all correctly) Basically. Can each service be used in the same game...
@Rileybytes8 күн бұрын
@@Kevvv_Plays yes there's no problem using both
@radioactive50534 күн бұрын
Is there a way to add data to people when theyre not in the game?
@Rileybytes4 күн бұрын
@radioactive5053 yes there are a couple of methods! They use ProfileStores advanced Messaging system. It’s something i’m going to make another tutorial on, since it’s pretty in-depth. The tutorial will cover player trading and gifting, even when players aren’t online
@radioactive50534 күн бұрын
@@Rileybytes sounds great!
@ScriptifyLua8 күн бұрын
Brand new? It's been around for a while
@Rileybytes7 күн бұрын
For all intents and purposes it's brand new. especially compared to ProfileService which is 5 years old
@ScriptifyLua7 күн бұрын
@@Rileybytes Oh shit I read the title wrong lol. Thought it said "ProfileService" lmao
@Rileybytes7 күн бұрын
@ makes sense they're very similar lol
@Infoboi66411 күн бұрын
why doesnt my data save
@Rileybytes11 күн бұрын
@@Infoboi664 if you’re having problems please join my discord server and send your errors! I can take a look there and help you directly
@AnonymousWatcherAmigo8 күн бұрын
make the screen a bit bigger please
@Rileybytes7 күн бұрын
Will do, I forgot to zoom in during the coding so apologies if it's small. It'll be fixed going forwards!
@noturne547 күн бұрын
Looks very promising! But yeah, no, not a must at all.
@Rileybytes7 күн бұрын
only a must if you want to save time, to each their own. thanks for commenting!
@IanVanWagoner11 күн бұрын
Rileybytes face reveal????
@Rileybytes11 күн бұрын
the official statement is: no
@No_EffortWasTaken8 күн бұрын
this guy only has 1.49k subs at the time of posting this?
@Rileybytes7 күн бұрын
Yep! Hopefully more people will find my tutorials helpful and subscribe!
@NotRynch12 күн бұрын
dude, why do u upload this as i finish the backend of my datastore system...
@Rileybytes12 күн бұрын
how did you comment so fast 💀bad timing tho rippp
@NotRynch12 күн бұрын
@@Rileybytesbecause I’m subbed with notifications 😂
@Rileybytes12 күн бұрын
@NotRynch legend bro tysm
@Tomidevv7 күн бұрын
is it better than replica?
@Rileybytes7 күн бұрын
Replica and ProfileStore are used for 2 different things, so I wouldn't say it's better or worse. ProfileStore saves data easily, and Replica just transfers data between server and client, not saves it. Replica is very useful for things like Tycoons
@THE_CUBER57412 күн бұрын
40 second ago is wild💀💀
@Rileybytes12 күн бұрын
fastest comment i've ever seen no joke
@seryogagems777211 күн бұрын
Lapis or ProfileStore?
@Rileybytes11 күн бұрын
@@seryogagems7772 I prefer ProfileStore
@davidfreshh716012 күн бұрын
same
@NotPensive8 күн бұрын
i dont think its new is it
@Rileybytes7 күн бұрын
@NotPensive for all intents and purposes it is. ProfileService came out nearly 5 years ago, its successor was 4 months
@farleyy91024 күн бұрын
Hey don’t use data store service use data store service Ina module script!
@yarik_superpro3 күн бұрын
just make own system without bloatware lol
@feik6913 сағат бұрын
yes lets use like 100hours to make good datastore
@dominiccaesarok507711 күн бұрын
pRAISE jESUS!
@Runtem11 күн бұрын
No.
@Rileybytes11 күн бұрын
@@Runtem ah
@TKJOutdoors11 күн бұрын
Why does this comment have so many like?
@Rileybytes11 күн бұрын
1 like 😥
@Superstitious419 күн бұрын
2 likes 😭
@BartizeR6 күн бұрын
tutorial is lacking one thing that is useful asf, R E P L I C A.
@Rileybytes6 күн бұрын
that would need to be its own tutorial! replica is great
@BartizeR6 күн бұрын
@Rileybytes I prefer totally not creating any instances in player (excluding leaderstats) and just use replica to get data on client