What are you working on currently? (2024)

Sir this is illegal, this is the roblox engine. What uses do you have for this?

1 Like

I could use this in my upcoming game! Seems pretty cool

I wanted to learn how to make my own VFX, so I created a fire loop:

I’ll definitely be making more sometime soon! Flipbooks are awesome!

11 Likes

how did you do that? i have been trying to make explosion flipbooks but have no idea how

Just finished this short demo for my ui plugin. I will be updating it regularly and the thread is on my profile.

5 Likes

This could take a while. I’m working on things little by little, like importing the animations into Roblox. But I could show some more things. Oh, I forgot to mention, I have a demo up for this right now you can play.

Does this will work well if droplet falls into cone-like surface, where the tip is the bottom? When I tried to do such thing myself, I had such issue.

“Kool-aid” lol.

Looks really good! You did great with it. It doesn’t seem to lag, so nice optimization. :+1:

1 Like

You just have to get a software that can convert motion graphics into a PNG sequence. Then one that turns the sequence into a sprite sheet. There’s plenty of easy tutorials for it.

3 Likes

Just released the first proper update, introducing Data Logs and new creatures! As well as some neat touch ups and improvements!


there are also ikea aliens but you’ll need to find them first.


Also I’m posting the new icon, because I’m proud of it

earlaccessupd1png

[ psst… hey… if you click the icon above… it takes you to the game page… i thouht that was cool…! ]

4 Likes

It’s not made to work on 3d shapes, It’s only made to work on rectangular flat surfaces. The reason for this is for simplicity, but also I’d imagine it’d be a lot more performance heavy which is not worth it for such a minor effect.

Even with just parts it’s possible to make such shape.

___      ___
\  \    /  /
 \  \  /  /
  \__\/__/

(Hope you understood which one)

getting ready to migrate to unreal engine 5 due to a lack of linux support.

2 Likes

ripping my hair out trying to get a command widget working (i suck at everything)

Just made “void explosion trace” thingy to create decals on parts’ surfaces


Ngl I felt smart after finishing it, appears to be I still remember some math

I also drew this in paint to visualize a math problem lol, but it helps a lot actually

3 Likes

i was mainly asking how to make the particle / explosion, not how to turn it into a spritesheet

I spent 48 minutes clearing the first level. Felt like Aliens meet Doom Eternal. Keep us posted, this game is amazing!

Before I moved, I made a game icon for the game aswell

Now since I have no wifi, the game will be stalled for now. :upside_down_face:

9 Likes

porting gold source sprites as a part of my mapping kit of my upcoming game.

Half life sprites come with black backgrounds, as they are rendered with additive effect. This is a problem with roblox as you cant really edit how particles render in the engine

i take the original .spr file, convert, edit a proper transperancy in photoshop, then using a script automation i wrote, i slice and crop each individual frame at the click of a button and save as png.

for converting the pngs to flipbooks that roblox can use, i edited the contact sheet ii automation on photoshop. The original automation automatically resized frames to fit within cells and that lead to weird visual looks.

with my script, i keep the original size of the individual frames and, to also for overcoming roblox’s nonsensical flipbook restrictions, i repeat the sprites until all of the cells are filled for proper looking loops.

i’ve still got a lot of sprites to port, but taking time to script the automations will save me a lot more time for the upcoming ports.
Animation2


editing the transperancy in ps

running the automation and converting to flipbook (seizure warning)

Animation12

6 Likes

Improved the script and made it into a module, it’s officially called “CharEngine” now, not sure what other features i’ll add to it atm tho.

Here’s what it looks like (had to compress the first video :skull:):

Source Code
local charEngine = {}

charEngine.__index = charEngine

charEngine.connections = {}

