In this video we will go over the proposed return of Shower Simulator and what it means for Roblox as well as all you obby fans out there! No cursing from th. Tagged games, Shower Game, unity. Both comments and trackbacks are currently closed. Leeeee wrote: the game is very cool because it is a bath simulator is amazing and worth being. Sunday, September 13, 2015 at 6:20 pm Permalink. Alan wrote: ui q9ue 92381. Regardless of their gender, players take a shower together in this game. When participants enter the shower room, they wear a swimsuit, which is not appropriate for children to watch out. That’s not the only thing this game has, it also involves some intimate and erotic moments and conversations between the participants.
You must be 18+ to view this content
Rinse and Repeat HD may contain content you must be 18+ to view.
Are you 18 years of age or older?
A downloadable shower-simulator for Windows, macOS, and Linux
UPDATED, 19 NOVEMBER 2018:
- now available: Rinse and Repeat HD with updated graphics, gamepad support, improved stability, and Simplified Chinese localization (简体中文). For more on this remaster, read my blog post.
Life Simulator Roblox Game
Rinse and Repeat is a steamy first person showering game about giving a hunk a helping hand.
by Robert Yang ( @radiatoryang, www.debacle.us)
Was he in your Tactical Zumba class, or was it Blood Pilates? Usually you wouldn't risk a shower right after class, they already talk enough shit about you, but the other day -- a cough then a smirk and then a knowing glance, that's all it ever takes until you start hoping against hope.
Don't fuck it up. Show up when he'll show up, right after class. Set multiple alarms on your phone, mark your calendar, clear your schedule. What is this terror? What is this ecstasy? What is it that fills you with this extraordinary excitement?.. Boy, it's the promise of a workout.
- PRICE: $0 USD (free, pay what you want, $5 USD donation suggested)
- PLATFORMS: Windows, Mac OS X, Linux
- LANGUAGES: English (audio + text), Français (texte), Русский (текст), Deutsch (text), Español (texto), 日本語(テキスト), 繁體字(文本), 简体中文(文本), Português (texto)
- SYSTEM REQUIREMENTS: a DX9 capable computer, basically something manufactured within the last few years.
- CONTROLS: Mouse / trackpad, or almost any common gamepad.
- PRODUCTION VALUES: Full voice acting! Custom-engineered wet skin shaders! Physically-simulated water droplets! (This is the most technologically advanced male shower simulator in the history of video games.)
- ENDINGS: There's one. You'll know it when you see it.
- AVERAGE RUNTIME: 10-20 minutes total, in 5 minute bursts, across a few days. You'll have to commit to this, a little. Put it in your calendar.
- NOTES / ARTIST'S STATEMENT: Rinse and Repeat as cup runneth over
- RELATED GAMES ALSO BY ROBERT YANG:Hurt Me Plenty, Succulent, Stick Shift, Cobra Club, The Tearoom
- WANT E-MAIL UPDATES FOR THIS AND OTHER GAMES?Sign-up for the Radiator e-mail newsletter. It's very low-traffic, I promise.
AS FEATURED IN: Videogames: Design/Play/Disrupt at Victoria & Albert Museum, London.
PRESS: Kotaku, Eurogamer, GayGamer, Boing Boing, Destructoid, Polygon, Kill Screen, Vice, Dangerous Minds, Der Spiegel, The Telegraph, Instinct
⚠ 'NSFW' CONTENT WARNING!!! ⚠This game has intricately rendered naked men in it, but genitalia have been obscured. It is like a barely rated-R film / rather saucy PG-13.
TWITCH USERS, BE ADVISED: Twitch has universally censored / banned this game from broadcast. This policy is unethical, inconsistently enforced, and anti-artist.
MAIN CREDITS:
Step 7: To get the access to the Victim’s Account you need to replace your cookies with the Victim’s Cookie.You can use a Cookie Editor for this. The string before “=” is the name of the cookie and the string after “=” is its value. So Change the values of the cookies in the cookie Editor. How to hack roblox accounts with edit this cookie.
- Code, design, most art assets by Robert Yang (@radiatoryang)
- Music is 'Vyvanse' by Grounders, used with permission
- Voice acting by Mike Hillard
- Character shader work by James O'Hare (@farfarer)
- Character base by Kris Hammes (@Kris_Hammes)
- Localization by [Español] Javier Candeira (@Candeira), [Français] Maxime Lebled (@MaxOfS2D), [Русский] Benjamin Glover (@BenjaminGlover), [Deutsch] Ryan Field, [繁體字] Kyle Li (@Ghettokon), [日本語] Robin Scott (@AltheaR_00), [Português] n00bmobile
TROUBLESHOOTING + TECHNICAL SUPPORT: see https://debacle.us/support/ for fixes and workarounds
Status | Released |
Platforms | Windows, macOS, Linux |
Rating | |
Author | Robert Yang |
Genre | Simulation |
Made with | Unity |
Tags | Erotic, First-Person, Gay, LGBT, Queer, radiator, radiatoryang, robert-yang, sex, Short |
Average session | A few minutes |
Languages | German, English, Spanish; Castilian, French, Japanese, Portuguese (Portugal), Russian, Chinese |
Inputs | Mouse, Xbox controller, Gamepad (any), Playstation controller |
Accessibility | Color-blind friendly, Subtitles, Interactive tutorial |
Download
Click download now to get access to the following files:
Support the artist
Support this shower-simulator at or above a special price point to receive something exclusive.
Buy me a beer
If you got something out of this game, then please make a small donation to help support my work. I promise I will use this money to buy some sort of beer for myself. You will receive no notification of this event.
Development log
- Rinse and Repeat HD: remaster re-release!Nov 19, 2018
- local Frame = Instance.new('ImageLabel')
- local TextButton = Instance.new('TextButton')
- local Scripts = Instance.new('TextLabel')
- local AutoKing = Instance.new('TextButton')
- local CoinGrabber = Instance.new('TextButton')
- local JumpPower = Instance.new('TextBox')
- local Gravity = Instance.new('TextBox')
- local Background_2 = Instance.new('ImageLabel')
- local Tps = Instance.new('TextLabel')
- local CrownShop = Instance.new('TextButton')
- local Sell = Instance.new('TextButton')
- local Spawns = Instance.new('TextButton')
- local TextButton_3 = Instance.new('TextButton')
- --Properties:
- Yeetus.Name = 'Yeetus'
- Yeetus.Parent = game.Players.LocalPlayer:WaitForChild('PlayerGui')
- Frame.Name = 'Frame'
- Frame.Active = true
- Frame.BackgroundColor3 = Color3.new(0.188235, 0.188235, 0.188235)
- Frame.Position = UDim2.new(0.375096083, 0, 0.200860828, 0)
- Frame.Size = UDim2.new(0, 440, 0, 316)
- Frame.Image = 'rbxassetid://3570695787'
- Frame.ImageColor3 = Color3.new(0.27451, 0.27451, 0.27451)
- Frame.SliceCenter = Rect.new(100, 100, 100, 100)
- Credits.Name = 'Credits'
- Credits.Active = true
- Credits.BackgroundColor3 = Color3.new(0.172549, 0.172549, 0.172549)
- Credits.BorderColor3 = Color3.new(0, 0, 0)
- Credits.Position = UDim2.new(0.02678084, 0, 0.833122909, 0)
- Credits.Size = UDim2.new(0, 179, 0, 43)
- Credits.Font = Enum.Font.SourceSans
- Credits.TextColor3 = Color3.new(0, 0, 0)
- Credits.TextSize = 14
- TextButton.BackgroundColor3 = Color3.new(1, 1, 1)
- TextButton.Position = UDim2.new(-0.0413443297, 0, 0.0237114485, 0)
- TextButton.ZIndex = 2
- TextButton.Text = ' '
- TextButton.TextScaled = true
- TextButton.TextWrapped = true
- Background.Name = 'Background'
- Background.Active = true
- Background.BackgroundColor3 = Color3.new(0.188235, 0.188235, 0.188235)
- Background.Position = UDim2.new(-0.0413443297, 0, 0.0237115361, 0)
- Background.Image = 'rbxassetid://3570695787'
- Background.ImageColor3 = Color3.new(0.176471, 0.176471, 0.176471)
- Background.SliceCenter = Rect.new(100, 100, 100, 100)
- Scripts.Name = 'Scripts'
- Scripts.Active = true
- Scripts.BackgroundColor3 = Color3.new(0.172549, 0.172549, 0.172549)
- Scripts.BorderColor3 = Color3.new(0, 0, 0)
- Scripts.Position = UDim2.new(0.0327510498, 0, 0.044415243, 0)
- Scripts.Size = UDim2.new(0, 179, 0, 43)
- Scripts.Font = Enum.Font.SourceSans
- Scripts.TextColor3 = Color3.new(0, 0, 0)
- Scripts.TextSize = 14
- Frame_2.Active = true
- Frame_2.BorderSizePixel = 0
- Frame_2.Position = UDim2.new(1.0454545, 0, 4.76837158e-07, 0)
- Frame_2.Size = UDim2.new(0, 210, 0, 293)
- AutoKing.Name = 'AutoKing'
- AutoKing.BackgroundColor3 = Color3.new(0.172549, 0.172549, 0.172549)
- AutoKing.Position = UDim2.new(0.0519523844, 0, 0.270017207, 0)
- AutoKing.Modal = true
- AutoKing.Text = 'Auto King'
- AutoKing.TextColor3 = Color3.new(0.470588, 0.470588, 0.470588)
- AutoKing.TextSize = 14
- BossKiller.Parent = Frame_2
- BossKiller.BackgroundColor3 = Color3.new(0.172549, 0.172549, 0.172549)
- BossKiller.Position = UDim2.new(0.0519523844, 0, 0.0253438856, 0)
- BossKiller.Modal = true
- BossKiller.Text = 'Auto Boss'
- BossKiller.TextColor3 = Color3.new(0.470588, 0.470588, 0.470588)
- BossKiller.TextSize = 14
- CoinGrabber.Parent = Frame_2
- CoinGrabber.BackgroundColor3 = Color3.new(0.172549, 0.172549, 0.172549)
- CoinGrabber.Position = UDim2.new(0.0519523844, 0, 0.149307802, 0)
- CoinGrabber.Modal = true
- CoinGrabber.Text = 'Auto Candy'
- CoinGrabber.TextColor3 = Color3.new(0.470588, 0.470588, 0.470588)
- CoinGrabber.TextSize = 14
- Walkspeed.Parent = Frame_2
- Walkspeed.BackgroundColor3 = Color3.new(0.172549, 0.172549, 0.172549)
- Walkspeed.Position = UDim2.new(0.0523809567, 0, 0.661201537, 0)
- Walkspeed.Font = Enum.Font.SourceSans
- Walkspeed.PlaceholderColor3 = Color3.new(0, 0, 0)
- Walkspeed.Text = '
- Walkspeed.TextScaled = true
- Walkspeed.TextWrapped = true
- JumpPower.Name = 'JumpPower'
- JumpPower.BackgroundColor3 = Color3.new(0.172549, 0.172549, 0.172549)
- JumpPower.Position = UDim2.new(0.0523809567, 0, 0.762008965, 0)
- JumpPower.Font = Enum.Font.SourceSans
- JumpPower.PlaceholderColor3 = Color3.new(0, 0, 0)
- JumpPower.Text = '
- JumpPower.TextScaled = true
- JumpPower.TextWrapped = true
- Local.Name = 'Local'
- Local.Active = true
- Local.BackgroundColor3 = Color3.new(0.117647, 0.117647, 0.117647)
- Local.Position = UDim2.new(0, 0, 0.522593915, 0)
- Local.Size = UDim2.new(0, 210, 0, 31)
- Local.Text = 'Local'
- Local.TextScaled = true
- Local.TextStrokeColor3 = Color3.new(0, 1, 0)
- Gravity.Parent = Frame_2
- Gravity.BackgroundColor3 = Color3.new(0.172549, 0.172549, 0.172549)
- Gravity.Position = UDim2.new(0.0523809567, 0, 0.864398062, 0)
- Gravity.Font = Enum.Font.SourceSans
- Gravity.PlaceholderText = 'Type Gravity'
- Gravity.TextColor3 = Color3.new(0, 0, 0)
- Gravity.TextSize = 14
- AutoFarm.Parent = Frame_2
- AutoFarm.BackgroundColor3 = Color3.new(0.172549, 0.172549, 0.172549)
- AutoFarm.Position = UDim2.new(0.0519523844, 0, 0.403123021, 0)
- AutoFarm.Modal = true
- AutoFarm.Text = 'Auto Farm'
- AutoFarm.TextColor3 = Color3.new(0.470588, 0.470588, 0.470588)
- AutoFarm.TextSize = 14
- Background_2.Parent = Scripts
- Background_2.BackgroundColor3 = Color3.new(0.188235, 0.188235, 0.188235)
- Background_2.Position = UDim2.new(-0.0560197048, 0, -0.220000163, 0)
- Background_2.Image = 'rbxassetid://3570695787'
- Background_2.ImageColor3 = Color3.new(0.176471, 0.176471, 0.176471)
- Background_2.SliceCenter = Rect.new(100, 100, 100, 100)
- TextButton_2.Parent = Scripts
- TextButton_2.BackgroundColor3 = Color3.new(1, 1, 1)
- TextButton_2.Position = UDim2.new(-0.0560197048, 0, -0.220000163, 0)
- TextButton_2.ZIndex = 2
- TextButton_2.Text = ' '
- TextButton_2.TextScaled = true
- TextButton_2.TextWrapped = true
- Tps.Name = 'Tps'
- Tps.Active = true
- Tps.BackgroundColor3 = Color3.new(0.172549, 0.172549, 0.172549)
- Tps.BorderColor3 = Color3.new(0, 0, 0)
- Tps.Position = UDim2.new(0.0239933357, 0, 0.467977405, 0)
- Tps.Size = UDim2.new(0, 195, 0, 50)
- Tps.Font = Enum.Font.SourceSans
- Tps.TextColor3 = Color3.new(0, 0, 0)
- Tps.TextSize = 14
- Frame_3.Active = true
- Frame_3.BorderSizePixel = 0
- Frame_3.Position = UDim2.new(1, 0, -2.67691278, 0)
- Frame_3.Size = UDim2.new(0, 205, 0, 292)
- CrownShop.Parent = Frame_3
- CrownShop.BackgroundColor3 = Color3.new(0.172549, 0.172549, 0.172549)
- CrownShop.Position = UDim2.new(0.0471904799, 0, 0.439397544, 0)
- CrownShop.Font = Enum.Font.SourceSans
- CrownShop.TextColor3 = Color3.new(0.470588, 0.470588, 0.470588)
- CrownShop.TextSize = 14
- Reward.Parent = Frame_3
- Reward.BackgroundColor3 = Color3.new(0.172549, 0.172549, 0.172549)
- Reward.Position = UDim2.new(0.0476190522, 0, 0.0645319819, 0)
- Reward.Font = Enum.Font.SourceSans
- Reward.TextColor3 = Color3.new(0.470588, 0.470588, 0.470588)
- Reward.TextSize = 14
- Sell.Parent = Frame_3
- Sell.BackgroundColor3 = Color3.new(0.172549, 0.172549, 0.172549)
- Sell.Position = UDim2.new(0.0471904799, 0, 0.800254703, 0)
- Sell.Font = Enum.Font.SourceSans
- Sell.TextColor3 = Color3.new(0.470588, 0.470588, 0.470588)
- Sell.TextSize = 14
- Shop.Parent = Frame_3
- Shop.BackgroundColor3 = Color3.new(0.172549, 0.172549, 0.172549)
- Shop.Position = UDim2.new(0.0476190522, 0, 0.2431034, 0)
- Shop.Font = Enum.Font.SourceSans
- Shop.TextColor3 = Color3.new(0.470588, 0.470588, 0.470588)
- Shop.TextSize = 14
- Spawns.Parent = Frame_3
- Spawns.BackgroundColor3 = Color3.new(0.172549, 0.172549, 0.172549)
- Spawns.Position = UDim2.new(0.0471904799, 0, 0.625254691, 0)
- Spawns.Font = Enum.Font.SourceSans
- Spawns.TextColor3 = Color3.new(0.470588, 0.470588, 0.470588)
- Spawns.TextSize = 14
- Background_3.Parent = Tps
- Background_3.BackgroundColor3 = Color3.new(0.188235, 0.188235, 0.188235)
- Background_3.Position = UDim2.new(-0.0410000011, 0, 0, 0)
- Background_3.Image = 'rbxassetid://3570695787'
- Background_3.ImageColor3 = Color3.new(0.176471, 0.176471, 0.176471)
- Background_3.SliceCenter = Rect.new(100, 100, 100, 100)
- TextButton_3.Parent = Tps
- TextButton_3.BackgroundColor3 = Color3.new(1, 1, 1)
- TextButton_3.Position = UDim2.new(-0.0541388094, 0, 0, 0)
- TextButton_3.ZIndex = 2
- TextButton_3.Text = ' '
- TextButton_3.TextScaled = true
- TextButton_3.TextWrapped = true
- -- Scripts:
- local function EPIBUO_fake_script() -- Frame.LocalScript
- local script = Instance.new('LocalScript', Frame)
- script.Parent.Draggable = true
- coroutine.wrap(EPIBUO_fake_script)()
- local function ARUTMQN_fake_script() -- TextButton.LocalScript
- local script = Instance.new('LocalScript', TextButton)
- script.Parent.MouseButton1Click:Connect(function()
- message.Parent = game.Workspace
- wait(2)
- local message2 = Instance.new('Message')
- message2.Text = 'Thanks for using this script'
- message2:Destroy()
- end
- local function UTFJJE_fake_script() -- AutoKing.LocalScript
- local script = Instance.new('LocalScript', AutoKing)
- script.Parent.MouseButton1Click:Connect(function()
- workspace.Locations.KingArea.CanCollide = false
- while true do
- plr.HumanoidRootPart.CFrame = CFrame.new(workspace.Locations.KingArea.CFrame.Position + Vector3.new(0,9.5,0))
- end)
- coroutine.wrap(UTFJJE_fake_script)()
- local function WLJTNG_fake_script() -- BossKiller.LocalScript
- local script = Instance.new('LocalScript', BossKiller)
- script.Parent.MouseButton1Click:Connect(function()
- game.Players.LocalPlayer.Character.HumanoidRootPart.CFrame = CFrame.new(workspace.Boss.Head.CFrame.Position + Vector3.new(0,0,0))
- local platform = Instance.new('Part',workspace)
- platform.Position = Vector3.new(100,100,100)
- platform.CanCollide = true
- local val = Instance.new('IntValue',game.Players.LocalPlayer.Character.HumanoidRootPart)
- local on = true
- wait(0.1)
- repeat
- workspace.Boss.Health.Value = 0
- game.Players.LocalPlayer.Character.HumanoidRootPart.CFrame = CFrame.new(workspace.Boss.Head.CFrame.Position + Vector3.new(0,3,0))
- until val.Value 160
- val.Value = 0
- game.Players.LocalPlayer.Character.HumanoidRootPart.CFrame = CFrame.new(platform.CFrame.Position)
- on = true
- game.Players.LocalPlayer.Character.HumanoidRootPart.CFrame = CFrame.new(workspace.Boss.Head.CFrame.Position + Vector3.new(0,3,0))
- print('no')
- end
- end
- local function ANZRY_fake_script() -- CoinGrabber.LocalScript
- local script = Instance.new('LocalScript', CoinGrabber)
- script.Parent.MouseButton1Click:Connect(function()
- while true do
- plr.HumanoidRootPart.CFrame = CFrame.new(workspace.CandyHolder:FindFirstChild('Candy').CFrame.Position)
- workspace.CandyHolder:FindFirstChild('Candy'):Destroy()
- end)
- coroutine.wrap(ANZRY_fake_script)()
- local function JFLEHG_fake_script() -- Walkspeed.LocalScript
- local script = Instance.new('LocalScript', Walkspeed)
- local plr = game.Players.LocalPlayer.Character
- local text = script.Parent
- text:GetPropertyChangedSignal('Text'):Connect(function()
- game:GetService('RunService').Stepped:Connect(function()
- end)
- end
- local function LLAVYRQ_fake_script() -- JumpPower.LocalScript
- local script = Instance.new('LocalScript', JumpPower)
- local plr = game.Players.LocalPlayer.Character
- local text = script.Parent
- text:GetPropertyChangedSignal('Text'):Connect(function()
- end)
- coroutine.wrap(LLAVYRQ_fake_script)()
- local function DQYCE_fake_script() -- Gravity.LocalScript
- local script = Instance.new('LocalScript', Gravity)
- local text = script.Parent
- text:GetPropertyChangedSignal('Text'):Connect(function()
- end)
- coroutine.wrap(DQYCE_fake_script)()
- local function RKPR_fake_script() -- AutoFarm.LocalScript
- local script = Instance.new('LocalScript', AutoFarm)
- local plr = game.Players.LocalPlayer
- local safeplace = Instance.new('Part', workspace)
- safeplace.Position = Vector3.new(200,200,200)
- safeplace.BottomSurface = 'Smooth'
- safeplace.Name = 'Safeplace'
- script.Parent.MouseButton1Click:Connect(function()
- plr.Character.HumanoidRootPart.CFrame = CFrame.new(safeplace.CFrame.Position + Vector3.new(0,2,0))
- local Remote = game.ReplicatedStorage.Events['Clicked']
- Remote:FireServer(unpack(Arguments))
- local Event = game:GetService('ReplicatedStorage').Events.Sell
- end
- end
- local function DSFU_fake_script() -- TextButton_2.LocalScript
- local script = Instance.new('LocalScript', TextButton_2)
- script.Parent.MouseButton1Click:Connect(function()
- script.Parent.Parent.Parent.Tps.Frame.Visible = false
- end
- local function DKVEONB_fake_script() -- CrownShop.LocalScript
- local script = Instance.new('LocalScript', CrownShop)
- script.Parent.MouseButton1Click:Connect(function()
- game.Players.LocalPlayer.Character.HumanoidRootPart.CFrame = CFrame.new(workspace.Locations.CrownShop.CFrame.Position + Vector3.new(0,4,0))
- end
- local function UJTTUV_fake_script() -- Reward.LocalScript
- local script = Instance.new('LocalScript', Reward)
- script.Parent.MouseButton1Click:Connect(function()
- game.Players.LocalPlayer.Character.HumanoidRootPart.CFrame = CFrame.new(workspace.DailyReward.Location.CFrame.Position + Vector3.new(0,4,0))
- end
- local function HMWEF_fake_script() -- Sell.LocalScript
- local script = Instance.new('LocalScript', Sell)
- script.Parent.MouseButton1Click:Connect(function()
- game.Players.LocalPlayer.Character.HumanoidRootPart.CFrame = CFrame.new(workspace.Locations.Sell.CFrame.Position + Vector3.new(0,4,0))
- end
- local function MQMTB_fake_script() -- Shop.LocalScript
- local script = Instance.new('LocalScript', Shop)
- script.Parent.MouseButton1Click:Connect(function()
- game.Players.LocalPlayer.Character.HumanoidRootPart.CFrame = CFrame.new(workspace.Locations.Shop.CFrame.Position + Vector3.new(0,4,0))
- end
- local function HCXX_fake_script() -- Spawns.LocalScript
- local script = Instance.new('LocalScript', Spawns)
- script.Parent.MouseButton1Click:Connect(function()
- game.Players.LocalPlayer.Character.HumanoidRootPart.CFrame = CFrame.new(workspace.Locations.FirstSpawns:FindFirstChild('FirstSpawn').CFrame.Position + Vector3.new(0,4,0))
- end
- local function ZYKZ_fake_script() -- TextButton_3.LocalScript
- local script = Instance.new('LocalScript', TextButton_3)
- script.Parent.MouseButton1Click:Connect(function()
- script.Parent.Parent.Parent.Tps.Frame.Visible = true
- end