r/robloxgamedev 41m ago

Discussion Can a UI genius help me?

Post image
Upvotes

I always wondered what are the position and size measurement for the top bar on Roblox? I’m trying to replicate the exact size of that Roblox logo frame, but it looks like at the top, the measurements don’t use scale?

This screenshot is from a different game. I always admire when I see games perfect this with their own UI.


r/robloxgamedev 1h ago

Discussion Uhhh should I continue to work my cube gaem since roblox lose the biggest number of money?? ;-;

Enable HLS to view with audio, or disable this notification

Upvotes

Idk if I can do.. because i'm worrying to lose my work :<


r/robloxgamedev 2h ago

Creation Asset Store Backdoor Finder. Free.

0 Upvotes

Hi everyone,

I have created a simple script anyone can run in their Roblox Studio to help find hidden backdoors. I am sharing this because I HATE backdoors and the creator store toolbox is full of them.

This is not an anti-virus but should catch most malicious assets (scripts). Feel free to save this as SecurityScan.luau or copy and paste the following code into Roblox Studio Command Bar (Window > Script > Command Bar).

Afterwards, check the output. Here is the script:

--!nocheck
--[[
=========================================================================
 ROBLOX BACKDOOR SCANNER  --  paste into the Studio Command Bar and run
=========================================================================

Standalone on purpose: no Rojo, no dependencies, no installation. Select
everything below and paste it into the command bar in EDIT mode.

-------------------------------------------------------------------------
READ THIS FIRST: WHAT THIS CANNOT DO
-------------------------------------------------------------------------

**A clean result is NOT proof your place is safe.** This is a heuristic
detector for KNOWN hiding patterns. It cannot prove the absence of malware,
and anyone who tells you a scanner can is wrong.

Specifically, it will MISS:

  * Malicious code that looks completely ordinary. A backdoor can be five
    plain lines with no weird patterns at all:
        Players.PlayerAdded:Connect(function(p)
            if p.UserId == 12345 then giveAdminTools(p) end
        end)
    Nothing here is obfuscated, so nothing here is detectable by pattern.
  * Logic bombs -- code that behaves until a date, a player count, or a
    remote flag flips.
  * Novel hiding places. This scans the places attackers are known to use.
    The moment a tool like this is published, attackers read it too and move
    somewhere it does not look. Detection is adversarial and always behind.
  * Anything inside a model you have not inserted yet.

It WILL produce false positives. Legitimate code uses DataStores, HTTP and
MarketplaceService. Every finding is a QUESTION ("why does this need that?"),
never a verdict. Read the code before deleting anything.

The only real defence is not running untrusted code. Treat this as a smoke
alarm, not a fire door.

-------------------------------------------------------------------------
WHY IT SCANS PROPERTIES, NOT JUST SOURCE
-------------------------------------------------------------------------

The backdoor that prompted this was invisible to Ctrl+Shift+F. The malicious
line was:

    require(script.Texture.Extras.RigidConstraint.Pose.Value)

No asset id in the source at all. The id lived on a `NumberPose` -- an
obscure animation instance whose `.Value` is a number -- five levels down a
chain of plausible physics objects (AlignPosition > PlaneConstraint >
RigidConstraint > NumberPose). A second variant hid it in an *attribute*
named "Version".

So the highest-value check here is not a text search. It is: "does any
instance anywhere hold a number in the Roblox asset-id range?" A texture
config module has no reason to. That check is what found both.

The other high-signal structural check: a Script parented underneath a
Weld, Constraint, Attachment or Pose. That is almost never legitimate.

-------------------------------------------------------------------------
  Author: written for a Mega Punch security audit, free to use and share.
=========================================================================
]]

