スマホ向けにDxLibのコードがそのまま動く! Cocos2dxで動かせるDxLib、「CCDxLib72」を公開します!

2017/10/25追記

DXライブラリ置き場 Androidアプリ開発の注意点など
公式でAndroid版が出たようなので、そちらを使用すべきです。
僕が作った以下で紹介するライブラリはもうメンテナンスされておらず、
今後もするかどうかも未定である点からも公式のものを使うべきです。
しかしながら、cocos2dxでラップした以下の版を使いたい方も
いるやもしれませんのでこの記事はこのまま残しておきます。


これは何?

Cocos2dxの機能でDxLibの関数群(現在72個)をラップしたものです。

何が出来るの?

DxLibは通常Windowsでしかビルド出来ません。
しかしこれを使えば、同じC++で書かれているcocos2dxを利用して、
DxLibのコードを殆どそのままでスマホ向け等にゲームをビルド出来ます!
使用許諾などはいらないので、好きに使ってください。

開発環境の整え方

リポジトリ https://github.com/Muratam/CCDxLib72 のReadMeに記入していますが、
例えばAndroidに向けてビルドする手順の概略としては、

  • python,cocos2dxをインストールして、cocos2dxのプロジェクトを新規作成する。
  • CCDxLib72 をダウンロードして Classesに入れて、同梱のButtonExample.pngをResourcesに入れる。
  • 書いたDxLibのコードをClassesフォルダに入れて、ゲームで読み込むファイルをResourcesフォルダに入れる。
  • 同梱のReadMe.mdを見ながらコードをマルチプラットフォーム用に書き直す。(例えばファイル入出力やユーザーの入力操作)
  • cocos2dxへの移行のヒントはReadMe.md にも書いてあります。
  • cocos compile -p androidAndroid向けにビルドで完成!

紹介スライド

www.slideshare.net

Cocos2dxでにゃんにゃんする

初めに

DxLib http://homepage2.nifty.com/natupaji/DxLib/ の関数をcocosでエミュレートできるようにラッパー関数を作っています。
昔はDxLibでゲームを作っていたので、そのコードをそのまま改変することなくAndroid,Macintosh,ios,linux,...にもビルド出来るようになれたらと思い、作成しています。
一度JavaAndroid用にDxLibを作っていたのですが、C++ ->Java で結構リファクタリングする必要があるのであまり需要もないし面倒だったので、今回C++であるcoco2dxsにしようとした次第です。github.com
今、半分くらいの関数をcocos2dxでエミュレート出来ているので、もう少しで公開出来そうです。
その過程でつまづいたところを先にメモしておきます。

cocosのバージョン

cocos2dxのversionは3.8です(cocos2d.cppより)
cocos --version は2.0だった

開発環境

windows10 + Visual Studio 2013 Professional です。
基本的には、VisualStudioでWin32用でテストしていって、Android実機で試すということをしていってます。

開発環境導入

pythonがいりますね、僕はPietとRubyは入れていたのですが…
cocos2dxもcocosも落としてsetup.pyしてwin32のslnをVisualStudioで開いて10分くらいかけてコンパイルしたらまずHelloWorldのゲームシーンが出来ますね。
VisualStudioだとスクリプト文字コードの警告が多いので、BOMとかUnicodeとか頑張ってください。あくまでもWarningなので問題はないですし。
一度ビルドしてしまえば以降は楽になります。

Androidビルド

EclipseやAndroidStudioなくても、SDK Ant NDK があればいいですよね。
画像などのファイルは最上階層のResourcesにいれておけば勝手にコンパイルするときにAndroidの方いじらなくてもassetsに入れてくれます(解像度とか気にしなければ)。
書いたコードを他のプラットフォームでもコンパイルできるようにするためには、最上階層のClassesの中にコードをいれておきましょう。
proj.android/jni/Android.mk を書き換えましょう。
     ../../Classes/HelloWorldScene.cpp \
のところを整合性を揃えてないとエラーになります。
VisualStudioでてきとーに作っていて BYTE とか TRUE std::_pi とか使っていても、そういうのがないってこのAndroidビルドの時に怒られて気づけます。

