万年素人からHackerへの道

万年素人がHackerになれるまで殴り書きするぜ。

  • ・資産運用おすすめ
    10万円は1000円くらい利益
    資産運用ブログ アセマネ
    • ・寄付お願いします
      YENTEN:YYzNPzdsZWqr5THWAdMrKDj7GT8ietDc2W
      BitZenny:ZfpUbVya8MWQkjjGJMjA7P9pPkqaLnwPWH
      c0ban:8KG95GXdEquNpPW8xJAJf7nn5kbimQ5wj1
      Skycoin:KMqcn7x8REwwzMHPi9fV9fbNwdofYAWKRo

    Boo Unity

    Third Person ControllerをBooにしようといじったときに

    public walkMaxAnimationSpeed as float = 0.75

    BCE0018: The name 'float' does not denote a valid type ('not found'). って怒られた
    foatは書けないのか

    今後チェックしたい

    http://www.reddit.com/ (http://ja.reddit.com/r/ja 日本語)
    http://news.ycombinator.com/

    JavaScript ゲーム作成勉強会 Vol2

    ■ngCore ソーシャルゲームゲームエンジン
    HTMLも今後対応
    今は/app.apkを使った配信で
    ソーシャル用API
    マルチプラットフォーム
    バージョン管理
    ビルドサーバに対しHTTPでアクセス
    ブラウザ起動してアクセスすればできる
    デバッグがやりやすい

    ・グラフィックス
    将来3Dで
    ・ファイルの読み書き
     ファイル操作、Key/Valueストア

    コンテンツのDL
    box2d
    端末の回転、加速度

    commonjsのようにrequreがサポートされている
    →ファイル分割の整理

    クラスにサブクラスをよんで
    オブジェクト指向サポート
    オブジェクト指向に慣れて人はわかりやすい

    JSのエンジン
    gu2sprite、setImage
    シリアライズされた命令がJS内で作られる

    画面タッチ、センサー
    emitter→イベントハンドラ用の関数

    Canvasベースのゲーム出したことはあるがそれ以上早いパフォーマンスが出ている
    nodeJS

    Webだけだとnodejsとブラウザで大丈夫
    iOSシミュレータ、AndroidSDKもいることもある

    OSはMacOSXSnow Leopard LinuxWindowsの成功事例あり)

    ◯今後 まだまだ機能拡張
    パフォーマンスアップ
    HTML5への対応
    3D対応
    ngServer・・JSでゲームサーバ
    ngBuilder・・統合環境
    ngGO・・ライブラリ

    スクリーン解像度差吸収
    ピンチイン・アウトとドラッグ可能な2Dカメラ
    アセット管理・動的アセット


    ・まとめ
    アーキテクチャ
    ネイティブ+JS。エンジン
    ランタイムとセットで配布もできるラインタイムだけ配布
    ゲムを個別に配信することも可能

    v8に載せ替え
    Appleの規約に引っかからないようにUIWebViewを使っている
    AndroidiOSの見た目の差 速度が違う Androidの方がパフォーマンスがいい
    速度以外はあまり差がない
    デバッグ方法
    →リモートデバッグ ngBuilder(出たばかり)
    →ブラウザのデバッグが一番便利

    ・ngCoreを導入した理由
    比較して優れているだけでなく、ngMocoのコンテンツ力
    超大規模だと

    ・ユーザへの良さ
    趣味でも使いたいくらい。
    コンパイルしないで勝手にBuildで動くから
    Androidの機種によってははmediaサーバーが落ちたりする

    ■IMPACT入門(@Seasons)
    埼玉勉強会のスライド+最新情報 スライド
    Seasons.NETのBlog
    スクエニのタイトル3つ
    ライター兼務
    有償$99のライセンスが必要(買い切り)
    githubに最新コードのアクセスもも洗える
    2Dのゲーム開発フレームワーク
    HTTML5+JavaScriptで開発
    高度なレベルエディタ付属
    連携ツール
    「IMPACT JavaScript」で検索したらいい
    1.18aが最新

    レベルエディタ(Weltmeister
    →ブロックを塗りつぶしたところがコリジョンになる)
    GUIツールではなく、HTML5が動くブラウザでつかうツール(推奨:Crome)

    debagが最近追加した

    ・連携ツール
    Lawnchair JSONベースのドキュメントストア
    Tapjs ゲームプラットフォーム提供 自分で作った
    appMobi web上でiOSAndroidアプリ作成
    Zeewee.com crossplatform用appstore
    Playtomic 解析
    TweenJS(Unityみたいなアニメーション)、box2d、directorjs(シーン管理、cocos2dのCCSceneDirectorの人向け)

    開発に必要なもの
     PC、WindowsLinux
     XAMPP(Apache
     ブラウザ

    テキストエディタ
     textmate(有償:4500 軽いRailsの人必須みたい カスタマイズしたすい)
     →バンドルtmbundle(IMPACT関係の色付け)

    Komodo Edit
    起動が少し遅い
    保管をデフォルト完備
    カスタマイズ可能
    IMPACTが動画でも使われている
    本人はvimをよくつかう

    開発ワークフロー
    素材作成→Entityの作成→レベル作成→テストプレイ

    ・素材作成
    ドット絵を使うときは最適なフレームワーク
    EDGE(無償)でドット絵
    SimpleDotX(Lionでも動く)

    ・エンティティの作成
    ngCore記述に似ている
    先にrequireで導入
    init(メンバ変数名、パラメータ)→
    ig.Entityを継承
    必要なパラメータを実装
    名前はEntity + ファイル名
    update 初期化コード
    update 毎フレーム処理するコード
    当たり判定

    ・レベル作成
    マウスでドラッグして塗り部していく
    グラフィカルのイベント

    ・テストプレイ
    チューニング:debug用API
     ig.log 出力したいメッセージ
     ig.show パラメータ名、出力したいパラメータ
     ig.mark マーキング名
    main.js
    1.14 1.18

    配布(Publish)
     Tools back.sh
     game_min.jsに結合される(全てのソースコードを追加)

    iOS/IMPACT
    ソースコードiOSでそのまま利用()
    OpenGLで描画
    OpenALでサウンド処理
    30〜60fps
    UIKitなどの
    アーキテクチャ JavaScriptCoreの評価エンジン
    OpenGLOpenAL

    iOSIMPACT XcodeProject→.app AppStoreに配布できる

    iOS移植への注意点
    plugin読み込み
    スクロールメソッド
    ig.game.screenPos(x,y) 1.17は書き換え
    ig.game.screen(x,y)1.18はそのまま
    解像度の変更iPadiPhone
    背景描画のパフォーマンス
    マップのプリレンダリング有効
    チャンクサイズ
    サウンド
     SE:caf formatに変更
     BOM:acc fromat
    512KB以下の場合はOpenAL
    それ以上はBGMと認識 AVAudioPlayer
    SoftwareDesign
    2011年9,10月号

    スマホ向けCanvasゲームの作り方(@chikathreesix)
    北澤良
    フロントエンドエンジニア
    DeNA
    FPゲームをどんどんSP化
    海賊トレジャー
    住み着き妖精セトルリン

    スマホブラウザゲームをつくる
    CSS3を駆使する
    Canvasを駆使する

    ・メリット
     簡単
     GPUアクセラレーション
     3Dも使える

    ・デメリット
     アニメーション

    Canvasを駆使する
    ・メリット
    自由度高い
    ・デメリット
     面倒
     CSS3ほどのパフォーマンスがない

    CSS3向き
    ・シンプルなアニメーション
    ・HTMLベースで作れるもの

    Canvas向き
    ・複雑なアニメーションがある
    ・衝突判定などが必要なアクションゲーk無


    Canvasとは?
     画像描画のためのHTML

    Canvas基礎
    ・移動


    ・拡大・縮小

    ・回転
    rotateやtranslateをすると記憶されれてしまうので
    sava/restoreが必要
    他の描画に影響されないようにする

    ループを1つ作り、前回の描画をクリアした後、新しい描画をお粉

    この処理が一秒間に何度も行われるか
    FPS(Frame Per Second)

    setInterval/setTimeoutの間隔は信用出来ない

    Canvasパフォーマンス

    GalaxGS
    iPhone3 CanvasAPIを叩く
    3GSよりiPhone4の方が遅い
    実際にディスプレイに表示するのが遅い

    Canvas高速化
    →drawImageで拡大は重い

    拡大されている画像を使ったほうが軽い
    拡大時のパフォーマンス差が顕著
    →なるべく拡大はさける
    一度canvasに描画してそれをdrawImageする
    座標に小数を用いない
    Math.floar(0.01)→0.01

    マルチデバイス

    基本的な挙動は同じですが
    ◯Android2.1におけるバグ
    drawImageすると基本的に座標やサイズが
    screen.widthは320倍される??
    scaleは二回適用される
    rotateは意味不明
    →回転は諦める

    フレームベース
    setInterval/setTimeout内でプロパティを目標値に向かって

    どの環境でも同じ速度を保つには

    タイムベース
    setInterval/setTimeout内で経過時間を取得して、適切な値を設定する
    描画が間引かれる

    タイムベース
    AS3?
    表示ツリー
    イベント伝播モデル
    アニメーション
    アニメーション(単一アニメーション、キーフレーム)

    iPhone4でFPS20前後



    Animationわからない Unity

    AnimationとAnimationsの違い

    http://unity3d.com/support/documentation/Components/class-Animation.html
    Animationはデフォルトアニメーションのようだ。

    http://unity3d.com/support/documentation/Components/animeditor-AnimationEvents.html
    アニメーションビュー(Window→Animation [command+6])から、特定の秒数でキーフレームを打って、指定の関数を実行させる。

    ふっとばし Unity

    http://forum.unity3d.com/threads/32666-fly-away-in-hit-direction

    enemy.rigidbody.AddForceAtPosition(punchPosition, punchForceVector);
    

    ・Rigidbody.AddForceAtPosition
    http://unity3d.com/support/documentation/ScriptReference/Rigidbody.AddForceAtPosition.html

    AddForceもある
    http://forum.unity3d.com/threads/37314-Solved-AddForce-vs-AddForceAtPosition

    順番 Unity

    Awake()→Start()→Update()2回→OnGUI()

    function Start () {
        print("Start()");
    }
    function Update () {
        print("Update()");
    }
    function OnGUI () {
        print("OnGUI()");
    }
    function Awake () {
        print("Awake()");
    }
    

    GUIText色替えメモ Unity

    var hogeGui : GUIText;
    hogeGui.material.color = Color.black;
    

    Rigidbodyの物体を固定したい Unity

    インスペクタでgravityで0にして重力をなくしたり、Massを大きくしても、
    他の物体にぶつかるとずれるのを固定

    function Update () {
    	this.transform.rotation =  Quaternion.identity;
    	this.transform.position.y = 8;
    }
    

    今回は高さ8に固定

    当たり判定系 Unity

    // OnTrigger系
    function OnTriggerEnter(otherObject: Collider) {}
    function OnTriggerStay(otherObject: Collider) {}
    function OnTriggerExit(otherObject: Collider) {}
    
    // OnCollision系
    function OnCollisionEnter(info : Collision) {
    function OnCollisionStay(info : Collision) {}
    function OnCollisionExit(info : Collision) {}
    


    http://blog.livedoor.jp/akinow/archives/52183427.html

    このサイトを短くまとめる。

    ・人物
     Player
     Bullet
     Enemy

    ・OnTrigger〜〜
    enemyBulletScript.js をBulletに適用

    Enemy(相手)のオブジェクトColliderコンポーネントには
    ”かならずtrigger”にチェックが入っていることが条件。

    gameObjectだけ記載するとそれを適用している物体自体。

    Destroy (this. gameObject);
    ↑↓同じ
    Destroy (gameObject);
    
    otherObject.gameObject.SendMessageUpwards()
    

    これでぶつかったゲームオブジェクト(今回はEnemy)のメソッドを実行させられる

    ApplyDamageはEnemyに適用されている関数。


    Instansiateで使用する前に

    if (プレハブ名) {
    }
    

    こうするとプレハブがアサインされなかった場合にエラーにならない。
    ※ただし、nullはダメ

    OnCollision〜はOnTrigger〜と使用法は似ている。
    返ってくる?というか引数として入った値がCollisionInfoなのが異なる。

    function OnCollisionEnter(collision : Collision) { // ←このcollisionが違う。
        var contact : ContactPoint = collision.contacts[0]; // 接触したポイント座標
        // collision.contacts[0].normalで法線がとれる?