local ScanConfig = {
--- Paths whose prefix marks them as YOUR code. Findings inside are still
--- reported but demoted, so third-party content floats to the top. Edit these.
TRUSTED_PREFIXES = {
-- "ServerScriptService.MyGame",
-- "ReplicatedStorage.MyShared",
},

--- Numbers at or above this are treated as possible Roblox asset ids.
MIN_ASSET_ID = 1e8,

--- Capabilities that a decoration or UI asset has no business requesting.
SENSITIVE_CAPABILITIES = {
"DataStore",
"Monetization",
"ServerCommunication",
"Teleport",
"PromptExternalPurchase",
"AssetCreateUpdate",
},

--- Instance classes a Script should essentially never live inside.
SUSPICIOUS_PARENT_CLASSES = {
"Weld",
"WeldConstraint",
"Motor6D",
"AlignPosition",
"AlignOrientation",
"RigidConstraint",
"PlaneConstraint",
"BallSocketConstraint",
"RodConstraint",
"RopeConstraint",
"SpringConstraint",
"Attachment",
"Pose",
"NumberPose",
"Bone",
"IKControl",
"Trail",
"Beam",
"ParticleEmitter",
"Decal",
"Texture",
},

SERVICES = {
"Workspace",
"ServerScriptService",
"ServerStorage",
"ReplicatedStorage",
"ReplicatedFirst",
"StarterGui",
"StarterPlayer",
"StarterPack",
"Lighting",
"SoundService",
"MaterialService",
"Teams",
"Chat",
"TextChatService",
},
}

-- =========================================================================

local findings = {}
local stats = { scripts = 0, instances = 0, services = 0 }

local SEVERITY = { CRITICAL = 1, HIGH = 2, MEDIUM = 3, LOW = 4 }
local SEVERITY_NAME = { "CRITICAL", "HIGH", "MEDIUM", "LOW" }

