Godot iOSテンプレートのXcode9.3でのエクスポートエラーのバグ(Bug)問題について

2018年4月21日更新

Godot v3.0.2安定版では、Xcode9.2, Xcode9.3でiOSテンプレートの致命的なエクスポートエラーが発生します。まだまだバグ(Bug)があるみたいですね。( ̄◇ ̄;)

Godot v3.0 マイルストーンURL

MacOSのエクスポートでは、発生しないで、iOSのエクスポートで発生します。

iOSエクスポートのセッティング項目のApp Store Team Idの入力だけかと思っていたら、どうもそれだけでは無い様で、QAフォーラムを覗くと、他でも出ているのを見かけました。本当にGodot 3.0系が安定して、iOSシュミレーターやiPhone実機でテストできる様になるのは、いつになるのでしょうかね。?^( ̄ ^  ̄)^

GodotでのiOSエクスポートエラーのダイアログ表示画面

出力したプロジェクトファイルは、Xcode9.3で壊れているプロジェクトファイルと認識されて、読み込む事すらできません。(Xcode9.3エラー表示画面)

Bugナンバー#15058のURL もしかしてベータ2から原因が解明出来ずに修正せず、放置してたのか?( ̄◇ ̄;)

iOSエクスポートの手順も以下にご紹介します。

iOSエクスポート処理手順

1.エクスポートテンプレートをダウンロードする* .tpz
2.エクスポートテンプレートをインストールする* .tpz
3.「エクスポート」ウィンドウに移動します。
4.iOSを選択
5.「App Store Team ID」を入力してください。
6.オプションのアイコン」と「カスタムパッケージ」以外のすべてのボックスに記入する。
7.「プロジェクトのエクスポート」ボタンをクリックします。
8.プロジェクトをエクスポートするフォルダを選択します。
9.保存ボタンをクリックします。(iOSエクスポート* .ipaについては関係ありません)
10.エクスポート処理中にエラーが発生します。 エラーの説明については、出力ウィンドウを見て、それらを解決する。(英語)…Xcodeで読めないので解析出来ずに詰みました。(T _ T)

こんなエクスポートで出てしまう致命的なバグ(Bug)もあるとは…Godotには、期待しているんですけどねぇ。( ̄  ̄;) …Godotホームページのゲームショーケース見てもiOS関連が、よほど探さないと見つからないほど、ほとんど無いし、しかも日付けからv2.1系のiOSアプリしかない様で、v3.0系でのiPhone,iPad開発は、本当に大丈夫なのか?と疑われます。

正直、これでは、一般的なiOSデベロッパーには、間違いなく嫌われます。iOSとAndroidのクロスモバイル開発を考慮してGodotを選択する開発者がいると思われる中、モバイル開発のOSの一つiOS対応がこんな悪い状態では、ユーザー増え無いしCocos2d-x, Unity, Unreal Engineと同じ知名度になる事はできないと思います。( ̄ ^  ̄;)

あっそうそう、iOS以外は、個人的にテストした範囲では問題ありませんので、iOSとAndroidのモバイルクロス開発をしない、デスクトップ、Web(HTML5)、Androidアプリ開発をしたい方には、無料ですし、おすすめですよ。d( ̄ v  ̄;)...v3.0系でのiOS開発がまともに出来ないので、モバイルのクロス開発ができるとは言えないですね。

