Sinenチュートリアル
このページでは、Sinen を使って Luau でアプリを動かす最短手順を説明します。
1. まず覚えること
Sinen の基本はこの3つです。
main.luauをエントリースクリプトとして実行するsetup/update/drawの3関数で処理を分ける- アセットは実行時のベースディレクトリ配下に置く
最小コードは次のとおりです。
local sn = require("@sinen")
local font: sn.Font = sn.Font.new()
function setup()
font:load(32)
end
function update()
if sn.Keyboard.isPressed(sn.Keyboard.ESCAPE) then
-- 必要なら別シーンへ遷移
-- sn.Script.load("main", ".")
end
end
function draw()
sn.Graphics.drawText("Hello Sinen!", font, sn.Vec2.new(0, 0), sn.Color.new(1.0), 32)
end
2. 実行方法
Windows (このリポジトリの構成)
- ルートでビルド
build\generate_msvc2026-debug.bat
build\build_msvc2026-debug.bat
- プロジェクトディレクトリへ移動して実行
cd examples\01_helloworld
..\..\build\msvc2026-debug\sinen.exe
main.luau が読み込まれます。
Android
build\generate_android.batbuild\build_android.batbuild/androidを Android Studio で開いて実行- アセット一式を
/sdcard/Android/media/astomih.sinen.appに配置
3. ライフサイクル
setup(): シーン読込時に1回。テクスチャやモデルのロードに使うupdate(): 毎フレーム更新。入力・ゲームロジック・物理更新に使うdraw(): 毎フレーム描画
setup は省略可能です。update / draw だけでも動作します。
4. 画像を描く
local sn = require("@sinen")
local image: sn.Texture = sn.Texture.new()
function setup()
image:load("logo.png")
end
function draw()
sn.Graphics.drawImage(image, sn.Rect.new(sn.Vec2.new(0), image:size()))
end
5. 入力とサウンド
local sn = require("@sinen")
local se: sn.Sound = sn.Sound.new()
function setup()
se:load("shot.wav")
end
function update()
if sn.Keyboard.isPressed(sn.Keyboard.SPACE) then
se:play()
end
end
6. シーン遷移
sn.Script.load(filePath, baseDirPath) で遷移できます。
filePath: 拡張子なしのスクリプト名(例:main)baseDirPath: そのシーンの基準ディレクトリ
例: scenes/title/main.luau に遷移
sn.Script.load("main", "scenes/title")
7. ディレクトリ構成の例
my_game/
main.luau
player.luau
logo.png
shot.wav
scenes/
title/
main.luau
同一ディレクトリのモジュールは通常の require で読み込めます。
local Player = require("./player")
8. 次に読むサンプル
examples/01_helloworld: 最小構成examples/02_texture: 画像表示examples/03_model: 3Dモデル表示examples/04_sound: サウンド再生examples/09_physics: 物理examples/14_synth: シンセ
API 一覧は docs/ja/luau_api.md から参照できます。