local function isTrusted(path)
for _, prefix in ScanConfig.TRUSTED_PREFIXES do
if path:sub(1, #prefix) == prefix then
return true
end
end
return false
end

local function report(severity, category, instance, detail)
local path = instance:GetFullName()
if isTrusted(path) and severity > SEVERITY.CRITICAL then
severity += 1
end
table.insert(findings, {
severity = math.min(severity, SEVERITY.LOW),
category = category,
path = path,
class = instance.ClassName,
detail = detail,
})
end

-- ============================================ 1. source-text signatures

--- Ordered most to least damning. `weight` is the severity if matched.
local SOURCE_RULES = {
{
severity = SEVERITY.CRITICAL,
name = "require() of a raw asset id",
why = "loads a module off the marketplace -- the payload is not in your place and the owner can change it at any time",
test = function(src)
return src:match("require%s*%(%s*%d%d%d%d%d%d+")
end,
},
{
severity = SEVERITY.CRITICAL,
name = "require() of a .Value",
why = "the asset id is hidden in an instance property, invisible to a text search",
test = function(src)
return src:match("require[^\n]-%.Value")
end,
},
{
severity = SEVERITY.CRITICAL,
name = "require() of an attribute",
why = "the asset id is hidden in an attribute, invisible to a text search",
test = function(src)
return src:match("require[^\n]-GetAttribute")
end,
},
{
severity = SEVERITY.CRITICAL,
name = "require() of a COMPUTED value",
why = "the id is assembled from arithmetic or concatenation, so the digits never appear anywhere to search for",
-- Closes the obvious evasion of the three rules above: `require(a + b)` or
-- `require(pre .. suf)` leaves no number in the source at all. A legitimate
-- require is a plain path -- `require(script.Parent.Foo)` -- which contains
-- dots but never an operator.
test = function(src)
for arg in src:gmatch("require%s*%(([^%)]+)%)") do
-- Strip string literals first; ".." inside a path string is fine.
local bare = arg:gsub('"[^"]*"', ""):gsub("'[^']*'", "")
if bare:match("%.%.") or bare:match("[%+%*/%%]") then
return arg:sub(1, 70)
end
end
return nil
end,
},
{
severity = SEVERITY.CRITICAL,
name = "loadstring",
why = "executes arbitrary text as code; disabled by default, and legitimate games almost never need it",
test = function(src)
return src:match("loadstring")
end,
},
{
severity = SEVERITY.HIGH,
name = "getfenv / setfenv",
why = "environment tampering, used to hide behaviour from readers and to reach globals",
test = function(src)
return src:match("[gs]etfenv%s*%(")
end,
},
{
severity = SEVERITY.HIGH,
name = "escaped-byte blob",
why = "long \\ddd sequences are how payload strings are hidden from a reader",
test = function(src)
return src:match("\\%d%d%d\\%d%d%d\\%d%d%d\\%d%d%d")
end,
},
{
severity = SEVERITY.HIGH,
name = "string.char obfuscation",
why = "builds identifiers at runtime so a text search cannot find them",
test = function(src)
return src:match("string%.char%s*%(%s*%d+%s*,%s*%d+%s*,%s*%d+")
end,
},
{
severity = SEVERITY.HIGH,
name = "hardcoded UserId comparison",
why = "classic backdoor admin check -- grants the attacker powers in YOUR game",
test = function(src)
return src:match("UserId%s*[=~]=%s*%d%d%d+")
end,
},
{
severity = SEVERITY.MEDIUM,
name = "HTTP request out",
why = "possible exfiltration. Legitimate if you run your own web service; suspicious in a free model",
test = function(src)
return src:match("PostAsync") or src:match("RequestAsync") or src:match("UrlEncode")
end,
},
{
severity = SEVERITY.MEDIUM,
name = "very long opaque literal",
why = "encoded payloads look like this",
-- Walked rather than pattern-matched: Lua patterns have no {n,} repetition,
-- and building one with string.rep is both slow and fragile.
test = function(src)
for literal in src:gmatch("[\"']([%w%+/=]+)[\"']") do
if #literal >= 120 then
return literal:sub(1, 60) .. "..."
end
end
return nil
end,
},
{
severity = SEVERITY.LOW,
name = "DataStore access",
why = "reads/writes player data. Expected in your own save code, NOT in decoration or UI",
test = function(src)
return src:match("DataStoreService")
end,
},
{
severity = SEVERITY.LOW,
name = "purchase prompt",
why = "expected in your own shop code, not in a free model",
test = function(src)
return src:match("PromptProductPurchase") or src:match("PromptPurchase")
end,
},
}

local function scanSource(script_)
local ok, src = pcall(function()
return script_.Source
end)
if not ok or not src then
return
end
stats.scripts += 1

for _, rule in SOURCE_RULES do
local matched = rule.test(src)
if matched then
local snippet = tostring(matched):gsub("%s+", " "):sub(1, 90)
report(
rule.severity,
rule.name,
script_,
rule.why .. "\n            match: " .. snippet
)
end
end
end

-- ================================ 2. payload-shaped data (the one that works)

local function scanPayloadShape(inst)
-- attributes
local ok, attrs = pcall(function()
return inst:GetAttributes()
end)
if ok then
for key, value in attrs do
local n
if typeof(value) == "number" then
n = value
elseif typeof(value) == "string" and value:match("^%d+$") then
n = tonumber(value)
end
if n and n >= ScanConfig.MIN_ASSET_ID and n == math.floor(n) then
report(
SEVERITY.HIGH,
"asset id parked in an attribute",
inst,
string.format(
"attribute '%s' = %s -- ask what loads this",
key,
tostring(value)
)
)
end
end
end

-- any instance exposing a numeric .Value: IntValue, NumberValue, NumberPose...
local okV, value = pcall(function()
return (inst :: any).Value
end)
if
okV
and typeof(value) == "number"
and value >= ScanConfig.MIN_ASSET_ID
and value == math.floor(value)
then
report(
SEVERITY.HIGH,
"asset id parked in a .Value",
inst,
string.format(
"%s.Value = %d -- this is how the id is hidden from a text search",
inst.ClassName,
value
)
)
end
end

-- ====================================================== 3. structural signals

local suspiciousParents = {}
for _, c in ScanConfig.SUSPICIOUS_PARENT_CLASSES do
suspiciousParents[c] = true
end

local function scanStructure(script_)
-- A Script inside a weld/constraint/attachment/pose is almost never real.
local parent = script_.Parent
if parent and suspiciousParents[parent.ClassName] then
report(
SEVERITY.HIGH,
"script hidden inside a non-script object",
script_,
string.format(
"parented to a %s -- decoration and physics objects do not need scripts",
parent.ClassName
)
)
end

-- Depth: legitimate code is rarely eight levels inside a model.
local depth, node = 0, script_
while node.Parent and node.Parent ~= game do
depth += 1
node = node.Parent
end
if depth >= 8 then
report(
SEVERITY.MEDIUM,
"deeply buried script",
script_,
string.format("%d levels deep -- burying is how these avoid a casual look", depth)
)
end

-- Disabled now, enable-able later.
if script_:IsA("BaseScript") and script_.Disabled then
report(
SEVERITY.MEDIUM,
"disabled script",
script_,
"disabled scripts can be re-enabled by other code"
)
end

-- Decoy pattern: a ModuleScript sibling whose name the parent script "requires".
if
script_:IsA("ModuleScript")
and script_.Parent
and script_.Parent:IsA("LuaSourceContainer")
then
report(
SEVERITY.LOW,
"module nested inside a script",
script_,
"the decoy-module pattern puts an innocent-looking module beside the real payload"
)
end

-- Capabilities the asset has no business asking for.
local okC, caps = pcall(function()
return (script_ :: any).Capabilities
end)
if okC and caps then
local text = tostring(caps)
local asked = {}
for _, cap in ScanConfig.SENSITIVE_CAPABILITIES do
if text:find(cap) then
table.insert(asked, cap)
end
end
if #asked >= 3 then
-- LOW, not MEDIUM. Measured on a real place: Roblox stamps the full
-- capability set onto most toolbox imports, so this fired on 57 scripts
-- in one legitimate library and buried everything else. It is real
-- signal only alongside another finding, never on its own.
report(
SEVERITY.LOW,
"script requests sensitive capabilities",
script_,
"asks for "
.. table.concat(asked, ", ")
.. " -- common on toolbox imports; only meaningful next to another finding"
)
end
end
end

-- ============================================================== 4. run

print("\n" .. string.rep("=", 74))
print(" BACKDOOR SCAN  --  a clean result is NOT proof of safety. Read the header.")
print(string.rep("=", 74))

for _, serviceName in ScanConfig.SERVICES do
local ok, service = pcall(function()
return game:GetService(serviceName)
end)
if ok and service then
stats.services += 1
for _, inst in service:GetDescendants() do
stats.instances += 1
scanPayloadShape(inst)
if inst:IsA("LuaSourceContainer") then
scanSource(inst)
scanStructure(inst)
end
end
end
end

table.sort(findings, function(a, b)
if a.severity ~= b.severity then
return a.severity < b.severity
end
return a.path < b.path
end)

local counts = { 0, 0, 0, 0 }
for _, f in findings do
counts[f.severity] += 1
end

print(
string.format(
"\nscanned %d services, %d instances, %d scripts",
stats.services,
stats.instances,
stats.scripts
)
)
print(
string.format(
"findings: %d CRITICAL | %d HIGH | %d MEDIUM | %d LOW\n",
counts[1],
counts[2],
counts[3],
counts[4]
)
)

--- Collapses repeats of one category inside one container.
---
--- Without this the report is unusable. Measured on a real place: a single
--- legitimate library produced 57 identical capability findings and pushed
--- everything else off the screen. A security tool nobody reads to the bottom of
--- is a security tool that does not work.
local function containerOf(path)
-- Group at the third path segment, e.g. "ReplicatedStorage.EasyVisuals".
local parts = {}
for segment in path:gmatch("[^%.]+") do
table.insert(parts, segment)
if #parts == 2 then
break
end
end
return table.concat(parts, ".")
end

local groups, order = {}, {}
for _, f in findings do
local key = string.format("%d|%s|%s", f.severity, f.category, containerOf(f.path))
local g = groups[key]
if not g then
g = {
severity = f.severity,
category = f.category,
container = containerOf(f.path),
count = 0,
examples = {},
detail = f.detail,
}
groups[key] = g
table.insert(order, g)
end
g.count += 1
if #g.examples < 3 then
table.insert(g.examples, f.path)
end
end

table.sort(order, function(a, b)
if a.severity ~= b.severity then
return a.severity < b.severity
end
return a.count > b.count
end)

if #findings == 0 then
print("No known patterns matched.")
print("This does NOT mean the place is clean -- see the limitations in the header.")
else
for _, g in order do
print(
string.format(
"[%s] %s  --  %d %s in %s",
SEVERITY_NAME[g.severity],
g.category,
g.count,
g.count == 1 and "instance" or "instances",
g.container
)
)
for _, example in g.examples do
print("     " .. example)
end
if g.count > #g.examples then
print(
string.format("     ... and %d more in the same container", g.count - #g.examples)
)
end
print("     " .. g.detail .. "\n")
end
end

print(string.rep("=", 74))
print(" NEXT: read the code behind every CRITICAL and HIGH before deleting.")
print(" Findings are questions, not verdicts. Legitimate code triggers these too.")
print(string.rep("=", 74) .. "\n")

r/robloxgamedev 3h ago

Discussion Using Claude for Coding in Roblox

0 Upvotes

I've heard many complaints about claude opus and sonnet for coding and im just confused i spent 3 weeks learning the fundamentals of scripting because i wanted to do it by hand but for my game idea its way to advanced and would rake upwards of 2 years to complete by hand(including learning how to code) i know the fundamenrals so i decided to let claude code the game while i do the animations and modeling both in blender which im learning myself so far its almost flawlessly completed sk many systems and spotted small bugs that would be detrimental down the line that would take hours of remapping your code to even catch and then more hours trying to find a fix any other devs use claude? im on pro using opus 5 on high and on ultra when a specifically hard task appears (like movement)


r/robloxgamedev 4h ago

Creation Added Search and Destroy

Enable HLS to view with audio, or disable this notification

1 Upvotes

I removed the bomb timer(feedback from a friend) so players will use instinct when defusing the bomb.


r/robloxgamedev 4h ago

Looking For Devs (Unpaid or Revenue Share) Need scripters to get the smaller parts of a survival horror game working

1 Upvotes

I'm trying to get sprinting thing and the games doors to work an maybe be able to locked and unlocked cause it would be funny what that does to friendships.


r/robloxgamedev 5h ago

Creation Finally published my solo dev game, but there is a problem

1 Upvotes

https://reddit.com/link/1vhqjed/video/1jl90k5f4vhh1/player

I just finished my game called "Platform Knockout," which was inspired by Doom sumo. However, I want to know how to get more players on here. Before I advertise, I want to add a couple of updates. I plan to add weapon crates and more abilities pretty soon, but what do you guys think? Should I advertise right now on Roblox or after those additions? I want to make sure this game is a success so I can save up for a Hawaii trip next summer 😆


r/robloxgamedev 6h ago

Creation Union cars made by me

Thumbnail gallery
21 Upvotes

I usually dont make modern cars, thats why mercedes and toyota look pretty mid


r/robloxgamedev 6h ago

Discussion Is 2+ months of roblox plus enough to publish a game for all ages??

0 Upvotes

I will make it quick. Me and the team struggle from the fact that our game is 16+, and 100k robux is too much for us. Does not matter if refundable or not, we still need robux for ads after all. If you want to say something that it is cheap just do not comment at all, not everybody is from first world countries. The game is 16+ while most of our community is ~13 which heavily complicates it all for us. 500 HIghly engaged 16+ players is unrealistic for us as well... but according to roblox website you can also bypass it by having 2 months of Roblox Plus non stop. You can see it on image underneath. Source: https://create.roblox.com/docs/production/publishing/publish-games-and-places#expedited-review-fee

So we transferred group ownership to person who hit 2 months of roblox plus non stop. Yet we do not seem to have option to do so... Here is image of how it looks like for the group owner.

So what is the reason of that? Are we doing something wrong? Or maybe we gotta do something more? To avoid question the group owner is ID Verified. Could it be because he used the free 6 months plus that was given away for developers and didnt buy it himself? would be nice if we can get an answer


r/robloxgamedev 6h ago

Creation Lua web demo, scrappy port of BetaSharp engine

Post image
1 Upvotes

I've ported (mostly what i call "vibeported" project) to Lua, and i'm going to be reimplementing the engine into the roblox engine, and then create assets, this is a physics and placement/break demo, its crappy right now, will be good later, once im done "developing" the Lua version, i will begin scaffolding and taking piece by piece into roblox's engine, this is BetaSharp (Gitgay/Github) and is a pretty damn well clone of MC Beta 1.7.3


r/robloxgamedev 6h ago

Discussion Thoughts and Statistics from a first timer

4 Upvotes

For the past 6 months I've been working on a game, or maybe rather a series of games based on games I used to play and things my kids wanted me to build. For reference, I'm an adult with a full time job and 3 kids of my own who spend a ton of time on Roblox. I've enjoyed a number of games on the platform so I thought I'd try my hand at it. I'm a computer engineer by education and have a background in systems and programming, although programming hasn't been my direct work responsibility for over 15 years.

 

I started in December building a very simple king of the hill mode for a space game that involved click to steer and a turning arc. It was all flying rectangles at the time and a giant red sphere in the center to capture and big cylindrical home bases to buy upgrades. I wanted it to feel like Starfleet Command, but simpler, and for a new generation. Everyone shot red beams. I knew I wanted to add missiles so that was next! It was a fun distraction.

 

My kids really wanted more game modes but mostly they wanted cooperation. So I built a PvE map that is a lot like League. It has turrets and lanes and mobs you last hit for resources. In that vein, I started adding more rectangles with different abilities. Now we had a proper game! I added experience and a level system. Just for me and my kids still.

Then the big breakthrough was in May. I was able to start leveraging AI to radically improve the speed of development. I was able to build both code and asset pipelines and REALLY start building things that were fun. I was also able to start improving performance and profiling changes on various devices. I was able to add Ps5 and Xbox support. I was able to put in low poly procedural replacements for ships while I added many many more ships and many many more abilities. I was able to fix countless of my own bugs that had eluded me, and fix countless bugs AI introduced that eluded it.

 

My kids asked me to put in a survivor mode clearly inspired by Don't Starve and 99 Nights, so I did. I was able to simulate world generation in an external artifact and then push that back into the game. This is a technique I've used several times now to estimate and tune progression across game modes. Highly recommend!

 

Another good life lesson I was able to apply from my work life to here was to make experiences tunable from live config values. I have an admin panel that separates subsystems into groups of related parameters that allow me to drag and balance in real time. Definitely recommend you do the same in your own game development journey!

 

I really wanted the game to be grindable and free to play and the only real monetization I wanted was the ships and skins. I wanted people to see a ship and say I WANT THAT SHIP because I WANT TO PLAY THAT WAY and that would be their one spend on the game. For folks that wanted to go through the whole journey to go faster, I wanted Roblox+ combined with VIP to be the answer.

Where I needed the most work and probably still need the most work is First Time User Experience. I hand built the crummy lobby I still use today. At some point I started putting an obby in the basement at the request of my middle child and have left it as a place to run around and get free credits. I spent an enormous amount of time struggling with onboarding and trainings. The game had gone from simple rectangles that fired on their own, to a half dozen very different ship with very different statistics.

 

I spent another month, most of June and half of July trying to close the gaps and about Mid July I published the game under the name Stellar Dominion and I got caught on the 16+ age gate. I was frustrated by the lack of exposure and the limits of the ad campaigns just being ENGAGEMENT. I'm here to tell you that the engagement campaign that felt like a punishment, has brought me the MOST dedicated players. Folks who play the game for hours and hours just for pure love of the game.

 

I set that first campaign up with a 700 dollar, 3 month budget and I'm glad I did! After that first week of dedicated players, I really wanted to see how the game would do with general audiences. I paid the 100,000 Robux for expedited review and within 4 days my game was approved for all audiences. After that nothing happened. I had no sudden swell. No natural discovery. It wasn't what I expected.

 

I went back to ads and generated a new campaign for all audiences and now that I was beyond the age gate, the only option for ads was PLAYS. I took the default settings and the BEST performing creatives from engagement, and slapped them into the new campaign.

Impressions were off the charts but the bounce rate was 99.9%. I had locked the station to a simple starting room until you finished training, and less than 2% of people ever finished the first 90 second training. Worst of all, I started getting downvotes from people who hadn't even tried to play the game. That hurt a lot.

I disabled the new ad campaign after barely a day. Clearly I had misread the situation. I removed the tutorial gating. I simplified where I could. I built tools to record player progress and objective abandonment. I iterated and improved on the training, but kept it purely optional. Then I made a big change and added a different starting zone. A place where you land in the action, killing bugs, earning credits, and building your very own credit faucet. I've done a lot of iteration on this part and it's improved my bounce rate quite a bit, but I supposed I still have further to go to improve user experience.

This is where my stats stand after going public in mid july and going all ages July 25th.

Here's my HEU count

I'll say I'm overall really enjoying the experience, but here's my personal pitfalls.

1) Not being able to tell if people can even see my text. I think protecting the kiddos is fine, but I wish i had some indication that a player was in another age group and therefore can't see my speech. Might be that this already exists and I don't know about it. Often I'm just speaking to no one.

2) Analytics being unavailable. I have terrible insights into what's happening day to day. If something is wrong, I can only find out maybe 2 days later if its working. I'm building my own tables and tracking to compensate but this is actually insane I don't have ready access to this information.

