再び、祭りが始まるようですね。
今週のお題「転がる」 | Unity 1週間ゲームジャム #unity1week https://t.co/2uhr9rdqDr
— naichi@びはんとマルの森 (@naichilab) 2017年5月21日
ちゃんとお題でた!よかった!寝る!
1週間でテーマにあったゲームを作ろうという企画、1週間ゲームジャムが再び開催されました。
今回のテーマは「転がる」だそうですよ。
1週間ゲームジャムは知名度がすごい広がりを見せていますから、今回は前回以上に参加者が多くなりそうですねー。
前回「1番手を抜いたで賞(自己申告制)」を受賞した身である私としては、さらなるゲームを作って参加したいものです。
ただ、ゲーム内容云々の前にいろいろと入れたい機能があるんですよ。
今回はTweet機能とランキング機能を手っ取り早く追加するお話です。
この記事にはUnity5.6.1f1を使用しています。
Twwet機能をつけたい!
前回のゲームジャムの作品を見ていて、他の皆さんがTwitterのTweet機能をゲーム中に使えるようにしていた作品が多かったですよ。
これは今回の私の作品でも是非ともつけておきたい機能の一つです。
ただ、やり方がさっぱりわからないや。
うーん、とりあえずググってみましょうか。
あったー。
主催者側から用意されてたー。
な、なるほど、テンプレートがあったわけですな。
どうりで参加作品に当たり前のようにTweet機能があるわけだよ。
てっきり、「Tweet機能すら組み込めぬ愚かな開発者に、1週間ゲームジャムに参加する資格はないのだよ!」という裏ルールでもあるのかと思った。
よし、これでTweet機能の件はOKです。
ランキング機能をつけたい!
そして、もう一つつけたい機能があります。
それはランキング機能です。
ランキング機能があればもっと楽しめるんじゃないかなー、と思っているのですが、実際にランキング機能を作ろうと思うと大変です。
サーバー用意したりといろんなものが必要になってきます。
とてもゲームジャムで組み込むようなものではないのですが、ただ当てがあります。
ニフティクラウドmobile backend、通称mBaaS。
http://mb.cloud.nifty.com/about.htm
勉強会などで聞いて、一度使ってみたいと思っていたんですよ。
一定の条件下ならば無料で使えるはずなので、むしろ今回のようなゲームジャムにはうってつけかもしれません。
さっそくSDKを組み込んで使ってみましょう。
えーと、NCMBSettings
を追加して、
スコア設定用UIを作成して、
そしてスクリプトを作れば、
using UnityEngine; using UnityEngine.UI; using System.Collections.Generic; public class TestController : MonoBehaviour { [SerializeField] private InputField m_userUI = null; [SerializeField] private InputField m_scoreUI = null; [SerializeField] private Text m_leaderBoardTextUI = null; public void Submit() { var ncmbObj = new NCMB.NCMBObject( "Score" ); ncmbObj[ "name" ] = m_userUI.text; ncmbObj[ "score" ] = int.Parse( m_scoreUI.text ); ncmbObj.SaveAsync( ( NCMB.NCMBException i_exception ) => { if( i_exception == null ) { Debug.LogFormat( "Successful submit.", gameObject ); } else { Debug.LogWarningFormat( "Failed submit! error={0}", i_exception, gameObject ); } } ); } public void Fetch() { var query = new NCMB.NCMBQuery<NCMB.NCMBObject>( "Score" ); query.OrderByDescending( "score" ); query.FindAsync( ( List<NCMB.NCMBObject> ncmbObjList, NCMB.NCMBException i_exception ) => { if( i_exception == null ) { Debug.LogFormat( "Successful fetch.", gameObject ); string leaderBoardStr = string.Empty; foreach( var ncmbObj in ncmbObjList ) { string name = System.Convert.ToString( ncmbObj[ "name" ] ); int score = System.Convert.ToInt32( ncmbObj[ "score" ] ); leaderBoardStr += string.Format( "Name:{0} Score:{1}{2}", name, score, System.Environment.NewLine ); } m_leaderBoardTextUI.text = leaderBoardStr; } else { Debug.LogWarningFormat( "Failed fetch! error={0}", i_exception, gameObject ); } } ); } } // class TestController
出来たー。簡単!
あれっ、OpenGLで動かない!?
2017/05/23 追記
記事を書いた後、こんなコメントが。
【Unity】1週間ゲームジャム「転がる」祭り再び - うら干物書き https://t.co/h0ZoeXIh6s@urahimono_maigo NCMBってWebGL非対応じゃなーい?
— naichi@びはんとマルの森 (@naichilab) 2017年5月22日
はっはっは、何を一体……。
動かない……。
マジかよ。
くっ、何ということだ。
誰か先に言ってくれればよかったのに……。
tweetの https://t.co/ZnHOHzjat0 と同じように、簡単にランキング実装できる仕組みを作りたいんだけどNCMBはWebGL対応してないのよなぁ。気合でREST叩けばいけるのかしら?
— naichi@びはんとマルの森 (@naichilab) 2017年5月1日
unityroomのDBでそこまでサポートするのはだるいしなぁ。
主催者側がすでにつぶやいてたー。
……うう、ちゃんと聞いてればよかった。
そして
とりあえずランキングはおいといて、ゲームを作ろう。
前回のゲームジャムへの提出が締め切りの五分前だったからなぁ……。