DBUModule | Datastore Manager

I don’t have ideas just like that but if that can guide you, I’ve done a module for using Parallel Lua, for replacing Player:GetMouse() (a module that replicates it but by using newer alternatives and other improvements, with mobile support), one which is a modified version of the legacy chat (modified visuals and small fixes), one for getting UTC/LocalTime (nobody found this one useful lol), and finally literally a Roblox game (a game discovery hub, for finding games, and making your game more visible)

The Mouse module, the chat modifications and UTC/LocalTime module were all modules I made for my projects that I decided to share, the parallel scheduler I didn’t make initially for a project but I ended up using it lol
So one good way to determine modules to make is to make what you need yourself I guess

I also made a sort of wrapper for BindToClose (though it’s probably not worth posting)

Free code lol
local RunningTasks = {}
local Functions = {}

local BindToClose = {}

local IsClosing = false
function BindToClose:IsClosing()
	return IsClosing
end

function BindToClose:BindFunction(Function)
	table.insert(Functions,Function)
end

function BindToClose:BindTask(TaskName : string)
	if table.find(RunningTasks,TaskName) then error("Cannot bind a task more than once") end
	table.insert(RunningTasks,TaskName)
end

function BindToClose:UnbindTask(TaskName : string)
	local Index = table.find(RunningTasks,TaskName)
	if not Index then error("Cannot unbind a task that isn't bound") end
	table.remove(RunningTasks,Index)
end

game:BindToClose(function() 
	IsClosing = true
	
	local BoundTasks = 0
	for i, v in ipairs(Functions) do 
		BoundTasks += 1
		task.spawn(function() 
			v()
			BoundTasks -= 1
		end)
	end
	
	while BoundTasks > 0 do task.wait(1) end
	
	while #RunningTasks > 0 do task.wait(1) end
	
	return
end)

return BindToClose

Otherwise, I’m thinking about a wrapper for ContextActionService, that could be useful, or taking the legacy chat further by converting it to use the new TextChatService stuff (though that would be probably very hard because of how much code the legacy chat has)

Why make a module if somebody else already did?


I’m confused on how to actually set your data? Where is it? How do I get it? I think it would help if there was more examples. Use cases would also further explain how to use it, even if the use cases themselves are obvious.

1 Like

If you have years of experience, you get lazy and don’t want to code a perfect datastore module yourself. You have other people that did it for you, while maintaining it for years and adding new features.

1 Like

Yeah, figured :face_exhaling:
Will add proper documentation with v0.1

Because if you choose a good one then you wont have to worry about players losing their progress.

I’ve skimmed through the replies and it’s very stupid, nobody is forcing you to use an datastore module, this module is different from others by having the ability to make custom functions [sounds useless because you already can make functions without the module], but I agree that there is no documentation on the module though

1 Like

TYSM MUCH FOR THIS INFO

I am making a datastore module and this sheet is very helpful. it seems like other datastore module (PROFILESERVICE COUGH COUGH) tries to hide these things to prevent competition as well as users from making their own systems

where did you find this? please tell me. I need to see if there is anything else they are hiding. the information you have is essentially classified and hidden by the greedy developers of famous modules like profileservice to prevent competition

I cannot find it anywhere, any tutorials, and information, etc. The developer of datastore2 and profileservice truely are wicked.

I would make the argument that ProfileService doesn’t hide it’s capabilities. It flat out states what it’s capable of doing in it’s documentation. Further, the entire module is open source. If you are curious as to how ProfileService handles certain things, just read through the module and figure it out. If they told every developer exactly how they did every single function, what is the point in releasing a module? Developers could just take all of that and make their own, which is not what the motivation is behind ProfileService. It is also not reasonable to claim that they are attempting “to prevent competition”. ProfileService is open-source. It is ignorant to consider competing with ProfileService, as there is no revenue or benefits to having a “better” or “more tested” DataStore module. Trying to compete with something that is already popular is one thing, but competing just to compete (meaning with no benefits whatsoever) is just morally wrong and unnecesary. Developers would much rather see efforts poured into new modules than trying to create something that, for the most part, already exists.

Don’t reinvent the wheel” - Recreating something that already exists just to add a few extra features is not at all necessary. Your entire project mission is to essentially:

  • Create my own version of ProfileService
  • Make it set up on it’s own so that developers don’t have to
  • Create miscellaneous functions that give developers more options.

Basically, you are just creating an “adder” module to ProfileService, except, instead of just using ProfileService, you are trying to recreate your own version of it.

From ProfileService’s DevForum discussion:

I hope that this helps you with future development. I would try and give some positive feedback on your module, however, I don’t see why I should when you don’t give other people the same chance we gave you.

And so on.

Just, don’t be ignorant about things you don’t know a lot about.

(PS. None of your assumptions about how the ProfileService works are accurate. The developers of ProfileService are really great at what they do and have a long standing reputation.)

1 Like