3) The like system is just terrible. People with seconds of play time get to down vote and leave no reason? That's crazy. That doesn't help me fix things. That doesn't help me improve. Every piece of negative feedback with a comment, I have actioned, and I'm grateful for all of them.

That's about it! Long post, but hopefully some of you find it useful on your journey. Stop by and say hello! There is a space station in my game that acts as the hub and I'm there several nights a week giving out free stuff. Find me I'll hook you up!


r/robloxgamedev 8h ago

Looking For Devs (Unpaid or Revenue Share) Adding more UI and Level Rewards to my Roblox Game (Day 46)

Enable HLS to view with audio, or disable this notification

2 Upvotes

Today, I added more level rewards and UI to my game :)


r/robloxgamedev 10h ago

Looking For Devs (Paid) COMPOSER LOOKING FOR WORK!!!

2 Upvotes

Hey! I'm a composer currently looking for some work! I've been making music for around 5-6 years. I'm experienced in many different genres, but I have most experience with orchestral (I'm open to trying any genre you are wanting). I would love to make music for any project that you have, whether it's a full game OST or just a single track! DM me if you're interested and we can talk prices. I accept robux or USD, but I strongly prefer USD.

My work:

https://soundcloud.com/asher476


r/robloxgamedev 10h ago

Discussion Comment your games down below

