There are far too many things to list in a single post, that I use or are very helpful. As a starting point, check out #learning-resources:tutorials and #learning-resources:community-tutorials-resources for some developer-written articles that may serve to your benefit.
Happens to me to make my own libraries for a specific game, for example to replace parts of code I would do very often:
Example:
If I had to create lots of instances during the game time, I’d add in my library a function called create, that would create and put properties quickly to an object.
local newObj = Instance.new(obj);
for i,v in pairs(props) do
if newObj[i] then
newObj[i]=v
end end
return newObj
end
I do lots of small functions like this to shorten the code at the end.
I use Git for version control. I use a tool called Rojo to write my code in Visual Studio Code and have it automatically synced in to my Roblox file. You can save files as .rbxlx for XML format, I recommend doing this for Git.
Roact is an interesting project I don’t personally use at the moment but am interested in. It’s React for Roblox UI development.
Mostly my own framework, but it’s completely incompatible with other projects so I never bothered even considering making it open-source. As for the other modules, mostly Quaternion and Matrix modules, shortly just the basic mathematical stuff to make my life easier.
For most projects of small size, it should only take maybe half an hour to convert it, but I don’t think syncing your Roblox file to a Rojo project will be available until v0.5.0’s full release, which is in alpha right now.
If you are looking for Interpolation libraries (Tween / Easing / Bezier libraries), I recommend my own, although they are integrated with RoStrap.
I do not recommend using Time libraries that perform loops to figure out the date. Here is my implementation of an efficient algorithm for obtaining the Year/Month/Day for a given number of seconds after Jan 1 1970, as described by one of the main people writing the standard Date/Time libraries for C++ (credited in the source). However, for most use cases I prefer my re-implementation of the vanilla os.date function for Roblox (click the title to view the source). This is integrated with RoStrap, but only barely. If you like you can just remove lines 5 and 6 and switch out Debug.Error for error and it will work perfectly without any dependencies.
I use a ton of my own libraries (private, but I’ll describe what they do):
Elttob Utils - provides a ton of useful functions, e.g. deep cloning, index of, “pwait” (only wait after a certain time interval, useful for long running tasks)
Metrics - makes measuring the execution time of various code snippets easy in production code
AABB - provides an OOP interface for working with axis aligned bounding boxes
Span - my own formatted text renderer that doesn’t annihilate text kerning at small sizes
Pick - CSS-like selectors for filtering descendants of instances (which I turned into a nifty plugin for selecting instances precisely)
Object - makes OOP code really easy to write:
local Thing = Object() -- make a new OOP class
function Thing:constructor(foo)
-- ...
end
local SubClass = Object{Thing} --extending a class, supports multiple inheritance btw!
Lazy Require - variant of require() that only requires the module when you index it (convenient for solving require loops without having to move the declarations from the top of the file or passing arguments)
Set - More semantic way of defining sets, with support for all data types and some extra stuff like reduce()
UITags - My own system for applying behaviour to UI elements on mass, by marking up UI elements with value instances.
MakeWidget - Makes plugin widgets from ScreenGuis.
Observer - Lets you track changes to tables.
Event - Lets you define BindableEvent-like objects in Lua.
ColorUtils - Various utility functions for working with Color3s.
Pretty - Turns tables into nicely formatted strings.
Instances - Some utility functions for creating and manipulating Instances.
Lut - Turns arrays into two way look up tables.
Files - Utilities for working with file contents (normalise newlines, get row and column from string position)
How exactly did you manage to use rbx-net? I keep getting
18:13:26.008 - Infinite yield possible on ‘ReplicatedStorage:WaitForChild(“rbx-remoteevent”)’
There aren’t alot of 3rd party libraries, like in any other programming language. Just like how python uses the import statement and how c# uses the using statement, you can import a roblox made library with game:GetService("servicenamehere")
I can see why alot of people got confused, only me and some other handful of people program in other languages than the roblox custom made lua. Also i think libraries are called modules here, and they are their own script, which you can insert into the game, not sure though.