2019年11月21日木曜日

GDevelop 5 でゲームを作ってみた感想

GDevelop に関する記事をまとめた別ブログを用意しました。
GDevelop に関する情報をまとめたブログ
最新情報などはこっち↑を見てね。

以下は、かなり古いバージョン(2019年頃)の情報です。

GDevelop 5 を使ってみて、気が付いた点の備忘録。
こんなゲームを作りました ⇒ BomBomDig

地味便利機能
  1. プレビューボタンを右クリックすると表示されるメニューから、開始シーンを固定できる。
  2. イベントのグループやコメントは右クリックから Edit で色を変えることができる。
  3. 「条件を追加」「アクションを追加」を右クリックするとショートカットメニューが表示される。

Pi (円周率)が無い!
Else が無い!
これタイルマップじゃない!ただのタイリングだ!
反転できない。エフェクトにフリップはあるが判定やポイントは反転しない。(ベータ版では対策済み)解決済み

条件でオブジェクトを絞り込んでも、そのアクションがオブジェクトの数だけ繰り返されるわけではない。
例えば対象を3つに絞り込んで、アクションで score + 1 としても結果は3ではなく1。

条件というより対象の絞り込みだと考える必要がある。
マスクオブジェクトが上に乗っていないボタンに限定したい場合、
Not mouse on マスクオブジェクト
and
mouse on ボタン
では、マウスが乗っていないマスクオブジェクトとマウスが乗っているボタンに絞り込まれるだけなので意味がない。

衝突マスクのないスプライトを消そうとすると止まる。

シーンエディタ上でオブジェクト変数を変更した直後に、別のオブジェクトを選択すると変更が反映されない。一度何もないところをクリックする必要がある。

Tweenが機能しない。
1つもステージに配置されていないオブジェクトを複製してTweenを設定しても機能しない。

1つもステージに配置されていないオブジェクトをマウスオン判定しようとしても機能しない。

テキストの幅指定ができないので一行だと右寄せ・中央寄せの意味がない。
エディターと実行環境で文字の位置がずれる(フォントによるかもしれん)

Android アプリのバージョンコードはバージョン番号が変換される。
1.0.1⇒10001

SubStr()は他の言語のように開始位置をマイナスにして末尾から数える方法は使えない。

シーンタイマーなどは一時停止するだけで生成される。
条件で確認するだけでも生成されるっぽい。 

Center Point を変更すると、当たり判定がおかしくなる。
報告済みだが対応されている気配なし。

条件の「& および」で反転条件にしても効果がない?

条件の「ではない」を利用すると対象のオブジェクトが存在しないのに実行されるイベントを作成することができてしまう。

三角関数(三角比)の翻訳がゴミ
正弦(サイン sine)、式は sin()
余弦(コサイン cosine)、式は cos()
正接(タンジェント tangent)、式は tan()
余接(コタンジェント cotangent)、式は cot()
正割(セカント secant)、式は sec()
余割(コセカント cosecant)、式は csc()

イベントの検索は繰り返しの設定箇所にはヒットしない。

Z Order が同じ値の場合、あとから生成されたインスタンスが下になる。
エディター上では、あとから生成したインスタンスが上になるが、再生時には下になる。

エクスポートされた Windows (自動インストーラーファイル)は、実行すると問答無用で
C:\Users\[ユーザー]\AppData\Local\Programs\
にインストールする凶悪仕様。

BB テキストのワードラップは半角スペースの箇所でのみ有効。
日本語や全角スペースでは改行しない。

オリジナルの衝突マスクと独自の衝突マスクが重なるとエラーになる?

2019年4月8日月曜日

ドラッグ&ドロップ(ノンプログラミング)でアプリが作れるサービス2019年まとめ

ビジュアルプログラミングでアプリが作れるサービスをまとめてみました。
いずれもドラッグアンドドロップで、画面設計からプログラミングまでできるので、とても簡単(?)にスマホアプリが作れます。
Monaka に挫折した方や、Buildy、Yappli、アプスタ、BRAND などでは実現できないアプリを構築したい方向けです。

なお、2019年4月8日時点での評価です。

Thunkable

https://thunkable.com/
iPhone と Android の両方で機能するアプリを作ることができます。
無料版だと作成しているもの(プロジェクト)が Thunkable Public Gallery に公開されるという変った料金体系です。
つまり無料版で作られたものは、誰でも自由にプレビューしたりコピーしたりできます。
あまりパーツの種類は多くないですが、基本的なことから Firebase との連携、マネタイズは一通り可能です。

ただ、コミュニティーが、新しい Thunkable X(上記)と古い Thunkable Classic の記事が混在していて(タグ分けはされている)ちょっと混乱します。
個人的にアイコンフォントの利用が、まだできない点が残念です。(Classic だとできる)

AppyBuilder

MIT App Inventor の派生サービス。そのため Android のみです。
その分、利用できるパーツの種類が多く、画面設計や機能の自由度は高いです。
さらに Firebase との連携やマネタイズなども一通り可能な上に、完全に無料という点が驚きです。
ただちょっと全体的に古臭いw

Kodular