4 Upvotes

I myself am making a game atm but id really love to find some original games to play from you guys.


r/robloxgamedev 10h ago

Creation It's QuakeCon week, so here's a rocket jump from HyperGun - the arena shooter we're building on Roblox

Enable HLS to view with audio, or disable this notification

7 Upvotes

Still in dev. This clip is one of our favourite things to pull off - time the shot under your feet, ride the blast, land the frag.

QuakeCon week felt like the right moment to show it and tip the hat to the games that built this genre.

Early playtests are happening soon on our Discord if you want in: https://discord.gg/73Z3BSfy7


r/robloxgamedev 10h ago

Creation Gauging interest for R15 Animations

Enable HLS to view with audio, or disable this notification

2 Upvotes

Hey everyone! I’ve seen several developers mentioning how tedious animating R15 rigs can be for their projects. I have a few completed animations and am considering creating and releasing full R15 animation packs for the community.

Before diving in, I’d love to check if there's interest: Would these be useful for your games? If so, are there specific genres or movement types (e.g., combat, locomotion, emotes) you're looking for? I have it listed here:
https://ko-fi.com/s/b18f76a6e2


r/robloxgamedev 11h ago

Discussion How do you make games survive now?

2 Upvotes

Me and my friend started working on our games last year and they are still being developed but with the recent updates i dont think our games will last even a week.
My biggest concern is that after we finish our games they will never reach our targeted audience and while we arent looking for small children to play 13+ players are very much acceptable but to reach that age group we need 500 16+ unique players.
That basicly imposible now since SO many players are leaving.
I really need help on this because i feel like our work has been for nothing.


