SeptaScript — Official VS Code Extension
✨ Features🔴 Rich Syntax Highlighting — SeptaScript (
|
| Feature | Example |
|---|---|
| Immutability by default | let x: float = 1.0; vs let mut x: float = 1.0; |
| Rust-like functions | pub fn shoot(target: Node3D) -> Result<bool, string> |
| Async / await | pub async fn load_scene() -> void |
| F-string interpolation | f"Player {name} has {hp} HP" |
| Pattern matching | match state { Playing => { ... }, _ => {} } |
| Generic collections | Array<Vector3>, Dictionary<string, int> |
| Option / Result monads | Some(value), None, Ok(x), Err(msg) |
| Attributes / Annotations | [Export], [Tool], [OnReady] |
| Defer / RAII guard | defer { cleanup(); }; |
| Vector swizzling | .xy, .xz, .rgb, .zyx |
| Doc-comments | /// This function does X |
🟣 Rich Syntax Highlighting — SeptaShader (.septashader)
Full GLSL-compatible shader language for Septalabs Engine's GPU pipeline:
- Shader directives:
shader_type spatial,render_mode blend_mix - All GLSL types:
vec2/3/4,mat2/3/4,sampler2D,samplerCube - Built-in vertex variables:
VERTEX,NORMAL,UV,MODEL_MATRIX - Built-in fragment variables:
ALBEDO,ROUGHNESS,METALLIC,EMISSION,ALPHA - 50+ built-in GLSL math functions:
mix,smoothstep,texture,normalize - Stage functions:
vertex(),fragment(),light() - Preprocessor:
#define,#ifdef,#version
⚡ Productivity Snippets
SeptaScript Snippets
| Prefix | Description |
|---|---|
septa-class |
Full gameplay class with exports + lifecycle hooks |
septa-async |
Async function with await support |
septa-struct |
Value struct (stack-allocated) |
septa-enum |
Enum type definition |
septa-state |
State class for Finite State Machine |
septa-bt-task |
Behavior Tree task node |
septa-option |
Option with match handling |
septa-result |
Result<T,E> with match handling |
septa-signal |
Signal declaration with emit example |
septa-tween |
Tween animation sequence |
septa-timer |
Async timer wait |
septa-array |
Typed generic Array |
septa-dict |
Typed generic Dictionary |
septa-ns |
Namespace + using block |
match |
Exhaustive pattern match |
defer |
RAII scope guard |
fstring |
F-string interpolation |
export |
[Export] property |
for |
For-in loop |
print |
Debug print with f-string |
SeptaShader Snippets
| Prefix | Description |
|---|---|
ss-spatial |
Full 3D PBR spatial shader template |
ss-canvas |
2D canvas_item shader template |
ss-particles |
Particle shader template |
ss-uniform-tex |
Texture uniform declaration |
ss-uniform-float |
Float uniform with range hint |
ss-uniform-color |
Color uniform (vec4) |
ss-vertex |
Vertex stage function |
ss-fragment |
Fragment stage function |
ss-light |
Light stage function |
ss-triplanar |
Triplanar texture mapping |
ss-fresnel |
Fresnel rim effect |
ss-dissolve |
Dissolve/burn effect |
🔧 Editor Features
- Bracket matching —
{},[],() - Auto-closing pairs —
{},[],(),"" - Code folding — via
// #region/// #endregionmarkers - Smart word selection — correct word boundaries for identifiers
- File icons — distinct icons for
.septa(red) and.septashader(purple)
📦 Installation
Option 1: Install from .vsix (Recommended)
- Open Visual Studio Code
- Go to Extensions tab (
Ctrl+Shift+X) - Click the
...menu (top-right of Extensions panel) - Select "Install from VSIX..."
- Choose
septascript-1.0.0.vsix
Option 2: Command Line
code --install-extension septascript-1.0.0.vsix
Option 3: Double-click install.bat (Windows only)
Run install.bat to silently install the extension into your VS Code extensions folder.
🚀 Getting Started
Create a new file with .septa extension and start typing septa-class to get your first gameplay script:
namespace Game;
using Septalabs.Core;
public class PlayerController : CharacterBody3D {
[Export]
pub let mut move_speed: float = 8.0;
[Export]
pub let mut jump_force: float = 12.0;
let mut velocity: Vector3 = Vector3.ZERO;
pub fn on_ready() -> void {
print(f"[SeptaScript] PlayerController initialized.");
}
pub fn on_physics_update(delta: float) -> void {
let input_dir: Vector2 = Input.get_vector("move_left", "move_right", "move_forward", "move_back");
// Option<T> monad example
let grounded: Option<bool> = Some(is_on_floor());
match grounded {
Some(true) => {
velocity.x = input_dir.x * move_speed;
velocity.z = input_dir.y * move_speed;
},
_ => {
velocity.y -= 9.8 * delta;
},
}
set_velocity(velocity);
move_and_slide();
}
}
shader_type spatial;
render_mode blend_mix, depth_draw_opaque, cull_back, diffuse_lambert;
uniform vec4 albedo_color : source_color = vec4(1.0);
uniform float roughness : hint_range(0.0, 1.0) = 0.5;
uniform float metallic : hint_range(0.0, 1.0) = 0.0;
void fragment() {
ALBEDO = albedo_color.rgb;
ROUGHNESS = roughness;
METALLIC = metallic;
// Fresnel rim
float fresnel = pow(1.0 - clamp(dot(NORMAL, VIEW), 0.0, 1.0), 3.0);
EMISSION += vec3(0.5, 0.8, 1.0) * fresnel * 1.5;
}
🏗️ About Septalabs Game Engine
Septalabs Game Engine is a high-performance, cross-platform game engine built in C++ with:
- ⚡ Native scripting via SeptaScript — Rust-inspired, compiled to bytecode
- 🎨 GPU shader pipeline via SeptaShader — GLSL-compatible
- 🧠 Built-in AI systems: Behavior Trees, State Machines, Blackboards
- 🌍 Terrain3D, procedural world generation
- 🎵 Audio synthesis and 3D spatial audio
- 🔧 Visual editor with asset management
🔗 Links
- 🌐 Website: ge.septalabs.com
- 📖 Documentation: docs.ge.septalabs.com
- 🐛 Issues: GitHub Issues
- 💬 Community: Discord
📄 License
MIT License — Copyright © 2024 Septalabs