どうも次のv3.1に期待するしかない様です。(^ ^;

Unityでゲームプログラミング入門 基本編UI Buttonクリックのイベント設定

2018年3月28日

Unity 2017の使用検討中に覚えた設定で、UI Buttonのイベント設定操作とシーン遷移について、ネット上に簡単な日本語の説明が見当たらない為、備忘録も兼ねて、ご紹介します。d( ̄  ̄)

今回は前回からの続きで、UI Buttonのクリックイベント処理によるタイトルシーンからゲームシーンへの遷移です。

新しく空のオブジェクトをTitleSceneの名前にして作成します。

  

作成したTitleSceneオブジェクトへ「Add…」ボタンをクリック、「New Script」を選択してC#スクリプトを追加します。

  

新しく作成したスクリプトの名前をTitleSceneとして、コードを追加します。

  

TitleScene.csのコード内容

sing System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement; // シーンマネージャーを追加

public class TitleScene : MonoBehaviour {

	// Use this for initialization
	//void Start () {
		
	//}
	// ゲームシーンのロード 関数追加
	public void GammeSceneLoad(){
		SceneManager.LoadScene("GameScene");
	}
	
	// Update is called once per frame
	//void Update () {
		
	//}
}

TitleSceneシーンのUI Buttonを選択し、下左側画面のように右下の「On Click()」の「+」をクリックしたら現れる「…Only」下のオブジェクト選択をクリックします。

  

オブジェクト選択ダイアログが下左側画面のように現れるので、SceneタブのTitleSceneオブジェクトを選択、ダブルクリックした後、下左側画面のように「…Only」横のリストからコードで入力した関数GammeSceneLoad()を選択します。

  

メニューのBuild SettingsでTitleSceneをAdd Open Scenesボタンを押して追加します。GameSceneシーンを追加する場合は、GameSceneの編集画面としないとできませんので、ご注意ください。

以上の設定で、UI Buttonをクリックしてゲームシーンへ遷移する事ができます。

正直、後発の強みで、Godotの方が操作設定が簡単に感じますね。d( ̄  ̄) 特にUnityの場合、最初試用した時、ゲームスタートのシーン設定が、まさかBuild Settingsのシーン追加で行うとは思いませんでした。まぁ覚えたら問題ないですけど…( ̄  ̄;)

 

Unityでゲームプログラミング入門 基本編UI TextとUI Button設定

2018年3月28日

Unity 2017の使用検討中に覚えた設定で、シーンへのUI TextとUI Buttonの設定操作とシーン遷移について、ネット上に簡単な日本語の説明が見当たらない為、備忘録も兼ねて、ご紹介します。
d( ̄  ̄)

今回は、二つのシーン作成とUI TextとUI Button設定までです。

Unityで2Dゲームプロジェクトを既に作成してあるものとして、説明します。

2Dプロジェクト開始初期画面

現在のシーンをGameSceneとして保存後、右ボタンクリックし、新しくタイトル用のシーンをTitleSceneの名前で作成します。

   

TitleSceneに切り替え、右ボタンクリックし、UI→Textを選択します。

下左側画面のようにシーンへ追加したTextのCanvasをクリック選択し、下右側画面のように右側プロパティのCanvasのRender Modeの設定をScreen Spase Cameraへ変更します。

  

現れるRender Cameraの「+」をクリックすると下右側画面のようにSelect Cameraダイアログが現れるので、SceneタブのMain Cameraをダブルクリックします。

  

すると下左側画面のようにテキストがMain Cameraの位置に表示させるので、下右側画面のようにテキスト文字列を変更します。

  

TitleSceneシーンを保存後、GameSceneシーンに移動して、同じような操作でTextを設定します。

GameSceneシーンを保存後、TitleSceneシーンへ移動し、UI→Buttonを選択します。

UI Buttonは先に設定したTextのCanvasに追加される為、画面の中央に表示されるので、下画面のように移動しサイズを拡大、プロパティの文字を変更します。

   

ここまでが、UI関連のコンポーネントの配置方法です。UIの設定では、Canvasの標準設定が、スクリーン全体となってしまっている為、必ずスクリーンのカメラに設定する必要があります。

Godotと比較するとUnityの方が、意外と面倒ですね。d( ̄  ̄;)

Godot Engineでゲームプログラミング入門6 基本編シーンの遷移

2018年3月23日

Godotで製作したプロジェクトのシーン遷移について、備忘録も兼ねて、個人的に理解できた範囲で、説明したいと思います。d( ̄  ̄)

入門5からの続きとなります。

TitleSceneシーンの画面右上側のArea2Dノードを選択してScene下「+」をクリックし、Attach Scriptを選択します。

表示された読み込みスクリプトのPathへTitleScene.gdとして入力、新規作成します。

   

スクリプトを作成後、Buttonノードを選択し、画面右側下インスペクタ横Nodeをクリックし、Node項目の「preessed()」をダブルクリックします。

TitleSceneのスクリプトに「_on_StartButton_preesed()」関数が追加されるので、そこへGameSceneシーンを呼び出すコード「get_tree().change_scene(“res://Scenes/GameScene.tscn”)」を追加します。

入力が終了した2つのシーン画面

   

実行画面(StartボタンをクリックしてGameSceneへ遷移する事を確認)

   

Unityでのスクリーン画面をメインカメラに設定するとか、CocosCreatorのクリック設定の数値設定するとかの別操作などが無いので、GodotのUI Button設定の方が、個人的には、楽な感じがしますね。d( ̄  ̄)

シーン遷移関連のGodotドキュメントURL(英語)

Godot Engineでゲームプログラミング入門5 基本編ゲームスタートシーン設定

2018年3月23日

Godotで製作したプロジェクトのゲームスタートメインシーンについて、備忘録も兼ねて、個人的に理解できた範囲で、説明したいと思います。d( ̄  ̄)

新規に2Dのプロジェクトを作成してあり、画像などのアセットは、既にドラッグアンドドロップ操作でインストールしてあるものとして説明します。

Godot画面の上側「+」をクリックする事で新しいシーンを追加します。

二つのシーンにGodot画面右側上のScene下の「+」をクリックして「Area2D」ノードをそれぞれ追加します。

   

Area2Dノードを付けたら名前を付けて二つのシーンを一時保存します。 

   

「TitleScene」シーンへスプライトをドラッグアンドドロップ操作で貼り付けた後、Godot画面右側上のScene下の「+」をクリックして「Button」ノードを追加してButtonサイズを拡大します。

   

ボタンとスプライト画像を貼り付けた画面

二つのシーンを保存後、メニューの「Project Settings」をクリック

Project Settingsの「Run」→「Main Scene」項目のフォルダアイコンをクリックして表示されるシーン一覧画面で「TitleScene.tscn」ファイルを選択します。

以上の操作までが、シーン2つを作成、スクリプト、ボタンを配置して、メインシーンにTitleSceneを指定したところまでです。

正直、個人的には、UnityやCocosCreatorより分かり易くて簡単でした。d( ̄ v  ̄)

Godot Engineでゲームプログラミング入門4 基本編エクスポート設定

2018年3月17日

Godotで製作したゲームを各OS(iOS, Android, HTML5, Mac, Windowsなど)でコンパイルし実行ファイル形式にするプロジェクトファイルへのエクスポートについて、備忘録も兼ねて、個人的に理解できた範囲で、説明したいと思います。d( ̄  ̄)

エクスポートする前に各OSのテンプレートプロジェクトファイルをインポートする必要があります。「Editor」メニューの「Manage Export Templates」から読み込み設定します。

読み込み設定した画面

   

エクスポートする前にDebugの設定をするかしないかを「Debug」メニューで設定する事もできます。(実機やシュミレータ等でのデバッグをする場合)

「Project」メニューの「エクスポート」を選択します。

エクスポート中央の「追加」項目をクリックすると追加できる各OSが表示されます。

各OSを選択、設定した画面

   

主だった各OS(iOS, Android, MacOSX, Windows UWP, Windows Desktop, Linux)とHTML5が追加できるのが良いですね。d(^◇^)

 

Godot 3.0 対応の広告AdMobモジュールのご紹介

2018年3月16日

Godot 3.0対応のMITライセンスの広告AdMobモジュールをGitHubで見つけましたので、ご紹介します。d( ̄  ̄) 十数時間前のアップデートの様です。

Godot 3.0対応 AdMobモジュールGitHub URL

解凍したフォルダ画面

これで、やる気が出ますね。d( ̄ v  ̄)

Godot Engineでゲームプログラミング入門3 基本編シーンとノード

2018年3月11日

Godotで最も重要な概念のシーンとノードについて、備忘録も兼ねて、個人的に理解できた範囲で、説明したいと思います。d( ̄  ̄)

ノードの概念

ノードは、ゲームを作成するための基本的な「積み木の1ブロック」の様なものです。 ノードは、様々な特殊な機能を実行することができるのですが、任意のノードには常に次の属性があります。

1) それは名前を持っています。
2) 編集可能なプロパティがあります。
3) すべてのフレームを処理するコールバックを受け取ることができます。
4) より多くの機能を持つ為に拡張することができます。
5) 子ノードとして他のノードを持つことができます。

