Stop Using Basic Data Stores - Here's Why ProfileStore is Better!

Поделиться
HTML-код
  • Опубликовано: 30 янв 2025

Комментарии • 139

  • @Rileybytes
    @Rileybytes  8 дней назад +5

    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

  • @frankmurphy9426
    @frankmurphy9426 2 дня назад +2

    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!

    • @Rileybytes
      @Rileybytes  День назад

      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!

  • @エニエ
    @エニエ 8 дней назад +8

    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😄😄

    • @Rileybytes
      @Rileybytes  8 дней назад

      @@エニエ Glad to hear you’re enjoying it! Good luck with your projects and thank you 🙏

  • @davidfreshh7160
    @davidfreshh7160 2 дня назад +1

    you should upload more often man
    you make great videos 😊

    • @Rileybytes
      @Rileybytes  День назад

      thank you so much! i will do my best to upload more

  • @kwinten
    @kwinten 2 дня назад

    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.

    • @Rileybytes
      @Rileybytes  2 дня назад

      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

  • @matejcerv
    @matejcerv 7 дней назад

    This is such a huge time saver. Love you for showing me this

    • @Rileybytes
      @Rileybytes  7 дней назад

      @@matejcerv glad to help!

  • @Lars0derso
    @Lars0derso 8 дней назад +2

    Nice video, keep going!

  • @bloxyutre3
    @bloxyutre3 4 дня назад

    Again the goat with the goat stuff 🐐

  • @koainanis5840
    @koainanis5840 8 дней назад +2

    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?

    • @Dehhoy
      @Dehhoy 8 дней назад

      You can just put settings table to template and use it in settings and items can be in table

    • @koainanis5840
      @koainanis5840 8 дней назад

      @@Dehhoy thanks for comment but atm i dont understand that :( I must see it how this works :)

    • @Rileybytes
      @Rileybytes  7 дней назад +2

      @@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!

    • @Rileybytes
      @Rileybytes  7 дней назад +1

      @@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

    • @koainanis5840
      @koainanis5840 7 дней назад

      @thank you very much. I am looking forward to it. I appreciate it 👍

  • @_barskii
    @_barskii 7 дней назад +2

    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.

    • @Rileybytes
      @Rileybytes  6 дней назад

      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

  • @ogyo548
    @ogyo548 6 дней назад +4

    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

    • @Rileybytes
      @Rileybytes  3 дня назад +2

      yes I will give this a look

  • @tsaritsaarchon
    @tsaritsaarchon 3 дня назад +1

    i didn't understand anything, however i love datastores

    • @Rileybytes
      @Rileybytes  3 дня назад

      Thank you for taking the time to comment! I hope you were able to learn something or get a useful script!

  • @yarik_superpro
    @yarik_superpro 8 часов назад

    istg all this "datastore" modules look like being made by people who make backdoors so they will know right keys

    • @Rileybytes
      @Rileybytes  8 часов назад

      @@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.

    • @Rileybytes
      @Rileybytes  8 часов назад

      @@yarik_superpro I hope you decide to give it a shot! This one’s worth it

  • @alexfindlay2892
    @alexfindlay2892 7 дней назад +1

    So good! Also Face reveal??? 👀

  • @AlphaMaleRoblox
    @AlphaMaleRoblox 7 дней назад +2

    15:42 criminal... criminal... criminal...

    • @AlphaMaleRoblox
      @AlphaMaleRoblox 7 дней назад +2

      Jokes aside, this tutorial was really helpful. I'm glad there's an easier way to handle data much faster as well.

  • @tz_dee
    @tz_dee 6 дней назад

    i love profilestore

    • @Rileybytes
      @Rileybytes  6 дней назад

      @@tz_dee it’s super handy!

  • @iamsylr
    @iamsylr 11 часов назад

    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

    • @Rileybytes
      @Rileybytes  10 часов назад

      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!

    • @iamsylr
      @iamsylr 4 часа назад

      @@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.

  • @davidfreshh7160
    @davidfreshh7160 8 дней назад +3

    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

    • @Rileybytes
      @Rileybytes  8 дней назад

      Usually I'm more zoomed in but I forgot to during this recording. Thanks for letting me know

    • @davidfreshh7160
      @davidfreshh7160 8 дней назад

      no problem

  • @justinmanchame1937
    @justinmanchame1937 4 дня назад +1

    How can I add the profile data to my GUIs that track my leader stats

    • @Rileybytes
      @Rileybytes  3 дня назад

      Use the RemoteEvents from the video. In your GUI scripts you can connect to them and update the numbers when they are fired.

  • @fatminnn9081
    @fatminnn9081 5 часов назад

    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!

  • @ehtancab
    @ehtancab 5 дней назад +1

    Can you create a video on making clan spins

    • @Rileybytes
      @Rileybytes  3 дня назад

      like a spinner wheel from ps99? or something else

  • @Mustafajaloudi
    @Mustafajaloudi 8 дней назад +21

    Bro remembered his RUclips password 💀

  • @V1per1Real
    @V1per1Real 7 дней назад +1

    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

    • @Rileybytes
      @Rileybytes  7 дней назад

      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.

  • @thisisaperson1536
    @thisisaperson1536 4 дня назад

    How bout suphi's datastore module?
    i think it's worth checking too

    • @Rileybytes
      @Rileybytes  3 дня назад

      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

  • @alt_baconxd
    @alt_baconxd 8 дней назад +4

    how is this different to ProfileService

    • @Rileybytes
      @Rileybytes  7 дней назад +2

      @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

  • @V1per1Real
    @V1per1Real 7 дней назад +1

    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 :)

    • @Rileybytes
      @Rileybytes  7 дней назад

      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!

    • @V1per1Real
      @V1per1Real 7 дней назад

      @@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

    • @Rileybytes
      @Rileybytes  7 дней назад

      @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!

    • @V1per1Real
      @V1per1Real 7 дней назад

      @@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

    • @Rileybytes
      @Rileybytes  6 дней назад

      @ 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.

  • @aqaisback9517
    @aqaisback9517 7 дней назад +2

    how use print

  • @sirgoofy5612
    @sirgoofy5612 7 дней назад +1

    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

    • @Rileybytes
      @Rileybytes  7 дней назад

      @@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

    • @sirgoofy5612
      @sirgoofy5612 7 дней назад

      @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.

    • @Rileybytes
      @Rileybytes  7 дней назад

      @ 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!

    • @sirgoofy5612
      @sirgoofy5612 7 дней назад

      @@Rileybytes I hadnt thought about the creation of new slots yet, Thanks for the help! ill def be joining ur server

    • @fitmotheyap
      @fitmotheyap 6 дней назад +1

      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

  • @dmystic
    @dmystic 5 дней назад

    Would you recommend your code over the code in MonzterDevs ProfileStore video 2 months ago?

    • @Rileybytes
      @Rileybytes  3 дня назад +1

      Well since I wrote it yeah... but I love MonzterDev's channel and content and think his code is also great!

  • @Cell_Scape
    @Cell_Scape 7 часов назад

    Im having issues but your discord server link is broken or expired

  • @Kevvv_Plays
    @Kevvv_Plays 5 дней назад

    Does ProfileService allow for global leaderboards? (not the roblox built in one but one you attach to a model/screengui?)

    • @Rileybytes
      @Rileybytes  5 дней назад +1

      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_Plays
      @Kevvv_Plays 5 дней назад

      @@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...

    • @Rileybytes
      @Rileybytes  5 дней назад

      @@Kevvv_Plays yes there's no problem using both

  • @lucapagano3685
    @lucapagano3685 2 дня назад

    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?

    • @lucapagano3685
      @lucapagano3685 2 дня назад

      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)

    • @Rileybytes
      @Rileybytes  2 дня назад

      local function WaitForProfile(player)
      local profile = DataManager.Profiles[player]
      while not profile do
      task.wait()
      profile = DataManager.Profiles[player]
      end
      return profile
      end

  • @Mamyschn1_3
    @Mamyschn1_3 6 дней назад

    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?

    • @Rileybytes
      @Rileybytes  6 дней назад

      hopefully the video answered that question for you, it's one of the first things I talk about

  • @matthewrichard5126
    @matthewrichard5126 4 дня назад

    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?

    • @matthewrichard5126
      @matthewrichard5126 4 дня назад

      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_ofc
      @murilogamerzao_ofc 3 дня назад

      @@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

    • @Rileybytes
      @Rileybytes  3 дня назад

      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

    • @matthewrichard5126
      @matthewrichard5126 3 дня назад

      @ 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

    • @matthewrichard5126
      @matthewrichard5126 3 дня назад

      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

  • @ScriptifyLua
    @ScriptifyLua 4 дня назад

    Brand new? It's been around for a while

    • @Rileybytes
      @Rileybytes  3 дня назад

      For all intents and purposes it's brand new. especially compared to ProfileService which is 5 years old

    • @ScriptifyLua
      @ScriptifyLua 3 дня назад

      @@Rileybytes Oh shit I read the title wrong lol. Thought it said "ProfileService" lmao

    • @Rileybytes
      @Rileybytes  3 дня назад +1

      @ makes sense they're very similar lol

  • @noturne54
    @noturne54 4 дня назад

    Looks very promising! But yeah, no, not a must at all.

    • @Rileybytes
      @Rileybytes  3 дня назад

      only a must if you want to save time, to each their own. thanks for commenting!

  • @Infoboi664
    @Infoboi664 7 дней назад +1

    why doesnt my data save

    • @Rileybytes
      @Rileybytes  7 дней назад

      @@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

  • @No_EffortWasTaken
    @No_EffortWasTaken 5 дней назад

    this guy only has 1.49k subs at the time of posting this?

    • @Rileybytes
      @Rileybytes  3 дня назад

      Yep! Hopefully more people will find my tutorials helpful and subscribe!

  • @radioactive5053
    @radioactive5053 20 часов назад

    Is there a way to add data to people when theyre not in the game?

    • @Rileybytes
      @Rileybytes  14 часов назад

      @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

    • @radioactive5053
      @radioactive5053 14 часов назад

      ​@@Rileybytes sounds great!

  • @AnonymousWatcherAmigo
    @AnonymousWatcherAmigo 4 дня назад

    make the screen a bit bigger please

    • @Rileybytes
      @Rileybytes  3 дня назад +1

      Will do, I forgot to zoom in during the coding so apologies if it's small. It'll be fixed going forwards!

  • @Tomidevv
    @Tomidevv 3 дня назад

    is it better than replica?

    • @Rileybytes
      @Rileybytes  3 дня назад

      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

  • @farleyy9102
    @farleyy9102 9 часов назад

    Hey don’t use data store service use data store service Ina module script!

  • @IanVanWagoner
    @IanVanWagoner 7 дней назад +2

    Rileybytes face reveal????

    • @Rileybytes
      @Rileybytes  7 дней назад

      the official statement is: no

  • @THE_CUBER574
    @THE_CUBER574 8 дней назад

    40 second ago is wild💀💀

    • @Rileybytes
      @Rileybytes  8 дней назад

      fastest comment i've ever seen no joke

  • @seryogagems7772
    @seryogagems7772 7 дней назад

    Lapis or ProfileStore?

    • @Rileybytes
      @Rileybytes  7 дней назад

      @@seryogagems7772 I prefer ProfileStore

  • @NotPensive
    @NotPensive 4 дня назад

    i dont think its new is it

    • @Rileybytes
      @Rileybytes  4 дня назад

      @NotPensive for all intents and purposes it is. ProfileService came out nearly 5 years ago, its successor was 4 months

  • @davidfreshh7160
    @davidfreshh7160 8 дней назад

    same

  • @NotRynch
    @NotRynch 8 дней назад

    dude, why do u upload this as i finish the backend of my datastore system...

    • @Rileybytes
      @Rileybytes  8 дней назад

      how did you comment so fast 💀bad timing tho rippp

    • @NotRynch
      @NotRynch 8 дней назад

      @@Rileybytesbecause I’m subbed with notifications 😂

    • @Rileybytes
      @Rileybytes  8 дней назад

      @NotRynch legend bro tysm

  • @yarik_superpro
    @yarik_superpro 8 часов назад

    just make own system without bloatware lol

  • @dominiccaesarok5077
    @dominiccaesarok5077 7 дней назад

    pRAISE jESUS!

  • @Runtem
    @Runtem 8 дней назад

    No.

  • @TKJOutdoors
    @TKJOutdoors 7 дней назад +2

    Why does this comment have so many like?

  • @BartizeR
    @BartizeR 2 дня назад

    tutorial is lacking one thing that is useful asf, R E P L I C A.

    • @Rileybytes
      @Rileybytes  2 дня назад

      that would need to be its own tutorial! replica is great

    • @BartizeR
      @BartizeR 2 дня назад +1

      @Rileybytes I prefer totally not creating any instances in player (excluding leaderstats) and just use replica to get data on client

  • @ethanhooper6680
    @ethanhooper6680 7 дней назад +2

    Rileybytes face reveal????

    • @Rileybytes
      @Rileybytes  7 дней назад

      my official answer is no