Voting or Random Map System?

I would like to know if you would rather use a voting system for game intermissions, or a random map/mode system and your reason behind it. Thank you!

3 Likes

Hmmm…it depends. I think I would like to use voting so players can decide what they want to play.

2 Likes

Voting because it allows players to vote on the map they want to play. It also makes players feel like they got some sort of control over the game, if you know what I mean lol.

Obviously, if it becomes a draw then random comes into play.

I guess you gotta use both.

3 Likes

I use a random map/mode system bc I don’t really know how to make a voting system in my current lobby, and it would require a slight rewrite of the games code

1 Like

Depends, if it’s a minigame style game like epic minigames. I would suggest a random system. But if it’s a game like piggy or hide and seek I would do voting.
If you wanted to, you could also do random so it picks 3 different maps to vote on. But that might be hard.

Voting probably because it’s like the players can chose what they want to play and gives them a bit of control it could also make players stay with the game a bit longer because they can chose maps.

Say you just made a new really cool map then players can vote for it and explore it instead of waiting for it to be picked by your game.

Make a voting system, it gives the player a sense of feel that they are doing something to impact the game and it allows players to build better strategies for different maps.

It depends on the situation. If you want players to feel responsible for things not going their way, then a voting system would be optimal for your game. If you think players will be overwhelmed by the options, then a random selection system would be better than a voting system. If players are awarded for completing objectives on certain maps/modes, then you would want to add a voting system.

I would go with a voting system.

1 Your need to do a part to voting

Make a MapBoards model and do part.

2 Make a MapVotePads

Like Votepads and with code.

Script times

Your need to script this

local pads = script.Parent.MapVotePads

local mapBoards = script.Parent.MapBoards

local votingStatus = script.Parent.VotingStatus

local canVote = false

local maps = – For this foto
{
Map1 = 0, – Do your model ID
Map2 = 0, – Do your model ID
Map3 = 0, – Do your model ID
Map4 = 0, – Do your model ID
Map5 = 0, – Do your model ID
Map6 = 0, – Do your model ID
}

while true do

pads.MapVote1.Votes:ClearAllChildren()
pads.MapVote2.Votes:ClearAllChildren()
pads.MapVote3.Votes:ClearAllChildren()

pads.MapVote1.VotedGui.VotedAmount.Text = ""
pads.MapVote2.VotedGui.VotedAmount.Text = ""
pads.MapVote3.VotedGui.VotedAmount.Text = ""

mapBoards.Map1.MapGui.MapImage.ImageTransparency = 1
mapBoards.Map2.MapGui.MapImage.ImageTransparency = 1
mapBoards.Map3.MapGui.MapImage.ImageTransparency = 1

mapBoards.Map1.MapGui.MapName.Text = ""
mapBoards.Map2.MapGui.MapName.Text = ""
mapBoards.Map3.MapGui.MapName.Text = ""

for i = 5, 0, -1 do
	
	votingStatus.StatusGui.Status.Text = "Voting will begin in " .. i .. " seconds"
	
	wait(1)
end


votingStatus.StatusGui.Status.Text = "Vote for the map"


local keysTable = {}
for key, value in pairs(maps) do
    table.insert(keysTable, key)
end

