§ How to · with Forge AI
How to make a Roblox killfeed (with AI)
By Sametcan Tasgiran, Founder & Developer·Published ·Updated
A Roblox killfeed needs four pieces: kill detection from any damage source, a corner notification UI, kill streak escalation, and weapon/team icons. Forge AI generates all four in 32 seconds.
3 files · 110 lines · 32 seconds · 1 credit. Animated entry, auto-fade, team-color coded.
Universal kill detection
Hooks into any Humanoid death and reads the LastDamageSource attribute (set by the damage system). Works with swords, guns, NPCs, environment hazards.
Corner notification UI
Top-right stack of 5 most recent kills. New kills slide in from the right, push older ones down, auto-fade after 5 seconds.
Kill streak escalation
Tracks consecutive kills per player. 3-kill 'Triple', 5-kill 'Killing Spree', 10-kill 'Rampage'. Each tier has a unique audio cue and feed color.
Weapon icons
Reads the weapon's ImageId attribute. The icon appears between killer and victim names ('PlayerA [sword-icon] PlayerB'). Custom icons supported per weapon.
Team color coding
Killer name in their team color, victim in theirs. Friendly fire shown with a warning glyph. Self-eliminations ('PlayerA [skull] PlayerA' for void deaths) handled.
Headshot indicator
Special icon (red dot) for headshot kills. Damage system sets a 'headshot' flag in LastDamageSource — killfeed reads it and renders the icon.
Files Forge AI ships for this prompt
3 files · 110 lines · 32 seconds · 1 credit
ServerScriptService/KillfeedServer.lua
Death detection, streak tracking, broadcast to clients
48 lines
ReplicatedStorage/Remotes/KillfeedEvent
Server → all clients on kill
instance
StarterGui/KillfeedUI.lua
Corner stack, slide-in, auto-fade, icon rendering
62 lines
Sample output: ServerScriptService/KillfeedServer.lua
--!strict
-- ServerScriptService/KillfeedServer.lua (Forge AI · excerpt)
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local KillfeedEvent = ReplicatedStorage:WaitForChild("Remotes"):WaitForChild("KillfeedEvent")
local STREAK_TIERS = {
[3] = { label = "TRIPLE", color = Color3.fromRGB(255, 200, 0) },
[5] = { label = "KILLING SPREE", color = Color3.fromRGB(255, 120, 0) },
[10] = { label = "RAMPAGE", color = Color3.fromRGB(255, 0, 0) },
}
local streaks: { [Player]: number } = {}
local function onCharacter(player: Player, character: Model)
local humanoid = character:WaitForChild("Humanoid") :: Humanoid
humanoid.Died:Connect(function()
local src = character:GetAttribute("LastDamageSource")
local killerId = character:GetAttribute("LastDamageKillerId")
local weapon = character:GetAttribute("LastDamageWeapon") or "fist"
local headshot = character:GetAttribute("LastDamageHeadshot") == true
streaks[player] = nil -- reset victim's streak
local killer = killerId and Players:GetPlayerByUserId(killerId)
if killer and killer ~= player then
streaks[killer] = (streaks[killer] or 0) + 1
end
local streakInfo = killer and STREAK_TIERS[streaks[killer] or 0]
KillfeedEvent:FireAllClients({
killer = killer and killer.Name,
victim = player.Name,
weapon = weapon,
headshot = headshot,
streakLabel = streakInfo and streakInfo.label,
streakColor = streakInfo and streakInfo.color,
})
end)
end
Players.PlayerAdded:Connect(function(player)
player.CharacterAdded:Connect(function(c) onCharacter(player, c) end)
end)Building a Roblox killfeed
Killfeeds are deceptively important. They tell players who is winning, what is meta, and where the action is. A bad killfeed (laggy, unclear, missing data) makes a PvP game feel unresponsive. A good killfeed makes every kill feel like a celebration. Forge AI ships the celebration version.
The Forge AI killfeed prompt produces a 3-file system in 32 seconds. The whole system reads from a standard attribute pattern: LastDamageSource, LastDamageKillerId, LastDamageWeapon, LastDamageHeadshot. As long as your damage system sets these attributes (which Forge's combat, gun, and boss systems all do), the killfeed works with zero integration.
Kill streak escalation is the dopamine layer. Three consecutive kills = TRIPLE, five = KILLING SPREE, ten = RAMPAGE. Each tier has a unique color and an audio cue. The streak resets on death. This pattern is borrowed directly from Halo and CS — it works because players know the references and feel the achievement.
Weapon icons close the information gap. 'PlayerA killed PlayerB' tells you who but not how. 'PlayerA [sword] PlayerB' shows the weapon at a glance, which lets players spot meta weapons in real time. Custom icons are read from the weapon Tool's ImageId attribute — no central registry needed.
Team coloring and the headshot indicator are the polish details. Player names in their team color make spectating clear. The headshot dot rewards precision and makes those moments feel earned. Together, the killfeed transforms a UI element from forgotten chrome into a key engagement layer.
See more on the Luau generator, the game builder, or browse the full blog.
Frequently asked
How does the killfeed know what weapon was used?+
The damage system (combat, gun, etc.) sets a LastDamageWeapon attribute on the victim before applying damage. The killfeed reads it on Humanoid.Died. This pattern works with any Forge-generated combat system out of the box.
Can I customize the streak tier names?+
Yes. STREAK_TIERS is a top-of-file table — add/remove tiers, change labels, colors. Forge generates the default with 3 tiers; you can extend to as many as you want.
What about environment kills (lava, void, falling)?+
Environment damage sources set LastDamageSource to a non-player ID. KillfeedServer interprets this and shows the entry as 'PlayerA [environment-icon]'. The killer name is replaced with the source ('Lava', 'Void', 'Falling damage').
Can I add team-colored names?+
Yes. The KillfeedEvent payload includes killer.TeamColor and victim.TeamColor. KillfeedUI reads them and colors the names accordingly. Forge wires this if your game has teams.
How long do entries stay on screen?+
5 seconds by default. Configurable in KillfeedUI.lua. The stack holds the 5 most recent kills — older ones get pushed out when new ones arrive.
Related Forge AI prompts
Roblox combat system
5 files · 140 lines · 42 seconds · 1 credit. Drop into your place and press Play.
Roblox FPS
14 files · 480 lines · 2m 35s · 1 credit. Three weapons by default (rifle, shotgun, pistol) — extensible.
Roblox respawn system
4 files · 130 lines · 38 seconds · 1 credit. Replaces Roblox default respawn with a controlled flow.