BeastyBlake101's Portfolio



Hey there! I’m BeastyBlake101. Roblox developer, veteran, and enthusiast. Jack of many trades, strong leader, effective communicator, and passionate creator with several years of experience. My goal is to make others happy with my work!

Outside of Roblox development, some of my other interests include rhythm games, racing, shooters, exploring nature, arcades, sports, and hanging out with friends.

I strive in social and collaborative development environments with other motivated, passionate individuals.


🎮 | Creative Direction
Arcade Island

Welcome to Arcade Island. Play machines, win prizes, explore the island, and meet new people in an awesome social extravaganza.

Arcade Island showcases a variety of my talents and my passion to create. Arcade Island demonstrates my abilities in game design, systems design, programming, building, lighting, environmental design, UI design, marketing growth, and community management.

Snowy Showdown

As the icy lake thaws, players battle to be the last one standing as swords, power-ups, and random events make for complete madness. Do you have what it takes to be crowned champion?

I led the team that created Snowy Showdown for the Roblox 2020 Holiday Game Jam. The game was put together in less than a month. I efficiently designed an effective and entertaining core loop that received positive feedback from players and judges winning us 2nd place.

📜 | Scripting
Bloxzee

local values = script.Parent.Values
local home = script.Parent
local narrator = script.Parent.Narrator
local sensors = script.Parent.Sensors
local sounds = script.Parent.ButtonRoll

local bestCondition = "Nothing"

local function SetAction(number, action)
	narrator.SurfaceGui["Choice"..number].Text = action
	home["ButtonHold"..number].SurfaceGui.TextLabel.Text = action
	if action == "Roll" then
		home["ButtonHold"..number].Material = Enum.Material.Neon
	else
		home["ButtonHold"..number].Material = Enum.Material.SmoothPlastic
	end
end
-- Set the action of the button to rolling or holding

local function SetNarrator(message)
	narrator.SurfaceGui.Info.Text = message
end
-- Set the screen to a specific message

local function TableFind(rollResults, number)
	local success = false
	if table.find(rollResults, number) ~= nil then success = true end
	return success 
end
-- Look for an item in a table and return result

