スマホ向けに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 android でAndroid向けにビルドで完成!
cocos2dxのui::Button で一つの画像で半透明とかするコード
cocos2dxのui::Button は割と便利なんですが、作成時の引数には(スプライトではなくて)画像の名前で指定します。
押していないときは半透明、押しているときはそのまま描画、みたいにするコードです。
Cocos2dxでにゃんにゃんする
初めに
DxLib http://homepage2.nifty.com/natupaji/DxLib/ の関数をcocosでエミュレートできるようにラッパー関数を作っています。
昔はDxLibでゲームを作っていたので、そのコードをそのまま改変することなくAndroid,Macintosh,ios,linux,...にもビルド出来るようになれたらと思い、作成しています。
一度JavaでAndroid用に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
東京旅行に行ってきました
はじめに
両方の一大イベント(コミケとYAPC)に行ってきました!
親切な人が東京には多くて、とても楽しかったです。
が、なかなか毎日歩いて歩いて疲れました…
別にこれはつらつらとその10日間の記録を書いただけなので、気楽にどうぞ!
8/12
居場所を求めて誰もいない夜の部室で待機(朝早く起きれそうになかったので)
さらば関西かな
— む (@paradigm_9) 2015, 8月 11
部室一人でいたら12時になった瞬間いきなりニコニコ動画の時報が誰もいない部屋から聞こえてきてSCPかと思った…
— む (@paradigm_9) 2015, 8月 12
そういえば茨木でカラオケしてたら自転車撤去されてしまったのでそのまま東京に来てたとかいうあれがあったりする
どうしよ
— む (@paradigm_9) 2015, 8月 13
8/13
しんばしまで18きっぷでいきました!
まずは、そのまま初めてのカプセルホテルへ…
しかたないですよね、コミケが気になって夜寝れなくても…
起きてしまったのでがっこうくらし見てる
— む (@paradigm_9) 2015, 8月 13
8/14
たくさんの人がいるコミケへ行きました!
!!!こんなに人で混んでいるんだ!!!やばい!!!
そんなに本気ではなかったのでゆっくり物見遊山しました。
のんびり評論ブースとか見ていました。
話は変わりますが、企業のKMCを見つけたりもしました。
企業KMC見つけた pic.twitter.com/gBEPR4lLn4
— む (@paradigm_9) 2015, 8月 13
じ、JRも・・ww pic.twitter.com/6W0uF4AqJN
— せとたか@交通・スポーツ系は新アカにて (@setotaka5746) 2015, 8月 13
今日の戦利品です!
(ちなみにいちばん凝ってるなあと思ったのはこのthe math m@ster、最後の一個やった…) pic.twitter.com/InQySHbhtW
— む (@paradigm_9) 2015, 8月 14
ソフマップの液タブ、書こうとしたらサイン入りでうまい絵が描いてあった。
サイン入りってことは有名な人なのかな…? pic.twitter.com/DsA3dJ59As
— む (@paradigm_9) 2015, 8月 15
8/15
しばらくきゅうけい~ということで、この日は東京観光しました。
あきはばらを巡ったり、初の猫カフェに行ったりしました!
いがいと猫ってかわいいですね~追いかけまわしたら逃げられました…
のんびりその後はアキバのゲーセンを見たりしました。
入ってる pic.twitter.com/8DYkJ0osxZ
— む (@paradigm_9) 2015, 8月 15
噂の秋葉原のアロエ台発見! pic.twitter.com/O7kqi9VxSt
— む (@paradigm_9) 2015, 8月 15
このゲーセンのアケマスやたらとあずさを押していてウケる pic.twitter.com/aZmrtZQgHJ
— む (@paradigm_9) 2015, 8月 15
8/16
場面は変わってコミケ3日目&自作ゲームフェス授賞式の日です!!
かなり朝早くから出発しましたが、すでに始発は満席…やばい。
ラッシュでアイマス島を見ました、朝いちばんはさすがに歩くスペースはありました。
逃げるようにゲーム島を漁ってから…授賞式へ!
ゲーム島でKMCも出店しました!!!買ってくれた方はありがとうございました!
たくさんの自作ゲーム受賞者とそのまま立食して二次会に行きました!
くたくたになっていたので僕はそこで半分寝てしまったのを後悔しています…
っと…ゲーム作りをしている人はみんな楽しそうで良かったです!
私も制作に関与し、「自作ゲームフェス5」で賞をいただいた作品「数%マーケット」、講評を読むにゲームとしての完成度を評価していただいたようである。やはり私は思う以上に素晴らしい環境に身を置いているのだなあ、と切に思う。
— 六角定規 (@escape_yagi) 2015, 8月 15
@nico_indiesgame 「数%マーケット」を制作した京大マイコンクラブです。ゲームの体をなさない放送をさせてしまい申し訳ありません。
「数%マーケット」にはフルスクリーンで遊ぶと文が全て表示されないバグがありました。
通常の画面サイズで遊んでもらうよう、ご周知願います。
— 京大マイコンクラブ(KMC) (@KMC_JP) 2015, 8月 15
新橋の早朝は凄い
コミケの人とそれを狙った風俗勧誘しかいねえ
— む (@paradigm_9) 2015, 8月 15
コミケ上級者は心強い
— む (@paradigm_9) 2015, 8月 15
設営ほぼ完了!!! 東Q15aでお待ちしとります!!!!! pic.twitter.com/uYINeUCblq
— 京大マイコンクラブ(KMC) (@KMC_JP) 2015, 8月 16
ゲームについて話すのが楽しそうなひとばかりでよかった
— む (@paradigm_9) 2015, 8月 16
僕も昔考えていたゲームを実際にイケイケなかんじで作ってた人もいて、応援したくなった
— む (@paradigm_9) 2015, 8月 16
三日目はゲームをたくさんゲットした pic.twitter.com/iWQf7vKEoj
— む (@paradigm_9) 2015, 8月 16
楓さんが30P分くらいひたすらだじゃれしか言わない同人誌とかないんですか、あったら買うのに
— む (@paradigm_9) 2015, 8月 18
そういえば昨日買い足した秋枝さんの楓さん本を読んでmurataくんが偉く感動していたのでどんどん良作同人布教したい
— 最後猫の人 (@lastcat_) 2015, 8月 21
8/17
てか、YAPCまで暇だ!ということで、KMCのメンバーと築地へ行きました!
僕は海鮮丼が大好きなので、築地市場の魚を食べれてとてもよかったです!
はち公(@渋谷)を見つけたり、東京を色々巡りました。
東京の会社の社内見学を先輩と一緒にしたりもしました。
おいしくたべました pic.twitter.com/4jnjzFhVD5
— む (@paradigm_9) 2015, 8月 17
渋谷のハチ公!! pic.twitter.com/Xj0k3oFsYH
— む (@paradigm_9) 2015, 8月 17
8/18
京大マイコンクラブの部員のお使いをしに下北沢へ行きました!
へぇ~!あそこってカジュアル女性服がいっぱい売ってるんですね~!
行くついで、銅鑼パーソンのライバル「スリスリくんさん」に会ってきました!
銅鑼のライバルが来るぞ~~って言ってたら「まず横腹を殴れ」「上下関係をはっきりさせましょう」というアドバイスをいただいたノス
— 忍者スリスリ☆ヤング@SUZURI (@suzurijp) 2015, 8月 18
スリスリくんさんから、いーっぱいステッカーもらいました!!
毛むくじゃらで190cmで四本足でめちゃめちゃガクブルでしたが、とても優しそうなニンジャさんでした!!! pic.twitter.com/rVYwGa8RhE
— む (@paradigm_9) 2015, 8月 18
下北沢へれっつごー!
— む (@paradigm_9) 2015, 8月 18
僕は今、下北沢に来てるですよー
コミケの申請用紙2つ以外に買ってきてほしいひと他にはいませんよねー
— む (@paradigm_9) 2015, 8月 18
次郎系のスパゲッティ!? pic.twitter.com/VqHj0I37Yv
— む (@paradigm_9) 2015, 8月 18
@paradigm_9 次来るときはOSSカフェオススメ
— 最後猫の人 (@lastcat_) 2015, 8月 18
8/19
くたくただったので、のんびり過ごしていました~
8/20
この日は、YAPCの前夜祭ですね!少しだけお手伝いもしてきました。
とちゅうでイヤホン買いに行きました。
にひひ…やっぱ専門店は違いますね!
しかも、安いですしね。
まずはYAPCは前夜祭ということで、uzullaさんから始まりました!
しかも内容はPHP...Perlの話そういえばYAPC通してあまり聞かなかった…
たくさん人がいて盛り上がっていて楽しかったです!
イヤホンの専門店でイヤホン買った
— む (@paradigm_9) 2015, 8月 20
今回ビラを1600枚印刷したのですが、これだけのアカウント申請用紙は初めて見たので、これが部室にあったら何十年も保つよなあと思いました。(普段は学内でビラを撒くけど、アカウント申請用紙は入部時にしか渡さないので #yapcasia https://t.co/F6bcZF9p5R
— 京大マイコンクラブ(KMC) (@KMC_JP) 2015, 8月 20
今日からの #yapcasia のノベルティトートに入ってるKMCのビラの裏側のアカウント申請用紙は記入していただいて部員に2000円持って遭遇してもらうとその場で入部可能となっていますので是非このチャンスに入部しちゃってください!! 部員を捜したい場合はmentionください!
— 京大マイコンクラブ(KMC) (@KMC_JP) 2015, 8月 20
#yapcasia のトートバッグにKMCの入会用紙が入ってた pic.twitter.com/bZewenro3l
— かとりょーくコ:彡 katryo0 (@katryo) 2015, 8月 20
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系エンジニアは勢いだけで生きているように感じるくらい勢いがあって楽しかった!
#yapcasia 昼休みにPerlの同人誌でもいかがでしょうか pic.twitter.com/jkiDJasfCD
— 雅なラクダ@3日目東O43a (@kaz_hiramatsu) 2015, 8月 21
15時30分からトラックCで部員の @hnagamin の「PietでLISP処理系を書くのは難しい」があります。Yet Another Piet Conferenceということでいっちょよろしくお願いします #yapcasia http://t.co/G9gWatRH9B
— 京大マイコンクラブ(KMC) (@KMC_JP) 2015, 8月 21
ただいまPidetの作者にオープンソースにするように圧力をかけています #yapcasia #yapcasiaC
— 京大マイコンクラブ(KMC) (@KMC_JP) 2015, 8月 21
AltPASことpasxxです。 https://t.co/DBzGIOdKD0 #Piet #yapcasia #yapcasiaC
— 喋るシャベル (@_primenumber) 2015, 8月 21
さきほどの @hnagamin のトーク中に紹介されていた Pidet ですが、ビルド済みのバイナリを公開しました。 https://t.co/kHm0Rt7BMa から Pidet*.zip を解答するとバイナリが含まれています #yapcaisa #yapcasiaC
— 京大マイコンクラブ(KMC) (@KMC_JP) 2015, 8月 21
先程のPidetのリポジトリはこちらに移行しました。
https://t.co/jWaM7f2leq
今度はソースコードも公開しています。
バイナリはこちらです。
https://t.co/ZmhPrRvPHy
#yapcasia #yapcasiaC
— 京大マイコンクラブ(KMC) (@KMC_JP) 2015, 8月 21
ちなみに今日のラストのLTではKMCの会長 @paradigm_9 が銅鑼パーソンをやります!!!!!皆さん温かい声援をよろしくお願いします!!!!!!! #yapcasia https://t.co/fWEGSHwVcD
— 京大マイコンクラブ(KMC) (@KMC_JP) 2015, 8月 21
突然黒塗りの車にぶつかられて拉致られた。
— 忍者スリスリ☆ヤング@SUZURI (@suzurijp) 2015, 8月 21
LTの銅鑼パーソンです!銅鑼叩きます!
肩に乗ったスリスリくんさん共によろしくお願いいたします!
#yapcasia @suzurijp pic.twitter.com/1HGi7nmbrR
— む (@paradigm_9) 2015, 8月 21
本当のことをいうと、スリスリくんさんはさっき車で拉致してきました。
友情と上下関係は大事ですからね!
ふふふ……
#yapcasia @suzurijp pic.twitter.com/ZaeHjZpTPW
— む (@paradigm_9) 2015, 8月 21
これはジョークでサインしてもらいましたが、やばすぎる!!!!!! #yapcasia pic.twitter.com/VSm5gApC4M
— 京大マイコンクラブ(KMC) (@KMC_JP) 2015, 8月 21
https://t.co/hZy7vsx3Es の 最新状況です #yapcasia pic.twitter.com/7kGhzq4v7D
— 京大マイコンクラブ(KMC) (@KMC_JP) 2015, 8月 21
今年のYAPC銅鑼パーソンを務めたKMCのむらたくんさん、初めて長時間見ていたけど本当に落ち着きがなくて銅鑼パーソンには適任だった
— ☀サマー☀ (@i315) 2015, 8月 21
8/22
YAPC2日目!
この日も銅鑼パーソンをさせてもらいました!
この日のLTは、電話や実際に無線を組み立てるのやモールス信号みたいに、懐古的なものが多くておもしろかったです。
特に実際にCONBUの人達が組み立てるLTは、間近で設営の様子を見れて良かったです
はっとしている間に設営完了!これをLTでやるセンスは流石です。
いきなりこちらに来て設営を始めたので思わず銅鑼を叩きそうになりました
ステージ全体を使うLT、音楽を鳴らすLT、どのLTも5分以内でしかも観客の心をつかんでいて奥深いと思いました。
ということで、二日間の銅鑼を担当させてもらいました。
こんな貴重な体験をさせてもらったのも何かの縁ということで、感謝感謝です!
隙を見てスリスリくんさんに逃げられた!
銅鑼パーソン楽しかった!
#yapcasia .@suzurijp pic.twitter.com/TCemxS0unA
— む (@paradigm_9) 2015, 8月 22
8/23
青春18きっぷで帰宅しました。
京都
— む (@paradigm_9) 2015, 8月 23
おわりに
エンジニア人生最高!
サクラエディタでSchemeする
UnityのUGuiでTabキーでフォーカスを移せるようにするコード
UnityのUGuiなんですが、あれ、タブキーでフォーカスを移したり出来ないんですよね。
で、調べていたら、
とかってあったんですが、微妙だったんです。
UIの切り替えはシーン遷移をまたがない時、SetActive(false)などで行うことが多いものですが、それにも対応していないし、そもそも上のコードだと座標が下のUIを探してフォーカスを移すしかないっていう微妙なやつだったので、自分で良い感じにフォーカスを移せるスクリプトを書きました。
UnityのUGUIのフォーカスをタブキーで変えられるようにするやつ
VisualStudio2015RCに追加された機能のnull条件演算子を使えば、もっと簡潔に書けるのですが、まだ更新していない人も多かろう(自分もまだです)ので、null条件演算子は使用しておりません。みなさま安心してください。
そういえば、YAPCという東京で開かれるPerlの祭典でタイムキーパーとして銅鑼を鳴らす役職である銅鑼パーソンに立候補しました。
組織票で 順位がどんどん上がってみなさまの応援のおかげで銅鑼を本当に叩けるかもしれない順位になったので、お暇でしたら銅鑼を連打して楽しんでいってくださいな。