Steamworks ドキュメンテーション
Steamインベントリアイテムアクセサリ
アイテムアクセサリは、プレイヤーにゲーム内アイテムをカスタマイズする方法を提供し、コモンアイテムの価値を高め、興味深いものに変え、さらにはユニークなバージョンを作り出すことを可能にします。

付属アクセサリは、コミュニティ内のインベントリビューで表示され、Steamコミュニティマーケット内に出品される際には「ユニーク(非コモディティ)」アイテムとして扱われます。

サポートするアクセサリのタイプや、各アクセサリタイプが影響する装飾やゲームプレイエフェクトの決定はデベロッパーに任されます。 アイテムタイプによって異なるアクセサリをサポートする選択もあります。

backpackcomic_resize30.png

具体例として、おなじみのタイプのステッカーの定義を見ていきましょう。

Unique_backpack.png

この例において「ユニーク」という接頭語は自動で追加されました。

アイテムをカスタマイズ可能に

開発者が明示的に構成したタイプのアイテムにのみ、プレイヤーはアクセサリを取り付けできるようになります。 アイテムをカスタマイズ可能とマークするには、該当アイテムのItemDefを "accessory_tag"で更新してください。プロパティの値はアイテムごとのタグカテゴリートークンです。

例:
"accessory_tag": "sticker",

このItemDefにおいて、アイテムごとのタグのカテゴリーは「sticker」であり、付属アクセサリとして扱われます。 アイテムごとのタグのvalueは、アクセサリアイテムのItemDefIDです。

アイテムごとのタグは、所有権の変更を含めアイテムの存続期間中、永続します。

上記の例にみられるように、1つのアイテムに対して複数のアクセサリを付けることが可能です。 1つのアイテムに付属できるアイテムの数を制限するには、プロパティ"accessory_limit":を設定してください。

"accessory_limit": 3,

デフォルトのリミットは4です。 それ以上の上限は非推奨です。

ゲーム内でアイテムがカスタマイズ可能である場合、付属アクセサリはアイテムごとのタグを確認することで見つけられます。(SDKメソッドのISteamInventory::GetResultItemProperty()をプロパティ名"tags"で呼び出します)

アクセサリの定義づけ

各アクセサリは実際にはItemDefであるため、既存のツールを使ってアクセサリの外観を定義できます。その中でも重要な、icon_urlプロパティとローカライズ名の定義もできます。

作成されるカスタマイズアイテムの説明では、ItemDefからの情報を使います。 ItemDefを変更する場合、ユーザーのインベントリ内のアクセサリも同様に更新されます。

シンプルなステッカーの定義:
{ "appid": 480, "name": "Blue Star", "description": "A blue star sticker with mysterious powers", "icon_url": ...

単一使用アクセサリの作成

アクセサリの取り付けには、アイテムごとのタグを追加するメソッドは何でも使用できます。 最も興味深いケースは、プレイヤーが獲得、トレード、購入してから使用できる消費アクセサリを定義づけることです。

この関数は"tag_tool" item typeで提供されます。 tag_toolは対象となるアイテムを変更することで消費されます。

タグツールを有効化するには、まず、カスタマイズ可能なアイテム上でアクセサリタグを有効にします(例では、これはバックパックです):
{ "appid": 480, "itemdefid": 2000, "type": "item", "name": "Everyday backpack", "description": "A good place to keep things, with lots of room for stickers.", "icon_url":..., "accessory_tag": "sticker", "accessory_limit": 3, "allowed_tags_from_tools": "sticker" }

"tag_tool"に"type"を設定し、各ステッカータイプを作成します。 タグツールのアクションは、このステッカーのItemDefを引数として、アクセサリタグに適用することです。 そのためステッカーのItemDefはこのようになります:
{ "appid": 480, "itemdefid": 1001, "name": "Blue Star", "description": "A blue star sticker with mysterious powers", "price_category": "1;VLV25", "icon_url"..., "type": "tag_tool", "tags": "sticker:1001", }

"tags"の値が、対象となるアイテムにこのステッカーのItemDef IDを適用することに注意してください。

アクセサリアイテムは、通常のインベントリアクションとドロップメソッドのすべてをサポートしています。価格カテゴリーの定義づけ、アイテムストアでの販売も含まれます。

アクセサリの使用

実際にアイテムにステッカーを適用するには、Steamworks SDKから(または信頼できるサーバーからWebAPI経由で)ExchangeItems(crafting)メソッドを呼び出します。 ステッカーと、カスタマイズ可能なアイテムを素材として渡し、対象のItemDefタイプをオリジナルのカスタマイズ可能アイテムとマッチさせます。 これにより、tag_toolが適用され対象が更新されます。

リクエストが有効な場合、ExchangeItem呼び出しがアトミックにステッカーを消費して対象アイテム上のタグを更新します。

アイテムごとのタグの設定は、item generatorなど他の方法もあります。アイテムタグページを参照してください。

ローカリゼーションと外観

アクセサリは自動で、ユーザーのバックパックやコミュニティマーケットを含むWebビューにレンダリングされます。 説明ブロックではそれぞれ付属のアクセサリにつき小型バージョンのアイコンを含み、各アクセサリのローカライズ名をリストします。

いつも通りアイテム名は、ItemDefスキーマに値を提供することでローカライズできます。

内部名にローカライズテキストを提供する方法は、Steamインベントリサービスページの「アイテムタグ」セクションを参照してください。 例では、内部名「sticker」は単純にすべての言語において「Sticker」にマップされています。

また、前述の特別な説明ブロックの前に表示される特別なテキストを指定することもできます。 製品説明に Accessories_description_<language> API言語コード プロパティを指定するだけです。 動的プロパティと組み合わせて、動的プロパティ値に置き換えられるトークンを設定できます。

例:


アイテムインスタンス(「ステッカー」アクセサリが付属)の動的プロパティnum_times_stickered123が設定されている場合に、ステッカーアイテム定義で次のように指定すると:

{ "accessory_description_english": "Stickers applied %num_times_stickered% times" }

以下のテキストがWebビューに表示されます。

Stickers applied 123 times

アクセサリの取り外し、または置き換え

消費後にカスタマイズしたアイテムからアクセサリを取り除いても元通りにはなりません。 アクセサリはもちろん取り外しできます。アイテムからタグを削除する方法は、アイテムごとのタグのドキュメントを参照してください。

ユーザーカスタマイズには、存在するアクセサリを取り外すためだけのtag_toolを用意できます。

1つのアイテムに対し、2つのインスタンスの同じアクセサリを追加することは現在サポートされていません。 試行するとExchangeItem呼び出しで失敗し、アクセサリアイテムは消費されません。