C#での暗号化

Unityを仕事で触って暗号化周りに着手しそうなのでC#での暗号化を試してみた。

試した方式はAESキーサイズ128bitでECBモードとCBCモード

cocos2d-xで暗号化周りを入れてた時は自分でブロックサイズが足りない時に追加のコードとか書いてけどC#ならその辺考えないでいいようにクラスがあったのでとても楽に実装できたーーー (∩´∀`)∩ワーイ

 

AES暗号化はもう少し整理して使うとして次はMD5とかのハッシュ値の出し方も調べよう

(今日の投稿の際に始めてgist使ったけどこれ便利だな)

MonoBehaviourのUpdateメソッド

MonoBehaviourクラスのオーバーライドメソッドの中にUpdate関連のメソッドが複数ありそれぞれの違いを調べてのでまとめておく。

MonoBehaviourクラスに用意されているUpdate関数は下の3つがある。

Update

毎フレーム呼び出されるメソッド

LateUpdate

Updateメソッド同様に毎フレーム呼び出されるメソッド

Updateメソッドよりも後に実行されるためカメラの追従のように特定の処理の後に実行して欲しい場合に使うとよいかも。

FixedUpdate

一定間隔で呼び出されるメソッド

Updateメソッドは処理の重さによってコールされる間隔が変化するため物理演算などの正確な値を取得したい場合に利用する。

 

以上!!(内容はほぼリファレンスのコピーやん)

それぞれのUpdateメソッドは通常のコールタイミングが違う以外の差としてTime.timeScaleを0にして時間経過を停止してやった場合FixedUpdateが呼ばれなくなったがUpdateとLateUpdateメソッドは呼ばれた。

Unityでdot by dotの表示をする方法

Unityで2D機能がサポートされたのでいろいろと触ってみたけど

2Dスプライトをdot by dotで表示をする場合適切に設定をしてやらないとダメなので備忘録として書き記す。

まずゲームの2D描画用のカメラの設定を「Projection」から「Orthographic」に変更。

変更するとカメラのinspectorに「Size」という設定項目が表示される。

Cubeなどのプリミティブ型をScaleで設定した値そのままのピクセル数で画面上に表示をしたい場合は

「画面の高さ ÷ 2」で算出された値をサイズに設定してやればよい。

void Awake () 
{
    camera.orthographicSize = Screen.height / 2;
}

スクリプトでやる場合Awakeで「画面の高さ ÷ 2」の値をsizeに設定してやればOK。

※このスクリプトの役割がこれだけなので削除してやったほうがいいかもしれないが。。。。

プリミティブ型を「1スケール値=1ピクセル」で表示する場合はこれでよいのだが2DSpriteの場合は 「Pixels To Units」という

指定ピクセル数を1Unityメートルで扱うようにする設定項目があるのでこいつを弄ってやる必要がある。

f:id:YuukTsuchida:20140216180047p:plain

カメラのサイズを「画面の高さ ÷ 2」にした場合は「1スケール値=1ピクセル」として扱うようになるので

Spriteの「Pixels To Units」設定を同様に扱うように「1」の値を当てはめてやればいい。

例
iPhone4サイズでやる場合 縦960なので
カメラサイズ:480
Pixels To Units:1

この設定の場合は1スケール値とピクセル数をイコールにする場合の設定なのでNGUIなどと一緒に利用する場合

UI部分とゲーム画面でScene上の見え方が違ってしまう。

同一にしたい場合はSizeを1に設定してやる必要があるので「Pixels To Units」をカメラサイズ1に対しての値に設定をしてやる必要がある

480:1 = 1:x
x=480

となるので「Pixels To Units」を480に設定してやればdot by dotで表示することができる。

Clojureの環境構築

何を思ったのか突然Clojureをやろうと思って環境の構築だけしたので忘れないために残しておく。

 

Clojureのインストールに関して調べてみるとLeiningen(ライニンゲンと読むらしい)を利用してやるほうがおすすめらしい。

自分はmacを使用しているのでhomebrewを利用してとりあえずインストール

brew install leiningen

インストールが完了したら準備完了

ターミナルでプロジェクトを生成したいディレクトリまで移動して

lein new プロジェクト名

