Page 1 of 1

[Solved]How to get started /w modding? (small graphical mod)

Posted: Sun Sep 18, 2016 4:42 pm
by Mendel
Okay, so I have 0 experience with factorio modding. How do I get started?

Seeing as I have no experience with this, I wanted to do a very limited, simple mod... or fail and be very humble about it.

What I want to do?

I want to actually make this underground belt change so it looks visually different and doesn´t block the view of one side of the belt.
viewtopic.php?f=80&t=32665

The behavior of the belts would not change so Im hoping I could do this mostly by just editing sprites.

What do I need to know:

What file contains the graphical elements of underground belts?
what format are the pictures and how to edit these files?
How does the game handle transparency of sprites?
Are the files compressed in some container file that needs to be processed before it can be edited and how to compress them back after editing?
Is there some factorio-specific tools that I will need?



general mod questions
How to implement a dummy mod in simplest way that just changes a few sprites, no behavior/functional changes to the game whatsoever?
Do I just make a new directory and where and put files there?
How do I make the game know that this mod is there?
Do I need to include files other than the edited pictures of the underground belts?
Am I too stupid to do this?

Re: How to get started with modding? (small graphical mod)

Posted: Sun Sep 18, 2016 7:46 pm
by aubergine18
You'll need a mod with a `data.lua` that changes the underground belts to use different sprites.

To do that access the relevant underground belt via `data.raw`, for example:

Code: Select all

-- in your data.lua
local belts = data.raw['underground-belt']

local normal = belts['underground-belt']
local express = belts['express-underground-belt']
local fast = belts['fast-underground-belt']
They are all similar structure, this is what the normal belt settings look like:

Code: Select all

    {
      animation_speed_coefficient = 32,
      belt_horizontal = nil,
      belt_vertical = nil,
      collision_box = {
        {
          -0.40000000000000002,
          -0.40000000000000002
        },
        {
          0.40000000000000002,
          0.40000000000000002
        }
      },
      corpse = "small-remnants",
      ending_bottom = nil,
      ending_patch = nil,
      ending_side = nil,
      ending_top = nil,
      fast_replaceable_group = "underground-belt",
      flags = {
        "placeable-neutral",
        "player-creation",
        "fast-replaceable-no-build-while-moving"
      },
      icon = "__base__/graphics/icons/underground-belt.png",
      max_distance = 5,
      max_health = 60,
      minable = {
        hardness = 0.20000000000000001,
        mining_time = 0.5,
        result = "underground-belt"
      },
      name = "underground-belt",
      resistances = {
        {
          percent = 60,
          type = "fire"
        }
      },
      selection_box = {
        {
          -0.5,
          -0.5
        },
        {
          0.5,
          0.5
        }
      },
      speed = 0.03125,
      starting_bottom = nil,
      starting_side = nil,
      starting_top = nil,
      structure = {
        direction_in = {
          sheet = {
            filename = "__base__/graphics/entity/underground-belt/underground-belt-structure.png",
            height = 43,
            priority = "extra-high",
            shift = {
              0.26000000000000001,
              0
            },
            width = 57,
            y = 43
          }
        },
        direction_out = {
          sheet = {
            filename = "__base__/graphics/entity/underground-belt/underground-belt-structure.png",
            height = 43,
            priority = "extra-high",
            shift = {
              0.26000000000000001,
              0
            },
            width = 57
          }
        }
      },
      type = "underground-belt",
      underground_sprite = {
        filename = "__core__/graphics/arrows/underground-lines.png",
        height = 64,
        priority = "high",
        scale = 0.5,
        width = 64,
        x = 64
      }
    }
So you could change the path to the graphics file like so:

Code: Select all

-- in your data.lua
normal.structure.direction_out.sheet.filename = '__YourModName__/graphics/underground-belt-structure.png'
Then just provide the revised graphic in that folder. Hope that helps.

Re: How to get started with modding? (small graphical mod)

Posted: Sun Sep 18, 2016 7:49 pm
by aubergine18
There's a modding tutorial here that shows the folder structure, files, etc. All you really need is the info.json, the data.lua and your custom graphic.

Code: Select all

YourMod_0.0.1/
  |
  +- info.json
  +- data.lua
  |
  +- graphics/
      |
      +- underground-belt-structure.png