local randomKey1 = keysTable[math.random(#keysTable)]
local mapChosen1 = maps[randomKey1]

local randomKey2, mapChosen2
repeat
	randomKey2 = keysTable[math.random(#keysTable)]
	mapChosen2 = maps[randomKey2]
until mapChosen2 ~= mapChosen1

local randomKey3, mapChosen3
repeat
	randomKey3 = keysTable[math.random(#keysTable)]
	mapChosen3 = maps[randomKey3]
until mapChosen3 ~= mapChosen1 and mapChosen3 ~= mapChosen2


mapBoards.Map1.MapGui.MapImage.ImageTransparency = 0
mapBoards.Map2.MapGui.MapImage.ImageTransparency = 0
mapBoards.Map3.MapGui.MapImage.ImageTransparency = 0

mapBoards.Map1.MapGui.MapImage.Image = "rbxassetid://" .. mapChosen1
mapBoards.Map2.MapGui.MapImage.Image = "rbxassetid://" .. mapChosen2
mapBoards.Map3.MapGui.MapImage.Image = "rbxassetid://" .. mapChosen3

mapBoards.Map1.MapGui.MapName.Text = randomKey1
mapBoards.Map2.MapGui.MapName.Text = randomKey2
mapBoards.Map3.MapGui.MapName.Text = randomKey3


pads.MapVote1.VotedGui.VotedAmount.Text = "0"
pads.MapVote2.VotedGui.VotedAmount.Text = "0"
pads.MapVote3.VotedGui.VotedAmount.Text = "0"

canVote = true


local function onPadTouched(touch, pad)
	if not canVote then return end
	if game.Players:GetPlayerFromCharacter(touch.Parent) then
		
		if pads.MapVote1.Votes:FindFirstChild(game.Players:GetPlayerFromCharacter(touch.Parent).Name) then 
			pads.MapVote1.Votes[game.Players:GetPlayerFromCharacter(touch.Parent).Name]:Destroy()
		end
		if pads.MapVote2.Votes:FindFirstChild(game.Players:GetPlayerFromCharacter(touch.Parent).Name) then 
			pads.MapVote2.Votes[game.Players:GetPlayerFromCharacter(touch.Parent).Name]:Destroy()
		end
		if pads.MapVote3.Votes:FindFirstChild(game.Players:GetPlayerFromCharacter(touch.Parent).Name) then 
			pads.MapVote3.Votes[game.Players:GetPlayerFromCharacter(touch.Parent).Name]:Destroy()
		end
	
		local touchVal = Instance.new("StringValue")
		touchVal.Name = game.Players:GetPlayerFromCharacter(touch.Parent).Name
		touchVal.Parent = pad.Votes
		
		pads.MapVote1.VotedGui.VotedAmount.Text = #pads.MapVote1.Votes:GetChildren()
		pads.MapVote2.VotedGui.VotedAmount.Text = #pads.MapVote2.Votes:GetChildren()
		pads.MapVote3.VotedGui.VotedAmount.Text = #pads.MapVote3.Votes:GetChildren()
	end
end

pads.MapVote1.Touched:Connect(function(touch)
	onPadTouched(touch, pads.MapVote1)
end)
pads.MapVote2.Touched:Connect(function(touch)
	onPadTouched(touch, pads.MapVote2)
end)
pads.MapVote3.Touched:Connect(function(touch)
	onPadTouched(touch, pads.MapVote3)
end)

wait(10)

canVote = false


local highestVoted

for i, pad in pairs(pads:GetChildren()) do
	
	if not highestVoted then highestVoted = pad end
	
	if #pad.Votes:GetChildren() > #highestVoted.Votes:GetChildren() then 
		
		highestVoted = pad
		
	elseif #pad.Votes:GetChildren() == #highestVoted.Votes:GetChildren() then 
		
		local mapsToChoose = {pad, highestVoted}
		highestVoted = mapsToChoose[math.random(#mapsToChoose)]
	end
end

local mapName = mapBoards["Map" .. string.gsub(highestVoted.Name, "MapVote", "")].MapGui.MapName.Text
votingStatus.StatusGui.Status.Text = mapName .. " has been voted"

wait(5)

end

If don’t work me work all script. :frowning:

1 Like

I think the players should decide because in a good amount of games there’s just that one map that some people don’t like or that one good map that everyone likes. So I would say let the players choose so they can possibly enjoy the game a little bit better.

He din’t asked for an map chosing system. But anyways, map chosing system is the best in my opinion.

Personally, voting systems help with game interaction and gives the players a certain responsibility of choosing how they play. You can also monetize it more than a randomly picked map, by using an extra vote developer product or something like that in your system. But, it depends on the game flow / genre of how you want your map system to be.

Each option has its pros and cons

Pros on the map voting system

  • The community has a saying on what the next map is, thus enforcing user participation.
  • Many people just leave the game because they play on a map they do not like.
  • It puts in the mind frame of choosing a map wisely and weigh the pro and cons of each map.

Cons on the map voting system

  • It can be abused easily by people who target specific maps for a reason.

I just thought that you should maybe have every time they switch so one round it’s random and one round you pick.

voting system can get exploited i think.

That is the exact same thing with a random map system. With voting system, the players at least have a higher chance at getting to play a map they like.

Lastly, you outlined the pros and cons for map voting but not for random map system.
I would outline both tbh.

Hi NoobTesterAccount,

I would go for a voting system for game intermissions. The players can make decisions and won’t be bored during intermissions.

Good luck with building!
Sven

It’s not a map it’s for voting.

Voting. People are giving all these reasons that don’t make sense, so I just want to set the record straight.

I’m literally going to take the U.S election as an example. Imagine if instead of everybody getting to vote, who was president was decided with a 4 out of 7 coin flip. This means that your experience for the next four years in the United States is judged with the flip of a coin.

But naturally, the U.S does not do that. Instead they host elections. It’s not a guarantee that the results would satisfy you, but you had your voice heard, and I feel that is the most valuable thing about any democratic country.

Same thing for games, but just on a lesser scale. When you allow players to vote, your voice gets heard. And @Kostiskat made a great point here:

Well, you actually have a defense. Ready for another election metaphor?

Most countries have a term system, where a ruler can serve a for a limited amount of terms, and then they can’t run next election. However, they can still run after that.

You can do the same thing here. If a map gets voted, remove it out of rotation for awhile. This will stop a map from being voted for over and over and over.

2 Likes