SGEで文字を出力する。

SGEで文字を画面に表示するのは、いくつかの難関があります。そのはまりやすい点について書きます。
基本的に、SGEの画面表示は、draw.beginscene()で始まりdraw.endscene()で終わります。この二つの命令に各種draw命令を記述しますが、drawできる(画面に表示できる)のは、textureだけです。
そして文字はbitmapにしか書き込めません。ですから、一旦bitmapに文字を書いて、それをtextureに変換してから表示することになります。

define({name="MS ゴシック", width=22, height=22}) -- フォントをMSゴシックにする。大きさは縦横22ドット。ちなみに半角文字でもこの大きさになる。
bitmap.create(1, 100, 100) -- とりあえず、100×100のサイズで作る。
bitmap.create(2, 100, 100)
-- やり方その1
font.tobitmap(1, 0, 0, string:byte("a"), 0xFFFFFFFF)
-- 一文字だけ、"a"と書き込む
-- やり方その2
font.draw(2, 0, 0, "日本語", 0xFFFFFFFF)
-- 2byte文字混じり文の場合。

その1:font.tobitmapは半角一文字だけを対象とします。いわゆる2byte文字は文字化けしてしまいます。正直、使い道があるのかどうかは疑問です。tobitmapでできることはdrawでできますし、記述のしやすさもdrawの方が上だからです。
その2:二つに共通する第5引数はカラーコードですが、16進表記で6桁ではなく8桁の数値を使います。最も上位(左側)の二桁は、アルファー値を意味します。ですので、NScripterと同じ調子で6桁のカラーコードを使うと、アルファー値が0、完全透過になってしまい、文字が書き込まれているのに見えなくなってしまいます。
カラーコードについては、下記のような関数を使って対処するのがいいかも知れません。

-- 与えられた赤緑青アルファー値(0〜255)を一つのカラーコードにして返す。
function color_code(r, g, b, alpha)
	r = r or 255
	g = g or 255
	b = b or 255
	alpha = alpha or 255
	
	return alpha * 16777216 + r * 65536 + g * 256 + b
end
-- 各引数をnilや省略した場合、デフォルトとして255が採用される。

こうやって作ったbitmapを、texture.frombitmap()やtexture.copyrect()でtextureに変換し、それを表示することで文字が表示されます。
NScripterと違ってテキストウィンドウ等がありませんので、表示部分は完全に自作になります。頑張ってください。
余談ですが、0xFFFFFFFFは16進数で表記された数値ですので、ダブルクォート等は一切必要ありません。ですので、0xFFFFFFFFと表記しても4294967295と表記しても同じことです。さらに言うと、「0xで始まる文字列は16進数の数値である」と言うルールは各種別言語にも採用されていますので、覚えておいて損はありません。

フォントサイズについて

define({name="MS ゴシック", width=22, height=22})

このように記述した場合、半角文字であっても横幅が22ドットになってしまうので、半角英数字を表記する場合は、幅を半分にしたfontを作成して自由に切り替えられるようにするべきでしょう。