#๐ก Give refrence in scripting guidelines because its hard to know what exactly needed for role lik...
1 messages ยท Page 1 of 1 (latest)
Please discuss this idea civilly, don't forget to vote on this idea in #๐๏ธฑserver-suggestions!
skid
I would agree that their guidelines is very vague and doesn't really explain what each role requirements are. A ranker told me they might be reworking the scripters guidelines but idk if they still are
For s1 it's just having a good understanding over the basics. This includes luau's syntax, some Roblox API, and a good understanding over basic design principles and naming conventions
It differs from script to script
But a solid foundation of (lua) oop, (simple to complex) data structures, high foundation of Roblox API (datastore, tweenservice, etc.) and being robust at modularity and scalability. All code must be game ready and heavily commented
The term "Game ready" for code is defined as being optimized and must be used within a game mechanic or game system
So if you make something that is outside the bounds of a game system, it wouldn't be considered by the rankers
Yeah see now
Rankers dont accept that for s2
they take Heavily Complex constructs of code that are 350 lines+ and are merely used in a game
As long as it has Typechecking and 250+ lines, its s2
huh?
I mean they are changing the entire system so idk
I had to send this incomplete editable images framework to get s2 lowkey so idk
send the one that is the lowest s2 there
Idk cuz this was the thing that got me s2
The other stuff I sent got discarded because they were too simple
I prob would've gotten s3 if it was complete
:0 wut does the script do?
is it that hard to get s2
damn
Idk
Many s1's have s2 knowledge but dont have code thats 650 lines
damn 650 lines ๐
not really
but a good example is this
Pretty low s1 code
but can become s2 in a snap
the biggest difference is how a s1 handles it and an s2
if this used better methods other than while true and had more functionality it could go up to low s2
But for now its low s1
because it doesnt have the features of s2
nor the best practices
Honestly you'd have to change almost all of this to make this low s2
looks like s2 but is still s1 sadly
yup
I changed the whole while true logic
to step functions
and making use of dt / deltatime
Probably try to find a more optimized way. But i cant seem to think of another method apart from lerping or Pathfinding. Since I'm planning to use this for a background typa thing, like boids, but i wont actualy compute it to become a boid since planes fly over 0.5Km apart from eachother
Haha, yeah, math in most code makes it look s2
But its not really more than Mid s1
That script is just too simple for s2 ๐ญ
The script itself is too simple
the actual Idea can be s2
Right now its like low - mid s1
This still wouldn't change much
idk i sumbitted literal shi for s1
like data store basics
and really basic stuff
and i got s1
s3 will be like scripting minecraft in roblox studio at the point ๐ญ
S3 Is unobtainable
Like.. no joke
S4 is easier
S3 is like, selling your soul ahh
could you show me what you would consider s2 / low s2/ wat u submitted for s2
This is what I submitted
show code, like the one you think Is definitely S2 but not an accurate representation of your current skillset
In a little bit
Tysm
dawg ur being weird
This was the ToolControllerClass
--// Services \\--
--// Modules \\--
local ToolSettingsManager = require(script:WaitForChild("ToolSettingsManager"))
--// Misc \\--
local ComponentsFolder = script.Components
--// Private Dependencies \\--
local Tools = {"Brush", "Erase", "Fill", "EyeDrop", "Lasso", "Select"}
local ToolClass = {}
ToolClass.__index = ToolClass
type Tool = "Brush" | "Erase" | "Fill" | "EyeDrop"
--// Private Functions \\--
--// Public Functions \\--
function ToolClass.new(CanvasController)
local self = setmetatable({}, ToolClass)
self._CanvasController = CanvasController
self._ActiveTool = "Brush" :: Tool
self._ToolIndex = 1
self._CursorSize = 10
self._CurrentTransparency = 0
self._Components = {}
self:_Init()
return self
end
function ToolClass:_Init()
--Creates tool components
for _, Component in ComponentsFolder:GetChildren() do
if not Component:IsA("ModuleScript") then continue end
self._Components[Component.Name] = require(Component).new(self, self._CanvasController)
end
--Creates appropriate tool settings ui
--TODO
warn("[TOOL CONTROLLER CLASS] SETTING CREATION CURRENTLY GET'S UI ELEMENTS UNSAFELY AND UNMODULAR. PLEASE FIX THIS")
for _, Component in self._Components do
if not Component["GetSettings"] then continue end
local ComponentSettings = Component:GetSettings()
for _, Setting in ComponentSettings do
if not Setting["SettingType"] then continue end
local SettingsContainer = Instance.new("Folder")
SettingsContainer.Name = Component.Type
SettingsContainer.Parent = script.Parent.Ui.CanvasGui.ElementsCache.ToolSettings
ToolSettingsManager:CreateToolSetting(Setting, Component.Type, nil, SettingsContainer)
end
end
end
--Sets the tool from an array of tools
function ToolClass:SetToolFromIndex(Index: number)
if self._ToolIndex == Index then return end
if not Tools[Index] then return end
self._ToolIndex = Index
self._ActiveTool = Tools[Index]
end
--Gets the next tool from the tool-list.
--Returns the tool and the index
function ToolClass:GetNextTool(): (string, number)
local Index = self._ToolIndex + 1
if Index >= #Tools then
Index = 1
end
return Tools[Index], Index
end
function ToolClass:GetPreviousTool(): (string, number)
local Index = self._ToolIndex - 1
if Index < 1 then
Index = #Tools
end
return Tools[Index], Index
end
function ToolClass:GetTool(): (string, number)
return self._ActiveTool, self._ToolIndex
end
function ToolClass:GetAllTools(): {string}
return Tools
end
function ToolClass:ActivateTool<data>(...: data?): data?
if not self._Components[`{self:GetTool()}Tool`] then return end
return self._Components[`{self:GetTool()}Tool`]:Invoke(...)
end
function ToolClass:GetComponent(ToolName: Tool): any?
return self._Components[`{ToolName}Tool`]
end
function ToolClass:_GetAllComponents()
return self._Components
end
function ToolClass:Update(Data)
for _, Component in self:_GetAllComponents() do
if not Component["Update"] then continue end
Component:Update(Data)
end
end
return ToolClass
This entire system was unfinished and early stages
ts is s2?
wtf'
this is literally just oop
Init() and new() are the only understandable ones
if thats s2 then me adding oop to my Ai plane is s2
but no hate
I mean this is just one script
The entire system runs off of components and other useful stuff
admit what?
I showed you a single script within the entire system?
Yours wasn't even "ai"
how is S4 easier if S3 is selling your soul ๐ญ
He doesn't know how ranks work
s4 is harder to earn than s3 ๐ญ
if thats like one component...
props to you for getting s2
That manages components
xd
yeah if s3 is un obtainable s4 is outta the ranking tickets smh
It's not unobtainable
i mean if s2 is 650 lines
s3 like a idk like a full game script probably
like if s2 is only for making systems
then s3 would require to make a game
sm what
Nope
S3 Is just being good at physics and math
this is s3 code
from Omrezkeypie
bezier curves are NOT s3 ๐ญ
And they changed it so pure algorithmic code and mathematics no longer are acounted for if it doesn't relate to game design/development
That is not s3
what is it
s2
sure buddy
if thats s2 then the gap between s2 and s3 is nothing, while the gap between s1 and s2 is extremely high
if i learn this can i get s3 u mean?
is this s2 or s3
i get the fact this single thing cant get me s2 or whatever you think it is but atleast like 1/5 concepts would be done :DDDD
s1 is print("hello world") mean while s2 is some complex maths smthin modules and stuff which is hard its true s1 and s2 have a diff but s2 and s3 gap is nothing compared to s1 to s2
s3 is mastering LUA in everyway i spose
The problem is
S2's like to make something they have achieved much harder than it really is
They have that pride in them
Not necessarily rude people
Like I'm sure 65% of s2's in this server cant do that
Out of their own code, not copying
local PlaneHandler = {}
local runservice = game:GetService("RunService")
local BP1, BP2, BP3 = game.Workspace:WaitForChild("BP1"), game.Workspace:WaitForChild("BP2"), game.Workspace:WaitForChild("BP3")
local functions = {}
function PlaneHandler.DetectBoundingBox(plane: UnionOperation)
local exclusions = {BP1,BP2,BP3}
local Params = OverlapParams.new()
Params.FilterType = Enum.RaycastFilterType.Exclude
Params.FilterDescendantsInstances = exclusions
local connection
connection = runservice.Heartbeat:Connect(function()
local BB_CFrame: CFrame = CFrame.new(-2669.7, 18.5, -6)
local Size: Vector3 = Vector3.new(2047.8, 8, 2048) * 2
local AABB = workspace:GetPartBoundsInBox(BB_CFrame, Size, Params)
for _, Plane: UnionOperation in AABB do
if Plane:IsA("UnionOperation") and Plane.Name == plane.Name then
plane:SetAttribute("InBoundingBox", true)
end
end
if not AABB then
connection:Disconnect()
return
end
end)
end
function PlaneHandler.Accelerate(plane: UnionOperation , Speed: number)
local connection
connection = runservice.Heartbeat:Connect(function()
if math.abs(Speed) > -1 then
local currentPos = plane.Position
local incrementedX = currentPos.X + Speed
plane.Position = Vector3.new(incrementedX, currentPos.Y, currentPos.Z)
if plane:GetAttribute("InBoundingBox") == true then
if Speed < 0 then
Speed = -0.8
task.wait(20)
Speed = -0.5
end
return
end
end
end)
end
function PlaneHandler.TakeOff(plane: UnionOperation, incrementYvalue: number)
task.wait(3)
plane.CFrame = plane.CFrame * CFrame.Angles(0,0,-0.05)
local connection
connection = runservice.Heartbeat:Connect(function()
local currentPos = plane.Position
local IncrementedY = currentPos.Y + incrementYvalue
plane.Position = Vector3.new(currentPos.X, IncrementedY, currentPos.Z)
if plane:GetAttribute("InBoundingBox") == true then
connection:Disconnect()
return
end
end)
end
function PlaneHandler.Land(plane: UnionOperation, decrementYvalue: number)
task.wait(20)
plane.CFrame = plane.CFrame * CFrame.Angles(0,0,0.1)
local connection
connection = runservice.Heartbeat:Connect(function()
local currentPos = plane.Position
local DecrementedY = currentPos.Y - decrementYvalue
plane.Position = Vector3.new(currentPos.X, DecrementedY, currentPos.Z)
if plane:GetAttribute("InBoundingBox") == true then
connection:Disconnect()
return
end
end)
end
function PlaneHandler.Initialize(plane, Speed, decrementY, IncrementY)
task.wait(5)
task.spawn(function()
PlaneHandler.Accelerate(plane, Speed)
PlaneHandler.TakeOff(plane, IncrementY)
PlaneHandler.Land(plane, decrementY)
PlaneHandler.DetectBoundingBox(plane)
end)
end
return PlaneHandler
@slow quarry I finished the core of it
just gotta add features now
The gap between all ranks are suppose to be high
I don't think you understand that
yeah but
I mean you'd get better at math and you'd prob go to s2
your kinda overrating s2
It's just a discord rank ๐ญ
And I'm only telling you stuff a ranker told me
What is the point of this functions table?
I was gonna use it to try and task.spawn all the functions at once
but it didnt work
Is this client or server?
all server
What is the point of the :WaitForChild then?
Im not that experienced with the difference of using WaitForChild vs FindFirstChild
Stop hype focusing on ranks for now and just learn the syntax for luau
Or do
WaitForChild waits for something to exist, but is not needed like 98% of the time on the server
It's used primarily to get something that is still loading in on the client side
:FindFirstChild finds the first child of an instance with the given name
That is usually used to check if that object exists
Since it returns nil or the item
Ur right
but i just need those 2 arrows next to my name๐ญ
s2 is the minimum for pro scripting
So obviously the bar will be raised higher for s1's
You must know ALL of the basics of luau and use them semi-efficiently with low amount of issues
s2 is having a high understanding over the api, math, and better code & system structures
epic so now you use other scripts and finish scripts :D.
all this for 2 arrows ๐ญ
someone told me its pretty high s1
idk tho
e
lmaoo
2 people have told me its low s2
but another 2 have told me its high s1
You cant really trust a person with no scripter role so people who told you HAD the role then they might be correct
it's s1 bro
I can re-read it and tell u again
But most likely it's s1
yo could i see what u used to apply for s1
i dont have my code rn but i did simple data saving a code that saves your data leaderstats
and i dont have the rest really
but it was a gamepass thing i coded
and i gave it
about 3 works
could you show me any of your recent code
i dont have my code available rn but things i have learned recently inclue UIS, Welding, ProfileStore (not much), and some other not too advanced stuff
You dont have even 1 script you think is s1 worthy?
i am not able to log in to my account at the moment
or else i have all my code for beginners and advanced
but i dont think any of it is much more than high s1
I was alr s1 2 months ago
huh i just saw today
wtv nice
what sort of work did you sumbit for it?
2 months ago it was trash
But rn
This is what i submitted rn
Monologue System: https://pastebin.com/7MvsSj8J
Sprint System: https://pastebin.com/gm9T5Exg
Plane Mover thing: https://pastebin.com/hRG79WxQ
Unfinished CombatService: https://pastebin.com/EYxZeR48
Pastebin.com is the number one paste tool since 2002. Pastebin is a website where you can store text online for a set period of time.
Pastebin.com is the number one paste tool since 2002. Pastebin is a website where you can store text online for a set period of time.
Pastebin.com is the number one paste tool since 2002. Pastebin is a website where you can store text online for a set period of time.
Pastebin.com is the number one paste tool since 2002. Pastebin is a website where you can store text online for a set period of time.
@slow quarry
Also the reason all of these are S1 is because they have many edge cases, and dont cover memory leaks and etc.... Some places i use connection but never disconnect it, some places i dont use *= for Position and CFrame operations, which is a nitpick but still reduces
So In general its all Mid S1, lmk if you agree @hallow ore
||I have come to terms that its nowhere near s2||
honestly fix those and this is high s1
obviously but its nearly high s1
if you improve stuff ig
dam things you sumbitted are about high s1 my sumbissions were actual shi and low s1
epic code
you are doing good till now xd
lol i couldnt see your role so i though you didnt have
yh
show
alr bro dont make fun of me
i only found one
since they are old
`local test = game.Workspace.PremiumArea.HEHE
local bruh = 20
while bruh == 20 do
test.BrickColor = BrickColor.new("Dark green")
task.wait(1)
test.BrickColor = BrickColor.new("Dark blue")
task.wait(1)
test.BrickColor = BrickColor.new("Really red")
task.wait(1)
test.BrickColor = BrickColor.new("Hot pink")
task.wait(1)
test.BrickColor = BrickColor.new("Dark Pink")
task.wait(1)
test.BrickColor = BrickColor.new("Earth yellow")
task.wait(1)
local NoTest = game.Workspace.PremiumArea.hehe
local ruh = 10
while ruh == 10 do
NoTest.BrickColor = BrickColor.new("Dark green")
task.wait(1)
NoTest.BrickColor = BrickColor.new("Dark blue")
task.wait(1)
NoTest.BrickColor = BrickColor.new("Really red")
task.wait(1)
NoTest.BrickColor = BrickColor.new("Hot pink")
task.wait(1)
NoTest.BrickColor = BrickColor.new("Dark Pink")
task.wait(1)
NoTest.BrickColor = BrickColor.new("Earth yellow")
task.wait(1)
continue
end
end
`
idk wth is this
i dont even remember sumbitting this?
๐ฅ
but this is an example of how shi i was back then
when i applied for s1
@lapis silo
Atp its like you have a personal vendetta against me
apparently this is s1โ๐ผโ๐ผ
i dont rmember sumbitting
** You are now Level 9! **
this
but i found it in my beginners game
so mabye i did
idk
some dude named eyeball ranked me
Jake said that the stuff above is low s1
nice
yeah but am rusty
yeah you are probably mid s1
While true do
task.wait(1)
color = math.random(#colors)
end
epik
Saying a ranker is wrong just because you don't like his assessment?
Pretty low man.
But I have no problem with you.
As a ranker, I'm unbiased.
Alright good to know, but I was just trying to prove a point that its a bit higher than low s1. Because again, s1 is beginner. Oh and I know full-well that you are unbiased
Some of your code was low S1, some of it was mid-high S1.
The overall consistency was congruent with low S1 to mid S1.
CombatService - low s1
Plane Mover - Mid S1
Sprint - High s1 Attributes
- Monologue System- Mid s1
Ok yeah i guess its prolly there in the ballpark of mid s1
this is not even s1 ๐ญ
@fallen trout u pinged me on it and I just looked at it
By what I know of the rankings at this moment Jakes assessment is correct but I would rank the Plane Mover to low-mid s1, monologue to low-mid s1, and combat service to mid s1
Your naming schemes are very inconsistent and it seems you use RunService WAY more than you really need
You use camelCase for cframeand use PascelCase for Size and Overlaps
That is because when actually calling CFrame
You also abbreviate a lot which is bad practice
Could i see
You want to name your variables exactly what it's being used for
So people kjnow esxactly what everything is used for
This got accepted
so thats why I'm wondering, if thats low s1, whats my code
That should not even be considered s1
From the last time I applied s1 should have a acceptable amount of knowledge with luau's syntax (loops, datatypes, functions, etc.)
If you had better examples you would be s2
You show a good understanding over the language and Roblox's API
But these are still in range with s1
Thank you
There are issues with your code examples and better optimizations that you can do but I feel like you already know that
Is this the code?
This is pretty bad code ngl
What I'm getting is that this cant be higher than low s1
What are you even getting at ๐ญ
that its kinda like there isnt a stable way of ranking
Because there isn't for scripting
They're reworking it rn
But currently they are looking for people who are proficient in Roblox API for s2
Seems good
Gotta keep grinding
after all, it wouldnt be fun if s2 was easy to get would it
ikr
its hard obviously
how did you get s1 ๐ญ ๐
trust the process it was something else i just found this in my beginners game
it was low s1
but better than this
vote this suggestion ;D
why do u think that
you should have aimed for s2 direct s1 is waste of time tbh :((
aiming for s2 > s1
true
you have already made systems so s2 isnt that hard for you to get
jake said your sumbission was low s1 tho they look like mid s1
ehh rankers have their opinions ig
He looked at them again and said the 4 was Mid-high s1
Snicka gave me some really good advice tho
epik, he probably wasnt paying much attention cz like s1 isnt much of a thing for them ig
???
He/She said i have decent understanding of the API but i just need to practice more in roblox studio
The more i can make systems that show better understanding of API, the higher of a chance i have to get s2
if you showed good - mid understanding of API in s1 , s2 wouldnt be much challenging i suppose
I really still feel like with a bit of organisation and Comments, some of my code can definitely reach s2
yeah probably ig
@vernal plank rank
s1
high quality code but nothing complex enough for s2
but plenty of magic numbers in there
that's not good
a number that just doesn't explain anything
here's an example in pseudo code
if button is held then
humanoid.WalkSpeed = 16
else
humanoid.WalkSpeed = 8
end
you don't want that
while its clear this is for sprinting, in other situations it may not be so obvious
instead you want variables to explain what the number is for
local walkSpeed = 8
local sprintSpeed = 16
if button is held then
humanoid.WalkSpeed = sprintSpeed
else
humanoid.WalkSpeed = walkSpeed
end
I seeee
U wanna know something
I didnt do that because i thought people were gonna say its GPT code even if i made it all myself
if someone is gonna accuse you of using GPT because you simply decided to avoid one of the most popular mistakes of programming then they're not fit to judge you
goot to know
also whats pseudocode
not actually functional code, just a more human way of formatting it
like if health is zero then kill player
ahh i see
yup
I have gotten positive contructive criticism so far
I have good code(with some design mistakes) but dont know enough of the API
@slow quarry my first code with OOP
local Names = {
"Rover", "Jacob",
"Liam", "Henry",
"Joseph", "Max"
}
local Ages = {
1,2,3,4,5,6,7,8,9,10,11,12
}
local breed = {"Labrador", "Poodle", "Rottweiler", "Cane Corso", "Tibetian Mastiff"}
local Specialities = {"Police Officer", "Vet", "EMT Medic", "Layer", "Actor"}
local randomName, RandomAge, RandomBreed = Names[math.random(#Names)], Ages[math.random(#Ages)], breed[math.random(#breed)]
local randomSpecialty = Specialities[math.random(#Specialities)]
local Dogs = {}
Dogs.__index = Dogs
--[[function Dogs:GetInfo()
print(self.Name.." Is ".. self.Age.." Years Old, and is a ".. self.Breed)
end]]
function Dogs.new(Name, age, Breed)
local dog = setmetatable({}, Dogs)
dog.Name = Name
dog.Breed = Breed
dog.Age = age
return dog
end
local SpecialDog = setmetatable(Dogs, { __index = Dogs})
SpecialDog.__index = SpecialDog
function SpecialDog:GetInfo()
print(self.Name.." Is ".. self.Age.." Years Old, and is a ".. self.Breed..". His Speciality is: ".. self.Speciality)
end
function SpecialDog.new(Name, age, Breed, Speciality)
local SpecialDog = setmetatable({}, Dogs)
SpecialDog.Name = Name
SpecialDog.Name = Name
SpecialDog.Breed = Breed
SpecialDog.Age = age
SpecialDog.Speciality = Speciality
return SpecialDog
end
local MyCustomDog = SpecialDog.new(randomName, RandomAge, RandomBreed, randomSpecialty)
MyCustomDog:GetInfo()
;compile
wish i couldnt understand but i still get a bit of it, its tables right?
oh wait
this code is a random pet hatching system i think
i still know a bit
ngl comments in code makes it look more professional XD
Bro oop is so interesting
the idea is so smart
but i dont see myself using it in big projects
@hallow ore @vernal plank New metatables stuff, can it pass as High s1
https://pastebin.com/7DRfHjXL
Pastebin.com is the number one paste tool since 2002. Pastebin is a website where you can store text online for a set period of time.
it can
but take my advice because i made that mistake
don't chase OOP and metatable shit unless you're really sure its the best possible approach for a particular scenario
60% of my codebase was OOP and i realized that remaking it in other paradigms would make it look and perform better
I see
Really i just thought that using them would make my code perform better and be 1000x more modular. Now that i have written a few scripts in it i realize that its not as preferrable compared to normal scripting
Apparently it was not enforced but I was told knowledge was needed to even be s1 for basic metatable and luau oop usages
It can be modular but it can sometimes perform lower than other approaches
Welp
Applied with 5 other scripts
Not that im against the rankers decision
but they said these werent even low s1
lemme send more
Its absolutely not s2
removing the guidelines made ranking a far more subjective matter
but you cant say its below low s1
makes me wonder if a lot of S2s including me would be able to get it back if it was removed from them again
For real man
Its just so annoying that i try so damn hard to make scripts and then apparently its Below s1
yup
wait
i updated the sprint i think
I plan on adding things like sliding, leaping, etc
Its not s2 in any way
but man its higher than low s1
Wasnt s1 being a beginner?
@faint cape Give me a sec lemme send them
it was when i applied
ig something changed now
lol
ok
https://pastebin.com/EYxZeR48
https://pastebin.com/7DRfHjXL
https://pastebin.com/gm9T5Exg
https://pastebin.com/hRG79WxQ
@faint cape
Pastebin.com is the number one paste tool since 2002. Pastebin is a website where you can store text online for a set period of time.
Pastebin.com is the number one paste tool since 2002. Pastebin is a website where you can store text online for a set period of time.
Pastebin.com is the number one paste tool since 2002. Pastebin is a website where you can store text online for a set period of time.
Pastebin.com is the number one paste tool since 2002. Pastebin is a website where you can store text online for a set period of time.
there are many flaws
you index replicated storage
you are supposed to use get service
ok its definetely s1 but I can see y its not s2
but you actually did at the top
definitely not s2
it has many errors yeah
I was using Vscode for first time
so all that autocomplete confused me
and the combat animations folder should also be at the top but instead you wait for it every time the function is ran
all of these could be placed at the top
I see
same with this too probably
General beginner mistakes tho
and this
you can place the actual highlight at the top
and clone it every time from its variable
Oh alright
quite a few magic numbers as well
?
magic numbers
numbers that don't mean anything
like this
wtf am i supposed to understand from (5.2, 5.287, 6.8)
pretty random
and when you revisit it later
you'd forget what those numbers are for even if they were actually very important
and possibly change them and break something
if you are collaborating with others they also might change them and break it
what did u make for s2 mob
custom movement
do u have vid
a time and weather system that seamlessly transitions
overtime
what
and changes based on location
its a vector 3
Ohhhh
yea
did u u state machine for them or something
Cuz its a certain size
no
i used state machine for movement
not in my case
because there is no specific state to speak of
tbh with how ranking is rn i dont see you getting s2 if you re-applied
weathers and daytimes are merged
so they're like
halfway night and halfway day
etc
I hate working with cameras I just use someone else's camera util system
anti-cheat is cool
maybe
maybe not
i think im quite capable of easily making a few s2 systems again
they removed everyone's s2 and they had to get it back
so I think he can
i got it back through public ranking
Yeah see now thats good
cuz ur mob mob
yk it was going pretty well when drastic was ranking me
he told me the flaws and everything and i got 4/7 points for s2
but in came pyro
pyro greenlit me for s3 once 
what does that mean
he said he thought i'd be able to get s3 if i tried
Jake is amazing bro
do you think you're s2
tf even makes an s2 nowadays
let alone an s3
not me
lemme show you
all i remember about s3 is that they used techniques like object pooling and cells and octrees and shit
with big focus on security and performance
but all of these sound s2 to me
everything can be copied from a tut
i have a octree and object pooling
not really
and i made everything myself damnit
he meant what you did can be done by watching a tutorial too
not like u copying tutorials
Yeah ik
every game has its own problems that arise from having to communicate between multiple systems
and you wont find a solution for those
its fine bro ive been rejected from s2 too
that was long ago
I sent some real ass code
you have to analyze it yourself
probably 1/7
except my octree and object pooling are lowkey ass
so im glad i got my rank taken away
which is good
it should be challenging
I like a little fun
;)
except im prob never gonna apply
one s2 could be magnitudes better than another
but thats in s1 too
low s1 and high s1
have a GIGANTIC difference
very true
letik and prism
it wasn't though
just a few months ago all s1s were kinda bad
yea
fudufin as well is pretty good
there are all these pro s2's too
i dont think hes s2
And him
y
Imo the worst s2 (still apparently better than me tho๐ ) is letik
type ObjectPool = {
__index: ObjectPool,
_Generator: () -> Instance,
_Managed: {[Instance]: boolean},
_Pool: {Instance},
Objects: number,
Minimum: number,
Maximum: number,
New: (Generator: () -> Instance, Minimum: number, Maximum: number) -> ObjectPool,
Generate: (self: ObjectPool) -> Instance,
Borrow: (self: ObjectPool) -> (Instance, () -> ()),
Release: (self: ObjectPool, Object: Instance) -> ()
}
local ObjectPool = {} :: ObjectPool
ObjectPool.__index = ObjectPool
function ObjectPool.New(Generator: () -> Instance, Minimum:number, Maximum:number):ObjectPool
assert(Minimum and Maximum, "Please provide a minimum and a maximum value")
assert(Minimum <= Maximum, "ObjectPool minimum cannot be greater than its maximum")
local self = setmetatable({
_Generator = Generator,
_Managed = {},
_Pool = {},
Objects = 0,
Minimum = Minimum,
Maximum = Maximum,
}, ObjectPool) :: ObjectPool
for _ = 1, Minimum do
self:Generate()
end
return self
end
function ObjectPool:Generate(): Instance
assert(self.Objects < self.Maximum, "Attempt to generate new object for full ObjectPool")
local Object = self._Generator()
table.insert(self._Pool, Object)
self._Managed[Object] = true
self.Objects += 1
return Object
end
function ObjectPool:Borrow(): (Instance, (self: ObjectPool) ->())
if #self._Pool <= 0 then
self:Generate()
end
local Object = table.remove(self._Pool, 1)::Instance
return Object, function()
self:Release(Object)
end
end
function ObjectPool:Release(Object:BasePart): ()
assert(self._Managed[Object],
"Attempt to return object to ObjectPool that does not manage it")
Object.Position = Vector3.new(math.huge,0,0)
table.insert(self._Pool, Object)
end
return ObjectPool
Some slop code cuz I have to embrass myself a little too
wont share my octree tho
its extra slop
looks OK
not much can be said about it i suppose
its clean and it probably works
its a object pool you cant say much about object pool
true true
@fallen trout take a look at this for example
when i do this
do you understand anything
yes
yes
you multipy pointA's position by a new vector(1,0,1)
which is 1 on x, 0 on y, 1 on z
to set the Y to 0?
why do i multiply y by 0
usually people wont know why you do it
to remove the altitude
idk
thingy
I don't
and in other examples nobody would understand
this is a magic number
its a number but it doesn't explain anything
oh
yh
i flatten the points so i could isolate them on a plane
by using a flatten vector
with no height
thats what I saidd
"remove the altitude thingy"
DO IT
never made an octree myself lol
like i understand the concept but i never applied it to code to judge another person's octree
hm
make your code decently modular for s2
use the best applicable approach when doing something
its a complete module
so only use OOP when you need to
functional programming
DOD
etc
and each work particularly well for different cases
my server script only loads the module and calls the module.Init if it exists everything else is module
understanding when to do what is probably the best way to improve your skills
if you're gonna make your physics system for example (which i dont even know how to do lol)
you want maximum performance
a DOD approach would be just what you need for that
idk what DOD is
ill look into it
do u have a module loader
learn the different programming paradigms
one on the client and one on the server
but they're nothing special
my module loader is only like
function ModuleLoader:Load(Modules:{ModuleScript})
if not IsServer() and not script:GetAttribute("ServerLoaded") then
script:GetAttributeChangedSignal("ServerLoaded"):Wait()
end
for _, Module in Modules do
require(Module)
if Module.Init then
Module.Init()
end
end
if IsServer() then
script:SetAttribute("ServerLoaded", true)
end
end
onyl 1 function
and thats about it
it loads server firstt
then loads client
@faint cape watch this
The creation of this talk was generously sponsored by my employer CerebralFix (https://cerebralfix.com/)
I originally gave this talk at NZGDC 2023. It gives a high level overview of what makes the CPU go fast and slow, and provides some practical examples of how simple techniques can give you big performance returns in your games.
It draws a l...
amazing video on performance and optimization
trust me its worth it
i can barely watch a 1 hour video too but i gladly watched this
so many ads
if the video is that good then id rather let the guy get ad revenue
when you can understand those concepts and talk about them to your rankers
make comments in your script explaining your approach
they'll know they're dealing with someone that deserves that rank
but obviously code speaks louder than words
"they'll know what they're dealing with" ๐บ
so actually apply those concepts to your code
yea
well I can't watch it rn so ill probably do tmrw
i dont wanna watch the video on different days ill probably forget so ill watch all of it tmrw
thanks a bunch btw
np
Lmao absolutely not
I had the knowledge to go to low s2 but was told even if i have s4 knowledge, if i provide an s1 script i am s1
^
ohh yeah
Ok so now i challenge myself to make 4 systems that are 7/7 in one month. I already have the first one planned
you need to wait 2 weeks before applying again
yea but it doesnt matter if you have s4 knowledge if u cant make a s4 script
one month
i said one month
true
gl
thanks
yep
from 8/17/25 onwards everyone shutted themselves
fr
