Marmalade SDKでHelloWorld

Marmalade SDKとは?

Marmalade SDKマルチプラットフォーム対応のゲームエンジンです。

Marmalade(SDK)

3分間でHelloWorld

ダウンロードやライセンスの取得の時間はかかりますが、それが完了した前提でHelloWolrdをiOS Deviceで実行する方法を説明します。

ドキュメント「Creating an Application」をベースに進めています。

プロジェクトディレクトリの作成

お好みの場所にプロジェクトディレクトリ(HelloWorld)を作成します。
% mkdir HelloWorld

付随するディレクトリを作成します。
% mkdir HelloWorld/data
% mkdir HelloWorld/source

MKBファイルの作成

HelloWorld/HelloWorld.mkb

files
{
    (source)
    HelloWorld.cpp
}

subprojects
{
    iwgx
}

ICFファイルの作成

HelloWorld/data/app.icf

[S3E]
SplashscreenBkR=255
SplashscreenBkG=255
SplashscreenBkB=255

MemSize = 1000000

#### ソースファイルの作成
HelloWorld/source/HelloWorld.cpp

// Include header files for S3E (core system) and IwGx (rendering) modules                                                                                     
#include "s3e.h"
#include "IwGx.h"

// Standard C-style entry point. This can take args if required.                                                                                               
int main()
{
    // Initialise the IwGx drawing module                                                                                                                      
    IwGxInit();

    // Set the background colour to (opaque) blue                                                                                                              
    IwGxSetColClear(0, 0, 0xff, 0xff);

    // Loop forever, until the user or the OS performs some action to quit the app                                                                             
    while(!s3eDeviceCheckQuitRequest()
          && !(s3eKeyboardGetState(s3eKeyEsc) & S3E_KEY_STATE_DOWN)
          && !(s3eKeyboardGetState(s3eKeyAbsBSK) & S3E_KEY_STATE_DOWN)
        )
        {
            // Clear the surface                                                                                                                               
            IwGxClear();

            // Use the built-in font to display a string at coordinate (120, 150)                                                                              
            IwGxPrintString(120, 150, "Hello, World!");

            // Standard EGL-style flush of drawing to the surface                                                                                              
            IwGxFlush();

            // Standard EGL-style flipping of double-buffers                                                                                                   
            IwGxSwapBuffers();

            // Sleep for 0ms to allow the OS to process events etc.                                                                                            
            s3eDeviceYield(0);
        }

    // Shut down the IwGx drawing module                                                                                                                       
    IwGxTerminate();

    // Return                                                                                                                                                  
    return 0;
}

ビルド

HelloWorldディレクトリでmkbコマンドを実行します。
% mkb

xcodeが立ち上がり、HelloWorldプロジェクトのビルド準備ができています。

ターゲットの確認

SchemaでDebug GCC ARMを選択していることを確認します。
f:id:ytakeuch:20131019182844p:plain

Build & Run

Build & Runを押すとHelloWorldがMarmalade Simulatorで実行されます。
f:id:ytakeuch:20131019183118p:plain

iOS Deviceで実行

/Developer/Marmalade/6.4/Applications/ にあるDeploy Toolを実行します。
f:id:ytakeuch:20131019183338p:plain

HelloWorld/build_helloworld_xcode/deploy_config.py を選択します。
f:id:ytakeuch:20131019183513p:plain

Select Build:でARM GCC Debugを選択してNextボタンを押します。
f:id:ytakeuch:20131019184343p:plain

そのままNextボタンを押します。
f:id:ytakeuch:20131019184431p:plain

Select Platform:でiOS(iPhone, iPad, iPod)を選択してNextボタンを押します。
f:id:ytakeuch:20131019184558p:plain

そのままNextボタンを押します。
f:id:ytakeuch:20131019184651p:plain

そのままNextボタンを押します。
f:id:ytakeuch:20131019184721p:plain

Deploy Allボタンを押します。
f:id:ytakeuch:20131019184754p:plain

完了のメッセージが出ます。この時点でiTunesにHelloWorldアプリが入っているので、iOS Deviceと同期を取ります。
f:id:ytakeuch:20131019184915p:plain

iOS Deviceでの画面は次のようになっています。
f:id:ytakeuch:20131019185005p:plain

HelloWorldアイコンを押すと...
f:id:ytakeuch:20131019185123p:plain
debug画面が出て...

f:id:ytakeuch:20131019185021p:plain
Splash Screenが出て...
f:id:ytakeuch:20131019185137p:plain
HelloWorldアプリが実行されます。

最後に

Marmalade SDKの日本語ドキュメントが見当たらなかったので、駆け足ですがブログを書いてみました。

もっと深掘りしていきたいです。12月にMarmalade SDKアドベントカレンダーをやってみようかなと考えています。

25日分書ける自信がイマイチありませんが^_^;)



KiCadに移行します

きっかけ

いままで基板設計にはEagle Light Edition(商用ライセンス版)を使っていました。 最近になって、4層基板 and/or 大型基板を設計したくなってきたのですが、さすがにStandard Editionを購入するのは躊躇してしまいます。

...というわけでGPLKiCadに移行します。

ビルド

とりあえずWindows版をビルドしました。KiCad Windows Builderというビルドツールがあるので、こちらを使ってビルドしました。ビルドしたバイナリの実行画面は次の通りです。

