设计多人游戏¶
Time:10 分钟
作为社交平台,Roblox 上最成功的游戏都利用了促进玩家之间进行有意义的互动的机制。通过特定的设计选择来鼓励社交游戏,开发者将可以大幅提升玩家的参与度和留存度,以及游戏利润。
设计选择¶
平衡世界尺寸¶
考虑游戏世界的尺寸与最大玩家数量。少数玩家在巨大的地图上会让人感觉游戏人数稀少,而拥挤的大厅则会让人觉得不适。
以下是一些平衡地图尺寸与玩家数量的技巧:
在较大的地图上创造关键点来聚集玩家,例如 FPS 中重要的 NPC 商店或建筑。
使用头目战或假日挑战之类的社区活动将大量玩家聚集到一起。
在开发过程中,以不同的玩家数量进行游戏测试,直到空间与玩家数量达到理想的比例。
考虑游戏类型¶
根据游戏类型,开发者可以用不同的方式设计环境。以角色扮演游戏 Welcome to Bloxburg(欢迎来到方块堡)为例,其环境设计中包含了多种用途的玩家聚集中心,让玩家可以去上班、购车及在饭店、俱乐部或者家庭聚会中社交。大地图并不是问题,因为玩家会聚集在这些社交中心。相比之下,Phantom Forces(幻影力量)这样的竞技类战斗游戏将地图设计得较小,以迫使玩家之间频繁交战。
避免分裂玩家基数¶
以多种游戏模式发布游戏时,可能带有分裂玩家基数的风险。例如,如果游戏是大逃杀类,在玩家基数足够多之前请考虑发布一个“小队”模式。一旦开发者认为游戏已有足够多的玩家,即使分段也不会影响服务器上的玩家数量,再考虑加入单人游戏等更多模式。
提供登录奖励¶
维持健康而稳固的社区的方法之一,是确保玩家经常返回。在 Roblox 中一种常见的办法是提供登录奖励,例如/articles/Developer Products In Game Purchases|游戏内物品
或/articles/Badges Special Game Awards|徽章
等。只要玩家为获取奖励而返回,游戏就会成为他们日常习惯的一部分,使其维持一定的活跃玩家基数。
可激励奖励的方式包括:
如果玩家连续多天登陆可获得比普通奖励更好的奖励。例如,角色扮演游戏 Adopt Me!(领养我!)为每天登录的玩家提供游戏内货币,并在连续五天后提供一份神秘礼物。
提供认可玩家连续登陆的方式,例如奖励专属的外观物品。这会提醒其他玩家连续登陆奖励的价值。
社交功能¶
友谊和社区可提高玩家的留存度与参与度。虽然 Roblox 包含诸如游戏内聊天和好友系统这样的功能,您也可以用特定的社交功能来增强游戏。
提示好友互相加入¶
Roblox 提供 SocialService
函数,让玩家可以邀请好友加入其当前的游戏服务器。
以下代码示例演示如何使用 SocialService
API 实现此功能:
发送游戏邀请 ```
local SocialService = game:GetService("SocialService")
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local function canSendGameInvite(targetPlayer)
local res, canSend = pcall(SocialService:CanSendGameInvite(targetPlayer))
return res and canSend
end
local function promptGameInvite(targetPlayer)
local res, canInvite = pcall(SocialService:PromptGameInvite(targetPlayer))
return res and canInvite
end
local function openGameInvitePrompt(targetPlayer)
local canInvite = canSendGameInvite(targetPlayer)
if canInvite then
local promptOpened = promptGameInvite(targetPlayer)
return promptOpened
end
return false
end
local function invitePromptClosed(senderPlayer, recipientIds)
-- 处理被发送者邀请的玩家的自定义逻辑
end
local function inputBegan(input, gameProcessed)
local inputType = input.UserInputType
local touch = Enum.UserInputType.Touch
local mouse1 = Enum.UserInputType.MouseButton1
if inputType == touch or inputType == mouse1 then
openGameInvitePrompt(player)
end
end
script.Parent.InputBegan:Connect(inputBegan)
SocialService.GameInvitePromptClosed:Connect(invitePromptClosed)
要使此代码示例生效,必须将其置于 `GuiButton` 下的一个 `LocalScript` 中。当玩家激活按钮时,它将执行 `openGameInvitePrompt()` 函数,检查是否可以通过 `SocialService/CanSendGameInviteAsync|CanSendGameInviteAsync()` 发送游戏邀请。然后它将用 `SocialService/PromptGameInvite|PromptGameInvite()` 打开邀请提示。
### 凝聚玩家
通过添加凝聚玩家的系统来鼓励自然的社交互动。这可以是一个需要不止一位玩家参与的挑战,例如战斗游戏中的头目战,或社交游戏中的电影剧院。
### 在游戏内庆祝玩家的成功
认可玩家在游戏内的成就不仅奖励其个人,也会引起讨论或激励其他玩家追求该奖励。例如:
* 给获得奖励的玩家加上临时粒子效果。
* 向大厅里的全体玩家广播一条消息。
* 使用排行榜来展示玩家的成就。
[Egg Farm Simulator(鸡蛋农场模拟器)](https://www.roblox.com/games/1828509885)就是一个认可玩家成就的例子。它包含一个排行榜,策略性地置于游戏区域的中央,以便展示最专注的玩家的成就。
## 更多资源
* [社交游戏的社交机制](https://www.gdcvault.com/play/1014555/Social-Mechanics-for-Social-Games)
* [经典社交机制:多人游戏背后的引擎](https://www.gdcvault.com/play/1013827/Classic-Social-Mechanics-The-Engines)
***__Roblox官方链接__:[设计多人游戏](https://developer.roblox.com/zh-cn/articles/designing-for-multiplayer)