Didn’t know that, will definitely try this since I use a lot of those throughout my code. Thanks for advice!
Doesn’t matter, I got it to work thanks to you man. It spawns and despawns without any frame drops now!
Thanks for the help!
I was able to knock activity down from 15% to 13% so thanks for the advice! Will remember to do that in the future.
You can do this but I found it to be a little slower. Setting CFrame to 99999 works better in my opinion.
You might also do a global hash table of all the possible Angles for your CFrame and then only change the hash table if weather conditions change.
You should checkout this module: PartCache, for all your quick part-creation needs It should simplify the caching process.
It was created for efficiently “creating” many projectiles inside your game. But can be implemented for other stuff to.
You do realize that the optimizations you mentioned aren’t even relevant in Luau in the first place? Luau VM is way more optimized than Lua currently is.
Benchmark:
local sin = math.sin
function foo (x)
for i = 1, 1000000 do
x = x + math.sin(i)
end
return x
end
function foos (x)
for i = 1, 1000000 do
x = x + sin(i)
end
return x
end
e = os.clock()
foo(1)
print(("Not Cached: %s"):format(os.clock() - e))
e = os.clock()
foos(2)
print(("Not Cached: %s"):format(os.clock() - e))
Cached: 0.036631599999964
Not Cached: 0.036271200002375
Could you make the grass script a plugin or open sourced? Because it looks cool. And Looks cooler than when I use boatbomber’s WindShake module on grass!
I’ll make it open sourced if I can get the script activity below 5%.
As it stands I’ve added better working grass since this post, but it runs at the cost of 15-17% script Activity.
Heavily researching how to reduce this number, but having very little luck at the moment.
Any progress on lowering the activity?
I have lowered it from 15-17% to 9.5-10.5%
Still working on it, but it’s difficult since there isn’t many people willing to put time into figuring it out with me. I’m looking into a new way to simulate a similar style with the movement code by changing it so that 6-8 patches of the grass all move in sink, meaning it’ll take up less activity since it won’t be individual. However I’ll only pursue it after if it looks as good as the current.
You have an enormous amount of if/elseif statements, is there any way you could reduce on those?
Check out the Benchmark plugin, I think it has a profiler to see which operations in your code take up the most.
I have made changes to it since then. I’ll quickly change them.
Is the grass spawned on the server or client? You can switch to spawning the grass entirely on the client for better activity.
It’s on client, since I didn’t want players to see another player’s area of grass which would cause performance issues and wouldn’t look right.
I’ve experimented with a new method for the code, which makes the tick rate a lot more smooth and decreased script activity from 9.5%-10.5% to 6%-7.5%. Very close to finalizing it, but obviously the last 2% needed will still take a while to get working.
Any more progress on lowering the script activity?
I’ve gotten it to as low as 5.7%, but I’ve found that it isn’t possible for me to lower it anymore as I’m using BulkMoveTo which is the lowest cost way of moving objects from my research.
I’ve moved onto experimenting with finding ways to lower the need to use it. I don’t think that I’ll make it into a module script as I don’t have anymore patience for this system and need to move forward with what I intended to do after finishing this. When I release the open source it will be the way it works now with little explanation on how it works but rather how to use it.
I am no expert to programming/coding so this system will probably seem flawed to such experts.
I’m delaying its release to add in a stepping feature where when a player steps on the grass it gets flattened for a select time.
It will look good in my opinion, and in theory should reduce the script activity a bit more.
Will you release it soon? Talking about within 3 days