Re: How to get started with modding? (small graphical mod)

Posted: Sun Sep 18, 2016 7:58 pm
by Mendel
Thank you so much so far!

However, it just struck me that belts are of course animated. So this is a bit of an added complexity. (animated png makes me scratch head)

That said, if I can even make some kind of visible change, that will be a good start, I will return with more questions once I have any kind of progress :)

Re: How to get started with modding? (small graphical mod)

Posted: Sun Sep 18, 2016 8:09 pm
by aubergine18

Re: How to get started with modding? (small graphical mod)

Posted: Sun Sep 18, 2016 9:05 pm
by Mendel
well I encountered an error I cant seem to figure out:

contents of my data.lua

Code: Select all

local belts = data.raw['underground-belt']

local normal = belts['underground-belt']
local express = belts['express-underground-belt']
local fast = belts['fast-underground-belt']

normal.structure.direction_out.sheet.filename = '__ubeltmagic_0.1.1__/Graphics/underground-belt/ubeltmagic.png'
contents of my info.json

Code: Select all


{
"name": "ubeltmagic",
  "version": "0.1.1",
  "factorio_version": "0.14",
  "title": "Underground belt graphical mod",
  "author": "Mendel",
  "contact": "https://forums.factorio.com/forum/",
  "homepage": "https://forums.factorio.com/forum/",
  "description": "Mod that makes underground belt visible on one belt side"
}
also there is a file C:\Users\Mendel\AppData\Roaming\Factorio\mods\ubeltmagic_0.1.1\Graphics\underground-belt\ubeltmagic.png

Upon trying to start the game I get this: "path __ubeltmagic_0.1.1__/Graphics/underground-belt/ubeltmagic.png does not match any mod"

Maybe I understood this wrong and I need to add that whole belt settings part somewhere too?

Re: How to get started with modding? (small graphical mod)

Posted: Sun Sep 18, 2016 9:08 pm
by Zeblote
Based on that error message, I guess you need to use

Code: Select all

'__ubeltmagic__/Graphics/underground-belt/ubeltmagic.png'
(without 0.1.1)

Re: How to get started with modding? (small graphical mod)

Posted: Sun Sep 18, 2016 9:33 pm
by Mendel
That did the trick!
And to my amazement it actually works like intended! the game somehow automatically adds the belt parts under the transparent parts of the underground belt entity. :D

http://images.akamai.steamusercontent.c ... 458EB5308/


todo:
repeat edit for fast and express belt
release in workshop (how?)

Re: How to get started with modding? (small graphical mod)

Posted: Sun Sep 18, 2016 9:38 pm
by aubergine18
To release in mod portal, you just log in to mods.factorio.com (login link in top-right corner of that page - note: different login to your forum login, it think mods site uses the account you bought game with) and then upload your mod.

I did very short tutorial with some infos that might be of help: viewtopic.php?f=189&t=32664

Re: How to get started with modding? (small graphical mod)

Posted: Sun Sep 18, 2016 9:43 pm
by Mendel
edit out: (didnt find all the necessary files)
actually no, wait, Im an idiot. just found the other files under their respective folders :D

Re: How to get started with modding? (small graphical mod)

Posted: Sun Sep 18, 2016 9:47 pm
by Zeblote
The grass shines through on one of them, it's not ready yet :D

Image

Re: How to get started with modding? (small graphical mod)

Posted: Sun Sep 18, 2016 9:47 pm
by aubergine18
They are in different folders in the base mod:

__base__/graphics/entity/fast-underground-belt/fast-underground-belt-structure.png

__base__/graphics/entity/express-underground-belt/express-underground-belt-structure.png

__base__/graphics/entity/underground-belt/underground-belt-structure.png

You could just have 3 files in your graphics folder, one for each of the belts.

Re: How to get started with modding? (small graphical mod)

Posted: Sun Sep 18, 2016 10:08 pm
by Mendel
zeblote: true! Small tweaking to commence!

Re: How to get started with modding? (small graphical mod)

Posted: Sun Sep 18, 2016 11:05 pm
by Mendel
aaaand its released!

https://mods.factorio.com/mods/Mendeli/ubeltmagic

Well, first version anyways!

Thanks for the help!

I would appreciate if someone tested this too :)