放送大学の2017下期の受講候補

下期の受付けが始まるので、受講候補を整理。

所感

さて、時間は有限(予算もまた...)なので、どれを優先しようか。いくつ選択しようか。

UnityとGodot。とりわけUnity C#とGodot GDScriptまたはC++

こんばんわ、ゲームプログラマー3年生のrokujyouhitomaです。リアルタイムレンダリング周りは未修と言っていいほどなのが大きな課題です。

Godot調査二日目で気になる点があったので、ざっくりした考察だけど、一度脳内から忘れたいので書き出しちゃいます。

UnityとGodot

Godotプロジェクトが、同じゲームエンジンであるUnityと機能を比較しつつ、Godotの機能を紹介しているドキュメントがあります。

目を通して思うところを書き残すなど。

シーンシステム

Unityでもシーンの合成を行うけどなぁと思いました。まさにドキュメントで述べられてるGodotの使い方の通りに。
具体的には、SceneManager.LoadScene APIを使って。

SceneManager.LoadScene

スクリプティング

スクリプト数について

  • Godotだと、1Nodeに1Scriptしかアタッチできない
  • Unityだと、1Nodeに複数Scriptをアタッチできる

これは決め事なので、Godotでは、ドキュメントでもある通り、1Nodeに子ノードぶら下げてスクリプトアタッチすればいいかなー。と思った。

スクリプト言語について

  • UnityはUnity C#(それ以外にもJavaScriptPython likeなのはあるが...)
  • GodotはGDScript、C++

Unity C#

Godot GDScriptはまだ触れていないが、Unity C#について先に語るとすると、

  • Unity C#MonoDevelopのサポート受けれる。それ以上にVisualStudioのサポートを受けれて、強力。
  • Unity C#は.NET使えて、既存のライブラリを使えて、強力。

Godot GDScript

一方、Godot GDCScriptを語ると、

  • Godot GDCScriptは、Pythonライクと言っているが、Pythonとは異なる言語
  • Godot GDCScriptは、エディタサポート絶望的
  • Godot GDCScriptは、既存ライブラリ?そんなものはない。辛い。

という...。

Godot C++

