Game engineâs âfull flexibilityâ programming problem in a nutshell:
The Core Problem
Learning game programming requires mastering complex, engine-specific APIs before one can begin to understand game development concepts. This creates artificial barriers for talented, creative people.
Game engines create a strong lock-in effect due to their highly unique APIs - yet they all perform the same high-level tasks.
Among self-learners, tutorial hell is widespread - a comfort zone shielding oneself from engine complexity through passive consumption.
Games are the single strongest motivator that brings young people into programming. Yet game engines lack a safe âlearn by doingâ sandbox that invites experimentation.
The Road To A Solution
LunyScript unifies C# gameplay programming across game engines. Its abstraction shields users from engine-specific concepts and provides a safe space for experimentation while teaching valuable game programming patterns. Skills and code become transferable. Engine API details are introduced gradually as users advance.
First implemented in Unity, then ported to Godot. Future plans include Lua bindings for hot reload and modding capability.
Unity, Godot, Unreal solve identical problems with completely different APIs
Very different codeGetComponent()vsget_node()but same results
Switching engines means relearning implementation patterns => wasted effort
Engine switching costs are very high, and exponentially so for beginners
The irony: Game engines became popular because they solved API/platform fragmentation. Now their fragmentation has become a problem in itself.
2. The Engine Lock-In Effect
Beginners:
Must learn multiple domains simultaneously => high cognitive demands paired with huge interest leads to widespread tutorial hell (âlearningâ lock-in)
Premature commitment to one engine before understanding the choice
Choice overload: Heavily fragmented game engines / creation tools (100-200), but only 2-3 provide tangible career opportunities
Experienced Developers:
Still significant time investment to switch engines
Switching engines is a career risk, not an opportunity! Most job offers ask for 2+ years experience in specific engine
Forced paradigm shifts cause sudden loss of productivity => developer goes back (or wishes to do so)
Ecosystem:
Knowledge and tutorials donât transfer
Communities fragment by engine choice, even language preference
Game code is either engine-locked or requires significant integration effort
Culture:
Not-Invented-Here: e.g. dozens of character controllers available, developers still write their own => Reinventing gameplay wheels is commonplace!
3. Visual Scripting Isnât The Catch-All Solution
What Works:
High-level visual tools (PlayMaker, Game Creator) are popular paid assets because they provide declarative, intent-revealing patterns at a high level
Success comes from hiding complexity and the promise of being simpler
What Doesnât Work:
Unreal Blueprints succeeds because it provides high-level functional nodes â but partly because the only alternative is C++
Other Visual Scripting tools have abysmal adoption rates => Godot: 0.5%, Unity: very few posts. Consequently:
Unity Visual Scripting has laid dormant since 2022
Godot removed their VisualScript in 2022
The Fatal Flaws:
Visual Scripting fails if it copies an imperative programming language 1:1
Visual scripting is verbose and extremely space-inefficient compared to code
Arranging nodes is unproductive, but necessitated to avoid ânode spaghettiâ
Hard to debug, refactor, review, document, version, and establish guidelines
Engine Scripting Languages:
Boo, UnityScript, UnrealScript: removed after 9-16 years due to maintenance cost
They all exposed the engineâs API 1:1 => simpler syntax but same API complexity
UnrealScript: Epic was forced to provide a C++ alternative => Blueprints
UnityScript/Boo were barely used (<5%) => C# considered easy enough
GDScript: >75% user base due to tight integration: no external editor necessary
âźď¸The Missing Middle:âźď¸
There is no middle ground: beginners/designers must jump from visual scripting and/or creation tools with small APIs directly to full engine programming
Simple declarative programming patterns are absent in game engines
Visual tools merely replace anxiety-inducing syntax (semicolons, brackets) with boxes and lines - but one still has to have imperative programming skills
4. Learning Support Is Inadequate
Observable Patterns:
Game dev forums show high numbers of one-post beginner accounts
Beginnersâ code is often chaotic, showing lack of conceptual understanding
âRead the docsâ responses assume foundational knowledge beginners lack
Fragmented Ecosystem:
Abundance of learning material but inconsistent in quality, and target audience
Every tutorial creator teaches their own style, compounding confusion
Tutorials strongly focus on the how (quick wins), rarely explain the why
âźď¸Tutorial Hell: beginners follow excessively but unable to work independently
Developersâ widely held belief that âgame programming needs full flexibilityâ contradicts reality of what restrictive creative tools accomplish
Limiting, failure-safe systems are a blessing in disguise for learners â they reduce decision paralysis and encourage experimentation => Scratch et al
Heavily customizable building block systems have irresistible draw: Minecraft, Python
The Gap to a Better Outcome
â ď¸ Current State â ď¸
Beginners must learn engine-specific APIs before implementing actual game-play!
Knowledge doesnât transfer between enginesâswitching means starting over
Visual scripting & GDScript are the only âsimpleâ options (with major drawbacks)
No middle-ground between high-level visual programming and HLL programming
Fear of âwrong choiceâ causes early lock-in or prevents advancement
â Desired State â
Learn game concepts through simple, declarative API that reveals intent
Knowledge transfers well between enginesâtry Unity, Godot, or both
Text-based from day one: debuggable, refactorable, version-controllable, etc.
Gradual progression from high-level patterns toward engine-native programming
Engine exploration carries no penaltyâbuild confidence through working code
Why This Matters
1. Wasted Creative Potential
Talented people give up due to artificial barriers, not lack of ability
The industry loses diverse voices and perspectives
Creation tools lack the platform reach of professional engines
2. Inefficient Learning Ecosystem
Educators repeat the same trivial concepts in different engine-specific APIs
Learners consume tutorials without building independent problem-solving skills
Communities fragment by engine rather than uniting around shared knowledge
Missing âsafe spaceâ, easy-to-use sandbox to experiment in
3. Artificial Career Limitations
Engine loyalty limits job opportunities and creative freedom
The gameplay coding designer role became unattractive: either heavy UI interactions or intricate programming knowledge - choose the lesser evil!
How LunyScript Addresses This
Core Insight: Game engines share 90% of their fundamental concepts equally well but expose them through 100% different APIs. Learning different UIs is comparatively easy.
LunyScript Solution: A unified, declarative API that works identically across enginesâfilling the missing middle ground between visual scripting and full programming.
Direct Problem â Solution Mapping
Problem
How LunyScript Helps
API is the barrier
Declarative, intent-revealing syntaxâfocus on game concepts, not API memorization
Exponential cognitive load for beginners
Simpler API = one less domain to juggle; reduces early lock-in fear
API fragmentation
Same code works in Unity, Godot, future enginesâknowledge transfers completely
No middle ground
Text-based declarative patterns bridge visual scripting â full programming
Visual scripting drawbacks
Debuggable, refactorable, version-controllable text code from day one
Tutorial hell dependency
Readable code encourages experimentation and understanding, and teaching patterns
Mid-tier tool lock-in
Scratch/Roblox users feel more welcome in pro-tier engines, find early successes
Lack of safe learning space
Unified community around entry-level API
What LunyScript Is NOT
Not a replacement for engine-native programming â itâs a scaffold toward mastery but with similar long-term productive capability than visual scripting
Not targeting high-end AAA development or bleeding-edge features
Not hiding engine concepts â it teaches transferable patterns first
Goal: Provide a gentle, productive entry point that transfers completely between engines, fills the missing middle ground, and builds confidence through working code.
Secondary Benefits
While self-learners are the primary focus, LunyScript creates value for:
Educators: One curriculum deploys to multiple engines; teach concepts, not API semantics
Prototypers: Faster iteration while still creating reusable code
Framework Devs: Cross-engine tools without compromising engine integration
These are consequences of solving the core beginner problem and cross-engine functionality, but have the potential to become additional design drivers in the future.