danmaq
GAMES, ILLUSTRATIONS and MUSICS
SINCE 1999.MAY

User session

ゲストさん | ログオン

Tag Search

登録タグ一覧

Contents

  • Diary
    • 技術メモ
      • C/C++
      • HTML
    • 更新情報
    • 仕事
    • 単車
    • 学校生活
    • Review
    • 鉄道
  • Profile
    • Website
      • Policy
      • History
    • Manager
      • PC
      • DTM
      • Vehicle
        • YB-1
  • Products
    • Novels
    • Illustration
    • Miscs
    • WebApps
    • Musics
      • BMS
    • Games
      • 弾幕風
      • Windows
      • BASIC(OLD)
      • Java
  • Purchase
  • Works
    • Events
  • Feedback

Page

| 1/47ページ目(全469件:10件/ページ) | 次のページへ>

[2012/1/24]魔法少女で学ぶオブジェクト指向(ソウルジェムはGoFの香り) [詳細]

「ぐへへお姉ちゃんパンツ何色」から始めるクラス解説が大変面白かったので、2か月遅れですが風邪でぶっ倒れながら二番煎じをやってみるテスト。多分本家程テンポ良い展開にはならないと思う。あと少し難易度上がります。

この世界には(きっと)魔法少女と魔女がいます。それぞれクラス化してみます。名前は Syojo と Majo で良いでしょう( MahouSyojo とか長くてダレる)。さて、魔法少女は魔女を狩るため、早速その機能をつけましょう。


class Syojo
{
public:
 virtual void hunt(Majo *m);
};

まぁ、雑ですがこんなところでしょうか。実際に魔女を狩るためには、以下のようにメソッドを呼び出せばおkです。


Syojo syojo;
Majo majo;
syojo.hunt(&majo);

ところで、魔法少女と一口に言っても色々なキャラがいて、それぞれ狩り方も異なります。これだけだと狩り方がワンパターンになってしまいます。まるで魔法少女のはずが魔獣のようです。一つの解法として、キャラクタ識別定数を持って、分岐させる手があります。


void Syojo::hunt(Majo *m)
{
 switch(this->id)
 {
  case MADOKA:
   arrow(m);
   break;
  case BLOSSOM:
   oshiri_punch(m);
   break;
  :
  :
 }
}

ただ、このやり方だと、例えば「仲間割れ」とか新しい機能を積むたびにswitch分岐を増やすのもなんかダサいですよね。そこでオブジェクト指向でクラスの次に覚えさせられるアレ、継承が出てきます。


class Sayaka : public Syojo
{
public:
 void hunt(Majo *m); // 滅多斬り
};
class Homuhomu : public Syojo
{
public:
 void hunt(Majo *m); // 完全な世界
};
class Mami : public Syojo
{
public:
 void hunt(Majo *m); // ティロなんとか()
};

これならちゃんと個性を持った行動ができますね。この場合の、狩りをさせるロジックも表記してみましょう。


Sayaka sayaka;
Homuhomu homu;
Mami mami;
Majo majo;
sayaka.hunt(&majo);
homu.hunt(&majo);
mami.hunt(&majo);

ここでちょっと不便なことに気づきます。もしかしたら Homuhomu の代わりに Kyoko がいるかもしれないし、そういう状況のたびにコードを書き換えるのはちょっとダサいですよね。そこで、下記のように解釈を変えてみましょう。

  • 「数人の魔法少女が魔女を狩っている。誰が誰だかはよく判らない」

これならクラスの多態性を生かして、このように記述することが可能です。


Syojo *sisters[] = { &sayaka, &homu, &mami };
for(int i = sizeof(sisters) / sizeof(Syojo *); --i >= 0; )
{
 sisters[i]->hunt(&majo);
}

これで狩りをさせる側は「狩りをしろ」と指示するだけで、sisters1号(実体は homu )は時を止めて戦い、sisters2号(実体は mami )は中二病な必殺技で敵を射止めます。

ところで、ここまでは便宜上その場で即席魔法少女オブジェクトを作っていましたが、実際はもっと早い段階で契約して魔法少女を作り、魔力を持たせて、徐々に強い魔女をけしかけて育てています。つまり、魔法少女は戦わせるよりも、死なせる(そして新しい魔法少女を作る)ことのほうがコストがかかるのです。