cocos

Windows版のpreloadBackgroundMusic()の中何もないのおもしろすぎでしょ。
あとAutoBatchingがあるからBatchNodeが非推奨になっているのとか。

僕の考えた最強のvimperatorrc

右手だけでの直感的ブラウジングに焦点をあてたやつ

p:タブ開く

l:お気に入りバーを開く

s:検索ボックスに標準を移す

Delete:タブを消す

Alt+⇆:戻る・進む

Ctrl+⇆:タブ切り替え

t:タブを選んで開く

u:タブを開きなおす

U : タブを選んで開きなおす

f:例のアレ

vimらしさ:無し

 

gist.github.com

東京旅行に行ってきました

はじめに

両方の一大イベント(コミケYAPC)に行ってきました!
親切な人が東京には多くて、とても楽しかったです。
が、なかなか毎日歩いて歩いて疲れました…
別にこれはつらつらとその10日間の記録を書いただけなので、気楽にどうぞ!

8/12

居場所を求めて誰もいない夜の部室で待機(朝早く起きれそうになかったので)

8/13

しんばしまで18きっぷでいきました!
まずは、そのまま初めてのカプセルホテルへ…
しかたないですよね、コミケが気になって夜寝れなくても…

8/14

たくさんの人がいるコミケへ行きました!
!!!こんなに人で混んでいるんだ!!!やばい!!!
そんなに本気ではなかったのでゆっくり物見遊山しました。
のんびり評論ブースとか見ていました。
話は変わりますが、企業のKMCを見つけたりもしました。

 

8/15

しばらくきゅうけい~ということで、この日は東京観光しました。
あきはばらを巡ったり、初の猫カフェに行ったりしました!
いがいと猫ってかわいいですね~追いかけまわしたら逃げられました…
のんびりその後はアキバのゲーセンを見たりしました。

8/16

場面は変わってコミケ3日目&自作ゲームフェス授賞式の日です!!
かなり朝早くから出発しましたが、すでに始発は満席…やばい。
ラッシュでアイマス島を見ました、朝いちばんはさすがに歩くスペースはありました。
逃げるようにゲーム島を漁ってから…授賞式へ!
ゲーム島でKMCも出店しました!!!買ってくれた方はありがとうございました!
たくさんの自作ゲーム受賞者とそのまま立食して二次会に行きました!
くたくたになっていたので僕はそこで半分寝てしまったのを後悔しています…
っと…ゲーム作りをしている人はみんな楽しそうで良かったです!

8/17

てか、YAPCまで暇だ!ということで、KMCのメンバーと築地へ行きました!
僕は海鮮丼が大好きなので、築地市場の魚を食べれてとてもよかったです!
はち公(@渋谷)を見つけたり、東京を色々巡りました。
東京の会社の社内見学を先輩と一緒にしたりもしました。

8/18

京大マイコンクラブの部員のお使いをしに下北沢へ行きました!
へぇ~!あそこってカジュアル女性服がいっぱい売ってるんですね~!
行くついで、銅鑼パーソンのライバル「スリスリくんさん」に会ってきました!

 

8/19

くたくただったので、のんびり過ごしていました~

8/20

この日は、YAPCの前夜祭ですね!少しだけお手伝いもしてきました。
とちゅうでイヤホン買いに行きました。
にひひ…やっぱ専門店は違いますね!
しかも、安いですしね。
まずはYAPCは前夜祭ということで、uzullaさんから始まりました!
しかも内容はPHP...Perlの話そういえばYAPC通してあまり聞かなかった…
たくさん人がいて盛り上がっていて楽しかったです!

8/21

