Manual

Getting started

Requirements

  • Windows 10 or 11 (x64) with a GPU that runs Vulkan or Direct3D 12. Other platforms aren't built or tested yet.
  • Rust: the toolchain in rust-toolchain.toml installs itself on the first build.
  • The .NET 10 SDK. Scripts run on .NET, and Unity projects' scripts are compiled with it.
  • For NativeAOT packages only: Visual Studio's C++ build tools.
  • Optional: Unity 6000.3 (conformance/UNITY_VERSION), to record the conformance suite and compare benchmarks.

Build and run

cargo xtask build

builds the .NET solution (the engine's UnityEngine and packages, the managed runtime, the samples) and the player. Then:

cargo xtask run -- --scripts target/dotnet/bin/Tassix.Samples/debug/Tassix.Samples.dll --scene dotnet/samples/scenes/showcase.json

opens a sample scene with the sample scripts. dotnet/samples/scenes has more: rollaball.json and platformer2d_physics.json are playable (WASD or the arrow keys, Space), coin_dash/menu.json switches scenes and plays audio, particles_fx.json, lights2d.json, text_effects.json, navigation_crowd.json and jobs_swarm.json show particles, 2D lights, TextMeshPro effects, NavMesh agents and the Job System. Their scripts are in dotnet/samples/Tassix.Samples.

Play a Unity project

cargo xtask run -- --project samples/unity/CoinDash

plays a project as the Unity editor saved it, from its first build scene (--scene Assets/Scenes/Level.unity picks one). The first run compiles the project's scripts into Library/Tassix; later runs reuse them until a script changes. Try your own project the same way. If a script uses an API Tassix doesn't have yet, the compile errors say which; see Unity projects and compatibility.

While the game runs, saving a script reloads it into the running game, keeping its objects and their field values, as Unity's "Recompile and Continue Playing" does.

Make a project

cargo run -p tassix_editor_gui

opens the editor. File > New Project asks for a name and a place and makes an empty project there, in Unity's layout, so Unity opens it too: Assets/Scenes/SampleScene.unity with a camera and a light (listed in the build settings, so the project starts on it), Packages/manifest.json with Unity's built-in modules and uGUI, and ProjectSettings with the Unity version. The editor opens it on its scene: add objects from the GameObject menu, scripts and materials from the Project pane's Create menu, press Play, and package it as any other project (cargo xtask package -- --project <folder>).

Useful player options

OptionWhat it does
--headless --frames <n>Runs without a window for n frames
--screenshot out.png [--size 1280x720] [--frames 60]Renders a frame to a PNG, without a window
--statsReports frame, simulation and render times at exit
--no-vsyncDoesn't wait for the display

Environment: TASSIX_AUDIO=0 silences audio, TASSIX_ASSET_CACHE=off turns off the cooked asset cache (or names its folder), TASSIX_GPU_CULLING=0 and TASSIX_BINDLESS=0 turn off GPU culling and bindless materials.

Next

From docs/getting-started.md in the repository.