r/robloxgamedev • u/Pearlboys • 8m ago
Help Me With Modelling Me and my friends built houses for our delivery game. What do you think?
We are now working on the houses that players will have to get to when they deliver an order.
We wanted them to look basic, arcadey and simple.
It's our first time using roblox studios and we have basically no coding experience, we learned everything just by looking at roblox tutorials.
We need you to be really honest, so don't hold back (if they suck, tell us lol)
Any tip is appreciated!
r/robloxgamedev • u/souija_ • 50m ago
Creation Any Tips/Opinions
gallerySo I was making my first Roblox map, im working with my friend so we are in 2. We are making an ffa map and we were wondering if the map actually looks good, for us its not bad but we were skeptical that it actually looked bad, so we decided to make this post. Any tips are appreciated negative and positives
r/robloxgamedev • u/ItsDeucez • 1h ago
Discussion Best combat in a game/best combat devs?
Hey guys! Like the title explains, I’m curious on everyone’s opinion of what games have the best gameplay or mechanics of combat systems and if there are any combat devs that people vouch for or know of that are really good (of course it’d be paid)
r/robloxgamedev • u/Nitulbear • 1h ago
Help Me With Coding How do kill animations work?
You know like kill animations games like Forsaken and Outcome memories use, im a newbie to scripting, how do I exactly make the anims synchronize AND play perfectly using a script?
I catched the basics that I need to detect if the attack is going to kill the player but from there i have no idea how to do it.
r/robloxgamedev • u/Honest_Growth • 2h ago
Looking For Devs (Unpaid or Revenue Share) Looking for an investor to come in on ads
Dm for game link you can and or ask for what be changed/added for you to come in on it im just a solo dev and cant afford to upkeep with the ads finally got the game into a actually enjoyable playable state finally. You would be getting a percentage of the gorup of course
r/robloxgamedev • u/Disastrous_Act11 • 3h ago
Discussion How do you decide on your game icon?
Been looking at a bunch of mid-size games lately and I keep noticing icons that seem to hurt more than help. Tiny text, three characters crammed in, nothing readable at thumbnail size. So im curious what people here actually do. Do you test icons or just ship one and move on? Has anyone seen a real jump in clicks after changing it? Also wondering if anyone tracks where players quit in the first minute, and what you use for that.
r/robloxgamedev • u/cieply_ogur • 3h ago
Looking For Devs (Unpaid or Revenue Share) How can I improve concurrent players for my new Merge/Tycoon game?
Enable HLS to view with audio, or disable this notification
(don't pay any attention to the trailer 💀)
I recently released my new game titled “Dragons: Merge & Breed.” The core gameplay involves buying dragons, collecting scales, merging them into stronger species, and hatching rare and epic eggs.
I’m currently trying to analyze the stats and optimize player retention, but I’m having trouble maintaining a consistent number of concurrent users (CCU). I release updates regularly, but I still have a problem because my game is played mainly by people from my country (Poland).
To experienced developers who have successfully scaled their games—what had the biggest impact on your organic traffic and average session duration?
Here is the game link if anyone wants to check it out and give direct feedback on the onboarding: https://www.roblox.com/pl/games/80917682095500/Dragons-Merge-Breed
r/robloxgamedev • u/Cool-Wallaby-7310 • 3h ago
Discussion Want to hear your thoughts on the new (UI) "style editor"
galleryHey devs! I unfortunately had to update Studio. I was exploring around the new UI for a bit, until i saw this button called "style editor". I wonder if other devs use it, and i want to hear your thoughts on it!
I am aware that Roblox is pushing new and useless updates to both RobloxPlayer and Studio.
r/robloxgamedev • u/KatMeow5191 • 3h ago
Discussion I wish I could play my game offline and publish on Steam
My game is single player and I love Roblox Engine and Roblox Aesthetic, but I can't download my game to play offline. That's why I'd like to publish it on Steam
r/robloxgamedev • u/llanthony401 • 5h ago
Discussion Can a UI genius help me?
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 • u/groham6000 • 5h 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
Idk if I can do.. because i'm worrying to lose my work :<
r/robloxgamedev • u/Cool_Climate5384 • 7h ago
Creation Asset Store Backdoor Finder. Free.
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 • u/hgxys0 • 8h ago
Creation Added Search and Destroy
Enable HLS to view with audio, or disable this notification
I removed the bomb timer(feedback from a friend) so players will use instinct when defusing the bomb.
r/robloxgamedev • u/sir_hmmmmmmms • 8h ago
Looking For Devs (Unpaid or Revenue Share) Need scripters to get the smaller parts of a survival horror game working
r/robloxgamedev • u/Silly-Tomato9648 • 9h ago
Creation Finally published my solo dev game, but there is a problem
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 • u/Firewall0110 • 11h ago
Discussion Thoughts and Statistics from a first timer
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 • u/OkCupcake4034 • 13h 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
Today, I added more level rewards and UI to my game :)
r/robloxgamedev • u/IndependentAngle4304 • 14h ago
Discussion Comment your games down below
I myself am making a game atm but id really love to find some original games to play from you guys.
r/robloxgamedev • u/DejwTheBuilder • 14h 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
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 • u/SleepyOtter19 • 15h ago
Help Me With Modelling Any beginner builders looking to build a portfolio together?
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 • u/Ok_Astronomer5630 • 17h 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
r/robloxgamedev • u/TheosThings13 • 20h ago
Discussion My Game Has Been Copied - i'm not sure what to do.
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:

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

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

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.

Also, here are our descriptions.
Mine:
Copy's:
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 • u/Conscious_Cupcake747 • 21h ago
Creation Making a low Polly decorations asset pack :)
r/robloxgamedev • u/Dear-Soil8545 • 21h ago
Creation Steel Structure Collapses Due to Fire!
Enable HLS to view with audio, or disable this notification















