スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

メモリリークを調べる

Linux。C++環境でメモリリークを簡単に調べる方法がないだろうか?と探していたらいいものが見つかった。

というのも、Netbeansについているプロファイルがお手軽に使えればなんの問題もないのだが、インストールから始まり、いろいろやってみたのにうまく動かないのである。

こういう導入部分が割と楽なのが気にいっていたのに!今後に期待である。


今回はvalgrindというものを使うことにした。

fefora8なので

# yum install valgrind

で簡単にインストールできた。
apt-getでもできるそうだ。

使い方もいたってシンプル

#valgrind --leak-check=yes プログラム名

これでOK
リーク箇所の行番号が欲しいときは-gでコンパイルしろ!と書いてあった。

実行してみるとログがずらーっとでる。
最後の方にリークは無いぜ!みたいな記述があるか無いかでとりあえず判別できそうだ。


Boostのスマートポインタやptr_listなるものを使ってみたくて、実際にヒープを開放してくれてるのかが心配になってしまったというのが今回の記事の発端である。
当たり前だけどきっちり開放されていた。やったね。


ねよっと。
スポンサーサイト

オーケストラ

ゲーム音楽も少しづつ作成していっているのだけれど、なかなかゲームの音楽!って感じにならないで困っている。
歌ものを意識して作成してきたせいでインストが苦手気味なのかも。。

ゲーム音楽を調べてみるとやけにオケが多いことに気付いた。
あとドラムンベース。

どっちも作れるように練習しなきゃ!
ということで今日はオケの打ち込みをしてみた。

音探すの大変だだだ。
ソフトの中で選んだ音源はこんなかんじ。

高音:ヴァイオリン
中高音:ビオラ
中音:トランペット
バッキング:ヴァイオリンのモジュレーション127で出る弾く音のやつ
ベース1:コントラバスがいいのがないのでチェロで代用
ベース2:チューバかトロンボーンの低音を使う
効果音:ティンパニ、ベル、チェレスタあたりを適当に


せっかく作ったのでグリーグの曲の冒頭部分をUPしとくね。
mp3だよ

ねよっと。

パケットを痩せさせる

ひにけにXNA様のサイトにてパケットを作る際にビットフィールドを使う記事が載っていた。

さっそく導入

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace test
{
static class Bit
{
/// <summary>
/// 使い方
/// int bitfield = 0;
/// AddToBitfield( ref bitfield, 1, isAlive? 1: 0 );
/// AddToBitfield( ref bitfield, 1, isFiring? 1: 0 );
/// AddToBitfield( ref bitfield, 4, (int)species );
/// packetWriter.Write((byte)bitfield);
/// </summary>
/// <param name="bitfield">操作する変数</param>
/// <param name="bitCount">ビット数</param>
/// <param name="value">格納する値</param>
public static void AddToBitfield(ref int bitfield, int bitCount, int value)
{
bitfield <<= bitCount;//現在のビットフィールドを左シフト(「<<」演算子を使う)して、新しいフィールドを確保
bitfield |= value;//新しいビット群を設定(「|」演算子を使う)
}

/// <summary>
///使い方
/// int bitfield = PacketReader.ReadByte();
/// species = (Species)ReadFromBitfield( ref bitfield, 4 );
/// bool = ReadFromBitfield( ref bitfield, 1 ) != 0;
/// </summary>
/// <param name="bitfield">ビット単位で結合してある変数</param>
/// <param name="bitCount">何ビット取り出すか</param>
/// <returns>取り出した値</returns>
public static int ReadFromBitfield(ref int bitfield, int bitCount)
{
int value = bitfield & ((1 << bitCount) - 1);
bitfield >>= bitCount;
return value;
}
}
}


とても使いやすいしbool型を沢山送りたい場合は重宝する。
サーバー用にC++版も作っておこう。

ねよっと。

詳細な衝突判定を実装

XNAは細かいコリジョン系の実装をしてくれていない。

アルゴリズムがいろいろ考えられるのと、コストパフォーマンスと精度のどちらかをとるか?で細かい計算が変わってくるのであえて実装していないような気がする。

今日は久しぶりにバグに出会った。

・行列とクォータニオンの変換のところで順番を間違っていた
・手と足の部分を表すインデックスをメモ帳にメモしたときに逆にメモした・・


とまぁ・・・情けないものだった。

collision.jpg

aabb判定しか用意されていないのでobb判定クラスを自作してDebugDraw機能もつけた。
ボーンにきっちり追従してくれてるみたいなので問題なさそうだ。


ねよっと。

球とレイの当たり判定

サーバーで当たり判定部分を作っていた。
XNAならいろいろ最初から用意されてるのに・・・。

サーバーはC++で作っているので全部作らなきゃいけない(涙)

とりあえず大まかな判定をするときに高速な 球と光線の衝突判定サンプル がなかったのでメモ
(交点とか距離とか求めるのは結構あった)

hantei.jpg

汚い字そのまま載せちゃってすいません。面倒でした

平方根の算出ってどのくらいの処理速度なんでしょうね?・・・
わかんないので半径同士かけたものと比較させました。掛け算より速いってことは無いでしょ?!

ねよっと。
プロフィール

あしゅ

Author:あしゅ
ぷぃぷぃ日常。
いつのまにか雑記ブログに。

カテゴリ
最新記事
検索フォーム
最新コメント
リンク
このブログをリンクに追加する
ブロとも申請フォーム

この人とブロともになる

カウンター
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。