Korge ForgeでAndroidアプリの開発
Kotlinというプログミング言語を使用して、Androidアプリが作れます。
しかし、知らない言語というのはプログラミングの初心者、玄人ともに、初めてなわけで。。。
とっかかりが難しい、というのが通常ですが、Kotolinはちがうのです!そしてKorgeForgeを使えばさらに違いが判る!!
イントロダクション
KotlinというのはJetBrainという会社が作成した プログラミング言語です。
Java言語とも連携が可能です。シンプルにKotlinからJavaのクラスを呼び出すこともできます。
なぜKORGE FORGE?
単純にシンプル(簡単)でゲームを作成するのに便利かつ強力だからお勧めします。
そして、プログラミング初心者でもわかりやすいようにチュートリアルなどもあります。
ただし、英語なんですね。。。
この記事の内容
ズバリ、上記のチュートリアルの内容を筆者が一生懸命理解した内容を記述します。内容としては以下の通りです。
しかし、Kotlinの基本がわからないので、躓いております、
そのため、こちらの記事でKotlinの基本を学習中です。
KORGE FORGEについて
KORGE FORGEはIDE(開発ツール)です。位置付けはゲームエンジンですが。。。以前はプラグインになっていましたが、たぶんライブラリなどがアップグレードされるたびに、ドキュメントのメンテナンスなどがてまになり。。。KORGE FORGEになったと筆者が思っています。
つまりは、簡単にプログラムを書いて動かせるということです。
TUTORIAL1: インストール
KORGE FORGEのインストール方法について学習している動画でした。
内容に関しては、以下の通りです。
- KORGE FORGEのサイトからコマンドでインストールできる
- インストールしたら、インストール画面から依存関係の追加もできる
とりあえずKORGE FORGEをインストールするところまででした。
以前のものでは、IntelliJを使用使用していましたが、依存関係の修正などが手間になったと思われます※筆者が勝手にそう思いました。
そんなわけで、筆者もやってみました。
インストール(Windows)
サンプルアプリ起動(#2に当たる?)
よくある話ですが、プログラムを起動する前に依存関係を追加したり色々やったりしていることが多いですが、今回は何もありませんでした。
つまりは、インストール後にすぐ動かした状態です。
初めのコード
TUTORIAL1のコードは下のようになっています。クラス名が「シーン」となっているのでコメントにはシーンと記述していますが、筆者もこれから学習していきます。
とりあえずは、メインメソッドは「fun main()」で記述するという所を学習しました。
import korlibs.time.*
import korlibs.korge.*
import korlibs.korge.scene.*
import korlibs.korge.tween.*
import korlibs.korge.view.*
import korlibs.image.color.*
import korlibs.image.format.*
import korlibs.io.file.std.*
import korlibs.math.geom.*
import korlibs.math.interpolation.*
/** メインメソッド */
suspend fun main() = Korge(windowSize = Size(512, 512), backgroundColor = Colors["#2b2b2b"]) {
val sceneContainer = sceneContainer()
sceneContainer.changeTo { MyScene() }
}
/** シーンを描画するクラス */
class MyScene : Scene() {
override suspend fun SContainer.sceneMain() {
val minDegrees = (-16).degrees
val maxDegrees = (+16).degrees
val image = image(resourcesVfs["korge.png"].readBitmap()) {
rotation = maxDegrees
anchor(.5, .5)
scale(0.8)
position(256, 256)
}
while (true) {
image.tween(image::rotation[minDegrees], time = 1.seconds, easing = Easing.EASE_IN_OUT)
image.tween(image::rotation[maxDegrees], time = 1.seconds, easing = Easing.EASE_IN_OUT)
}
}
}
メインメソッドの処理内容
メインメソッドのコードは下の部分です。
/** メインメソッド */
suspend fun main() = Korge(windowSize = Size(512, 512), backgroundColor = Colors["#2b2b2b"]) {
// メインメソッドの処理
}
この中に処理を書きます。
具体的には、以下のようになります。
- main()のなかに「Korge()のウィンドウサイズ512x512で、背景色を「カラーコードの『#2b2b2b』」で表示。
- その中に「メインメソッドの処理」を書く
メインメソッドの処理内容としては。下の2行のみ
- シーンコンテナ=描画するシーンを入れるオブジェクト=コンテナ(Container)
- このコンテナを「MyScene」というクラス(のインスタンス)に変更
val sceneContainer = sceneContainer()
sceneContainer.changeTo { MyScene() }
※コンテナ(MyScene())の内容は割愛します。
そして、動くのは下のようなものです。
TUTORIAL2:図形を描画しよう
図形の描画について
今度は、もともとあったコードを書き換えて下の参考動画のコードを書いて動かしてみようと思います。
参考にするページはこちらです。
参考にする動画は下のものです。
ファイルの内容を変更しようとすると下のようなダイアログが出ますが「OK」して大丈夫です、ファイルの権限を変更して変更可能にする処理を行います。
補足
参考にする動画、ページが実際に使えるもの(書いているコードが動くもの)とそうでないのもがあり、ページが別になってしまうことがあります。
参考ページなどは、リンクを貼っていますので、こちらを参照ください。
Viewなどのクラスに関しては、Viewsのページにありました。
円を描画する
上記の動画で最初に描画する円を描画しました。
作成したプログラムは下のようなコードです。
import korlibs.time.*
import korlibs.korge.*
import korlibs.korge.scene.*
import korlibs.korge.tween.*
import korlibs.korge.view.*
import korlibs.image.color.*
import korlibs.image.format.*
import korlibs.io.file.std.*
import korlibs.math.geom.*
import korlibs.math.interpolation.*
import java.awt.Color
suspend fun main() = Korge(windowSize = Size(512, 512), backgroundColor = Colors["#2b2b2b"]) {
val circle : ShapeView = circle(20.0, Colors.GOLD).xy(200, 200)
}
これは、単純に円【半径(20.0)、色(金)、位置(座標(200, 200))】を定義してやればプログラムで描画してくれる
高レベルAPIならではのコードです。
このxとかscaleXなどのプロパティは、図形が持っている値のことです。
このページで見ることが出来ます。
円を動かす
上記のコードに下のようなコードを追記してやります。
circle.addUpdater {
x++
scaleX += 0.05
scaleY += 0.05
}
これは「circle」に更新処理を追加するという意味合いがあり、下の動画のように動きます。
図形と画像
参考動画はこちらです。
使用しているクラスが微妙に違うのが難点です。ここら辺の代替えクラスを探す必要があります。。。
ライブラリの登録など。。。
今までやってきたのは「korlibs.*」のライブラリを使用したもので、設定が参照しているサイトと違うことに気が付きました。。。
つまり、プロジェクトを作成するときに下のように指定のプロジェクトを開いてやる必要がありました。
細かいところは全て、裏側でやってくれるのが高レベルAPIです。手順が違うとドハマりするんですね。。。