User:Papaltine/ProtoGraph: Difference between revisions

From Resonite Wiki
m update build command
mNo edit summary
Line 13: Line 13:
* '''Repository''': [https://git.samsmucny.com/ssmucny/Flux-SDK Flux SDK]
* '''Repository''': [https://git.samsmucny.com/ssmucny/Flux-SDK Flux SDK]
* '''Compiled Format''': <code>.brson</code> (Resonite Record)
* '''Compiled Format''': <code>.brson</code> (Resonite Record)
* '''Influenced by''': F#, Elm, Python, Haskell, Odin
* '''Influenced by''': F#, Elm, Python, Haskell, VHDL, Odin


== Who Should Use ProtoGraph? ==
== Who Should Use ProtoGraph? ==
Line 42: Line 42:
module CrossProduct
module CrossProduct


input A: float3
in A: float3
input B: float3
in B: float3


output this: float3
out this: float3


where {
where {

Revision as of 18:30, 16 June 2025

ProtoGraph is a declarative programming language designed to work with ProtoFlux in the Resonite ecosystem. It allows creators to write logic in a clean, readable text format that compiles directly into ProtoFlux nodes—making it easier to build, test, and maintain complex systems.

Overview

  • Paradigm: Dataflow
  • Family: ML: Caml: OCaml: F#
  • Designers: Papaltine, Kittysquirrel
  • Developer: Papaltine
  • Stable Release: N/A (Currently in Alpha)
  • License: AGPLv3
  • Target Platform: Resonite (via ProtoFlux)
  • File Extension: .pg
  • Compiler Tool: flux-sdk
  • Repository: Flux SDK
  • Compiled Format: .brson (Resonite Record)
  • Influenced by: F#, Elm, Python, Haskell, VHDL, Odin

Who Should Use ProtoGraph?

  • Creators who want to move beyond visual scripting
  • Developers building modular, reusable systems
  • Teams collaborating on large-scale Resonite projects

Benefits

  • Readable: Clean syntax that mirrors ProtoFlux visually
  • Modular: Encourages reusable code through modules and packages
  • Safe: Compiler checks help catch errors early
  • Accessible: Friendly to those familiar with ProtoFlux as a first programming language

Building and Using in Resonite

Getting Started

  1. Write your .pg file
  2. Compile it:
dotnet flux-sdk.dll build MyModule.pg
  1. Import the .brson file into Resonite
  2. Inspect the generated ProtoFlux under the corresponding slot

Example: Cross Product Module

module CrossProduct

in A: float3
in B: float3

out this: float3

where {
// Inputs
Ax, Ay, Az = Unpack_Float3(A);
Bx, By, Bz = Unpack_Float3(B);

// Computations
Cx = (Ay * Bz) - (Az * By);
Cy = (Az * Bx) - (Ax * Bz);
Cz = (Ax * By) - (Ay * Bx);

// Final result
Pack_Float3(Cx, Cy, Cz);
}

See Also