プロジェクトを終了する

*このコンテンツは、ベータ版のAI(人工知能)を使用して翻訳されており、エラーが含まれている可能性があります。このページを英語で表示するには、 こちら をクリックしてください。

おめでとう!これさえあれば、マルチプレイヤーバトルロワイヤルを作成できました!このシリーズでは、次のようなものがあります:

  • プレイヤーのテレポートなど、異なるゲーム機能を処理するモジュールスクリプトを作成しました。
  • マッチの開始と終了のカスタムイベントをコード化する方法を学んだ
  • 参加、勝利、またはゲームを終了するときにプレイヤーを管理するための配列を使用しました。

しかし、あなたのゲームはほぼ他の人がプレイできる準備が整っています。アリーナをユニークにして、目を引くサムネイルを作成して、プレイヤーをあなたのゲームに引き付けましょう。

オプションの改善

以下は、エクスペリエンスを向上させるいくつかの方法です。

マップビジュアルを改善する

視覚的に興味深いマップを持つと、ゲームに強い印象を与え、人々がプレイを開始するように促します。グレーボックスレベルを実際のマップに変換するのに時間をかけてください。

このシリーズの最初にゲームの設定の説明を書いたことを覚えていますか?作成するときは、マップが明確な設定を持っていることを確認してください。インスピレーションのために、以下は Roblox 開発者によって作成されたいくつかの例マップです。

Luxeyes によるマップ
Janedel によるマップ

Studio でビルドするか、プレイスドアセットを使用するかを選択できます。以下は、Roblox によってアップロードされたいくつかの推奨アセットで、環境を構築するのに使用できます。それぞれのパックには、高品質の完全にテクスチャ化されたモデルが含まれています。

力場を変更する

ゲーム中、プレイヤーがリスポーンするときにフォースフィールドを注意したかもしれません。SpawnLocation プロパティのフォースフィールドの持続時間を変更します。

  1. 関連するスポーン場所をクリックします。
  2. プロパティ > 力場で、期間値を変更します。

プレイテストと変数の確認

Roblox の成功したゲームは、ゲームプレイが楽しく公平であることを保証するために頻繁にプレイテストされます。

同僚とゲームをプレイテストし、以フォロー中をチェックします:

  • マッチの期間が正しいと感じますか? 勝利するプレイヤーがいないでマッチが早すぎるか、または長すぎるか?
  • マップのサイズが正しい感じですか? あまりに空っぽのエリアはありますか? 別のプレイヤーに行くのに時間がかかりますか?

ゲームプレイを向上させるために、変数をテスト、評価、修正します。いくつかの例:

  • GameSettings.matchDuration を変更して、より大きなマップで一致期間を長くします。
  • プレイヤーが急すぎると感じる場合、インターミッションの期間を長くします。

ロビーをソーシャルにする

Roblox の人気ゲームは、インターミッションの待機中にプレイヤーが楽しんで社交するように、ミニゲームを追加することが多いです。これには、物理で球形のパーツを入れて、プレイヤーがプレイできるか、ミニ障害物コースを入れることが含まれます。

オプションのチャレンジ

多くの Roblox の経験は、リリース後も更新を受け続けます。以下は、プロジェクトに新機能を追加できるオプションの課題です。

トラップ

プレイヤーにダメージを与えるトラップや障害物を追加して、マップをより挑戦的にします。詳しくは、トラップの作成 で学びましょう。

追跡スコア

誰かがラウンドで何回勝ったかを追跡するリーダーボードを作成します。この記事を使用して リーダーボード をコード化します。

パワーアップ

プレイヤーのスピードを変更するなどの変更を行うスクリプト化されたパーツを作成します。試一致終了後、resetMatch() を使用してパワーアップセットを再構築することを忘れないでください。参考にして、パワーアップ チュートリアルでもっと学ぶ。

より多くのアリーナを追加

異なる設定とコードでより多くのアリーナを構築し、ランダムマップ選択をコード化する。プレイヤーがマッチを開始するたびに、マップマネージャーというモジュールスクリプトがランダムなマップを選択し、必要に応じてプレイヤーをそれらのスポーン場所に割り当てます。ヒントが必要な場合や、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
-- 回転できるすべてのマップを保存します between
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