values.GameOn.Changed:Connect(function()
	if values.GameOn.Value == true then
		
		narrator.SurfaceGui.Info.Text = "Let's Play Bloxzee!"
		wait(3)
		
		local currentRoll = 1
		local totalRoll = 3
		-- Setup the game
		
		while currentRoll <= totalRoll do
			
			SetNarrator("Roll #"..currentRoll.."/3")
			sounds.Roll:Play()
			sounds.Lower:Stop()
			sounds.Upper:Stop()
			for index = 1, 5 do
				for subIndex, subChild in pairs (home.Neons:GetChildren()) do subChild.Material = Enum.Material.SmoothPlastic end
				wait(0.2)
				for subIndex, subChild in pairs (home.Neons:GetChildren()) do subChild.Material = Enum.Material.Neon end
				wait(0.2)
			end
			sounds.RollLoop.PlaybackSpeed = math.random(125, 175)*0.01
			sounds.RollLoop:Play()
			-- Show the current roll
			
			local rollAction = {"", "", "", "", ""}
			for index, child in pairs (narrator.SurfaceGui:GetChildren()) do
				if string.find(child.Name, "Choice") then
					local tablePosition = tonumber(string.sub(child.Name, 7, 7))
					local action = child.Text
					rollAction[tablePosition] = action
				end
			end
			-- Determine roll action based of narrator screen
			
			local unanchoredTable = {}
			for index, entry in pairs (rollAction) do
				local ball = home["Ball"..index]
				if entry == "Roll" then
					local POS_X = ball.Position.X + (math.random(-20, 20)*0.01)
					local POS_Y = ball.Position.Y + (math.random(20, 50)*0.1)
					local POS_Z = ball.Position.Z + (math.random(-20, 20)*0.01)
					ball.Position = Vector3.new(POS_X, POS_Y, POS_Z)
					table.insert(unanchoredTable, ball)
				end
			end
			-- Add balls to be rolled into an unanchored table
			
			wait()
			
			for index, entry in pairs (unanchoredTable) do
				entry.Anchored = false
				entry:SetNetworkOwner(nil)
				entry.VectorForce.Enabled = true
				entry.VectorForce.Force = Vector3.new(math.random(50, 100), math.random(200, 400), math.random(50, 100))
			end
			-- Apply force to the unanchored balls
			
			wait(math.random(10,30)*0.1)
			
			for index, entry in pairs (unanchoredTable) do
				entry.VectorForce.Enabled = false
			end
			-- Disable force on the unanchored balls
			
			wait(2)
			
			local attempts = 1
			local maxAttempts = 10
			local relaxed = false
			while attempts <= maxAttempts and relaxed == false do
				relaxed = true
				for index, entry in pairs (unanchoredTable) do
					if math.abs(entry.Position.Y - sensors.Row1.Part1.Position.Y) > 0.4 then
						relaxed = false
					elseif entry.Position.Y < sensors.Row1.Part1.Position.Y - 0.2 then
						entry.Position = Vector3.new(entry.Position.X, entry.Position.Y + 2, entry.Position.Z)
					end 
				end
				wait(1)
				attempts = attempts + 1
			end
			sounds.RollLoop:Stop()
			-- Wait for the unanchored balls to calm down
						
			for index, entry in pairs (rollAction) do
				local ball = home["Ball"..index]
				ball.Anchored = true
			end
			-- Anchor the unanchored balls
						
			local availableSensors = {}
			for index, descendant in pairs (sensors:GetDescendants()) do
				if descendant:IsA("Part") then table.insert(availableSensors, descendant) end
			end
			-- Reset the available sensors table
			
			local rollResults = {}
			for index = 1, 5 do
				local ball = home["Ball"..index]
				local closestSensor = availableSensors[1]
				local closestSensorIndex = 1
				local closestMagnitude = (ball.Position - closestSensor.Position).Magnitude
				for subIndex, subEntry in pairs (availableSensors) do
					local magnitude = (ball.Position - subEntry.Position).Magnitude
					if magnitude < closestMagnitude then
						closestMagnitude = magnitude
						closestSensor = subEntry
						closestSensorIndex = subIndex
					end
				end
				table.remove(availableSensors, closestSensorIndex)
				ball.Position = closestSensor.Position
				local row = tonumber(string.sub(closestSensor.Parent.Name, 4, 4))
				local part = tonumber(string.sub(closestSensor.Name, 5, 5))
				table.insert(rollResults, {row, part})
				wait()
			end
			-- Snap the balls in exact positions and add their information to the roll table
			
			for index = 1, #rollResults do rollResults[index] = rollResults[index][1] end
			-- Simplify the table to the dice number only
			
			local scoring = {
				{"Two Pair", 25, false}, -- 1, 1, 2, 2
				{"Three of a Kind", 50, false}, -- 1, 1, 1 
				{"Short Straight", 75, false}, -- 1, 2, 3, 4
				{"Long Straight", 100, false}, -- 1, 2, 3, 4, 5
				{"Full House", 150, false}, -- 1, 1, 1, 2, 2
				{"Four of a Kind", 200, false}, -- 1, 1, 1, 1
				{"Bloxzee", 1000, false} --1, 1, 1, 1, 1
			}
			-- Scoring information
			
			local conditionMatched = false
			
			conditionMatched = false
			for index = 1, 6 do
				-- Two pair can start with any number 1-6
				local amountA = 0
				for subIndex, subEntry in pairs (rollResults) do
					if subEntry == index then
						amountA = amountA + 1
					end
				end
				-- How many of this number is there?
				if amountA >= 2 then
					for subSubIndex = 1, 6 do
						local amountB = 0
						for subSubSubIndex, subSubSubEntry in pairs (rollResults) do
							if subSubSubEntry == subSubIndex and subSubIndex ~= index then
								amountB = amountB + 1
							end
						end
						if amountB >= 2 then
							conditionMatched = true
						end
						--If there are two of this number, are there also two of another number?
					end
				end
			end
			if conditionMatched == true then
				scoring[1][3] = true
			end
			-- Check for two pair
			
			conditionMatched = false
			for index = 1, 6 do
				-- Three of a kind can start with any number 1-6
				local matches = 0
				for subIndex, subEntry in pairs (rollResults) do
					if subEntry == index then
						matches = matches + 1
						if matches == 3 then
							conditionMatched = true
						end
					end
				end
				-- Are there three of the same number?
			end
			if conditionMatched == true then
				scoring[2][3] = true
			end
			-- Check for three of a kind
			
			conditionMatched = false
			for index = 1, 3 do
				-- Short straights can start with 1-3
				if TableFind(rollResults, index) == true then --table:find(rollResults, index) ~= nil then
					--Can we find the starting number?
					local straight = true
					for subIndex = index, index + 3 do
						if TableFind(rollResults, subIndex) == false then straight = false end
					end
					if straight == true then
						conditionMatched = true
					end
					-- Can we find the all of the needed numbers?
				end
			end
			if conditionMatched == true then
				scoring[3][3] = true
			end
			-- Check for short straights
			
			conditionMatched = false
			if scoring[3][3] == true then
				-- Must have a short straight to have a long straight
				for index = 1, 2 do
					-- Long straights can start with 1-2
					if TableFind(rollResults, index) == true then
						local straight = true
						for subIndex = index, index + 4 do
							if TableFind(rollResults, subIndex) == false then straight = false end
						end
						if straight == true then
							conditionMatched = true
						end
						-- Can we find the all of the needed numbers?
					end
				end
				if conditionMatched == true then
					scoring[4][3] = true
				end
			end
			-- Check for long straights

			conditionMatched = false
			if scoring[1][3] == true then
				-- Must have a three pair to have a full house
				for index = 1, 6 do
					-- Full house can start with any number 1-6
					local amountA = 0
					for subIndex, subEntry in pairs (rollResults) do
						if subEntry == index then amountA = amountA + 1 end
					end
					-- Identify the three pair
					if amountA >= 3 then
						for subSubIndex = 1, 6 do
							local amountB = 0
							for subSubSubIndex, subSubSubEntry in pairs (rollResults) do
								if subSubSubEntry == subSubIndex and subSubIndex ~= index then
									amountB = amountB + 1
								end
							end
							if amountB >= 2 then
								conditionMatched = true
							end
						end
						-- Is there another number that is found at least two times?
					end
				end
			end
			if conditionMatched == true then
				scoring[5][3] = true
			end
			-- Check for full house
	
			conditionMatched = false
			if scoring[2][3] == true then
				-- Must have a three pair to have four of a kind
				for index = 1, 6 do 
					-- Four of a kind can start with any number 1-6
					local matches = 0
					for subIndex, subEntry in pairs (rollResults) do
						if subEntry == index then
							matches = matches + 1
							if matches == 4 then conditionMatched = true end
						end
					end
					-- Are there four of the same number?
				end
			end
			if conditionMatched == true then scoring[6][3] = true end
			-- Check for four of a kind
			
			conditionMatched = false
			if scoring[6][3] == true then
				-- Must have four of a kind to have Bloxzee
				for index = 1, 6 do
					-- Bloxzee can start with any number 1-6
					local matches = 0
					for subIndex, subEntry in pairs (rollResults) do
						if subEntry == index then
							matches = matches + 1
							if matches == 5 then conditionMatched = true end
						end
					end
				end
			end
			if conditionMatched == true then scoring[7][3] = true end
			-- Check for Bloxzee

			bestCondition = "Nothing"
			for index, entry in pairs (scoring) do
				if entry[3] == true then
					bestCondition = entry[1]
				end
			end
			values.LowerSection.Value = bestCondition
			-- Find the best condition matched, if any
			
			if values.LowerSection.Value == "Nothing" then
				local points = 0
				for index, entry in pairs (rollResults) do
					points = points + entry
				end
				-- Check for points
				-- One point per dice face value
				-- Landing on 3 would be 3 points
				values.UpperSection.Value = points
			end
			
			if values.LowerSection.Value == "Nothing" then
				sounds.Upper:Play()
				SetNarrator(tostring(values.UpperSection.Value).." Points")
				wait(4)
			else
				if bestCondition ~= "Bloxzee" then
					SetNarrator(values.LowerSection.Value)
					sounds.Lower:Play()
				end
				wait(4)
			end
						
			if currentRoll < totalRoll and bestCondition ~= "Bloxzee" then
				values.Deciding.Value = true
				values.PressedCountdown.Value = 45
				while values.PressedCountdown.Value > 0 do
					home.ButtonRoll.Material = Enum.Material.Neon
					wait(0.5)
					home.ButtonRoll.Material = Enum.Material.SmoothPlastic
					wait(0.5)
					values.PressedCountdown.Value = values.PressedCountdown.Value - 1
				end
				-- Player decides what to do
			elseif bestCondition == "Bloxzee" then
				values.JackpotWon.Value = true 
				currentRoll = totalRoll
			elseif currentRoll == totalRoll then
				SetNarrator("That's the game!")
				wait(4)
			end
			values.Deciding.Value = false
			values.PressedCountdown.Value = -1
			-- Find the game
			
			if home.ButtonRoll.SurfaceGui.TextLabel.Text == "End Game" then
				currentRoll = totalRoll
			end
			
			currentRoll = currentRoll + 1
	
		end
				
		if values.JackpotWon.Value == true then
			SetNarrator("BLOXZEE")
			sounds.Jackpot:Play()
			values.JackpotWon.Value = false
			values.Rainbow.Value = 0.1
			wait(5)
			for index = 1, 20 do
				wait(1)
			end
			values.Rainbow.Value = 0
			wait(1)
			-- Jackpot celebration
		else
			SetNarrator("You won!")
			sounds.Cashout:Play()
			wait(8)
			-- 	
		end
		
		SetNarrator("Play Again!")
		wait(4)
		SetNarrator("Bloxzee")
		home.ButtonRoll.SurfaceGui.TextLabel.Text = "Next Roll"
		for index = 1, 5 do
			SetAction(index, "Roll")
			home["Ball"..index].Material = Enum.Material.Neon
		end
		wait(3)
		
		values.GameOn.Value = false
		home.CardSwipe.Player.Value = "-"
		home.CardSwipe.Screen.SurfaceGui.TextLabel.Text = "Click To Start"
		home.CardSwipe.Screen.ClickDetector.MaxActivationDistance = 16

	end
end)

