2024 Year in Review: Buoyant Balloons, Fine-Tuned Audio, and More Grass!

Honored to be featured here, super happy to have this new audio api it really feels like a dream come true that these apis are even available. 12 year old me would never have guessed anything like this was possible. :slight_smile:

15 Likes

Nuh uh, it’s under grass length lmao…

On another topic:
Roblox continuing to prove how utterly meaningless grass length was, I will state again, for 4 years of work, only to get a propertie that changes the length of grass is embarrassing, you can get an intern to program a whole grass custom texture and rendering system for other objects like bushes, but instead all you got was grass length :skull:

18 Likes

Thank you for including my module!! To give a better context, it’s not exactly a plugin, rather a module that allows you to make classes and objects similar to C++.
(Though I am thinking of creating a plugin that shows the amount of objects created from the module so you can track how much memory has been allocated and how active are the objects.)

13 Likes

As a fellow confused fellow: I’m fairly certain Tayfun’s responses were mostly generated by an AI. The way they all end with a (lexical) wink despite going totally off-track is incredibly reminiscent of AI hallucinations. It makes sense considering he was supposed to be under the AI textures tab, but that doesn’t explain why he was under the grass length tab to begin with…

13 Likes

I do not want to get featured.
I am confused by your game being in the wrong category and even more so by your responses.

If you care to take a look in the posts on this topic, it is not my opinion that your post is listed as example for the GrassLength update. It is. Other people have noticed too.

@frecklesnspectacles I would like to see an actual example of the Grass Update being used, as clearly there has been some sort of misunderstanding here. TAYFUN7 is only showing more of the AI Material Generator.

16 Likes

Much love from the Doodle Deals team, thank you so much for featuring us!! EditableImage APIs helped so much in improving our overall performance and we hope to continue making more updates that take advantage of this feature.

15 Likes

Pinnacle of fashion… yes, yes.

16 Likes

Will Native Codegen ever be enabled on the client? As it seems it only works for server now and in studio. It would pretty much speed up my calculations as i am already seeing a increase in Studio.

15 Likes

I actually made a particle emitter class with a reverse property
so its not too hard of a feat

14 Likes

Can you show me and tell me how you made it?

13 Likes

I wont give you the full script since: 1. I forgot what place file it’s even in (lol) and 2. I think it’d be cool for you to figure it out yourself

The basis of my emitter class was a mesh plane with a surface gui on top of it. This works best imo and is fairly optimized, since planes only have four vertices

heres a rough look at what I did. this code by itself wont work, its just to show you the calculations and process you can use

local rand = Random.new()

function randInRange(range:NumberRange) : number
  return rand:NextNumber() * (range.Max-range.Min) + range.Min
end

function inSequence(t:number, seq)
  if t == 0 then
    return seq.Keypoints[1].Value
  elseif t == 1 then
    return seq.Keypoints[#seq.Keypoints].Value
  end

  for i, thisPoint in seq.Keypoints do
    local nextPoint = seq.Keypoints[i+1]
    if t < thisPoint.Time or t > nextPoint.Time then continue end

    local alpha = (t - thisPoint.Time) / (nextPoint.Time - thisPoint.Time)

      if typeof(seq) == "NumberSequence" then
        return thisPoint.Value + (nextPoint.Value - thisPoint.Value) * alpha
      else 
        return thisPoint.Value:Lerp(nextPoint.Value, alpha)
      end
  end
end

function emitter:Emit()
    local nPlane = planeMesh:Clone()
    local imageLabel = nPlane.SurfaceGui.ImageLabel
    -- example of configuring the particle properties
    imageLabel.Image = properties.Texture
    imageLabel.ImageColor3 = properties.Color

    -- example of the internal data for the particle like lifetime and other variable properties

    local speed, lifeTime = randInRange(properties.LifeTime), randInRange(properties.Speed)
    local entry = {
      Object = nPlane,
      Speed = speed,
      LifeTime = lifeTime,
      Rotation = randInRange(properties.Rotation)
      Origin = origin,
      Goal = origin + rand:NextUnitVector * speed * lifeTime,
      StartTime = time(),
    }

    table.insert(particleTbl, entry)

    nPlane.Parent = workspace
    game.Debris:AddItem(nPlane, entry.LifeTime)
end

function emitter:Step(particleTbl)

  if time() - lastEmission >= 1/rate then -- create a particle
    lastEmission = time()
    emitter:Emit()
  end

  for i, v in particleTbl do
    local alpha = (time() - v.StartTime) / v.LifeTime 
    if properties.Reversed then
      alpha = 1-alpha -- subtracting alpha from one flips a normalized number
    end

    local pos = v.Origin:Lerp(v.Goal, alpha)

    v.Object.SurfaceGui.ImageLabel.Color = inSequence(alpha, properties.Color)
    v.Object.Size = Vector3.one * inSequence(alpha, properties.Size) * Vector3.new(1,1,0) -- planes are 2d so remove the depth axis
    v.Object.CFrame = CFrame.new(pos) * CFrame.fromOrientation(CFrame.lookAt(cam.Position, pos):ToOrientation()) -- look at the camera 
  end
end)

random tangent: I also tried implementing a way to sequence the speed of particles (just like size and transparency), which made reverse trajectory a lot harder to achieve since calculating the end position of an object with variable speed over lifetime is… interesting

15 Likes

This is something great, good job on this. Now I hope roblox adds it in the engine by default. Something like allowing the TimeScale property to be negative.

17 Likes

agreed
i also wish they’d implement a framerate since I also did that lol

but i think the biggest thing people want is a collision system, since most particle systems (like unity’s and unreal engine’s) have collision support

but I dont believe I attempted a physics implementation, I’d assume its quite hard

17 Likes

People have asked that too much now I think.

I once did that by just getting parts with no gravity. (It didn’t work out and was laggy lol) (I was a newbie back then.)

18 Likes

I once did that by just getting parts with no gravity. (It didn’t work out and was laggy lol) (I was a newbie back then.)

lol nice
I think the first thing I’d figure out is how to replicate a particle’s linear path with force/velocity instead of position setting. From what I’ve read that requires some calculus knowledge and I’m not aboutta learn that :sob: so we’d def need it from roblox

16 Likes

Did i hear someone say “particles” and “collisions”? You might wanna check this out :DD
Collideable Particles Module

17 Likes

very cool! I’ll have to check this lib out

17 Likes

Yes .now I can touch grass in Roblox!

I don’t need to go outside now!

17 Likes

Do you think we could costumise the balloons behavior based on wind or player interactions in the future like players move it more than the wind or is the behaviour set to a certain level and we can’t costumise it.

12 Likes

The fact these guys promote cringe is just not okay.

2 Likes