こちらも MIT App Inventor の派生サービス。やっぱり Android のみです。
AppyBuilder とできることに大差はありませんが、2017年にスタートしたサービスなので流行りの(?)画面構成などが作りやすいです。
当然のように無料で逆に怖いw

Composer 3

https://www.appgyver.com/
旧 AppArchitect かつ旧 Composer という、ややこしい過去を持つサービスです。
iPhone と Android の両方に向けたアプリを出力できるようですが、正直、利用できるパーツの種類が少なく、上記のサービスに比べると機能面で劣ります。
また、無料試用では実機テストができないようです。というかドキュメントが古い、または不足している印象です。
チャットでお話を伺ったところ、B2E(従業員向け)アプリにフォーカスしていて、最新版がリリース間近とのことです。

stencyl

http://www.stencyl.com/
これは2Dゲーム作成ソフトウェアです。
無料版では Flash や HTML5 での出力が可能です。
スマホアプリとして出力するには年間契約の購入が必要です。
ゲーム作成に特化していますが、それ以外のアプリを作ることも可能です。
ただ、文字入力や日本語表示に難ありw

Ionic Creator

既に完全に放置されているサービスです。おすすめできません。
なお、本家の Ionic フレームワークそのものは順調に進化しているようですw

その他

諸々の理由で評価はしていませんが、以下のようなサービスもあります。

buildfire

店舗向けのアプリ作成サービス。国内サービスを利用したほうが良い。

yapp

基本有料。国内の yapp.li というサービスとは別物。

Appy Pie

主に店舗向けのアプリ作成サービス。機能を選択するだけで作れたりする。

appery.io

基本有料。全然ノンプログラミングじゃないw

applican

今回紹介する唯一の国内サービス。全然ノンプログラミングじゃないw

以上!

おしまーい。

2019年1月28日月曜日

Node-RED v0.19.5 の file ノードで日本語を出力すると文字化けする

まるで v0.19.5 が悪いかのようなタイトルですが、何が原因かは分かってません(ぉぃ)

AWS 上の Node-RED v0.19.4 なら大丈夫なのに Azure 上の Node-RED v0.19.5 だと file ノードで日本語を含むテキストを出力すると、ガッツリ文字化けします。
ちな、どちらも Ubuntu です。

しょうがないので Azure 上の Node-RED v0.19.5 では exec ノードを使ってテキストファイル書き出してます。

こーいうのどこに聞けば良いのかなー?(´・ω・`)

【2019/01/30追記】
Raspberry Pi (Raspbian) の Node-RED v0.19.5 でも文字化けしました。
えー、ダウングレードってどうやるーん?(´・ω・`)

【2019/02/12追記】
一度 npm で削除してから v0.19.4 を再インストールしたら文字化けしなくなりました。
ちなみに v0.20.0-beta.4 では化けました。ぬー…

2019年1月21日月曜日

Node-RED を 80番ポート(port 80)でアクセスできるようにする方法

Node-RED は通常 1880 番 port を使用しますが、ブラウザ(HTTP)でアクセスしたときに使用される標準の 80 番 port でアクセスできるようにする方法です。

なお、環境は Linux (Ubuntu)です。

Node-RED の設定は変更しなくて OK

さて、そもそも Node-RED の setting.js には uiPort という設定項目があるので、そこを変えればいいのかと思いきや、1024 以下のポートは root の権限が必要になるので、その方法では  Node-RED を root で実行しなければならなくなります。
しかし、それはセキュリティ的に良くないので、一般的には 80 番ポートへのアクセスを 1880 番へ転送する、という手法が取られます。

なので、uiPort の設定を変更する必要はありません。

80 番ポートから 1880 番ポートへリダイレクトする設定

では、具体的にどのようにリダイレクトさせるのかというと、Linux に標準でインストールされている iptables というツールを利用します。
iptables はパケットフィルタリングや NAT などの設定を管理することができるツールですが、詳細についてはググってくださいw

とにかく手順だけ説明しますw
次のコマンドを実行することで、1880 番ポートから 80 番ポートへ転送されるようになります。
sudo iptables -A PREROUTING -t nat -p tcp --dport 80 -j REDIRECT --to-port 1880
ただし iptables は設定をメモリ上に記憶しているだけなので Linux が再起動すると設定が消えてしまいます。

iptables の設定を保存・永続化する

そこで、多くの場合は iptables-save と iptables-restore というコマンドを利用して、iptables の設定をファイルに書き出して、システム再起動時に読み込ませるという手法が取られています。

しかしここではより手軽に、インストールするだけで設定を永続化できる iptables-persistent というツールを利用することにします。
下記コマンドでインストールします。
sudo apt install iptables-persistent
インストール中に現在の設定で IPv4 と IPv6 の設定ファイルを作成するか聞かれるので、どちらも Yes を選択します。
これだけで、再起動しても iptables の設定が有効なままになります。わー便利!

ちなみに、設定ファイルは以下の場所にあります。
/etc/iptables/rules.v4
/etc/iptables/rules.v6

また、任意のタイミングで保存や読み込みをさせたい場合は、以下のコマンドを用いるようです。(動作未確認)
sudo netfilter-persistent save
sudo netfilter-persistent reload
おしまいヽ(=´▽`=)ノ