GodotではC++で書くこともできるそうなので、C++がGodotスクリプトよりましか?(どこで拡張するんだろか、ランタイムの実装言語はC++なのはわかってるけど、差し込みやすいようになっているのか??

自分で組み込む?

個人的な感想だが、C++は慣れてなく、難しい言語なのでできるだけ使いたくないところ。できるだけ軽量な言語、例えばLua, Ruby(mruby), Python(micropython?CPython??、あれCythonでも行けるかしら?!)あたりを自前で組み込むか。

おっと、公式ドキュメントに過去にLuaPythonが組み込まれててたけど、自前でハンドリングしたいから、独自言語にたどり着いたって記載があった。うーむ。

Unityの.meta相当

Unityには.metaというアセットファイルとついになるメタ情報のテキストファイルがある。
あれ、結構便利で、テキストなので、ある程度git diffとかで読める。慣れてくると読めるし、ツールで活用するケースがある。

要確認事項では有るが、Godotは全部シリアライズされてバイナリデータになってるようなので、困る点がありそう。

Godotは一応ドキュメント上は、

but Godot approach is simpler, with a single configuration file, minimalist text format, and no metadata.

と述べている以上は、テキストファイルで必要十分であると、信じている。

GodotでHTML5エクスポート

Godot(ゴドー)、君は何者なんだい。Godotとの付き合いは二日目。まだ正体をつかめていない。

どうもrokujyouhitomaです。引き続きGodotを触ってる。

HTML5のエクスポートをサポートしているとのことなので、試した。

実行結果

結果を先に。ちゃんとビルドできた。

エクスポートしたアプリはGithub Pagesでホスティングしたので実行できるようにしといた。

godot-tutorial で実行できる。

f:id:rokujyouhitoma:20170611170720p:plain

環境情報

  • Mac OSX 10.10.5
  • Godot Engine 2.1.3-stable
  • Chrome 58.0.3029.110 (64-bit)

エクスポートの設定

デフォルトのGodotは、ビルドターゲットの設定が不十分なので、設定を行う。

  • Godot Engine - Download で配布されている をインポート。Godotエディタの"Setting" -> "Install Export Template"。Fileで落としたGodot_v2.1.3-stable_export_templates.tpzを指定。
  • エクスポートの実行は、"Export" -> "HTML5" -> "Export Project"

f:id:rokujyouhitoma:20170611170802p:plain

事前に、メインシーンの設定がまだの場合は、"Project Settings" -> "General"で"main scene"の設定をお忘れなく。

f:id:rokujyouhitoma:20170611170818p:plain

所感

すんなりできた。

一方で、templatesを自前でemscripten使ってビルドしようと思ったんだけど、Macにemsdkのインストールでハマった。ハマってる最中にドキュメント読んでたら、templatesが公式配布されてたからヽ(・ω・)/ズコー

ただ、テンプレートのインポートはハマりどころだと思ってて、エディタ環境にそもそも最初からバンドルされてる状態でもよかったんじゃないかな。なんで別なんだろか。

Godotの諸情報をまとめる

EuroPython2017のセッション一覧を見てたら、Bringing Python to Godot game engine · EuroPython 2017 · Rimini, 9-16 July 2017 というセッションを発見し、Godotを知った。

以下、調査を行おうと思うので、ざっとGodotの情報をまとめる。

Godot(ゴドー)

諸情報

天沢らせんさん(3Dモデラーさん?)

天沢らせんさんが日本語の情報や、書籍の出版を行っていた。
3Dモデラーさん?なのかな。

当面お世話になることになりそう。

書籍

天沢らせんさん著の書籍がある。購入するかは、未定。

誰かがまとめてくれたリンク集

ドキュメントの日本語翻訳

個人でドキュメントの日本語翻訳を試みてる方がいるようだ。

Godotインストー

バイナリやソースコードで配布されてる。
面白いことにSteamからもインストール可能。

Godotを実際に触った話

日本語化

エディタは日本語化されていない。(余力があれば、jaを追加したいところ)
エディタにはデフォルトで日本語のフォントが入っていない。

ひとまずNotoSansを入れている先駆者が数人いて、記事にしていてくれた。感謝。

ラベル

Mac上のエディタで、日本語を文字列のラベルをシーンに追加し、実行し表示することはできた。
フォントは前述したNotoSans。

f:id:rokujyouhitoma:20170610214254p:plain

ソスコードはここに置いておいた。

所感

当面調べてみようかなー。と思える。
ドキュメントはある程度揃ってる。このエンジンで作られたゲームもいくつかはOSSで公開されているので見てみる。

ドキュメントやら、ネット上のサイトみたり、触ってて気づいた点がいくつかあった。

  • fbxサポートしてない。Autodeskのクローズドライブラリのライセンスとの兼ね合い上が理由だそうな。Importing 3D scenes — Godot Engine 2.1 documentation
  • エディタが落ちる。とりわけ外部データ(今回だとフォントのインポート)時にクラッシュ

EuroPython2017開催。7月9日〜16日

今年もEuroPythonが開催される。また僕は行けない。

動画がYoutubeあたりに公開されるのを楽しみにしている。

EuroPython2017

開催日時は、7月9日〜16日。
開催場所は、イタリアのアドリア海沿岸のリミニ。サンマリノ共和国の玄関口だそうだ。

イタリア開催多いな。

今年は、EuroPythonの公式ブログも立ち上がってる。

個人プロジェクトXのコード書いてたら副産物としてテンプレートエンジンがある程度仕上がった

f:id:rokujyouhitoma:20170528222128j:plain

にゃーん。これはねこの飼い主との思い出が詰まった投稿。

なお、画像は知人の飼い猫で、使用許可取ってない。

経緯

2011年11月にtornado.templateJavaScriptに移植した。
使えはするけど、細かい機能まで作りきれてなかった。

ちょうど、今回の個人プロジェクトXで、

  • JavaScriptで書かれた
  • テンプレートエンジン

が必要になったので、メンテして使えるようにした。

前提の個人プロジェクトX

詳細は割愛。テンプレートエンジンに関して記載すると、

- X自体は外部のコード使いたくなかったので、巷で流行ってる?vanilla js。
- Closure Compilerは採用。

テンプレートエンジン

ざっくりと整理。

こんな感じで使える。

var loader = new DictLoader({
    "base.html": '<title>{% block title %}default title{% end %}</title>\n' +
	'<body>{% block body %}default body{% end %}</body>',
    "page.html": '{% extends "base.html" %}' +
        '{% block title %}page title{% end %}' +
        '{% block body %}page body{% end %}'
});
loader.load('page.html').generate();

https://github.com/rokujyouhitoma/horse-racing-game/blob/master/src/js/lib/template_test.js (将来リンク切れになってもしらね)

既知の不具合、問題点

  • 一部でテンプレートエンジン内部コードを構築するの面倒だったのでeval使ってる。
  • テンプレート構文が部分的にバグってる。具体的には{{this}}でブラウザだとglobalオブジェクトにアクセスできちゃったり{{XXX}}で任意のオブジェクトにアクセスできてしまう。また自由な構文(内部的にはStatementBlockで評価するだけ)を許可してしまっている。

私感

  • 個人的に使う限りは困らないところまではできた。
  • Closure Compiler最高。
  • Pythonのwith構文相当を関数で提供は大したコードではなかったけど、面白かった。
  • 個人プロジェクトXではこんなだいそれたコードは複雑度が増すし要らなかったんや!実際に削減できたコード?そんなの数十行だけだ!!増えたコード??2000行近くだ!!満足感はある。後悔はしていない(ただし個人プロジェクトだから!、業務だったら...)。
  • にゃーん

開きっぱなしのブラウザタブを消すための備忘録

備忘録。ブラウザのタブで開きっぱなのをkillしたいので。書き出しとく。

自分以外の人にはなにも有用ではないだろう。

脳内の書き出し

ついでに、脳内でもやーっとしていて考えがまとまってないのを書き出しとく。

- 人工知能学会に提出されたpixivに関する論文は、学会側が研究倫理ガイドラインを作って啓蒙する必要があるのかなぁ。と思う次第。どうでしょうね。そもそも学士課程、修士課程で学ぶもんだろとは思う
- 任意組合を調べるのは限度がある。というか、調べられない。なお、一生に一度は作ってみたいとちょっと思う。必要と機会があれば

私感


大抵ははてぶしているはずであるが、こういうのまとめとくのになんかいいのかなぁ。

ああ、これがウェブログか?どうだろうか。