使用感

スミマセン。まだ使い方が全然ワカリマセン orz...

konashiを使ってみました

ユカイ工学株式会社のkonashi(旧称:monaka)を使ってみました。

http://konashi.ux-xu.com/

ミツミ電機BluetoothモジュールWML-C69を使用したフィジカル・コンピューティング・ツールキットです。

http://www.ceatec.com/2012/ja/news/webmagazine_detail.html?mag_vol=100&mag_type=Web_C_00

f:id:ytakeuch:20130221093807j:plain

初めてYouTubeにアップロードしてみました。

http://www.youtube.com/watch?v=3UJIPOLparA

次はAndroidへの移植にしようか、Kivyへの移植にしようか、迷っています。

Kivy Advent Calendar 10日目 Kivy 1.5.0がリリースされました

Kivyの新バージョン1.5.0がリリースされました。

https://groups.google.com/forum/#!topic/kivy-users/vQLGJfuFOCY/discussion

http://kivy.org/#download

  1. 複数解像度の対応が改善されました
  2. "screen"モジュールで異なるデバイスのエミュレーションができるようになりました
  3. 新規のListViewウィジェットが導入されました

http://kivy.org/docs/api-kivy.uix.listview.html

  1. 新規のCodeInputウィジェットでpygmentsを介した構文に対応した着色をサポートしました
  2. iOSのブランチをマスターブランチに統合しました。
  3. PPA for UbuntuとMeegoのためのCOBSパッケージが利用可能になりました

Kivy Advent Calendar 7日目 Kivyで日本語を表示する

  • 最初に

下記のようにコードを変更します。

# -*- coding: utf-8 -*-                                                                                                    

from kivy.app import App
from kivy.uix.button import Button

class HelloApp(App):
    def build(self):
        return Button(text = u'こんにちはKivy')

HelloApp().run()

実行すると以下のような残念な結果になります。

f:id:ytakeuch:20121207002422p:plain

  • システムフォントを使う

OS Xのフォントを使うためにはフォントのパスを指定します。

# -*- coding: utf-8 -*-                                                                                                    

from kivy.app import App
from kivy.uix.button import Button

class HelloApp(App):
    def build(self):
    return Button(text = u'こんにちはKivy', font_name = '/Library/Fonts/Osaka.ttf')

HelloApp().run()

f:id:ytakeuch:20121207003224p:plain

システムフォントを使う場合、デバイス毎に異なるフォントを指定しなければなりません。共通のフォントを使う方法を次に示します。

fonts/ 以下にIPAフォントを置きます。

下記のようにフォントの相対パスを指定します。

# -*- coding: utf-8 -*-                                                                                                    

from kivy.app import App
from kivy.uix.button import Button

class HelloApp(App):
    def build(self):
    return Button(text = u'こんにちはKivy', font_name = 'fonts/ipaexg.ttf')

HelloApp().run()

実行結果は次のようになります。

OS X

f:id:ytakeuch:20121207003648p:plain

iOS

f:id:ytakeuch:20121207003706p:plain

Kivy Advent Calendar 6日目 iOSデバイスでKivyアプリケーションを実行する

  • 開発環境の構築

開発環境を下記のURLを参考にして作成します。

http://kivy.org/docs/guide/packaging-ios.html

Homebrewを使う手順が記載されていますが、MacPortsでも環境構築可能です。 私の11/30のブログを参照してください。

$ tools/create-xcode-project.sh hello ~/proj/hello

sedのエラーが出力されますが問題ありません。

app-hello というディレクトリにプロジェクトが作成されます。

  • プロジェクトのビルドと実行 Xcodeのプロジェクトを開きます。
$ open app-hello/hello.xcodeproj

適切なターゲットを選択します。

f:id:ytakeuch:20121206145503p:plain

Runボタンをおしてビルドします。

f:id:ytakeuch:20121206145548p:plain

helloというアプリケーションがインストールされました。

実行すると下記の画面になります。

f:id:ytakeuch:20121206145637p:plain

Kivy Advent Calendar 5日目 AndroidでKivyアプリケーションを実行する

下記のURLからapkファイルをダウンロードする。

http://kivy.googlecode.com/files/KivyLauncher-1.4.1.0.apk

インストールします。

$ adb install KivyLauncher-1.4.1.0.apk

main.pyとandroid.txtというファイルを用意します。

main.py

# -*- coding: utf-8 -*-

from kivy.app import App
from kivy.uix.button import Button

class HelloApp(App):
    def build(self):
        return Button(text = 'Hello World')

HelloApp().run()

android.txt

title=HelloWorld
author=ytakeuch
orientation=portrait
以下はホストのshellです。
$ adb shell

以下はandroidデバイスのshellです。
$ cd /sdcard
$ mkdir kivy
$ mkdir kivy/hello
$ exit

以下はホストのshellです。
$ adb push main.py /sdcard/kivy/hello
$ adb push android.txt /sdcard/kivy/hello

Android端末上でKivy Launcherを起動します。

f:id:ytakeuch:20121206095658p:plain

f:id:ytakeuch:20121206095726p:plain

f:id:ytakeuch:20121206095740p:plain

f:id:ytakeuch:20121206095754p:plain

ref. http://kivy.org/docs/guide/packaging-android.html#packaging-your-application-for-kivy-launcher