SMILE 2.0Learn & build
Language guide

01 / Start here

Your first SMILE program

Start small: give a hero a name, award ten points, and turn a few readable instructions into a real Windows program.

Your first tiny game idea

A game remembers things, follows rules, and responds to a player. Before moving a spaceship, make a program that remembers a hero's name and score. You will learn to save your instructions, compile them, and run the result.

What is SMILE?

SMILE means Simple Modern and Intuitive Language for Everyone. SMILE 2.0 is a programming language and toolchain created by Louiery R. Sincioco (Sin), with Codex collaboration. These lessons describe the current language, using small examples you can change.

WriteYour instructions in a .smile file
Compilesmilec checks and translates them
RunWindows follows the instructions
A compiler turns your source code into a program Windows can run. Editing the source means compiling again.

Set up the current Windows toolchain

Start on a Windows computer. If this is a shared family or school computer, a teacher or adult can help prepare the development tools. The repository currently documents these prerequisites:

  • Windows 11 x64.
  • PowerShell 7, the command window used in the steps below.
  • .NET SDK 10.0.400, selected by the repository's global.json.
  • Visual Studio 2026 with Desktop development with C++. Building the editor extension also needs Visual Studio extension development.

The current extension manifest and installation script target Visual Studio Enterprise. This guide does not promise support for other editions. You can also use the compiler commands below once the native build tools are available.

  1. Get the source from the official SMILE 2.0 repository and open PowerShell in its root folder. The repository root contains README.md and the scripts folder.
  2. Run the prerequisite checker, then build the toolchain:
pwsh -NoProfile -ExecutionPolicy Bypass -File scripts\doctor.ps1
.\scripts\build.cmd

The build produces artifacts\compiler\smilec.exe (the compiler) and artifacts\vsix\Smile.VisualStudio.vsix (the editor extension). Resolve any prerequisite error before continuing.

For Visual Studio integration, save your work and close Visual Studio, then run the repository's installation script. Reopen Visual Studio when installation finishes:

.\scripts\install-vsix.cmd --skip-build
Already have a working SMILE setup?

You can skip rebuilding the toolchain. Use your installed compiler and extension. The lessons do not need game art, character models, or third-party game libraries.

Write “Hello, Nova!”

In Visual Studio, create a SMILE 2.0 Console Application and replace the starter source with this code. A console program writes text; it is a useful place to test your game's rules before adding pictures.

You can instead download language-hello.smile and its project file. Save both in the same folder, keeping their filenames, and open the .smileproj in Visual Studio.

' My first SMILE 2.0 program.
Option Explicit

Dim HeroName As Text
Dim Score As Number

HeroName = "Nova"
Score = 10

Print "Hello, " + HeroName + "!"
Print "Your first score: "; Score

End Program
Line or symbolWhat it tells the computer
'The rest of this line is a comment for humans.
Option ExplicitRequire every variable to be declared, so misspelled names are caught.
Dim HeroName As TextMake a named place to store text.
HeroName = "Nova"Put the text Nova into that variable. The quotation marks describe text; they are not part of the name.
+ between textsJoin pieces of text together.
Print ... ; ScoreWrite the label and the number on the same line without converting the number to text.
End ProgramFinish the program.

Build it. Run it. Change it.

In Visual Studio, save your file, build the project, and use Ctrl+F5 to run without debugging. F5 runs with the debugger, which lets you pause and inspect variables. If the console closes before you can read it, use the command-line route below.

For the command-line route, put the downloaded files in a folder called MyFirstSmile inside your repository root. These commands are entered in PowerShell at the repository root:

& ".\artifacts\compiler\smilec.exe" --project ".\MyFirstSmile\language-hello.smileproj" -o ".\MyFirstSmile\HelloSmile.exe"
& ".\MyFirstSmile\HelloSmile.exe"

The first command builds the executable. The second starts it. The standard SMILE startup branding may appear before the output. The lesson's output is:

Hello, Nova!
Your first score: 10

Now change "Nova" to your hero's name and 10 to 25. Save, compile, and run again. You have changed your first game state.

Use your own paths.

The example folder is a choice, not a special folder required by SMILE. Put quotation marks around a path when it contains spaces. In PowerShell, & lets you run a quoted executable path.

Source code and project files do different jobs

FileIts job
.smileContains the actual language instructions that you write.
.smileprojLists the source files, startup file, project kind, assets, and library references.
.exeThe compiled native Windows program.
.smilelibproj / .smilelibA reusable library project / its compiled package. You will meet these in Libraries.
See the tiny project file used by this lesson

This is XML project configuration, not SMILE code. StartupFile chooses the file whose top-level instructions run.

<SmileProject Version="1.0">
  <PropertyGroup>
    <ProjectKind>Console</ProjectKind>
    <StartupFile>language-hello.smile</StartupFile>
    <OutputName>HelloSmile</OutputName>
  </PropertyGroup>
  <ItemGroup>
    <SmileSource Include="language-hello.smile" StartupOnly="true" />
  </ItemGroup>
</SmileProject>

For a single source file, a project file is optional. This equivalent command compiles the source directly:

& ".\artifacts\compiler\smilec.exe" ".\MyFirstSmile\language-hello.smile" -o ".\MyFirstSmile\HelloSmile.exe"

Make one mistake on purpose

Change Score = 10 to Scroe = 10, then build. With Option Explicit, the compiler reports the unknown name. Read the file and line in the diagnostic, fix the spelling, and build again. An error message is a clue about which instruction needs attention.

What happensWhat to check
Unknown variable nameCheck its spelling and Dim ... As ... declaration.
Text or syntax errorCheck both quotation marks and keep each statement on its own line.
Type mismatchA number and a piece of text are different kinds of value. Use ; to print them together.
Old output after an editSave the source, build successfully, and run the newly built executable.
Native build tools unavailableRun scripts\doctor.ps1 and check the required C++ workload.

Your mission: a welcome screen in words

Add a Lives variable of type Number. Give the player three lives and print Lives: 3 on a new line.

Reveal one solution

Add the declaration beside the other declarations, the assignment beside the other assignments, and the print before End Program.

Dim Lives As Number

Lives = 3
Print "Lives: "; Lives

Next: learn the values your game remembers →

Sources & version notes

Checked against the local SMILE 2.0 source on September 25, 2026. Examples target the native Windows toolchain unless stated otherwise. The linked repository may continue to evolve.