おめでとうございます! マルチプレイヤーバトルロイヤルを作成しました!このシリーズでは、あなたは次のことを持っています:
- プレイヤーのテレポートなど、さまざまなゲーム機能を処理するモジュールスクリプトを作成しました。
- マッチの開始と終了にカスタムイベントをコードする方法を学びました
- プレイヤーがゲームに参加、勝利、または退出する際に使用されるアレイ。
でも、あなたのゲームはほとんど他の人がプレイする準備ができています。アリーナをユニークにし、目を引くサムネイルを作成して、プレイヤーをあなたのゲームに引き付けましょう。
オプションの改良
以下は、エクスペリエンスを向上させるいくつかの方法です。
マップビジュアルを改善
目に見えて興味深いマップを持つと、ゲームの印象が強くなり、人々がプレイを開始するようになります。一時間程度の時間をかけて、グレーボックスのレベルをリアルなマップに変えましょう。
このシリーズの開始にあなたのゲームの説明を書くことを忘れましたか? 作成中、マップにクリアな設定があることを確認してください。たとえば、Roblox 開発者によって作成されたいくつかの例のマップは、次のとおりです。
Studio で構築するか、プリメイドアセットを使用して構築できます。以下は、Roblox によってアップロードされた幾つかのアセットの例です。各パックには、高品質の完全にテクスチャ化されたモデルが含まれています。
フォースフィールドを変更する
ゲーム中に、プレイヤーがリスポーンする際にフォースフィールドが現れたことに気づいたかもしれません。スポーン場所プロパティのフォースフィールドの持続時間を変更すること。
- 関連するスポーン場所をクリックします。
- プロパティ > フォースフィールドで、期間値を変更します。
プレイテストと変数の確認
Roblox のゲームは、ゲームプレイが楽しく公平であることを確認するために頻繁にプレイテストされます。
ゲームをピアにプレイテストし、フォロー中のことを確認してください:
- マッチの期間が正しく感じられますか? 勝利しないプレイヤーの場合、マッチが終了しすぎますか、あるいは長すぎますか?
- マップのサイズが正しいですか? 空っぽのエリアはありますか? 長く続くまでに時間がかかりますか?
ゲームプレイを改善するために、変数をテスト、評価、および変更します。いくつかの例:
- マッチを大きなマップで長くするには、GameSettings.matchDuration を変更します。
- プレイヤーが感じるにつれに、休憩時間を長くする。
ロビーをソーシャルにする
Roblox の人気ゲームは、プレイヤーが休憩を待っている間に楽しんで社交的になるように、ミニゲームを追加することがよくあります。これには、物理学で球を入れたり、プレイヤーが遊び、またはミニ障害コースを追加することが含まれます。
オプションチャレンジ
多くの Roblox エクスペリエンスは、リリース後もアップデートを続けます。以下は、プロジェクトに新機能を追加するためのオプションのチャレンジです。
罠
マップをさらにチャレンジするために、プレイヤーにダメージを与えるトラップや障害物を追加します。詳細は、「トラップの作成」を参照してください。
トラッキングスコア
ラウンドで誰が勝ったかを追跡するリーダーボードを作成します。このアイテムを リーダーボード で使用するコードを作成します。
パワーアップ
プレイヤーのスピードやツールの攻撃力などの変更を作成するスクリプト化されたパーツを作成します。後半のマッチ終了後、resetMatch() を使用してパワーアップのセットを再構築します。For reference, learn more in the パワーアップ tutorial.
もっとアリーナを追加
異なる設定とコードでより多くのアリーナを構築し、ランダムなマップの選択をコード化します。プレイヤーがマッチを開始すると、MapManager というモジュールスクリプトがランダムなマップを選択し、必要に応じてプレイヤーをそれらのスポーン場所に割り当てます。コードボックスをチェックして、ヒントが必要な場合は、または 1つの実装を見るために必要なら
--]]
Setup Notes:
1. In Workspace, create a folder named Maps. Store all parts of a map in individual folders.
2. For each individual map, include a folder named SpawnLocations
3. When starting a match, use pickNewMap() to get a random map. When assigning player spawn points, use
GetSpawnLocations() to get a table with all locations.
]]
local MapManager = {}
local mapsFolder = workspace.Maps
-- 回転できるすべてのマップを保存します
local availableMaps = mapsFolder:GetChildren()
-- 現在のマップをプレイ中に保存
local activeMap
-- ランダムマップを取得する。
local randomGenerator = Random.new()
-- 利用可能なマップテーブルからランダムなマップを取得します
function MapManager.pickNewMap()
local whichMapKey = randomGenerator:NextInteger(1, #availableMaps)
activeMap = availableMaps[whichMapKey]
print("New map: " .. activeMap.Name)
end
-- 現在のスポーンポイントが含まれるテーブルを返します
function MapManager.getSpawnLocations()
local spawnPoints = activeMap:FindFirstChild("SpawnLocations")
local availableSpawnPoints = spawnPoints:GetChildren()
return availableSpawnPoints
end
return MapManager