Skip to content

Issue Reporting Guide

Austin Hicks edited this page Aug 27, 2024 · 1 revision

Introduction

You've found a problem. We probably want to fix it. This guide will walk through what we need to fix it for you quickly. Following these steps is the easiest way to prevent it taking a lot of time for us to get what we need. The Factorio Access maintainers generally have other obligations such as jobs, and so we prioritize people who you help us to help you.

You have two primary ways to report issues. If you have a GitHub account, then click this link and fill out our issue template. Otherwise, our Discord has an issues channel.

Note that "make this feature better" isn't an issue. For example "I press this key and the game crashes" is an issue, but "let's change how items in the inventory are announced" is a feature request or enhancement. You not liking something doesn't make it a bug! We're certainly interested, but that's handled differently--just bring it up somewhere or open a GitHub issue using the new feature template, we'll ask you for what we need.

Basics

We'll want some or all of the following. Depending on how complex the bug is, we'll want more and more. If you know it's hard to make happen, give us a lot if you can. The more you can give us, the better:

  • A detailed description of the issue
  • If it's a crash, the error information printed by the game.
  • Mod version
  • Your save file
  • A "repro".

The rest of this document will walk you through how to get this information for us. Mod version, a good description, and the error are absolutely required. Your save is very helpful. A repro is sometimes required.

Usually, we figure out what the real issue is and your goal is to give us an example of it that lets us make the problem happen easily. If we can make the problem happen easily, then we can know for sure that it's fixed.

Mod Version

For now this is kind of encoded in the release zip you used to install it and that makes things a bit tricky. If you've forgotten the version, here's how to get it.

  • Go to your factorio directory.
  • Open the mods folder
  • Open the FactorioAccess folder or zip
  • The version may be found in info.json: "version": "0.13.1",

Describing the Issue

Let's pretend that sometimes the game crashes when you build an assembly machine. Bad descriptions are things like "the game crashed today", "man building doesn't work". Good descriptions are things like "When I'm building and press left bracket to place the item, the game crashes sometimes", or "The mod likes to say unknown-key:build-assembly-machine". It's super important to say what the problem is, otherwise we'll have to ask you and wait on your response.

Getting the Error

If the issue is a crash, the game will print error information to the screen. For your own reference, you can use OCR to see what it is. Unfortunately, OCR breaks when it comes to giving us all the information that we need because it also includes lots of numbers and file paths, and these are often wrong or missing.

Instead, in your factorio folder, is a file factorio-current.log. Immediately after the crash happens, while the game is showing the crash, close the game and open this file in any text editor. Near the bottom, you will find some lines that look like this:

8.083 Error MainLoop.cpp:1404: Exception at tick 20358001: The mod Factorio Access Mod (0.13.1) caused a non-recoverable error.
Please report this error to the mod author.

Error while running event FactorioAccess::on_tick (ID 0)
Error when running interface function kruise_kontrol_updated.is_active: __Kruise_Kontrol_Remote__/script/remote.lua:75: attempt to call method 'is_idle' (a nil value)
stack traceback:
	__Kruise_Kontrol_Remote__/script/remote.lua:75: in function <__Kruise_Kontrol_Remote__/script/remote.lua:67>
stack traceback:
	[C]: in function 'call'
	__FactorioAccess__/scripts/kruise-kontrol-wrapper.lua:116: in function <__FactorioAccess__/scripts/kruise-kontrol-wrapper.lua:115>
	(...tail calls...)
	__FactorioAccess__/control.lua:2556: in function 'move_characters'
	__FactorioAccess__/control.lua:2400: in function 'on_tick'
	__FactorioAccess__/control.lua:2388: in function <__FactorioAccess__/control.lua:2386>
  10.224 Quitting: window closed.
  10.699 Goodbye

That's the part we need. If you are a fellow programmer, we're looking for the traceback and error message. If you don't know what that means, just copy everything down from the line above "Please report this error to the mod author.", in this example, start at and include 8.083 Error MainLoop.cpp:1404: Exception at tick 20358001: The mod Factorio Access Mod (0.13.1) caused a non-recoverable error.

The game replaces this file every time it opens so you must get it immediately. If you missed your chance, then there is a factorio-previous.log and that may contain it instead. Otherwise you'll need to make the error happen again.