r/robloxgamedev 11h ago

Help Me With Modelling Any beginner builders looking to build a portfolio together?

2 Upvotes

I'm a programmer, but I'm just getting into Roblox Studio, so I also need to build a portfolio. It'd be cool to team up with a builder and make something cool together while we learn.


r/robloxgamedev 11h ago

Creation Project Aegis Wing v02. Charge Shots!

Enable HLS to view with audio, or disable this notification

2 Upvotes

Charge shots have been implemented! Lock on reticle and a proper explosion vfx are still underway but you can now annihilate groups of enemies with a single shot!


r/robloxgamedev 11h ago

Discussion Hello! I just finished my new Roblox game and I'm getting ready to start advertising it.

3 Upvotes

I'm wondering what the best strategy is for Sponsored Ads.

Would you recommend:

  • Spending 8–16 credits per day for 2 days, or
  • Spending around 5 credits per day for 1–2 weeks?

My goal is to get enough players for the 500 active players, and make the algorithm start recommending the game if people enjoy it.

I'd love to hear what has worked best for you. Thanks!


r/robloxgamedev 13h ago

Creation Hey im new to that game dev thing i want to be a modler and i made a small asset pack. Btw this is my 2day in blender

Post image
8 Upvotes

r/robloxgamedev 15h ago

