質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

2回答

13694閲覧

UnityでMOD対応化

yrema

総合スコア286

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

1クリップ

投稿2018/02/13 14:27

漠然とした質問なので回答も漠然でも問題ありません。

世の中にMOD対応のゲームは多くありますが、
グラフィックなどのリソースのMODはファイル差し替えでイメージできるのですが、
MODで有名なSkyrimとかその他steamのゲームで機能拡張・機能変更のMODがありますよね。

そういうMODをユーザーが作れるようにするにはUnityでゲームを作る側だと、
C#のスクリプトを置けるようにすればいいと思ったのですが、
よく考えたらユーザーはコンパイルできませんよね。

というわけで、一般的なMOD対応のゲームを作る場合はどうあるべきなのでしょうか?
なにかしらスクリプトを書く場所は提供すべきだとは思うのですが・・・。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

例えば、Unity製ゲームであるCities: Skylinesが公式でMOD導入をサポートしています。これを例にとると、MOD製作者側は基本的に、Visual StudioのようなC#が扱えるIDEからゲームに同梱されたC#のDLL(Assembly-CSharp.dllやUnityEngine.dll)を参照し、MOD作成用に用意されたインターフェース(IUserModみたいなの)を実装してビルドしたDLLをゲームに読み込ませるようです。
おそらくゲーム側の実装としては、MODの処理を記述するためのAPI(インターフェースやクラス)を用意し、実際のMODのDLLは

CSharp

1System.Reflection.Assembly.LoadFrom(“DLL名”)

みたいな感じで動的に読み込んでいるんだと思います。あとはインターフェースやクラスに基づいてその処理を呼び出すって感じでしょうか。
参考:C#でプラグインDLLを作る方法(入門編)
ユーザーの書いたコードはたぶんこんな感じで読み込めると思います。

投稿2018/02/13 22:57

ruccho

総合スコア285

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yrema

2018/02/13 23:43

なるほど、自前でAPIを作るということですね。
guest

0

ベストアンサー

[追記] Dllをユーザーに作成してもらい読み込む

Cities Skylinesの話が出てますがModを作るにはUnityの知識が必要です。

Cities: Skylines Modding Tutorial: Create your first mod
https://www.youtube.com/watch?v=_e9jJJeaCbc

Unityは.NETで書かれているため、外部DLLを比較的簡単にロードできますが、これらのDLLを作成することは難しいです。Cities Skylinesではツールチェーン全体を配布して改善しようとしましたが、これはかなり難しい作業でした。

Unity games are written in .NET, which makes it relatively easy to load up external DLLs, but creating those DLLs is difficult for modders, since the tooling was historically difficult to set up and get started with. Games like Cities Skylines tried to improve on this, by distributing the entire tool chain right with the game, but this was a pretty difficult endeavor.

http://www.somasim.com/blog/2017/12/tech-notes-unity-game-modding/

どうにか頑張ってMODが追加できるようになっても、Unityと切り離すのは難しいのでUnity上で開発してもらう方が開発側もMOD作成者側も楽な気がします。Unityならエディタのカスタマイズも楽なので補助ツールも簡単に公開できます。

Unityでユーザーに制作してもらったデータを読み込む

MOD対応は可能のようですが簡単では無いですね。すごく時間が掛かると思います。スクリプトに関しては読み込んだものが動くかは分かりません。ですが、PrefabにアタッチしてもらいAsset BundleなどのUnityでシリアライズされたデータをユーザーに出力してもらえればそれを読み込むこんで動かすことは可能かと思います。

簡単にイメージできる流れとしては

[ユーザー側]
・ユーザーがUnityでMOD開発、Asset Bundleとしてエクスポートしてもらう

[ゲーム側]
・ユーザーにダイアログを表示して、エクスポートしたものを選択してもらう
・ユーザーから受け取ったデータをローカルに保存
・ローカルにデータがある場合、展開して適応

といった感じです。

MOD対応しているUnity製のMotorsport Managerというレースゲームを見つけました。セガがSteamでリリースしているゲームです。その中で
ユーザーが作成したオリジナルの車両をSteam Workshopから追加しゲーム上に表示するまでの方法が記載された記事をみつけました。

Steam Workshop Guide: Creating Models | Motorsport Manager
http://www.motorsportmanager.com/content/steam-workshop-guide-creating-models

投稿2018/02/13 18:39

編集2018/02/14 08:07
IShix

総合スコア1724

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yrema

2018/02/13 23:47

ユーザーがUnityで開発することは想定していませんでしたが、ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問