さ〜て、再始動。。。
言いたいこと
かなり長期に空いてしまいましたが、またブログ再開します。
何すんの?
とりあえず勉強の成果を少しでも書いていこうかと。
はかどっていないけど、勉強してない訳じゃなくてブログに書いてないのが大きい。
Fuse26に行ってきました
背景
地元でITの情報を捕まえるのが大変だなぁと思っていて、 これとか
これとか
にお邪魔してきて、さらにそこで話が出ていたので連鎖的に参加しました。
目的
さて、一応目的を整理しておきます。
- IT方面のネットワークを広げたい
- 久々に制作活動的なことをしたい
- IGDAの地元での活動を知りたい
- GameJAMとかに参加するきっかけになれば
- 地元で技術研究会的な活動をしたい
- 何か技術的に習得できれば良いな
やったこと
大体こんな感じ。
- 制作的なこと
- 本サイトへの操作方法などの書き込み
- プレゼン資料の作成
- 必要なリソースの分析と準備依頼、日程管理
- SEやBGMの準備
- フリーサイトから落としてきて少し加工しただけです
コードを書いてないじゃないかって?
すいません、今回はそっち方面をやりたい人がいたようなのでやめました。
個人的な成果
ショートゲームの作る順番の目安
次のような手順で作ると、それっぽいものを落ち着いて作れそうでした。
- メインのゲーム画面を表示する(最初は背景だけで良い)
- タイトル画面を作る
- ゲームオーバー、ゲームクリア画面を作る
- 上の3つの画面を繋げる
- 後の手順はご自由に
皆、本命部分を作るのに一生懸命になってしまい、ガワの部分が無くてそれっぽくならなさそうでした。
個人的には見栄えがかなり変わるので、重要な要素だと思っています。
素材量の計算の仕方
誰かに聞いた訳ではないけれど、以下のような考えを持つと必要な素材の数が大体分かりそうと思いました。
- BGM素材 = 画面のカット分
- SE素材 = 出現するオブジェクト数 x 2 (出現、消滅) x アクション数
- 絵素材
- タイトル、ゲームクリア、ゲームオーバー
- 出現するオブジェクト数 x モーション数 x ステップ数
- 背景(カット数分)
その場で即興で準備する場合、1個あたりの準備時間は、慣れていても大体10〜30分程度っぽいです。
「すぐに用意できるから」と言っても、5分を切ることは無さそうな感触。
全体の作成時間が実質4,5時間程度なので、どんなに頑張っても1人あたり30個程度が限度な気がする。
これはフリー素材などを落として来ても変わらなさそうです。
経験豊富な人が弾を持っていれば別ですがそれは例外でしょう。
それっぽく見せる要素で忘れがちなもの
- タイトル自体
- タイトル画面
- ゲームオーバー画面
- 背景
- BGM
感想
とりあえず楽しめました。
最後になって、プログラマさんに「そういえば音出したことありません」と言われて少々焦りましたが、まあそれも経験と言えば経験でしょう。
ソフト製作の速度自体は、講師の方も大差ない気がしました。(生意気かもしれないけど)
あとはやっぱり経験値による引出しの多さが必要です。
スマホを扱い慣れていればすぐ作れるし、3Dの描画や操作や見せ方に慣れてればそっちにすると早いし。
成果物1
結果の制作物はここに転がってるはずです。
シューティングゲームのひな形的なものを作りました。
特有の難しさなどはあまり無いでしょうか?
とりあえず何かを飛ばす系をやりたかったようなので、その辺はチームメンバーに任せました。
FUSE - ゲーム開発 / ハッカソン / GameJam | jam:fuse_26:team_a:index
成果物2
その1週間前くらいに予習で作ったシューティングです。
こちらも何の変哲もないシューティングです。
マップチップで動かすところまで作れたのが良かったか。
Pythonのコードを高速化(はじめてのNumba)
大昔の記事を書き足してなんとかしたいなぁと思いつつ、いつまでも更新出来ずにいました。
少し諦めてもう少し最近のことを書くことにしました。
背景
最近仕事でPythonのコードでツールを作って間に合わせることが増えたけれど、
実行時間が遅くてコマリンスなことになることもあったので、高速化のアプローチをしてみましたとさ。
最近はこんな本を読んでます。
- 作者: Kurt W. Smith,中田秀基(監訳),長尾高弘
- 出版社/メーカー: オライリージャパン
- 発売日: 2015/06/19
- メディア: 大型本
- この商品を含むブログ (2件) を見る
英語kindle版がとてもとても安かったので買ってしまいました。
で、Pythonでは下のように色々な高速化手法が色々あるけど、さてどんな感じかなと。
- Numpy
- MultiProcessing
- Cython
- C拡張
- Numba
- ???
紹介した本と関係なしに、今回は聞いたこともなかったNumba様を使ってみます。
やってみよう!
本サイトはこちら。 解説本とかは探したけど見つかりませんでした。
時間測定方法
ipython
でsample.py
に対して実行するときは大体こんな感じ。
> %timeit -n 5 %run sample
普通に書く
何もしない時
def fibo(n): if n < 2: return n return fibo(n-1) + fibo(n-2) if __name__=="__main__": fibo(38)
In [83]: %timeit -n 1 %run sample 1 loops, best of 3: 15.7 s per loop
メモ化的なやつ
def fibo(n): a,b = 0,1 for x in range(n): a,b = b,a+b return a
In [86]: %timeit -n 5 %run sample 5 loops, best of 3: 745 µs per loop
nを増やす
if __name__=="__main__": n = 10**6 fibo2(n)
In [92]: %timeit -n 1 %run sample 1 loops, best of 3: 11 s per loop
Numba1
単にjitを使ってみる
@jit def numfibo(n): a,b = 0,1 for x in range(n): a,b = b,a+b return a
In [98]: %timeit -n 5 %run sample 5 loops, best of 3: 42.6 ms per loop
もっと増やす
if __name__=="__main__": n = 10**10 numfibo(n)
In [116]: %timeit -n 1 %run sample 1 loops, best of 3: 3.32 s per loop
Numba2
型定義を入れる
@jit(int64(int64)) def numfibo2(n): a,b = 0,1 for x in range(n): a,b = b,a+b return a
In [118]: %timeit -n 1 %run sample 1 loops, best of 3: 3.23 s per loop
少し条件を変えてみる
if __name__=="__main__": n = 10**10 numfibo2(n-2) numfibo2(n-1) numfibo2(n)
Numba2
In [120]: %timeit -n 1 %run sample 1 loops, best of 3: 9.61 s per loop
ベクトル化
@vectorize([int64(int64)]) def numvfibo(n): a,b = 0,1 for x in range(n): a,b = b,a+b return a
In [122]: %timeit -n 1 %run sample 1 loops, best of 3: 9.66 s per loop
結果
単にJIT
を入れるだけでも割と高速化されそうな印象。
型定義はおまけ程度に早くなるのかな?何度やっても多少早かったので。
ベクトル化は使いどころを知らないと高速化出来なさそう。
guvectorizeもあるけど、チュートリアルを見ても使い方がぱっとは分からない割に早くなってくれなかったのでアレゲ。。。
雑記
仕事中に遊びで少し使ってみたけど、数値計算的な所以外ではjit
を入れても速くはならなかった。
というより、JIT分遅くなっている所もあるので闇雲に突っ込んでも逆効果かも。
普通のWebアプリケーションだと、計算よりも分岐とか文字列の分離結合のが多いと思うので、案外使い道が無いのではなかろうか?
PythonとSparkであそぼ(1)
背景
<< 略 >>
今をときめくインメモリ分散処理エンジンSparkを使いたいなぁと思ったりそうでもなかったりするから。
SQLチックに使えたり、機械学習エンジンあるしなんかスゲーじゃん?
参考
またどっかの本読んでます。
本家サイトでEarlyReleaseのEbookを買って読んでいたけど、今のKindle価格の方が安かったりするというちょっと残念な話。
Learning Spark: Lightning-Fast Big Data Analysis
- 作者: Holden Karau,Andy Konwinski,Patrick Wendell,Matei Zaharia
- 出版社/メーカー: O'Reilly Media
- 発売日: 2015/01/28
- メディア: Kindle版
- この商品を含むブログを見る