Far fetched thoughts that may eventually have an impact on direction.
A very simplistic, playable 3d world for multiple participants. Users can find, select, and create objects like in Minecraft. Objects have predefined interaction patterns which are implemented as LunyScript code.
Those who want to learn how to modify actual professional-use (!) code can simply edit these files. They would still encounter syntax errors but they should be limited to a missing or excess comma or bracket.
They would mostly start by copy-pasting things - and that is okay!
They will likely break everything, intentionally or because of the cat - spawning ten gazillion objects for instance. LunyScript safeguards against such extreme scenarios (object count).
Program simple patterns. A particle system but CPU controlled using regular objects, not particles. This allows full interaction with the physics simulation the player takes part in.
Could make for psychedelic experiences, for effectful explosions, avalanches, splashes of water. Perhaps influenced by music to create oneâs own (how are these hifi spectrum led lights called? damn i loved them when i was younger but they were so limited back then).
Can also be used to programmatically generate content through algorithms. Easiest of course being a grid layout but any patterns (voronoi etc) could be applied with simple declarative syntax controlling their configuration and algorithmic behaviour.
This could also help to use AI to generate well-known pattern algorithms for us. We donât understand how they work but we see what they do so we get interested to learn more. Especially when seeing how the patterns can be controlled in realtime through simple code.
Acts like an authoritative central source code repository for Luny. Instead of complicated GitHub cloning users download an engine plugin installer.
When run, it just asks which project to install into, verifies target actually is a valid project, and then does the copying into or updating existing version (user can select which in installer and/or editor).
When users sign in to the website, they can share their creations: code libraries which fulfill a certain purpose, and which continue to run for years because they execute within the version of LunyScript they were built for. [NOTE: need to verify if technically feasible - IDEAS.md remember? - in any case, my stomach feeling whispers an abbreviation: veee-emmm .. VM .. virtual machine. Oh. Wait. Would that make LunyScript a programming language implemented as an API??]
âŚ..
Review of Luny Central idea:
Plugin installer + community repository addressing real pain points (GitHub friction, tutorial obsolescence).
Yes, but with significant architecture implications.
You have three implementation paths:
Option 1: Versioned API shims (simplest)
__future__ importsOption 2: Embedded interpreter/VM (complex)
Option 3: Source-level compatibility mode (hybrid)
Noâit would make it a DSL (Domain-Specific Language) with versioned runtime semantics.
Current state: LunyScript is a library/framework (C# API that generates engine code)
If you add VM/versioning: It becomes a platform (runtime + stdlib + backward compatibility guarantees)
Precedents that did this:
Do user creations need to run indefinitely or just predictably?
From your social issue doc (line 12):
âengine updates make tutorials obsolete within 1-2 yearsâ
Your actual problem is tutorial obsolescence, not execution permanence.
Lighter solution that still solves the problem:
This gives users âit still works OR tells me how to fix itâ without needing a full VM.
Start with Option 1 (versioned API shims):
Only build VM if you need true sandboxing (untrusted code execution, modding support, etc.)
Does this answer your questions? Want me to dig deeper into any implementation path?
âŚ..
User's C# code
â
LunyScript API calls
â
Compiled to Lua bytecode
â
C# Lua VM (NLua, MoonSharp, KeraLua)
â
C# bindings to Unity/Godot
â Advantages:
.luny file runs in Unity + Godotâ Disadvantages:
| Aspect | GDScript | LunyScript+Lua |
|---|---|---|
| Purpose | High-level engine scripting | High-level game logic |
| Runtime | Custom VM in engine | Lua VM in C# plugin |
| Binding | Godotâs C++ core | Unity/Godot C# APIs |
| Versioning | Godot 3 vs 4 breaks code | VM isolation prevents breaks |
GDScript is engine-native â Deep integration, but locked-in
LunyScript+Lua is engine-agnostic â Portable, but always âoutsideâ the engine
What it unlocks:
Precedent:
Risk: If Unity/Godot see you as threat, they could add features making LunyScript redundant.
What it unlocks:
.luny files that run in anyoneâs gamePrecedent:
Market: Modding tools for indie devs is underserved. Unity Asset Store has weak modding solutions.
What it unlocks:
Precedent:
This is your strongest angle because it solves the core problem in your social issue doc.
Problem:
Your doc says (line 22):
âbuilding transferable skills across Unity and Godotâ
If the skill is âLunyScriptâs Lua dialect,â how transferable is that?
Problem:
Your doc says (line 299):
âpotential to become a standard tool for both entry-level and professional productionâ
Lua VM â harder to credibly claim âprofessional productionâ scale.
Problem: You now maintain:
As a solo/small team, this could sink the project.
â
Your primary goal is tutorial permanence (solves lines 12, 34 directly)
â
You accept becoming a platform (not just a library)
â
You can sell the modding/UGC angle to get funding/users
â You want users learning âreal C#â (they wonât be)
â You lack resources to maintain compiler + VM + bindings
â Performance matters for your target game types
Keep C# as primary, Lua as optional execution mode:
// User writes C#
var player = new LunyPlayer();
player.MoveTo(position);
// Runs as:
// 1. Normal C# (fast, debuggable)
// 2. OR compiled to Lua (portable, versioned)
User chooses:
This gives you:
Precedent: Unityâs Visual Scripting does this (graph â IL or graph â interpreted).
Does this clarify the Lua VM tradeoffs? Want me to explore the hybrid approach deeper?
âŚ.. Youâre absolutely rightâI misspoke about Defold.
Defold IS an engine (like Unity/Godot), not a cross-engine library. It uses Lua for scripting, but you canât take Defold Lua code and run it in Unity. My mistake.
What I meant to say: Defold popularized Lua as a game engine scripting language in the indie/education space, showing Lua can work for complete gamesâbut itâs engine-locked, just like GDScript.
Actual cross-engine Lua examples:
Reality check: There isnât a successful âLua library that works in Unity + Godotâ precedent. Youâd be pioneering this.
Agreed. Park this for post-funding. Could be Phase 2 after proving core education value.
Smart recognition. Even documenting breaking changes is easier than preventing them via VM.
This is the pragmatic move. Hereâs why itâs strong:
Line 100 (from doc):
âPoor debugging & problem-solving skills: passive watching builds recognition but not troubleshooting skillâ
Line 96:
âShallow / brittle knowledge: learners reproduce recipes but lack transferable understandingâ
Solution: Error documentation that teaches debugging, not just âhereâs the fix.â
Error message structure:
LunyScript Error LS0042: Missing comma in entity chain
player.MoveTo(10, 20)
.Rotate(45) // â Expected comma before .Rotate
Common cause: Chaining methods requires comma between calls
Learn more: lunyscript.dev/errors/LS0042
Quick fix:
player.MoveTo(10, 20),
.Rotate(45)
Why this works:
Your doc mentions (line 153):
âNo mention of why current approaches (existing tutorials, other teaching tools, GDScript) are inadequateâ
Your answer:
âExisting tools throw cryptic engine errors. LunyScript catches common mistakes before they hit the engine, with errors that teach debugging patterns.â
Example pain points you solve:
| Engine Error | LunyScript Error |
|---|---|
NullReferenceException at line 47 |
LS0008: Entity 'player' not found. Did you mean 'Player'? (case-sensitive) |
CS1061: 'Transform' does not contain a definition for 'position' |
LS0103: Use Position (capital P) for entity positions. Unity's transform.position is lowercase. |
Unexpected symbol ')' in expression |
LS0042: Missing comma in entity chain. See: [visual example] |
Phase 1 (MVP):
Phase 2 (Tooling):
Phase 3 (Community):
Effort:
Currently missing from your social issue (line 153):
âWhy current approaches are inadequateâ
Add this:
âEngine error messages assume programming expertise learners lack. Unityâs
CS1061or GodotâsInvalid call. Nonexistent functiondonât teachâthey frustrate. LunyScript translates these into pedagogical moments, catching common mistakes with pattern-based guidance that builds debugging literacy.â
This addresses:
SEO gold:
Similar precedent:
All became marketing assets for their languages.
Does âC# + exceptional error documentationâ feel like the right pivot? Want me to help draft the âcurrent gapâ addition to your social issue doc?