VB6 brain, modern engine: BASIC syntax inside Godot 4 (public beta)
I’ve been building Visual Gasic — a real programming language that keeps the parts of VB6 we actually miss, not as a nostalgia toy, but as something you can ship games with today.
What feels familiar
Sub/Function/End SubDim x As String,If … Then … End If- Event handlers by name:
Sub btnStart_Click(),Sub Form_Load() - Properties on controls:
Caption,Left,Top,Width,Height,Visible,Enabled - Timers:
Interval,Enabled,Sub tmrGame_Timer()
What’s different (on purpose)
- Runs as a Godot 4.6 plugin (GDExtension) — 2D/3D, export, modern engine
- No COM, no ActiveX, no 32-bit Windows lock-in — Linux + Windows installers exist
- Built for reading code — especially AI-generated code — not clever one-liners
Example that should look like home:
Sub btnPlay_Click()
If lblScore.Caption = "" Then
lblScore.Caption = "0"
End If
tmrGame.Enabled = True
End Sub
Sub tmrGame_Timer()
Dim score As Long
score = CLng(lblScore.Caption) + 1
lblScore.Caption = CStr(score)
End Sub
Why I care as a former VB6 person: the thing that killed us wasn’t the syntax — it was tooling and platform. This keeps the syntax that made forms and line-by-line debugging easy, and puts it on an engine people still use in 2026.
There’s also an in-editor AI pair (Narcea) that writes .vg in this style — but the pitch is the opposite of “trust the black box”: the language is verbose on purpose so you can audit what it wrote.
Status: public beta (5.4.x). Form designer is experimental; the active path is Godot’s editor + VG script tabs. Honest about rough edges — see known issues on GitHub.
Links
- GitHub (releases, demos, corpus): https://github.com/xgreenrx-star/VisualGasic
- Godot Asset Library: https://store.godotengine.org/asset/visual-gasic/visual-gasic/
- Beta showcase video (made in VG, ~6 min): https://youtu.be/FUw8zgbn_tU
If you still have .frm muscle memory or half-finished VB6 projects in a drawer — curious whether this feels like a natural step or a weird fork. What would you need to take it seriously: IDE parity, database stuff, report writer, something else?
16 comments · 92% upvoted · other discussions
I hate on the 25 year old VB6 legacy code whenever I have to look at it (still some background services we never get budget to replace). But I understand the attraction to revive that style of language. Good on ya for taking on such a challenge.
Have you reviewed the additional commands and improvements in TwinBasic? Might be a few easy improvements you could use which still fit in the style of BASIC but can reduce the line count.
Green_Hunter_5718 [OP] 6 points · Sep 2026
We actually evaluated TwinBasic and RAD Basic when designing VG — borrowed what fit our target (
Continue For, generics, overloading, lambdas, compound assignment, etc.) and skipped what’s really “modern VB on Windows” (COM, native.exe, Report Designer). Still happy to hear about specific syntax or features we overlooked.We also built on — or added — things that fit Godot and readable, in-source assets, not just Win32 modernization:
Whenever— declarative reactive rules: monitor a variable/expression and call namedSubs when it changes or crosses a threshold (Whenever Section GameOver lives Becomes 0 ShowGameOverScreen).Datastatements (extended) — QB-styleData/Read/Restore, plus labeled sections andDataToArray("LevelMap")for tile maps and lookup tables in source.*Sprite:blocks embed small pixel art directly in the.vgfile (with an inline grid editor in the IDE) — auditable, diff-friendly, no PNG pipeline for tiny sprites.RaiseEvent/WithEvents— custom events → Godot signals.Connect node, "signal", "Handler"— wire signals by handler name.Parallel For/Task.Run,Buffer/MemoryBuffer— concurrency and byte-level I/O without fighting the type system.The syntax isn’t what ages badly; it’s the COM stack, the deployment model, and code nobody wants to touch. I get the frustration. But the shape of VB6 code — explicit
Sub/End Sub, named handlers, declared types,Datatables you can read in the same file — is still easy to follow at 2am. BASIC was meant to be human-readable; a lot of modern languages went the other way. We’re leaning into that on purpose.marmotta1955 2 points · Sep 2026
And then again, we should always remember that we are supposed to be writing code for Humans, and not for the Computer. Someone (definitely more famous than yours truly) has been proposing the concept since the early 80s - and it is quite difficult to disagree. So, reducing the line count has never been a good idea in the first place - especially when the compiler assembles precisely the same machine language regardless of lines count.
I, for one, support this idea and this project. I look forward to additional functionality related to database operations (maybe SQLite).
Kudos to the author, this is a great project, and I wish you the success it deserves.
Fergus653 1 points · Sep 2026
Absolutely, I was thinking more like common syntax from other BASIC languages. I was working with a commercial data-orientated BASIC before Windows or VB came along, and appreciated some of the things that were easier to do in that BASIC.
Even simple things like A += 2 felt more natural to me than using the longer notation.