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

このWIKIを編集するにはパスワード入力が必要です

認証パスワード