↑のコマンドの処理が完了するとプロジェクト名に指定した名前と同名のフォルダが出来ているのでその下の階層に移動してfindコマンドを利用して直下のファイルを見てみる。

% find .
.
./.DS_Store
./.gitignore
./doc
./doc/intro.md
./LICENSE
./project.clj
./README.md
./resources
./src
./src/.DS_Store
./src/my_stuff
./src/my_stuff/core.clj
./test
./test/my_stuff
./test/my_stuff/core_test.clj

こんな感じにファイルが出来てれば問題なし

問題なければrepleを起動

% lein repl

nREPL server started on port 60715 on host 127.0.0.1
REPL-y 0.3.0
Clojure 1.5.1
    Docs: (doc function-name-here)
          (find-doc "part-of-name-here")
  Source: (source function-name-here)
 Javadoc: (javadoc java-object-or-class-here)
    Exit: Control+D or (exit) or (quit)
 Results: Stored in vars *1, *2, *3, an exception in *e
 user=>

「user=>」の表示が確認できたらClojureのコードを実際打ってみて動けばOK

IDEで進める場合Eclipseプラグインを入れればプロジェクト作成やコード補完もしてくれるらしい

eclipseにインストールする場合
http://updatesite.counterclockwise.googlecode.com/hg/
ここからインストール

ただ、ADTを利用してインストール使用したら失敗して普通のeclipseだと成功した。原因はわからんがADT側でなんかあるのかもしれん

pythonでのオプションパース

仕事の関係で簡単なツールをpythonで作ったりします。

オプション周りが面倒だと思い、今まで固定順番での指定をしていたのですが、オプションの簡単な対応方法を見つけました。

getoptモジュールを利用する

pythonのモジュールでgetoptというものがありこれがうまい具合にオプションの解析をしてくれる。

import sys
import getopt

if __name__ == '__main__':
    if len( sys.argv ) == 1:
        sys.exit()

    try:
        argv = sys.argv[1:]
        shortName = "v:h:d:" # -ショート名の指定 -v など[オプション名:]で1セット
        longName = ["version", "help", "directory="]  # オプション名の後ろに=を付けることで値を受け取れる
        opts, args = getopt.getopt( argv, shortName, longName )   
    except getopt.GetoptError:
        print( "エラー" )
        sys.exit()

    print( opts ) # オプション内容
    print( args ) # オプションとして指定されていない引数


    for o, a in opts:
        if o in ("-h", "--help" ):
            print( "ヘルプ" )

        if o in ( "-v", "--version" ):
            print( "バージョン番号" )

        if o in ("-d", "--directory" ):
            print( "-d param" + a )

こうすればオプションの判定などいろいろと一気に楽になりました。

C言語とかにもあるらしいが全然知らなかったです。。。

ただ、作るツールがデータ読み込んでファイル吐き出すだけとかそんな簡単なものなので使うかどうかがわからないという

勉強会に行ってきました。

前々から興味のあったcocos2d-xの勉強会に行ってきました。

 

メリット・デメリットの部分に関しては想像していた様な内容で自分の考えは間違ってはいないだなと少しホッとした。

けど話し聞いてて思ったのはどっかの記事でゲームエンジンと紹介されていたけどスライドには「2Dフレームワーク」との記載。

自分としてもエンジンとは捉えていないで2Dライブラリ的なものだと思っていたからいいんだけど、そうするとエンジンって紹介されてたのはなんなんだろうかと少し疑問に思ってしまった。

 

最近になって勉強会とか行くようになったんですけどやはり経験者の話ってためになるなあと実感。

中の人だけが知ってる情報とかたくさん聞けるので自分の知らない情報がたくさん入ってきて将来的にきっと役にたってくれるはず。。。

話し聞いてても面白そうだったで早速明日あるcocos2d-xの初心者向けのハンズオンに予約をしてみた。

明日も更新できるといいな。

(懇親会も少し参加してみたけど人見知りする俺にはきつい場所だった。

もっと気軽に構えていい場所だと思うけど自分から動けないこのチキンorz)

ブログ開設

祝・初記事

 

といっても特別書く内容はなかったりする。。。。

ブログ開設したのをきっかけに自分の勉強内容とかとまとめるようにしよう!!

(三日坊主にならないように気をつけないと)