Giter Club home page Giter Club logo

satisfactory-fin-sdk's Introduction

FINSDK

An (unofficial) bash-powered build system and software development kit for the Ficsit-Networks Satisfactory mod. FINSDK aims to make writing code for FIN computers easier by allowing you to work in your favourite code editor and deploy code across many computers at once with simple bash commands.

What is this?

This is a build system to develop and manage larger codebases for Ficsit-Networks (FIN) in your favourite text editor to to deploy code to many FIN computers at once with ease.

Ficsit-Networks is a mod for Satisfactory that allows players to build in-game computers that can execute Lua code in order to automate things, take user input, display graphics, and generally make factories more scriptable.

Editing Lua code using the in-game interface provided by the mod is manageable for small scripts, but as a codebase grows the need for better editing tools becomes apparent. Whether it's because you have many computers running Lua and its difficult to update each one manually, FINSDK is meant to bridge that gap.

FINSDK offers a simple set of tools to edit FIN computer code in your favourite text editor. When you're ready to test your code, you can easily push it to Satisfactory and see the changes in action without reloading the game. All you need is a bash terminal and a text editor.

What do I need?

Before beginning, I recommend spending some time to learn the basics of Ficsit-Networks without any tooling. It's important to understand the concepts! This video is a decent primer, but I strongly recommend spending some time with FIN in-game before jumping into using FINSDK.

You'll need:

  • Satisfactory
  • The Ficsit-Networks mod
  • ~450 Crystal Oscillators, some silica, a few computers & a few circuit boards
  • Your favourite text editor
  • A bash (or compatible) terminal

Your OS of choice shouldn't matter for the purposes of using this tool, so long as you can run a bash terminal.

If you're running Windows (and I assume most people are on their gaming rig), there are 2 options I can recommend to get a bash terminal running:

  1. Install Git and use git bash -- This is easy and if you're looking at github, you may already have it
  2. Set up WSL and run bash/zsh -- This is more work but its the best terminal I've ever set up in Windows

This SDK should work fine in both of these terminals and probably other bash-for-Windows configurations as well, but I can't test all of them so YMMV. If some modifications are needed to make this work in your configuration of choice, feel free to submit a PR.

Getting Started

Read the getting started guide

Documentation

Read the complete docs

Misc

  • Pitfalls/gotchas?
    • No easy way to get drive UUIDs other than printing them from computers
  • Identifying the UUID of a drive using a computer
  • Explain Satisfactory computers folder loads computers for current save file only and managing multiple save files is fun

Roadmap/Issues

  • Add a flag to push to force overwrite data files
  • Move library functions to namespaces
  • Add comment docblocks to library functions
  • Delete app command
  • Rename app command
  • Build all apps in 1 step
  • Build & push in 1 step
  • Include storage controller example
  • Clean up eeprom.lua
  • Refactor eeprom.lua into several files --> Compile EEPROM files into a single file on build?
  • Better handling of data --no-clobber (don't pull then delete then replace --> preserve data folders as they are instead)
  • Friendly drive names --> Big feature but probably very helpful...
  • EEPROM auto-update that doesn't suck
  • Get in-game screenshots once FIN works in Update 4

This is a very rudimentary approach to building Lua applications, but its productive and it works for making things in FIN.

satisfactory-fin-sdk's People

Contributors

digitalmachinist avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.