Modding
PAGE IS WIP AND UNDER CONSTRUCTION!
Modding is an exciting endeavor! Hopefully this page can serve as a quick-start on how you can do it to!
Requirements
- .NET Framework - https://dotnet.microsoft.com/en-us/download/dotnet-framework/net462
Quick Start
- Clone https://github.com/MaFi-Games/Captain-of-industry-modding into a directory (git clone https://github.com/MaFi-Games/Captain-of-industry-modding.git
)
- Navigate to the directory and into src/ExampleMod
- Run dotnet build /p:LangVersion=10.0
We're using /p:LangVersion=10.0
for building mod, as otherwise it'll throw errors about too new language features being used. You can also edit ExampleMod.csproj
to contain <LangVersion>10.0</LangVersion>
in the first PropertyGroup
.
Layouts / EntityLayoutParams / EntityLayoutParser
Layouts of structures such as machines or storages are based on a ASCII format passed as list of strings.
Example furnace:
[2][2][2][3][3][3][3][3][2]>~Y [2][2][3][5][5][7][7][4][3]>'O A~>[2][2][3][5][5][7][7][4][3]>'V B~>[2][2][3][5][5][7][7][4][3]>'W [2][2][2][3][3][7][7][4][3]>'P [2][2][2][2][2][2][2][2][3]>@E
A~>
and B~>
are In Ports, they accept products.
>@E
is exhaust
>~Y
is slag exit
>'
are Out Ports, they emit products
The >
indicates the direction of the port. They can be one of the following:
- >
- <
- ^
- v
There is also a +
port type, but meaning is unclear as of yet.
[1]
- [9]
([n]
essentially) are heigh units, they define the "hitbox" of the building, how many squares
it takes up and where pipes/transports can and cannot pass.
Example Chemical Plant:
~E>[7][8][7][6][5][5][5] [7][7][7][6][5][5][5] #D>[6][6][6][6][5][5][5]>X@ @A>[5][5][5][5][5][5][5]>Y# @B>[5][5][5][5][5][5][5] @C>[5][5][5][5][5][5][5] [5][5][5][5][5][5][5]
Example Unit storage:
[4][4][4][4][4] # >4A[4][4][4]X4> # [4][4][4][4][4] # >4B[4][4][4]Y4> # [4][4][4][4][4]
(wrapped on the left and right with whitespace? Why?)
Example loose storage
" [6][6][6][6][6] ", " ~ >6A[6][6][6]X6> ~ ", " [6][6][6][6][6] ", " ~ >6B[6][6][6]Y6> ~ ", " [6][6][6][6][6] "
Example fluid storage:
" [5][5][5][5][5] ", " @ >5A[5][5][5]X5> @ ", " [5][5][5][5][5] ", " @ >5B[5][5][5]Y5> @ ", " [5][5][5][5][5] "
With this, we can establish that #
is for transport belts, ~
is for loose storage belts and @
is for pipes.
According to furnace, '
is for melted materials.
You can use the in-game console command print_entity_layout <string>
to print the entity layout of a structure.
Notice: Some structures in the game use a "old" format of the layout, rather than the current format.
References / Samples
- https://github.com/MaFi-Games/Captain-of-industry-modding - Official quick-start template
- https://github.com/altmank/CaptainOfCheats - Example mod using a lot of functionality as a sort of cheat engine