We want to make this step easier, and will update this guide once that happens.

Getting Your Save

If you have saved since the game launched, then closing the game should cause the launcher to ask you if you want to name it. Say yes, then give it a name you'll remember like "bug".

Next, in your Factorio folder is a folder called saves. Go in there, and you will find a bunch of zip files. If you named your save bug, it'll be in bug.zip. That's the file we need.

The Repro

Sometimes a brief description just won't do. A repro, short for reproduction, is the programmer term for really detailed directions that will make the issue happen. What we do is figure out the why part, but you have to give us the what part.

This can be a bit hard to grasp, so let's do an example. Pretend that the issue is that placing assembling machines on transport belts causes a crash. When you see the crash, you probably don't know this yourself. That's fine! We'll figure that part out if you don't know it.

There's two steps to getting a repro. The first step is to figure out how you can make the problem happen reliably. Sometimes it's not going to happen every time, and that's okay, but if you can't make it happen then neither can we. The second step is to tell us what you did. For example, you might play the game until the building code crashes, then take your last save and try building a bunch of stuff until you find a way to tell us where to build what to make it explode.

here's a couple examples.

A completely useless repro is "build stuff and it'll break. No I don't have a save."

A useful repro is this. Put the assembling machine in your hand and save the game. Then hand that off to us and say "take this save and open it, press a three times,. then press left bracket".

Mostly that's where you'll stop and we'll figure out the rest, but the best possible repro is "start a new game, then place a transport belt and put an assembling machine on top of it". Why? Because while you may not know what the problem is, we don't have to figure out what the specific keys you pressed do or what's special about your save if you can say it that way. But these are hard! Before you can say something like that, you'll need to test it in a few different scenarios, otherwise you might as well have used the last example and left it to us. If you go this far and are wrong, we'll spend more time figuring out you were wrong than we will fixing the problem in a lot of cases.

Navigation Sidebar

Home

General

A1 - Factorio Access Unique Features

A2 - Optional preset map - Compass Valley

A3 - Demo Maps

A4 - Early Game Milestones

A5 - Compatible Other Mods

A6 - Known Bugs

A7 - Planned Features

A8 - Launcher Features and Game Setup

A9 - Ratios Cheat Sheet

A10 - About Game Sounds

A11 - Tutorial Transcript

A12 - Info for Contributors

A13 - Game Console

Non-wiki pages

Beta Changelog

Releases Page

Beta Mod Main Page, including controls

Alpha Mod Main Page, now outdated

Factorio Mod Portal Page

Wiki chapters

Chapter 1 - Gameplay basics

Chapter 2 - Resources and mining

Chapter 3 - Furnaces, mining drills, and chests

Chapter 4 - Inserters part 1: Inserter logic and burner inserters

Chapter 5 - Transport belts part 1: Segments, lanes, and other basics

Chapter 6 - Fluid handling part 1: Fluid behavior and pipes

Chapter 7 - Electricity part 1: Basics, power distribution, and steam power

Chapter 8 - Technology tree, labs, and science packs

Chapter 9 - Inserters part 2: Electric inserters

Chapter 10 - Transport belts part 2: Underground belts and splitters

Chapter 11 - Assembling machines and automated production

Chapter 12 - Factory building guidance

Chapter 13 - Fluid handling part 2: Flow rates, storage tanks, fluid wagons, pumps, and barrels

Chapter 14 - Oil processing part 1: Transporting oil, basic oil processing, and early oil products

Chapter 15 - Electricity part 2: Larger electric poles, solar power, and accumulators

Chapter 16 - Cars and trains

Chapter 17 - Modules

Chapter 18 - Oil processing part 2: Advanced oil processing and products

Chapter 19 - Landscaping and paving tiles

Chapter 20 - Worker robots part 1 - Roboports and basic services

Chapter 21 - Electricity part 3: Nuclear power

Chapter 22 - Armor equipment and guns

Chapter 23 - Death and enemies

Chapter 24 - Pollution

Chapter 25 - Worker robots part 2 - Logistics networks

Chapter 26 - Worker robots part 3 - Blueprints and Planners

Chapter 27 - Kruise Kontrol

Chapter 28 - Circuit Networks

Chapter 29 - Rocket construction and the late Game

Clone this wiki locally