Modding API
概要
ユーザー用のMODフォルダの位置
- Windowsの場合 C:\Users\<username>\AppData\Local\Colossal Order\Cities_Skylines\Addons\Mods
- Macの場合 /Users/<username>/Library/Application Support/Colossal Order/Cities_Skylines/Addons/Mods
- Linuxの場合 /home/<username>/.local/share/Colossal Order/Cities_Skylines/Addons/Mods/
※WorkshopからSubscribeした場合のModの場所は、User pathページ参照
引用先の英語Wikiの方が詳しいのでそちらを読むのをオススメ。
このゲームはUnity5で作られている。C#でソースコードを書きコンパイルしてMODのdllを作れる。
ICities.dllの位置は、<SteamFolder>\SteamApps\common\Cities_Skylines\Cities_Data\Managed\ICities.dll
ゲーム自体にコンパイラがあるので「メモ帳」のようなテキストエディタだけでも作成可能。以下はその場合の手順。
- 上記のユーザー用MODフォルダ内に、自分の作りたいMOD名でサブフォルダを作成する。
- さらにその中にSourceという名前でサブフォルダを作成する。
- その中にテキストエディタでソースを書きC#ファイルを作成する、拡張子は.cs。ファイル名は何でも良いが、MOD名と同じにするのを推奨。
- ゲームを起動すると自分の作成したMODフォルダに.dllが作成され、コンテンツマネージャのMOD欄にも現れる。MODのオン・オフやWorkshopへの共有(アップロード)が可能。
- 共有する際にはサムネイル画像(644*360のpng)やMOD名・解説・変更点の編集、ソースコード公開の有無を指定ができる。
visual studioでMODを作成・コンパイルする場合
①<SteamFolder>\SteamApps\common\Cities_Skylines\Cities_Data\Managed
上記フォルダを参照パスに設定する
※ゲームプレイ中にソースを書き換え保存するとエラーが表示される。不安定なら再起動した方が良い。
参考:No More Purple MODの公開されているソース
Modを始める
using System;
using System.IO;
using System.Reflection;
using ICities;
using UnityEngine;
namespace UnlockAllMod {
public class MyCustomMod : IUserMod {
public void OnLoad() {
}
public void OnUnload() {
}
public string Name {
get { return "My mod name"; }
}
public string Description {
get { return "Here is where I define my mod"; }
}
}
}
全般
void OnCreated(ThisClass instance);
void OnReleased();
IMilestones
void UnlockMilestone(string name);
void OnRefreshMilestones();
int OnGetPopulationTarget(int originalTarget, int scaledTarget);
ILevelUp
IEconomy
long OnUpdateMoneyAmount(long internalMoneyAmount);
int OnPeekResource(EconomyResource resource, int amount);
int OnFetchResource(EconomyResource resource, int amount, Service service, SubService subService, Level level);
int OnAddResource(EconomyResource resource, int amount, Service service, SubService subService, Level level);
int OnGetConstructionCost(int originalConstructionCost, Service service, SubService subService, Level level);
IDemand
int OnCalculateResidentialDemand(int originalDemand);
参考になりそうなページ
- 最終更新:2016-03-11 15:18:16