5番目は、木が逆さになった、ツリー構造と言う事ですね。d( ̄  ̄)ここまでが、ノードの概念です。

シーンへ追加したルートノードとしたPanelノードに子ノードとして、LabelとButtonノードを追加している例です。(ルートノードは、日本語で木の根元、ノードは、木の節点の事です。風邪引いた時によく言いますよね「体の節々が痛い」なんて ^^;)

シーンの概念

シーンは、階層的に(ツリー形式で)編成されたノードのグループで構成されます。 さらに、シーンは、常にルートノードが1つしかありません。tscn拡張子のファイルとして、ディスクに保存して戻すことができます。木は1 本だけで、林や森ではないと言う事ですね。d( ̄  ̄)

シーンは、インスタンス化することができます。

インスタンス化とは、ノードを持つシーンを基にした実際の値としてのデータを生成することです。Unityのプレハブと同じで、C#のクラスのインスタンスと同じですね。d( ̄ v  ̄)

ゲームを実行するとは、メインシーンを実行することを意味し、 プロジェクトには複数のシーンが含まれることがありますが、ゲームを開始するには、その1つをメインシーンとして選択する必要があります。

メインシーン設定画面

基本的に、Godotはシーンエディタで、 2Dや3Dシーン、ユーザーインターフェイスを編集するためのツールが豊富に用意されていますが、エディタはシーンを編集する概念とそれを構成するノードに基づいています。