void Syojo::init(Kyubey *q)
{
 this->keiyaku(q); // 魔法少女の
 this->teatime(); // 初期化は
 this->reajuu();  // 手間がかかる!
}

例えば、某プルプル魔女を狩ることを想定すると、魔法少女が数十人単位で必要になります。しかし、調達できる魔法少女にも限りがあります。仮に調達できた魔法少女を5人とします。この5人だけでは倒すのは困難でしょう。そのため下記のプロセスを繰り返すことになります。

  • 戦う
  • 死骸を破棄する
  • 魔法少女を生成する(生成~契約~育てるetc.)

とても効率が良いとは思えないですよね?実はこれはプログラム側から見ても効率が悪いのです。魔法少女の生成・破棄にはnew・delete、即ちメモリの確保と解放を行うのですが、これは実はとっても重い処理なのです。そこでQBさんは考えました。

「肉体と魂を分離して、肉体は使いまわせばいいじゃないか」

早速QBさんの構想をコードに書き起こしてみましょう。


class Syojo
{
public:
 Syojo(void);
 Soul *soul = NULL; // アクセサとかめんどくせーし
 void hunt(majo *m) { soul->hunt(majo); };
};


class Soul
{
public:
 virtual void hunt(majo *m) = 0;
};

その上で、このように魂を実装すればよいのです。


class Mami : public Soul
{
public:
 static Soul *getInstance()
 {
  static Soul instance;
  return &instance;
 }
 void hunt(majo *m); // ティロなんとか()
private:
 Mami(void) {}
};

魔女と戦わせるには、下記のようにすればおkです。


Syojo syojo
Majo majo;
syojo.soul = Mami::getInstance();
syojo.hunt(&majo);

ただの抜け殻だった魔法少女に魂を入れることでマミさんに変化しました。このノリでMadokaやSayakaなどの魂を作って、入れてあげるとその場で魔法少女の攻撃パターンが変化します。体はマミさんなのに、攻撃パターンを見るとちょっとガサツな槍使い、なんてこともできるようになります。

ただし、魂が入っていないままで魔女をけしかけると、ぬるぽ(C++ではAccessViolationでしょうか)の原因となりますので、空っぽのソウルジェムを常に持たせておかなければなりません。ここは本編とちょっと異なるルールなので注意が必要です。


class EmptySoul : public Soul
{
public:
 static Soul *getInstance()
 {
  static Soul instance;
  return &instance;
 }
 void hunt(majo *m) {} // 何もしない
private:
 EmptySoul(void) {}
};


Syojo::syojo(void)
{
 this->soul = EmptySoul::getInstance();
}

これで、体さえ大量に用意しておけば魂を入れ替え差し替えで魔女を簡単にやっつけることもできるはずです。さらに、死んだ肉体は魂を抜いてストックしておくことでいくらでも使い回しが可能です。これはGoFのデザインパターンのうち、Stateパターンを再現しています。(厳密にはそれに加えFryweightパターンとSingletonパターンの複合技)

Stateパターンのたとえ話としてよくガチャピンが出てきますね。あの青虫はいつ頃からか「ガチャピンチャレンジ」と称して、スノーボードや空手、ロッククライミング、果ては宇宙旅行などと、色々なことをやっています。さて、そんなガチャピンですが、実はチャレンジの種目ごとに着ぐるみの中の人が違う ということをご存知でしょうか?ガチャピン単体では動くことはできず、中に人が入ることでいろんな行動ができます。さらに入る人によっては空手ができたり、また別の人ではロッククライミングができたりなどと、中の人によって同じチャレンジでも出来る種目が違ってきます。この場合ガチャピンの着ぐるみが肉体(Syojo)で、ガチャピンの中の人が状態(Soul)となります。

話がそれたところでまとめ

  • QBは肉体と魂を分離する、即ち実体と状態を分割するStateパターンを再現していた
  • 魔法少女の死体を扱う場合、死体用に空っぽのソウルジェムを付けてあげる必要がある
  • QBマジ合理的
  • ひだまり組を魔法少女化して、ソウルジェムのペアリングをシャッフルして遊びたい
  • ゆのっちに(軽く飲ませてから)罵られたいハァハァ

