diaryこの広告は、90日以上更新していないブログに表示しています。2014-12-24投げる!変化球どうも、もにょさんです。今年度のアドベントカレンダーはお初。23日分の記事のつもりですが投稿が24日になってしまいましたね悲しい。ゲーム創作研究部のアドベントカレンダーなのにゲーム創作を研究してない!との声を部の内部からよく聞くので、それっぽいことでも書いておきましょう。今年度の高専祭では狐っ娘がわちゃわちゃする某方Projectっぽい弾幕STGを展示したのでそれに纏わるアレコレを少々。そんな専門的なことはやりません。数学徒とか物理学徒にマサカリ投げられちゃうヤバイヤバイ。投げる!さてさて弾幕STGなんで自機も敵も弾を撃たないとお話にならないねぇというわけです。変化球を投げる前には直球を知らなくてはいけません。やって弾を動かしたらいいんでしょ。今回は無能で怠惰で役立たずな白狐の深草すすきさんにお越しいただいて、色々と見てみましょう。彼女の居る位置、すなわち弾の発射される位置をここでは仮に点(0,0)としておきます*1。画面に弾を表示してあげるには、その弾がどこにあるかが分からないといけません。弾には「位置」の情報を持たせてあげます。2Dゲームなんで難いこと考えずにX座標とY座標があればいいですね。2次元ベクトルで表して、まだ弾は動いていないので点(0,0)に居ます。次はその座標を動かします。図中の矢印のような、「速度」の情報が要りますね。1フレーム(60fpsなら1/60秒)あたりに動かしたいX軸方向の距離が2ドット、Y軸方向の距離が3ドットだったら、速度ベクトルは(2,3)です。あとは弾の座標に対して、この速度を毎フレーム足していけばいい話です。移動をさせていくと(0,0)に居た弾は、1フレーム目は(2,3)、2フレーム目は(4,6)と徐々に動いて、1秒後である60フレーム目には(120,180)に居るはずです。撃ちたい方向に撃ちたい速度ででも「X軸方向とY軸方向の速さ」とか言われても分かりづらくはありませんか?人がボールを投げる時に投げたい方向を向くように、「角度*2」と「速さ*3」で弾を撃たせるほうがいいんじゃなくて?というわけで「角度」と「速さ」でもって弾を撃たせます。三角関数のsinとcosを使えば、角度と速さからX軸方向とY軸方向の速さにすることができます。人が弾の動きを設定するような箇所では角度と速さを入力させ、実際に弾を動かす時に速度ベクトルに変換して、弾を動かせばいいわけです。発射されてから徐々に速くなっていく、もしくは発射時は速くても徐々に遅くなる弾です。どれだけずつ速くなっていくか、もしくは遅くなっていくかの加速度*4というものを設定します。毎フレーム、今の速さに加速度の値を足していく処理をさせれば速さの変化する弾の出来上がりです。発射時の速さを1、加速度を0.1とすると、1秒後には速さが7になりますね。ここで問題になるのが、このままでは際限なく速くなっていくということです。ゲームは楽しむものであるので弾速の速い弾を撃ちまくればいいというものではありません*5。速さに上限下限を設けておきましょう。発射から速くなるor遅くなって一定の速さになります。曲がる弾いくら速度変化があっても、これでは真っ直ぐにしか進みません。弾が曲がることによって見た目のバリエーションも増えるほか、難易度も上げることが出来ます。出た!初心者キラーだ!どれだけずつ角度が変化するかの角速度*6というものを設定します。毎フレーム、今の角度に角速度の値を足していく処理をさせれば角度の変化する弾の出来上がりです。加速度とは違ってどれだけ角度が増えても360°ぐるっと回るだけなのですが、その変化量に気をつけなくてはなりません。角速度を1°毎フレームとした場合、360°回るのに6秒しかかからないので弾速が遅い場合、ずっと画面内を回り続けるなんて状況になります。画面内に弾が溜まり過ぎる(大爆笑)と処理が重くなるので、そうなる時は角速度を小さくする、速さを上げる、もしくは加速度をつけて徐々に速さを上げましょう。出た!初心者キラーその2だ!上下の壁に当たった場合(弾の位置が画面上端よりも上に行ったor下端より下に行った)や、左右の壁に当たった場合(弾の位置が画面左端よりも左に行ったor右端より右に行った)に、ちょうど反射するような軌道を描かせます。上下壁なら速度のY成分を、左右壁ならX成分を逆符号にしてやれば跳ね返りますね。角度でいえば上下壁なら角度を逆符号に、左右壁なら逆符号に180°足したら跳ね返ります。自機は画面下側をうろちょろしていることが多く、下を除いた3つの壁でのみ跳ね返るようにしている場合もあります。そのままでは跳ね返り続けて画面外へ出て行かず、処理が重くなるばかりか難易度が跳ね上がってしまうので、反射する回数に制限を設けてあげると良いでしょう。おわり他にも「自機方向に向かって撃たれる弾」「重力加速度のかかる弾」「指定した速さと角速度で極座標系における動径と偏角が変化する弾」「反射した後に自機方向に向かうよう反射する弾」なんていうのもゲーム内には登場しますが記事が長くなるのでこのへんにしておきます。ここでは弾幕STGでしたが別なジャンルのゲームにも流用できるでしょう多分。実際このゲーム、高専祭で展示しててまともにクリアしてる人を見たことがないので難易度むずかしいでノーコンクリアくらいしたらご一報ください*7。部公式サイトでゲームは配布中です♥*1:実際の座標(0,0)は画面左上端です。敵の座標を基準にして弾を発射させてあげましょう。*2:弧度法の話をしだすとまた記事が長くややこしくなるので避けます。ここでは度[degree]です。*3:大きさと向きを持つ「速度」と、大きさのみの「速さ」を分けています。[dot/frame]*4:便宜上こう呼んでいますがスカラー量です。[dot/frame2]*5:例外有り*6:便宜上こう呼んでいますがスカラー量です。10:52std::arrayを頑張って読もうとした.Tweet広告を非表示にするもっと読むコメントを書く2014-12-16SAIの領域選択の話するよどうもごめんなさい。最近あんまりペンタブに触ってないなりにもSAIの話をしたいと思います。具体的に言えば、領域選択の使い方の話。ベタ塗りが線画からはみ出てたり、影の塗りだけはみ出てたりとまあ散々だったわけですよ。マジックワンド使えよ。SAIにはマジックワンド以外にも便利な選択の仕方はあるんですよって話です。(矩形選択、投げ縄選択の話はありません)マジックワンドと言いつつマジックワンドの話しちゃう。SAIを使ってたら多分一番使う選択ツール。特定レイヤーや、キャンパスにある、囲まれた領域内を選択するツールです。領域の検出の方法が何種類かあるけど、「透明部分(精密)」がオススメ。「色差が範囲内の部分」は、微妙な濃さの部分を調整して選択できる。それより特定の色が塗られている部分だけを選択できるのが売り。グラデーションの一部分だけを選択する事も出来ちゃいます。色差が範囲内の部分選択。画像サイズにもよりますが、色差の範囲が±100以上あれば大体の塗りはごまかせます。選択ペン/選択消しゴムマジックワンドと合わせて使う事が多いツール。「マジックワンドで選択したいのに線が繋がってない!」って時に使う事が多いと思います。その本領は、他の選択ツール方法ではできない、濃度のある選択ができる事。普通のペンツールと同じように、ブラシ濃度を下げれば透明度を付けることが出来るし、ある程度までならグラデーションだって作れちゃいます。使えば、画像の一部だけをぼんやりと抜き取ったり、ちょっと変わった塗りかたが出来るようになります。光の表現などで広く色んな使い道ができるので試してみましょう。(服の皺や、ハイライトなど)不透明部分を選択そしてもう1つ、とっても大事な選択の仕方があるんです。それが、レイヤーの不透明部分を選択する方法。この選択の仕方はとっても簡単。Ctrlキーを押しながらレイヤーパネルのサムネイル部分をクリックするだけ!なんとこれだけで、元のレイヤーの不透明度と同じ不透明度の選択領域を作ってくれます。複数のレイヤーの不透明部分を選択したい場合は、1つのレイヤーセットに入れて、レイヤーセットのアイコン部分をクリックすれば選択できます。(これを知らなかった当時はいくつものレイヤーをコピーして以下略)例えば、線画を描いた後、塗る前に仮色を塗っておけば、そのレイヤーを使って選択すればレイヤーを切り替えたりせずに、すぐに選択領域を変えることが出来ます。他にも、一度塗ったものと同じ不透明度で別の色を塗りたい!ってときにも役に立ちますね。選択ペンや消しゴムで微調整するのも良いでしょう。いうわけで、SAIを使うなら覚えておいて損はない領域選択のお話でした。他の有料ペイントツールは使っていませんが、おそらくSAI特有のものだと思いますので、これを機にSAIの使い方をじっくり調べてみるのも良いかもしれませんね。21:53SAIの領域選択の話するよTweet広告を非表示にするもっと読むコメントを書く2014-12-14TRPG雑記おはこんばんちは。今回はアナログなゲームのお話です。今まで私がTRPGで遊んできた感想などを徒然なるままに書き連ねていきたいと思います。ゆるーい企画だなぁ・・・。一応TRPGとは何ぞやということについて説明しておきます。一言で言うと、「紙やサイコロなどを用い、プレイヤー同士が会話しつつ進めていく卓上ゲーム」というゲームジャンルです。Cthulhu」、「汝は人狼なりや」、「パラノイア」等々、無数のタイトルがあり、それぞれルールが異なっています。TRPGは役割演技(Role-Playing)と試合(game)の2つの側面があり、作品によって役割演技の側面が強いものと試合の面が強いものに分かれています。「汝は人狼なりや」では勝敗がはっきりと決められており、プレイヤーも積極的に勝利を求めていかなければならないので、試合の側面が強いゲームです。Cthulhu」のように勝敗の定義が無く、役割演技の側面が強いものもあります。まあGCCの面子なら大体知ってますよね。以下に僕がこれまでプレイしたTRPGを紹介していきます。詳しいルールは載せてないので興味があれば調べてみてね。Lovecraft氏の著作およびその2次創作から構成される「クトゥルフ神話体系」の世界観から生み出されたゲームです。参加者はキーパー(以下KP)とプレイヤー(PL)に分かれ、KPが用意したシナリオに沿ってPLがロールプレイする形でゲームを進行させます。分かりやすく、アレンジもしやすいルールなのでTRPGの中でも人気のタイトルです。邪神のもたらす災いに巻き込まれたPLは、物理的・精神的ダメージを極力回避しつつ無事にお家まで帰ることがゲームの目的です。このタイトルの最大の強みは、アレンジのしやすさです。このゲームは1920年代アメリカを舞台に恐怖映画的な雰囲気の世界を体験するという内容でした。多少のアレンジでSF的な要素の強いシナリオを作ることもできますし、和風な妖怪譚の世界や、明るくファンシーな雰囲気を表現することもできます。クトゥルフの基本的なルールさえ知っていれば自分の好きな世界観でシナリオを作り、ロールプレイを楽しむことが可能なのです。明石高専を舞台に高専生を探索者としたシナリオを作ることもできますし、某狐っ娘STGの世界観も表現できてしまえるような許容力がクトゥルフにはあります。妄想夢が広がりますね!動画サイトにもクトゥルフTRPGのリプレイ(風)動画が多く挙げられています。http://www.nicovideo.jp/watch/sm18402821↑オカルト警察官とミリタリー探偵が事件を解決するお話。絵がきれいで丁寧に分かりやすく作られているので、クトゥルフをやったことのない人でも楽しめる動画だと思います。http://www.nicovideo.jp/watch/sm20390167↑通称喀血卓。話のテンポがめっちゃ良いです。間隙なく挟まれる小ネタ、ボケとツッコミの応酬、荒れるダイスなど、終始ふざけているようで話の本筋はブレないのがこの動画の凄いところ。http://www.nicovideo.jp/watch/sm22829080↑忙しい人に。・キルデスビジネス河嶋陶一朗氏が開発した汎用RPGルール、「サイコロ・フィクション」を使用したTRPGです。この「サイコロ・フィクション」が優れもので、この汎用ルールでは6面サイコロ2つのみでゲームをプレイすることができます。その上「キルデスビジネス」のルールブックがとっても安価(\1620)なので、初期投資2000円未満ですぐにプレイすることができます。ゲームの設定は、地獄の殺し合いTV番組に招待されたプレイヤー達が、何でも願い事を叶えてもらうことを条件にターゲットの抹殺を試みるというお話です。戦闘は運の要素が強いものの、簡単な駆け引きを気軽に楽しめます。サイコロを振って決められたシチュエーションに対して大喜利的にロールプレイをしなければならないので、発想の瞬発力が問われます。その大喜利の積み重ねでキャラクターが出来上がっていくのも魅力の一つです。ルールは割合キッチリ決まっていてKPの裁量に頼る部分が少ないため、ルールをよく理解した者同士ならKP抜きでプレイすることも可能です。何気にキャラメイクの自由度が高く、聞いた話によると「産卵をしたい鮭」などでもプレイできます。趣味全開のキャラを作って大暴れさせてやりましょう。こちらも「サイコロ・フィクション」を使用したTRPG。プレイヤーは現代に生きる忍者の末裔となって、秘密の任務を遂行します。この「秘密」がこのゲームのミソで、積極的にロールプレイをし、他のプレイヤーの秘密を知ることでゲームを有利に進めていくことができます。すごろく感覚でさらっとプレイできるところが魅力です。・パラノイアパラノイアは完璧なゲームであり、幸せと楽しさは市民としての当然の義務です。このゲームの目的は、上司から与えられた任務を達成するために仲間を騙し賺し、収賄や靴をなめることによって上司に媚を売り、仲間の言動の揚げ足を取って言いがかりをつけ殺害し、最終的には出来るだけ自分に責任が降りかからないような形で任務を失敗することです。そのあまりにも奇抜なゲーム性からTRPG界隈ではとてもよくネタにされて愛されています。ちなみにパラノイアのルールは公式でネット上に公開されています。クトゥルフと並んで日本では人気の高いTRPGです。中世ヨーロッパ風ファンタジーな世界観が魅力で、「剣と魔法の世界」のお約束が詰まっています。これもKPとPLに分かれてシナリオをプレイするゲームです。戦闘に関するルールが細かく決まっており、より戦略的なロールプレイが求められます。私は一回しかプレイしたことが無いので、あまり詳しいことは知りません・・・。書きましたが、ざっとした紹介はこんなものです。ロールプレイは、自分のやりたいことを相手に伝える、つまり、「日本語を話すトレーニング」にもなるので、おすすめです。GCCでセッションしたいなぁ・・・。明日は雷軌に書いてもらおうかな?Slackのグループに居ないけど。19:08TRPG雑記Tweet広告を非表示にするもっと読むコメントを書く2014-12-13シングルボードPCのススメどうも皆さん、おはこんばんちは。Piの紹介をしましたが、今回はその他のシングルボードPCで気になったものの紹介もしたいと思います。「調べて下さい(丸投げ)」はひどいと思ったので戻ってきました。あと僕も興味があるので、調べたことを出来る限り吐き出そうかと思います。pcDuino※筆者の使用経験はありませんpcDuinoが目を引くポイントは以下の3点です。Piとどう違うかという点ですが、なんといってもメモリの大きさです。Piの2倍です、すごい!そしてCPU。こちらもグレードアップが図られています。A20というチップで、このメーカーのチップは安価なAndroidタブレットでも使われていたりします。この2点だけで欲しくなってしまいます。最後に搭載OSについて。こいつはUbuntuとAndroid、Androidを搭載しています。pcDuinoの対応言語はC、C++、AndroidSDKを使ってのJava、Pythonで、公式にAndroidアプリ開発がサポートされています。作ったアプリをその場でデバッグすることが出来るのです。OTG(USBホスト機能)」に使えるUSB-microBコネクタを搭載しているので、これを利用したアプリのデバッグなんかもサポートしてくれます、もはや神ですね。こいつのスペック自体が、Android搭載であるという点から見れば2年前の性能であり、最新の端末でシステムリソースをゴリゴリ食って動かすようなアプリを作ってデバッグするのは少し厳しいかもしれません。Piの性能からは大きな進歩です。Piに同じく低消費電力なので、サーバー用途にも使えますね。Piこそコスパ最高」と言い切ってしまいましたが、pcDuinoのコスパの方が優れているかもしれないと今日調べていて気づきました...(震え)。このスペック差で、最安6480円です(秋月電子通商にて)。お金を貯めて買おうかなと迷い始めました。Piとどっちがいい?ここまでpcDuinoのいいところばかり紹介してきましたが、実際どっちがいいのか。答えは「やはり利用スタイルによる」です。Piを使ってあげてください。Piは日本語のドキュメントが多いので始めやすいと思います。Piでこの世界に飛び込みましょう。「スペック高いほうがいいに決まってるだろ」というスペック厨のあなた、pcDuinoを使ってあげてください。pcDuinoのGPIOピンはかの有名なマイコンボード「Arduino」のピン配置に似せてあります。Arduinoシールドを使った開発をしたい方、興味がある方は是非pcDuinoを使ってあげてください。日本語のドキュメントを増やして下さい!!こんなのもあるよという紹介Intel系のSBC実はIntelもこの界隈に参入していて、Galileoという名前でボードを売っています。特徴はx86アーキテクチャを採用していることです。Intel以外はほとんどARMアーキテクチャという後発のアーキテクチャを採用しています(スマートフォンなどもこれです)。x86アーキテクチャを採用する利点は、普通のPC用OSをインストールすることができることです。スペックはそんなに高くないのでちゃんと最適化されたOSを選ぶ必要がありますが、ほとんどのLinuxをインストールすることができるので選択肢が広がります。最近は「Edison」という新たな切手サイズ(!)のSBCもあります。これはまだ情報が少ないので僕はよくわかりません。BeagleBoneLinuxとIDEが最初から搭載されているSBCです。こちらはスペック十分ですが、その割には高いなぁという印象を受けるので興味があまり湧いていません。大量のピンソケットが生えているのでトップクラスの拡張性を誇るかも...?最後にやはり紹介記事みたいになっちゃいましたが、SBC界隈はアツいのでこの熱気を他のクラスタの人達にも伝えたい...!という思いでここまで書いてきました。電子ガジェット製作(電気系に限らず情報系も)にはもってこいのツールですし、小規模なサーバー用途にも低消費電力で性能十分なので、皆さんもこの界隈に足を突っ込んでみて良さを味わって欲しいです。この記事がそのきっかけになれば幸いです。次書く機会があればGPIOピンの使い方なども紹介しようかな...。明日はねぎとろさんにお願いしようかと思います。どんな記事を書いていただけるか楽しみです。22:07シングルボードPCのススメTweet広告を非表示にするもっと読むコメントを書く2014-12-12便利すぎるC++11こんばんは、スペードです。部活の方針がcocos2d-xでの開発になったらしいので、今回はC++11の便利なもののほんの一部を紹介したいと思います。いう普通の配列のように使えるのはもちろん、それに加えて色々な機能を持っているすばらしいものがあります。C++11から使える範囲ベースforというものもある。std::endl;補足しておくと、上記のように、std::arrayはイテレータを使うことができます。僕がC++11で実装されたもので特に気に入っているものが、ラムダ式です。ラムダ式とは無名関数とも呼ばれ、関数を記述するための記法であり、関数オブジェクトの一種です。無名関数??関数オブジェクト??と思われて難しく感じるかもしれませんが、使い方を見てもらえば簡単にラムダ式を書けるようになります。[]{};これが(最小の)ラムダ式です。冗談はさておき(最小のラムダ式というのは本当です)、実際の使い方を見てみましょう。vec.end());ラムダ式いがかでしたか?最後の例で挙げたように、STLと併用することでき、使いこなせれば強い味方になってくれると思います。まとめC++11の機能はもっとたくさんあります。リファレンスなどを閲覧してみるのもいいかもしれません。明日(12/13)の担当はクモハ君に任せたいと思います。どんな記事を書いてくれるのでしょうか。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。