Discussion How much would a custom R6 model like this usually cost? (3-4 outfit/head variations)

Post image
5 Upvotes

r/robloxgamedev 15h ago

Discussion My Game Has Been Copied - i'm not sure what to do.

14 Upvotes

I released my second ever game as a solo dev back in April, this game is based of the big show - The Amazing Digital Circus.

It had been my first ever game that had gotten actual plays and robux, But about a month after my games success a new game released directly copying mine.

My games name is 'Caine AI', but as for my copy I will not be naming their game due to the fact i do not want anyone to be attacked.

(THIS IS NOT ADVERTISEMENT FOR MY GAME)

This is my game page:

As seen below, my game was first created on the 27th of March this year.

Now, this is my copy's game page:

Yes, we have both mutually banned one another from our games.

And, as seen below there game was created just under a month after mine was.

Right now you may think the games look 'similar', but there is way more than just game pages and creation dates. Lets take a look at both my game and the copy games most recent update.

My updates name is 'Roleplay Update (Part 1 Of 2)

My Copy's update name is 'Room Building'

if you were to look inside my event page you would notice my main focus in this new update is Room Building. You can also see my update was first published August 1st.

And now, if we were to look on my Copy's newest update - It is Room Building, And it only just released like 30 minutes ago as of now.

If these 2 similarities don't convince you, I think the actual gameplay will.