Source code of MainScript in my open source Bloxzee arcade machine.

🔨 | Building
Arcade Island




I’m a huge fan of future lighting and other environmental tools and believe it can be used to take games to the next level of immersion.

Build Battles



These builds were all created in about an hour.

✅ | Management
Social Community

Although Roblox has been of great assistance for a strong financial future, community and passion is at the core of what I do as a creator. I enjoy regular events, livestreams, and updates with my community. I am able to confidently manage large groups of people on a regular basis.

Finances

I created RoEconomics to help myself and other developers track finances with a growing game. I have used the Roblox ad system extensively and my work in tracking my own statistics has helped significantly.

Game Jam

Strong communication and leadership drove Snowy Showdown: Battle Royale to a runner up finish in the Roblox 2020 Holiday Game Jam. In this event, I was able to plan out the game and development schedule despite the stressful roadblock of a short time limit.

💻 | UI Design
Arcade Island UI



\

📷 | Photoshop
YouTube Thumbnails (Collaboration)

Collaboration. Renders courtesy @Toaster_Fuel

General Marketing (Collaboration)

Collaboration. Renders courtesy @Toaster_Fuel

Roblox Ads (Collaboration)


Collaboration. Renders courtesy @Andr3wGFX.



Business inquiries are expected to be paid at industry standard. Generally, I am very busy with existing projects, but I am always open to hearing new ideas. Please don’t hesitate send me a direct message on Twitter or a private message here!