function charEngine:FadeInText(object, duration, properties, tweenInfo)

	table.insert(charEngine.connections, task.spawn(coroutine.create(function()

		if object and object:IsA("TextLabel") or object:IsA("TextButton") or object:IsA("TextBox") then

			-- placeholder variables

			local passedTweenInfo, fadeInTween

			if tweenInfo and typeof(tweenInfo) == "TweenInfo" then
				passedTweenInfo = TweenInfo.new(
					tweenInfo.Time,
					tweenInfo.EasingStyle,
					tweenInfo.EasingDirection,
					tweenInfo.RepeatCount,
					tweenInfo.Reverses,
					.075
				)
			else
				passedTweenInfo = TweenInfo.new(.5, Enum.EasingStyle.Exponential, Enum.EasingDirection.Out, 0, false, .075)	
			end

			-- getting the text and text transparency.

			local originalText = object.Text

			local originalTextTransparency = object.TextTransparency

			object.TextTransparency = 1

			-- creating a folder inside the object's parent to store the individual characters.

			local characterStorage = Instance.new("Folder", object.Parent)

			characterStorage.Name = "CharacterStorage"

			-- loops through each character in the text and makes a new UI text object to fade in.

			for iteration = 1, #object.Text do

				task.wait(duration)

				local character = Instance.fromExisting(object)

				character.Parent = characterStorage

				character.RichText = true

				character.BackgroundTransparency = 1

				local originalProperties = {}

				local scale

				if properties then

					for i, v in pairs(properties) do

						pcall(function()

							if i ~= "TextTransparency" and object[i] then

								originalProperties[i] = object[i]

								character[i] = v

							end

						end)

					end

				end

				-- formula i came up with to get the individual characters.

				if iteration == 1 then
					character.Text = 
						originalText:sub(1,1)..
						"<font transparency=\"1\">"..
						originalText:sub(2,#originalText)..
						"</font>"
				else
					character.Text =
						"<font transparency=\"1\">"..
						originalText:sub(1, iteration - 1)..
						"</font>"..
						originalText:sub(iteration, iteration)..
						"<font transparency=\"1\">"..
						originalText:sub(iteration + 1, #originalText)..
						"</font>"
				end

				-- waits before playing the fade in tween so no weird issues occur.

				fadeInTween = game:GetService("TweenService"):Create(
					character,
					passedTweenInfo,
					{TextTransparency = originalTextTransparency}
				)

				fadeInTween:Play()

				for i, v in pairs(originalProperties) do

					game:GetService("TweenService"):Create(
						character,
						passedTweenInfo,
						{[i] = v}
					):Play()

				end

			end

			for i, v in pairs(characterStorage:GetChildren()) do

				table.insert(charEngine.connections, task.spawn(coroutine.create(function()

					task.wait(fadeInTween.TweenInfo.Time * 1.325)

					game:GetService("TweenService"):Create(
						v,
						passedTweenInfo,
						{TextTransparency = 1}
					):Play()

				end)))

			end

			if fadeInTween then
				fadeInTween.Completed:Wait()
			end

			local tween = game:GetService("TweenService"):Create(
				object,
				passedTweenInfo,
				{TextTransparency = 0}
			)

			tween:Play()

			tween.Completed:Wait()

			task.wait(.125)

			characterStorage:Destroy()

		end

	end)))

end

function charEngine:Destroy()

	local interval = 1

	for _, i in pairs(charEngine.connections) do

		if typeof(i) == "RBXScriptConnection" then
			i:Disconnect()
		elseif typeof(i) == "thread" then

			task.cancel(i)

			coroutine.close(i)

		end

		charEngine.connections[interval] = nil

		interval += 1

	end

end

return charEngine
Examples

Basic

local CharEngine = require(workspace.CharEngine)

local properties = 	{
	["AnchorPoint"] = Vector2.new(1, 1),
	["Position"] = UDim2.fromScale(.75, .25),
	["Rotation"] = -30
}

local tweenInfo = TweenInfo.new(2, Enum.EasingStyle.Exponential, Enum.EasingDirection.Out) 

CharEngine:FadeInText(
	game:GetService("StarterGui").Container.TextBox2, -- UI Text Object
	.05, -- Duration Between Fade Ins
	properties, -- Properties To Set Character To Before Fading Into Position
	tweenInfo -- Tween Info
)

Multiple:

local CharEngine = require(workspace.CharEngine)

local rotation = math.random(-45, 45)

local properties = 	{
	["AnchorPoint"] = Vector2.new(.5, .5),
	["Position"] = UDim2.fromScale(.5, .5),
	["Rotation"] = rotation
}

local tweenInfo = TweenInfo.new(2, Enum.EasingStyle.Exponential, Enum.EasingDirection.Out) 

rotation = math.random(-45, 45)

CharEngine:FadeInText(
	game:GetService("StarterGui").Container.TextBox, -- UI Text Object
	.05, -- Duration Between Fade Ins
	properties, -- Properties To Set Character To Before Fading Into Position
	tweenInfo -- Tween Info
)

rotation = math.random(-45, 45)

CharEngine:FadeInText(
	game:GetService("StarterGui").Container.TextBox2, 
	.05,
	properties,
	tweenInfo
)

rotation = math.random(-45, 45)

CharEngine:FadeInText(
	game:GetService("StarterGui").Container.TextBox3,
	.05,
	properties,
	tweenInfo
)
2 Likes