2Dシーン編集画面

wxWidgets 3.0.4安定板がリリースされました。

2018年3月10日

C++フレームワークwxWidgets3.0.4安定板が、リリースされました。( ^ o ^ )

次期安定板の3.2の開発が、進んでないみたいだなぁと思っていたところなので、嬉しいですね。これで、macOSでも最新のC++コンパイラに対応したwxWidgetsが使用できます。ソースコードの後方互換性もしっかりと守られているのが、Qtより良い点です。

対応したコンパイラ:

新しいコンパイラ(MinGW 4.9.5と7, MinGW-TDM 4.9.2, 5.2.0 又は7.2.0)、SDK(MacOS 10.10以降-10.13まで),Microsoft Visual Studio C ++(2008以降-2017まで)

以下は、ダウンロードしたファイルを解凍したフォルダwxWidgets3.0.4に移動後のmacOS SDK 10.13でのビルド操作です。

$ mkdir build_macos
$ cd build_macos
$ ../configure --with-osx_cocoa --with-macosx-version-min=10.9 --with-macosx-sdk=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk --prefix="$(pwd)" --disable-shared --enable-unicode
.
.
.
$ make

–with-osx_cocoa –with-macosx-version-min=10.9は、MacOSXの最小バージョン指定です。
上記の設定では、SDKをXcode9.2標準の10.13を指定して、最小サポートされている10.9を指定しています。

Xcode9.2でのconfigure成功画面と3Dサンプル実行画面

   

Godot Engineでゲームプログラミング入門2 基本編 イベント処理

2018年3月6日

Godotもメンテナンスバージョンv3.0.2となり多少安定?してきた様なので、徐々にチュートリアルを開始しています。今回は、備忘録も兼ねて、基本的イベント処理のGDScriptのコード入力をご紹介します。d( ̄  ̄)…Mono C#版は、まだ安定性がなんか怪しい( ̄  ̄;)

早速、テストプロジェクト作成から

2D編集画面に切り替えます。

画面右上側のノードツリープロパティの「+」をクリックし、コントロールのPanelノードを選択します。

   

追加したPanelノードを選択し、右クリックで、子ノード追加を選びLabelノードを選択します。

      

同じ様な操作で、PanelノードにButtonノードも追加します。

Panelノードのサイズを拡大し、Panelノードへ追加したLabelとButtonノードもサイズを拡大します。

   

次にPanelノードへGDスクリプトを新規作成のAttach(付ける)をします。(okgd.gdとしました。)

Panelノードを選択し、右クリックで、Attach Scriptを選択するとスクリプトの新規作成画面が出るので、組み込みスクリプトのPath欄へファイル名を入力し、作成ボタンをクリックします。

   

Buttonノードを選択し、画面下側のインスペクター横ノードを選択、pressed()をダブルクリックします。( Visual BasicやDelphiに似た感じのビジュアル感ですね(^ ^ )

   

ダブルクリックすると、上右側画面のコード入力画面が出ますが、そのままConnectボタンをクリックすると下画面の様にスクリプトにButtonをクリックした時のイベントコードfunc _on_Button_pressed()関数が追加されます。

okgd.gdスクリプトへ処理を追加した全コード

extends Panel

# class member variables go here, for example:
# var a = 2
# var b = "textvar"

func _ready():
	# Called every time the node is added to the scene.
	# Buttonノードを取得し、関数on_Button_pressedへ接続する。
	get_node("Button").connect("pressed",self,"_on_Button_pressed")

#func _process(delta):
#	# Called every frame. Delta is time since last frame.
#	# Update game logic here.
#	pass


func _on_Button_pressed():
	get_node("Label").text = "Hoge Hoge ------!"
	 # ボタンを押したらLabelノードのtextへHoge Hogeと表示。

シーンファイルを保存後、実行ボタンを押します。

実行画面(左側:ボタンを押す前、右側:ボタンを押した後)

   

Pythonと同じ様なので、何とかGDScript理解してきました。d(^◇^)