YAPC1日目!
休憩時間でせっかくなのでPerlの本を買ったりしました。
発表を聞いていると、僕のレベルでは「へぇ~こんなことが出来るなんてすごいなあ…」
って感じだったのですが、
やってみたいと思えることがどんどん増えていって良い刺激となりました。
やっぱり家でじっとしていたり、
京都にいているだけでは得られないことってたくさんあるんだなあと思いました。
KMCからは、(多分唯一の)学生トーカーとしてhnagaminが難解画像プログラミング言語Pietの話をしました。
Perl,PHP,Pythonと来たらPietしかないですもんね!
そしてLT。銅鑼パーソンとして銅鑼を叩かさせてもらいました!
途中で黒塗りの高級車で拉致した忍者スリスリくんさんと一緒に叩きました!
2000人もいる会場で銅鑼を叩くなんて緊張するかも…と最初は思っていましたが、
むしろLTの内容がおもしろくってそんな緊張は吹き飛んでしまいました!
思ったのは、LTをする人たちは、本当にLTが上手いということです。
4分~4分30秒で終わる人が多く、勢いにまかせてLTをしているように見えてきちんと計算してやっているんだなあと思いました。
この短い時間でも、きちんと自己紹介もして伝えたいことも全部伝えているというのはやはり流石だと思いました。
実際この日は2人しか5分を越えなかったですし。
間の準備の時間は猫トーストラボさんのトークがありました。
猫トーストラボさんの退場の時に銅鑼を叩いてもいいかなあと思ったんですが、
やはり銅鑼はLTの締めとして使うのがいいということと、
東京の笑い的には猫トーストラボさんの退場は流れる感じで退場する方がよいとのこと。
なるほどなるほど。
笑いの絶えない猫トーストラボさん恐るべし。
個人的には「Perl同人活動報告2015」がツボでした。
所変わって、立食の時間。LarryWallにサインをもらいました!
Web系エンジニアは勢いだけで生きているように感じるくらい勢いがあって楽しかった!

8/22

YAPC2日目!
この日も銅鑼パーソンをさせてもらいました!
この日のLTは、電話や実際に無線を組み立てるのやモールス信号みたいに、懐古的なものが多くておもしろかったです。
特に実際にCONBUの人達が組み立てるLTは、間近で設営の様子を見れて良かったです
はっとしている間に設営完了!これをLTでやるセンスは流石です。
いきなりこちらに来て設営を始めたので思わず銅鑼を叩きそうになりました
ステージ全体を使うLT、音楽を鳴らすLT、どのLTも5分以内でしかも観客の心をつかんでいて奥深いと思いました。
ということで、二日間の銅鑼を担当させてもらいました。
こんな貴重な体験をさせてもらったのも何かの縁ということで、感謝感謝です!

8/23

青春18きっぷで帰宅しました。

おわりに

エンジニア人生最高!

サクラエディタでSchemeする

私はサクラエディタだ!

サクラエディタSchemeを編集して色がついたり、かっこの開始と終わりが分かったりするようにした!

gyazo.com

www.dropbox.com

設定→タイプ別設定からインポートしてください

UnityのUGuiでTabキーでフォーカスを移せるようにするコード

UnityのUGuiなんですが、あれ、タブキーでフォーカスを移したり出来ないんですよね。

で、調べていたら、

forum.unity3d.com

とかってあったんですが、微妙だったんです。

UIの切り替えはシーン遷移をまたがない時、SetActive(false)などで行うことが多いものですが、それにも対応していないし、そもそも上のコードだと座標が下のUIを探してフォーカスを移すしかないっていう微妙なやつだったので、自分で良い感じにフォーカスを移せるスクリプトを書きました。

 

UnityのUGUIのフォーカスをタブキーで変えられるようにするやつ

 

VisualStudio2015RCに追加された機能のnull条件演算子を使えば、もっと簡潔に書けるのですが、まだ更新していない人も多かろう(自分もまだです)ので、null条件演算子は使用しておりません。みなさま安心してください。

 

 

そういえば、YAPCという東京で開かれるPerlの祭典でタイムキーパーとして銅鑼を鳴らす役職である銅鑼パーソンに立候補しました。

doraperson2015.yapcasia.org

組織票で 順位がどんどん上がってみなさまの応援のおかげで銅鑼を本当に叩けるかもしれない順位になったので、お暇でしたら銅鑼を連打して楽しんでいってくださいな。