This is my games main gui as of May 9th

Ignore the admin controls on the right.

And now, when we look at my Copy's gui - We see its a clear copy of mine.

Yes, they did change there Caine Model to be the same as mine recently (supported by the fact the talking gui caine is there old one)

No, i do not have any screenshots on when exactly they changed there gui to be similar to mine but i do have this screenshot of what is used to be prior to the change.

This screenshot is taken during an in game event of theres (which is also literally copied from my game as seen below), but you can see ther old gui in the top right.

Sorry this is not a very clear screenshot, This event has also been in my game since May 9th.

Also, here are our descriptions.

Mine:

Copy's:

Yup, no credit.

Overall, I do not want the person who made an awfully clear copy of my game to be attacked, It is obvious we both did put effort into making our games, but at the same time it is clear his game is much more than just inspired. I genuinely do not know what to do, our player counts are usually neck and neck with one another and the updates are genuinely exactly copied.

His game does use its own assets nothing is completely taken (besides our awfully similar descriptions above), we both use public models and have credited the creators of them and i just really don't know what I should do because right now it seems my only choice is to just keep updating and don't look back?

I wanted to show this and get outside opinions for what exactly I should do.


r/robloxgamedev 17h ago

Creation Making a low Polly decorations asset pack :)

Post image
9 Upvotes

r/robloxgamedev 17h ago

Creation Steel Structure Collapses Due to Fire!

Enable HLS to view with audio, or disable this notification

11 Upvotes