Happy developing! :hidere:

35 Likes

Definitely vouching for this portfolio. I’m one of the major developers for Arcade Island 2 and he is a really good person to work with and one of the nicest people I met. His scripting work is amazing and he has impacted me in many ways. Very inspiring and motivating. Recommend you to check him out if you’re In need of a scripter.

9 Likes

I vouch for this portfolio, and I recommend hiring him.

I work alongside him on a 4-person Holiday Game Jam team, and he has not yet disappointed me. He works 24/7, completes tasks extremely fast, and has phenomenal leadership skills. He’s a cool and friendly person that is easy to work with.

4 Likes

Spoke at length before agreeing on a project, super reasonable. Extremely happy with the result and will definitely be working with him again in the future :slight_smile:

2 Likes

Hey, I recommend hiring him. Great person to work with him/talk with him.

Anyways, are you an architect? If yes, are you able to draw a restaurant sketch?

1 Like

Hi! Do you have discord I can contact you at?

1 Like

Hey there, I’m currently working on Arcade Island 3 until the Summer. However, you are welcome to send me a private message on the DevForum if you’d like.

3 Likes

I’ll be contacting you, hope to work with you soon!

1 Like

I’m glad you are interested in my work! However, I’d like to remind you (and everyone) that I am currently focused on working on Arcade Island 3. It is highly unlikely I will be interested in any offers or negotiations with anyone until I’ve released the game this Summer.

2 Likes

I’ve played one of your arcade’s before, must say very impressive!
But yeah for sure, please message me privately on this Devforum when it would be a good time!

1 Like

Could you contact me? I have a few questions regarding you helping with a bit scripting, nothing much. Percentages on pay is issued to all my dev’s.
MegaShot#4683

1 Like

Hi there, I am currently focused on working on Arcade Island 3. It is highly unlikely I will be interested in any offers or negotiations with anyone until I’ve released the game this Summer. However, you are welcome to contact me through the sources I mentioned in my portfolio.

2 Likes

Hello I am a game devellopper, looking for a proffessional scripter, and a Graphic Designer for futur updates on a game called “Milky Hotel”, I recently joined DevForum member ship looking for both subjects. I was wondering, if your still free, and for how much robux, would you start working with us?
Good luck with your games!

1 Like

Hi there, thanks for reaching out and sorry for the late reply. This doesn’t sound like a position I’d be interested in filling, best of luck with your future works.

3 Likes

Would you be interested in becoming a dev for: Aerborne Airports, Inc. - Roblox. if so please add me on discord: strangertingz#1777

2 Likes

Thanks for reaching out - I don’t think I’m interested. Best of luck :sweat_smile:

1 Like

I have updated my portfolio to include more recent examples of my building, environment, and lighting best works. Planning on open sourcing my arcade machine, Bloxzee, at some point, which will include much higher quality code than my previous open sourced machine, Home Run.

3 Likes

Yo his work is legit the best I recomend hiring him

1 Like