Git Product home page Git Product logo

solder's Introduction

Solder

A desktop-based script compiler for Resonite

Installation

Compiling the Editor

The editor requires compiling, and built binaries are not provided, as it uses Resonite as a dependency

  1. Download .NET SDK 8 for your target platform. You can find the download link here: https://dotnet.microsoft.com/download/dotnet/8.0

  2. Download Godot 4.2 .NET for your target platform.

  3. Run the Godot executable to open the Project Manager.

  4. Click import and browse to the location of the editor project.

  5. Click on the editor in the Project Manager to open the Godot Editor.

  6. Click the hammer icon in the top right to build, and the play button to run the script editor.

Installing the Mod

Built binaries for the mod are provided in the Releases tab, or you can manually compile it.

Compiling the Mod

  1. Install and ensure ResoniteModLoader is set up for compiling mods. You can find the ResoniteModLoader repository here.
  2. Run either
    • make which will put the mod in Solder.Client/build
    • dotnet build which will put the mod in bin/Debug/net4.7.2/Solder.Client.dll
    • or build with your prefered IDE
  3. You can install the mod like any other mod

Notes for Compiling

Both projects are set up with a rudimentary system for linking to Resonite dependencies. If you installed Resonite in a non-standard location, you will need to add your location to both project's .csproj files. the directory paths look something like this.

<ResonitePath Condition="Exists('/mnt/LocalDisk2/SteamLibrary/steamapps/common/Resonite/')">/mnt/LocalDisk2/SteamLibrary/steamapps/common/Resonite/</ResonitePath>

Replace PATH with the path to the root of your Resonite install

<ResonitePath Condition="Exists('PATH')">PATH</ResonitePath>

solder's People

Contributors

frozenreflex avatar merith-tk avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

merith-tk

solder's Issues

Edge cases involving <C,T> context generics

There are many examples of nodes that have two versions, one that has a Context generic attribute, and one that doesn't. This includes, but is not limited to, Value/ObjectWrite, Value/ObjectWriteLatch, ValueIncrement/Decrement, and a bunch of other Action and Flow nodes.

For whatever reason, a script I exported from an existing ProtoFlux script used the dual generic Context version of ValueWrite rather than the single generic version. It gets exported completely fine, and in the editor it also works completely fine, but when compiling it back, the Variable reference refuses to connect.

Edit: I figured out why it wasn't compiling, I was previously writing to a DataModelStore, and switched it to a Store for network optimization purposes. The dual generic was using FrooxEngineContext, while Store only implements ExecutionContext, so the actual bug there is that the editor allowed the connection at all. There's still probably other edge cases involving execution contexts.

I have no idea why the script used the dual generic version, my guess is early Resonite shenanigans, and I have no idea why it does not compile properly. The game probably auto-casts the non-context nodes to context nodes despite not needing to, so while I likely originally spawned a non-context node when I originally wrote the script, the game converted it, and it ended up like that when I exported it to pfscript. There are likely other edge cases involving these nodes that needs to be investigated, and if there's truly no fix, then they should be automatically converted to the proper single generic versions of the nodes.

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.