山水堂
A009.conf.luaの基本と活用方法
前章でも記述した通り「conf.lua」によって、画面サイズ等の基本的な内容を設定できます。
-- conf.lua function love.conf(t) t.window.width = 640 t.window.height = 480 end
詳細は、公式のwikiで確認できます。
https://www.love2d.org/wiki/Config_Files
何も設定しなければ、にはどのようなものが入っているかを確認してみましょう。
-- conf.lua function love.conf(t) t.identity = nil -- The name of the save directory (string) t.version = "0.10.1" -- The LÖVE version this game was made for (string) t.console = false -- Attach a console (boolean, Windows only) t.accelerometerjoystick = true -- Enable the accelerometer on iOS and Android by exposing it as a Joystick (boolean) t.externalstorage = false -- True to save files (and read from the save directory) in external storage on Android (boolean) t.gammacorrect = false -- Enable gamma-correct rendering, when supported by the system (boolean) t.window.title = "Untitled" -- The window title (string) t.window.icon = nil -- Filepath to an image to use as the window's icon (string) t.window.width = 800 -- The window width (number) t.window.height = 600 -- The window height (number) t.window.borderless = false -- Remove all border visuals from the window (boolean) t.window.resizable = false -- Let the window be user-resizable (boolean) t.window.minwidth = 1 -- Minimum window width if the window is resizable (number) t.window.minheight = 1 -- Minimum window height if the window is resizable (number) t.window.fullscreen = false -- Enable fullscreen (boolean) t.window.fullscreentype = "desktop" -- Choose between "desktop" fullscreen or "exclusive" fullscreen mode (string) t.window.vsync = true -- Enable vertical sync (boolean) t.window.msaa = 0 -- The number of samples to use with multi-sampled antialiasing (number) t.window.display = 1 -- Index of the monitor to show the window in (number) t.window.highdpi = false -- Enable high-dpi mode for the window on a Retina display (boolean) t.window.x = nil -- The x-coordinate of the window's position in the specified display (number) t.window.y = nil -- The y-coordinate of the window's position in the specified display (number) t.modules.audio = true -- Enable the audio module (boolean) t.modules.event = true -- Enable the event module (boolean) t.modules.graphics = true -- Enable the graphics module (boolean) t.modules.image = true -- Enable the image module (boolean) t.modules.joystick = true -- Enable the joystick module (boolean) t.modules.keyboard = true -- Enable the keyboard module (boolean) t.modules.math = true -- Enable the math module (boolean) t.modules.mouse = true -- Enable the mouse module (boolean) t.modules.physics = true -- Enable the physics module (boolean) t.modules.sound = true -- Enable the sound module (boolean) t.modules.system = true -- Enable the system module (boolean) t.modules.timer = true -- Enable the timer module (boolean), Disabling it will result 0 delta time in love.update t.modules.touch = true -- Enable the touch module (boolean) t.modules.video = true -- Enable the video module (boolean) t.modules.window = true -- Enable the window module (boolean) t.modules.thread = true -- Enable the thread module (boolean) end
英語ばかりで、判りづらいですが……重要なのをピックアップしていきますので、安心してください!
-- conf.lua function love.conf(t) t.window.title = "Untitled" -- The window title (string) end
これは、タイトルです、変更すればウィンドウにUntitledと出ていたのが変わります!
さて、日本語用のプログラムの話をここらでしておきましょう。
ためしに、Untitledの部分を日本語にしてみてください。
-- conf.lua function love.conf(t) t.window.title = "ハローワールド" end
保存して動かしてみると……文字化けしましたね……。
まさか……日本語が使えない?と、悲しい気分にならなくても大丈夫です。
この現象を引き起こしたのは「文字コードが違うため」です。
一般的なWindowsで保存されたテキストは「Shift-JIS(ANSI)」という文字コードとなっています。
LOVEで使用できる文字コードは「Utf-8」なので、合わせてあげることによって、文字化けしなくなるのです!
これには、ちょっとした工夫が必要です。
「メモ帳」で開いたときの手順を例に説明します。
「conf.lua」を開いている状態で……
ファイル(F)(タグ)→名前を付けて保存→
と開くと、「名前を付けて保存」ウィンドウが開きます。
ウィンドウの下部分に「文字コード(E)」の項目がありますね!
この項目は通常であれば「ANSI」になっているので、逆三角を押し「UTF-8」を選択、保存してください。
これで「UTF-8」の文字コードのファイルになりました!
動かして、プログラムのタイトルが「ハローワールド」となっているか確認してください!
今後、文字化けしたのなら、文字コードを確認してください。
-- conf.lua function love.conf(t) t.window.icon = "Player.bmp" -- ファイル名を指定 end
アイコンを設定します。画像ファイルを直接指定します!
そして、何故かしら、拡張子が(.ico)のものを利用できない気がします……。
-- conf.lua function love.conf(t) t.window.width = 800 -- The window width (number) t.window.height = 600 -- The window height (number) t.window.borderless = false -- Remove all border visuals from the window (boolean) t.window.resizable = false -- Let the window be user-resizable (boolean) t.window.minwidth = 1 -- Minimum window width if the window is resizable (number) t.window.minheight = 1 -- Minimum window height if the window is resizable (number) t.window.fullscreen = false -- Enable fullscreen (boolean) t.window.fullscreentype = "normal" -- Standard fullscreen or desktop fullscreen mode (string) end
ウィンドウのサイズ関連です。
width、heightは、前章で説明しましたね。基本的には16の倍数が好ましいです。
また、4:3の比率を維持しないとフルスクリーンに対応できないかもです。
borderlessをtrueにすると、ウィンドウ枠が無くなって格好良くなります、でも×ボタンも消えるので工夫が必要です。
resizableをtrueにすると、リサイズ可能なウィンドウになります。
minwidth、minheightはリサイズ時の最小の大きさを指定できます。
fullscreenをtrueにするとフルスクリーンになります。
fullscreentypeは、fullscreenをtrueにした場合に、"normal"か"desktop"を指定できます。
normalは指定サイズを維持してフルスクリーン、desktopは、デスクトップサイズにウィンドウが広がりフルスクリーンとなります。
-- conf.lua function love.conf(t) t.console = false -- Attach a console (boolean, Windows only) end
コンソール画面を表示するかを指定します。
開発時にコンソール画面を有効にすると、デバッグ出来て便利です!
では、試しにコンソールを表示してみましょう。
-- conf.lua function love.conf(t) t.console = true end
「conf.lua」の中にこのように記述したら、実行してみましょう。
実行したプログラムとともに「LOVE Console」という真黒なウィンドウが出ましたね!
ソースの方で、デバッグ情報を書かなければ、このウィンドウには何も表示されません。
試しに、キーボードの情報をコンソール画面に出力するものを作ってみましょう。
-- main.lua function love.keypressed(key, isrepeat) -- ■キーが押された! print(key) end
実行後に、試しにキーボードを入力してみてください!
通常の画面には何も表示されませんが、コンソール画面には対応するキーが表示されるはずです。
たったこの数行で、キーボードが押されたものが何であるかをデバッグ出来ます。
printを使ってコンソール画面に出力していくと、様々なテストが可能になるので、活用してみてください!