普段C#・AS3・PHPメインなのでC++の文法自信ないですが、もし間違っていたらTwitterとかで優しく突っ込んであげてください。

[2012/1/18]C81お疲れ様でした! [詳細]

夢終劇.NETですが、バグだらけの状態でリリースしてしまったことをお詫び申し上げます。必ずアップデートをリリースいたしますので、それまでは同梱の弾幕風版をお楽しみいただけると幸いです。

さて、その夢終劇.NETについてですが、一つ皆様にお願いがあります。

夢終劇(.NET版)のプログラマ募集します

現在夢終劇(.NET版)にて雑魚制作を担当したじゅけ氏と諸事情にてトラブルが起きておりまして、ついては1日でも早くアップデートを提供できるよう、急遽プログラマを1名募集いたします。

  • 募集締切:2012/1/30 (月)
  • 募集人員:1名
  • 担当箇所:雑魚実装・ステージ配置(C#。希望次第では別の箇所も追加でご担当戴けます)
  • 想定工期:4か月(現状把握・学習に0.5か月、実装に3.5か月。プログラムの熟練度にもよりますが、実際にはもう少し短期で仕上がると思います)
  • 報酬:10万円固定(山分けだと高確率で二文三文になってしまうので) + 夢終劇DXプレス版1枚(希望次第で最大10枚まで) + プロジェクト一式(二次利用は若干制限事項があります。詳細はお問い合わせください)
  • その他:スペック確認のため、募集〆切前に若干質問をすることがありますが、ご回答にご協力お願いします。

必須スペック

  • 夢終劇.NET体験版が正常に起動・動作可能な環境を持っている。
  • プログラム基礎(変数関数、クラス、条件分岐くらいまで)は最低限理解している。
  • C++、Java(J#含む)、C#、PHP(4以降)のいずれか1つ以上でそこそこ組める程度のプログラミングスキル。(いずれかが理解できるならC#も理解しやすいかと)
  • 最低限の報告連絡相談、および正直明瞭な意思主張ができる。(特に、解らないのに解ったと言い通して納期間際で何が解らないか解らないなどと言い出したり、絵空事の見積もり組んだり、明らかにリスケ必要なのに全く意思表明しなかったり、理由も意思主張もせずに突然蒸発したきりになったりしないこと)

優遇スペック

  • 下記に関しては必須ではありませんが、応募が多数となった場合、下記スペックをお持ちの方は優遇します。
  • C#およびXNAに精通している。
  • SubversionおよびTracの扱いを心得ている。
  • でかいゲームの中身を知りたい、そうでなくても、もっとプログラミングの勉強をしたい。
  • 東京圏まで3時間以内の日本国内在住。
  • STG、または東方が大好き。

応募方法

e-danmaqのお問い合わせ先E-Mailへ、下記情報を本文に入れて送信してください。

  • 件名:先頭に<夢終劇>を入れてください。
  • 名前、ハンドル名、Webページ(あれば)、上記スペックをどれだけ満たしているか。
  • その他スキル自慢、実績自慢など(捏造誇張はNGですが、俺これだけ出来るんだぜ、と自己主張できる方は優遇します)

[2011/12/19]冬の陣(コミックマーケット81) [詳細]

また暫くの間Web更新してなくてごめんなさい。このまま放っておくとまた1年とか行きそうなので、ここで冬コミの告知を。(出先からの更新なので画像とかないですがごめんなさい)

今回は、12月30日(金:2日目)、東サ-04a「danmaq」にて参加いたします。今回のメインディッシュとして、東方夢終劇の再販を行います。気づけば丁度夢終劇リリース5周年<建前>なので、デラックスパックのようなものを作りました。1枚のディスクに下記のものが全部詰まっています。

  • <NEW!>東方夢終劇 .NET版 (弾幕風版から特別に追加された機能とかは今のところ特にありません。ステージごとのロードが超絶短くなるだけです)
  • 東方夢終劇 弾幕風版v2.01 (過去のリプレイ観賞用<建前>に弾幕風版も同梱しました)
  • 東方時封城 弾幕風版v1.00
  • おまけ:時封城v2(2006夏に出すつもりだったがもにょもにょでお蔵入り)のサントラがwavファイルで入っています

今回も例に倣ってヤケクソな部数作りましたので、大手サークルさんをゆっくり回ってから来ていただけると幸いです。東方夢終劇再販版のショップ委託については、これから考えるので少し遅くなると思います。

出し物まとめ

  • (新刊/ゲーム)夢終劇デラックスパック \1,000(※アップグレード割あり)
  • (新刊?/?)おまけ \0
  • (既刊/音楽CD)Leila Prismriver \300
  • (既刊/音楽CD)danmaq soundtrack \100

※アップグレード割について

200245/!/thC/cap_s.jpgC81にお越しいただいた方限定で、下記のアイテムと交換で特別価格にて頒布いたします。

一部に対し一枚のみ有効です。また、交換用アイテムは回収させていただきます。

  • 時封城(プレス版のみ)のオビ:\1,000→\800
  • 夢終劇v1.00~2.01のオビ:\1,000→\200
  • それ以外orオビなくしちゃったよ!or代わりにジャケ持ってきたよ!:ごめんなさいっ><

注意::夢終劇.NETのシステム要件について

.NET版は弾幕風版と比べて、一部システム要件が異なりますので、ご注意ください。

  • WindowsXP SP3以降が必須です。Windows2000やXP SP2以前は弾幕風版のみ動作します。
  • インターネット常時接続が必須となります。モバイルな方はパケ死要注意!
  • HDDの空き領域が3GB以上必要です(8GB以上推奨)。
  • 一定以上グラボが古くなると、あるスペックを境に突然動作しなくなります。(GeForce4Ti、RADEON8500、i915辺りがボーダーライン)

百聞は一見に如かず!って方は、体験版が動作すればまず大丈夫かと思います。(製品版と同居できませんのでインストール前にアンインストールしてください)

夢終劇.NETのサポートについて

夢終劇サポート ページを設けますので、そちらでお願いします。(現在工事中の為、超簡易版です)

[2011/8/13]夏の陣 [詳細]

240 243 /!/thC/TrialJacket_s.jpg クリックすると拡大します。

告知が当日になってしまい申し訳ございません。C80参加しますので詳細を。今回のメインはC81頒布予定のゲームの体験版と委託ゲーム作品です。

コミックマーケット80 8/13(土) 東ネ-37b 「danmaq」

新刊

  • <PCゲーム/100yen>「結界幻想録 鏡 体験版A2+東方夢終劇v3.0 プレ アルファ版」高音質BGM&サプライズ入りパック
  • <PCゲーム/100yen>「今泉ゲーム専門学校」 (今泉の設立団体 様より委託)

既刊

  • <PCゲーム/400yen>「東方時封城 ~ the Alternative Age」
  • <音楽CD/300yen>「Leila Prismriver」
  • <音楽CD/100yen>「danmaq soundtrack」

[2011/7/28]夢終劇プレ アルファ版をご利用の方へ [詳細]

東方夢終劇プレ アルファ版をご利用の方で、バージョン(タイトル画面右上端に出ます)が3.0.0.48以前の方は、大変お手数おかけいたしますが、一旦アンインストールの上、こちらから最新版をダウンロードいただき、最新版のsetup.exeを実行して最新版に更新してください。

3.0.0.48以前は当方の実装ミスにつき、環境によってはオンライン自動アップデートが動作しない場合があります。

今日は告知のみの更新となります。

[2011/7/13]記事のサルベージ率 [詳細]

移行(ほぼ)完了しました。長かった……。想像以上に時間とられた。

残りは暇があった時にサルベージします。

そのうち実装したい機能

  • RSS
  • ガジェット追加/管理
  • アクセス解析
  • クイックジャンプ
  • コメント機能

BUGS

  • IE5.5だと動かない。IE6も挙動怪しい
  • DBのレコードが必要以上に増えてサイズを圧迫してしまう

[2011/6/23]ねんがんの CMSシステムを つくったぞ! [詳細]

と言うわけで、一時閉鎖してから1か月余りたちましたが、ようやくブログいっこできました。まだ一部挙動がおかしい箇所や不便な個所がありますが……

まだ記事も半分程度しかサルベージできていないので、その辺も今週いっぱいには復活予定です。

[2011/6/1]NUE - XSLで自由度の高いスキンが可能なブログ/CMSシステム [詳細]

Network Utterance Environment

オープンソースのブログ/CMSシステムです。danmaq Webページも従来のテキストエディタによる手書きブログから2011/6/23より全面的にこのシステム上に移行しました。

特徴

  • XSLTを用いた非常に自由度の高いカスタム性のスキンが使用できます。
  • ニコニコ動画風のタグシステムを実装。さらにタグを階層化することで、タグをそのまま「目次」代わりに利用できます。
  • 疑似HTMLを使ったタグを記事中に埋め込むことで、記事の構成や見栄えをカスタマイズできます。

ダウンロード

  • SOURCEFORGE.JPからダウンロードできます
  • SVNリポジトリ(readonly)
  • README
  • 更新履歴(Nightly build)

[2011/5/20]danmaq Webページは一時更新停止します [詳細]

どうも表示がぶっ壊れているようなので、Webページをイチから作り直します。その間、更新停止いたしますので、どうかご理解ご了承のほどお願いします。

[2011/4/1]自分に正直になれ [詳細]

312 192 http://www.nicovideo.jp/thumb/sm14003977 http://www.nicovideo.jp/watch/sm14003977 seamless true 鏡音レンの顔に引力を持たせてみた

前回からの続き!……という割にあんま続いていないけど。一応KENZENという縛りがある以上不完全ではあるものの、それでも少しは"それ"に近づけた気がするんだ。俺も願わくば余命尽きる直前に、幸せ投げとか動画のような殺人的なラッキースケベで介錯してほしいものだな 'A`

発売から3か月で買ったミクさんだが、この動画を作るまでは累計7ファイル&22秒しかミクさんに喋らせて(歌わせて)なかったんだが……まじ何やってたんだ俺。動画作りながらそんなことを思い出して、彼女に対してなんか凄い申し訳なく思った。ミクさんに凄い罵られたい気分。このページ見てるあなたのミクさんにも凄い罵られたい 'A` そんなボイスを送ってくれたら、そしたら俺はもっと自分に正直になれる気がするんだ。夜のオカズコンテンツを製作するための、エネルギーになry(以下自分に正直になりすぎて最大級に痛々しいので削除)

夢終劇の再販について

ま た せ た な というのは少々早いですが一応告知。東方夢終劇の.NET移植版を時期未定でリリースすると発表していましたが、C81合わせでリリースします。

  • .NET版(xna)なので、弾幕風がなくてもプレイできます。簡単インストーラ付き。
  • 夢終劇SCCの追加ラストワード搭載!……するかも?(まだ中の人に話通していないので現時点では未定)
  • 不便だったスペルプラクティスの改善。
  • すっごいロード時間短くなるよ!
  • ミニゲーム「東方夢終劇~Catch the Cat」を内蔵!

今年の正月辺りからサイト内のどっかでこっそりと公開していましたが、プレ アルファ版はこちらでダウンロードできます。プレ アルファ版なので1武器1ステージだけです。バグもちょこちょこ残ってたりします。動作は弾幕風版よりもめっちゃ軽くなる予定でしたが、現実にはほんのちょっと軽くなっている程度です。ただし、古いPCやOSの足切りラインが弾幕風版よりやや高いため(2005年のハイエンド~2007年のローエンド辺りから安全圏、OSは最低でもXP SP3が必要)、起動できるかどうかのテストに入れてみると良いかもしれません。

そういえば、すっかり忘れていたけど、今日はWeb巡回が楽しい日でしたねぇ。

(13:10追記)Web拍手もどきの障害について

ごめんなさい!こちらの設定の手違いで、2010年12月中旬~今日4/1の13:10までの4か月半の間、Web拍手(もどき)が正しく送られていませんでした。もしこの期間に送っちゃったよ!って方がいましたらもう一度送ってもらえると幸いです。

Page

| 1/47ページ目(全469件:10件/ページ) | 次のページへ>


Network Utterance Environment version 0.6.87
©2011 danmaq All rights reserved.