タグ

ブックマーク / blog.aotak.me (14)

  • Ruby FFI を使って Ruby から CSFML を呼び出してゲームを作ってみる - あおたくノート

    みなさんおはようございます、aoitaku です。この記事は Ruby Game Developing Advent Calendar 2016 の 14 日目の記事です。 13 日目は hoshi_sano さんの 道場で学んだ「ゲームとは何か」を踏まえて3~4時間でゲーム作った話と反省 でした。 記事にあるように「簡単なことよりはちょっと難しいことのほうが達成できたときに楽しい」というのがゲームの面白さだなとぼくも思っていて、でもこの「ちょっと難しい」のところがゲーム作りの難しさだなあということも、いつも思っています。 たとえば「簡単にクリアできると面白くないからとにかく簡単にはクリアできないようにしよう」とかはありがちなミスなんですが、じゃあ「プレイヤーがちゃんとクリアできて達成感を得られる程度の難しさってなんだろう?」とか。 そういう意味でいくとゴミを投げ入れるゲームは「ゴミ箱が動

    Ruby FFI を使って Ruby から CSFML を呼び出してゲームを作ってみる - あおたくノート
  • コメントがあるからといってプログラムの実装と意図を分離する必要はなくならないという話 - あおたくノート

    まだ考えを整理できてないのでちょっととっちらかった記事になっていると思います。 旨としてはタイトルのとおりです。 「正しく書かれたソースコードにコメントは必要ない」なんて幻想だという話 を受けての記事です。 //フェードインが未完了の場合 if (alpha < 1.0f) { // ... } このコードを、次のようにします。 function isFadingIn() { return alpha < 1.0f } if (isFadingIn()) { // ... } これについて、土屋さんは ただ、この条件式がコード上でこの一箇所しか現れない場合に、「(コメントではなく)コードのみで意図を説明する」ためだけにメソッド化すべきなのかには疑問があります(名前空間汚染も起こりますし)。 と書いています。 これについて、コードに妥当な名前をつける行為は「コードのみで意図を説明する」ため

    コメントがあるからといってプログラムの実装と意図を分離する必要はなくならないという話 - あおたくノート
  • はじめての司プログラミング - あおたくノート

    みなさんこんばんは、aoitaku です。この記事は Ruby Game Developing Advent Calendar 2016 の 3 日目の記事です。 2 日目の記事は土屋つかささんの そろそろゲームプログラミングの用語を共有していこうじゃないか(あるいは既存ゲームエンジンアーキテクチャに対する司エンジンの優位性について) でした。 メインループの限界やステートマシンの限界についてはぼくもいつも考えていて、それは昨今のゲームエンジンを見ていてもそういう流れになってきているなという実感があるんですが、一方 DXRuby のようなシンプルなゲームライブラリを使ってボトムアップでコードを書く場合にはこのあたりの設計をきっちりやるのはめちゃくちゃ難しいですよね。 ある程度の大きさのゲームを書くためにはたとえば Unity や UE にせよ cocos2d-x にせよ、なにかしらのフレー

    はじめての司プログラミング - あおたくノート
  • よくわかる Ruby ゲーム開発のいま - あおたくノート

    みなさんこんばんは、aoitaku です。この記事は Ruby Game Developing Advent Calendar 2016 の 1 日目の記事です。 1日目ということでイントロダクションもかねて、Rubyゲーム開発することについてとか現状についてとか書きます。 昨年までの DXRuby Advent Calendar をご存知の方に向けて長い前書きこの Advent Calendar は昨年まで DXRuby Advent Calendar という名前でやっていたものです。 今年からは「DXRuby に限らない広く Ruby を使ってゲームを作ること」をテーマに、ゲーム開発全般にわたるあれやこれやについてみんなで書いていけたらなと思って名前を変えました。 とはいっても、もともと DXRuby Advent Calendar をやろうと思ったのも DXRuby があれば R

    よくわかる Ruby ゲーム開発のいま - あおたくノート
  • Ruby でゲームを作るのは今なら充分現実的です - あおたくノート

    コミックマーケット 90 無事に終わりまして、体験版をお見せするだけになってしまったわけですが、それでも少なくない人に遊んでもらえてとてもありがたく感じています。来ていただいた方ありがとうございます。 会場では実装についての話とかも受け付けるのでお気軽にご質問くださいということで、何人かの方に質問をいただいたんですが、いくつか説明不足なところもあったなあと思っていて、そのあたり聞かれたことをちょっと思い出しながら、補足しつつ書き留めておきます。参考になればさいわい。 Q. このゲームは何で書かれているんですか?A. 言語は Ruby で、主に DXRuby というライブラリを使っています。画像描画とか音声再生とかのプリミティブな処理以外のゲームのロジックは Ruby でほぼ一から書いていて、物理演算や衝突判定などのシビアな部分とか、各種形式に対応したファイルの読み込み処理とかはライブラリ任

    Ruby でゲームを作るのは今なら充分現実的です - あおたくノート
  • [Ruby] 引数のない Proc.new - あおたくノート

    今日はじめて知ったというか引数のない proc メソッドがどういう動きをするのか今までちゃんと理解していなかったなあと思った。 Kernel#proc は Proc.new のショートハンドラで、Object によって Kernel が include されているので Object 派生クラスではレシーバを省略して proc と呼べる。 では題。 def do_block(&block) yield if block end ナンセンスなコードだけどまあこういうのがあったとする。 これは、 def do_block yield if block_given? end こう書けるよね。 じゃあ、 def add_handler(name, &block) if block @handlers[name] = block else raise end end ここで block_given?

    [Ruby] 引数のない Proc.new - あおたくノート
  • Ruby 2.1 にパッチを当てて Ruby スクリプトを exe 化できるようにする - あおたくノート

    つまり 超簡単に Ruby プログラムを exe にする新しい方式 (構想) の記事にあるやり方を Ruby 2.1 でやってみた、という話。上記記事は Ruby 2.0 リリース前の話で実際にできるかどうか試してみないと分からなかったので、問題なくパッチが当たってちゃんと exe 化できることを確認したかった。 結論からいうとできます。ただちょっと問題があって、exeの後ろに繋げたスクリプトから他のスクリプトを require できない。ので、そのへんを fix したパッチを作った。 sfx-support 何をしてるかというと、exeの末尾からスクリプトを読み込み終わったら rb_embedded_payload を nil にするようにしてある。 もとのパッチでは rb_embedded_payload が存在する間は、埋め込みスクリプトからほかのスクリプトを require しよう

    Ruby 2.1 にパッチを当てて Ruby スクリプトを exe 化できるようにする - あおたくノート
  • テキストエディタ Mery をアウトラインエディタっぽく使う - あおたくノート

    先日、StoryEditor というフリーソフトの公開が終了した。 ぼくも愛用していたソフトなので感慨深い。そういえば最終更新日から 12 年も経ってるんだなあということに気付いたんだけど、最終更新日から数年以上の間現役で利用され続けているということを考えるとスゲーことだなあと思う。我が家の Windows 8 では残念ながらインストールできなかった。実のところ数年前から StoryEditor をやめてテキストエディタを使うようになっていた。理由は簡単で、.sef ファイルに依存した管理をやめたかったからである。 プレーンテキストファイルはほぼ唯一のマルチプラットフォームフォーマットで、最もポータビリティが高く、今後使うマシンが Mac になろうが Linux ディストロになろうが Android になろうが、テキストファイルに記録されたものはずっと読める。 あともうひとつは Shift

    テキストエディタ Mery をアウトラインエディタっぽく使う - あおたくノート
  • [DXRuby] DXRuby Advent Calendar 2014 - あおたくノート

    というのをやります。ここを前から見てる人は去年もやったので覚えてたら知ってますね。 DXRuby Advent Calendar 2014 ただいま参加者募集中です。 参加しようかなって思うけど何書いていいかわからないよーって人もいるかと思うんだけど、基的にどんな記事でもよいです。 たとえば「こんなことみんな知ってるだろうし……」とかは気にしなくてよくて、ちょっとしたこととか、むしろね、ささいなことほど書いてほしい。ほら、そういうことほど他の人は意外と知らないかもよ? 「DXRuby の話ならなんでもオッケー!」って言われても、これって当に DXRuby の話なんだろうか……みたいな疑念が脳裏をよぎって参加をためらうとか、これ記事にできないなとか、そういうのもあるかもとは思うんだけど、ぼくの考えとしては、DXRubyゲームを作るためのライブラリなので、「ゲーム作りのノウハウを DX

    [DXRuby] DXRuby Advent Calendar 2014 - あおたくノート
  • [Ruby] Ocraでインストーラを作る - あおたくノート

    タイトル通り。いつからか分かんないけどOcraでインストーラが作れるようになっていた。 larsch / ocra - GitHub どうやるかというと、Creating an installer for your application という章があるのでそこを見る。 “You will first have to download and install Inno Setup 5 or later” と書いてあって、Inno Setup を使ってインストーラを作るようになっているようだ。 Inno Setup インストールしたらOcraからInno Setupのコンパイラが見えるようにパスを通しておく必要があるのでパスを通す。 Ocraのreadmeを参考にしたり検索したりして(わたしは 開発などブログ » Inno Setup の様々な機能を使ってみる などを参考にさせていただいた)

    [Ruby] Ocraでインストーラを作る - あおたくノート
  • [Ruby] Pxtone/Ruby - あおたくノート

    Windows でピコピコサウンドが作れるピストンコラージュというソフトがあるんだけど、このピスコラ、再生用 DLL があって API が公開されている。なので、DLL に適切にパラメータを渡してやれば再生させてあげることができるんだけど、インターフェースが C/C++ 向けの低水準なものしか用意されてないので、たとえば Ruby から使おうと思うとちょっと大変だ。Fiddle とか使えばいけると思うけど。 DLL の API 自体はごくシンプルなものなので、C で拡張ライブラリ書いてみた。 Pxtone/Ruby DXRubyゲーム作ってる人はこれ使えばピスコラの .ptcop とか .pttune を wave にあらかじめ変換しておくとかしなくてもそのままゲーム中で再生できるようになる。 はじめて C で拡張ライブラリを書いてみたけど思ったよりは大変ではなくて、たとえば Ayam

    [Ruby] Pxtone/Ruby - あおたくノート
  • 当たり判定のメモ書き - あおたくノート

    Advent Calendarに書くほどまとまってないことなのでとりあえず書き起こしておくだけ。 例えば当たり判定に2D物理演算を使うとして、横スクロールアクションゲームによくある、「下から上にジャンプですり抜けられるけど、上から下りてきたときはすり抜けずに着地する」ような一方通行の地形と、物理演算の当たり判定を組み合わせようとすると、すり抜けられる床とそうでない床を地形IDを使って管理して、地形ID毎に場合分けを書いて、とかいう面倒くさいことをしなければいけなくなって非常に面倒くさいことになる(トートロジー)。 で、考えたのだけど、そういうときにz座標を見て判定をするかどうか決めるというのはどうだろうか。 一方通行床の上側のz座標を小さくして、下側のz座標を大きくしておく。 移動元のz座標が移動先より大きいときは当たり判定を処理しない(=すり抜ける)。 移動元のz座標が移動先以下のときは

    当たり判定のメモ書き - あおたくノート
  • はじめてのRubyをDXRubyで - あおたくノート

    Rubyで何ができるの?Webアプリケーションとか作れるよ RailsとかSinatraとかTwitterとかTumblrのAPIを使ってpostしたりするスクリプトが作れるようーんあんまりそういう用途で何かしたいと思わないなあ。 そりゃそうよね。 でもRuby楽しいから一度くらいは触ってもらいたいところ。 何のためにプログラミングするの?べつに何か役に立つものを作ることはないのです。 そう、楽しむためにプログラミングしたっていいじゃない。 楽しいプログラミングといえば、むかしBASICでゲームプログラミングするのが流行りましたね。ただ雑誌からコードを写していくだけでも、動いたら感動しましたね。 なるほどゲームは動くと楽しいのです。 Rubyゲーム作れるの?作れるよ。 ゲームを作るには、ユーザ入力を受け取って、画面に何か出力する、という仕組みが必要。 ふつうは画像とか使いたい。ユーザ入力

    はじめてのRubyをDXRubyで - あおたくノート
  • [Ruby][DXRuby] Introduction to DXRuby - あおたくノート

    DXRuby Advent Calendar 2013 1日目です。 Advent Calendarというのは、クリスマスまでの日数を数えるためのカレンダーのことなんですが、いつ頃からかコンピュータ技術の分野で「1日1個tips的な記事を書く」というようなことをやるようになりました(調べてみるとPerlでは2000年からはじまっているのでその頃にはもうあったようです)。 だいたい2009年くらいから日でも認知度が高まってきていて、昨年なんかは結構にぎやかにやってたと思います。多分今年は昨年以上に盛り上がるんじゃないかと思います。 乗るしかない、このビッグウェーブに! ということでDXRubyでもやってみたら面白いかなーと思ってやってみました。これから24日間お付き合い頂ければと思います。 1日目ということで、DXRubyの紹介をします。 DXRubyとはRubyでDirectXを使ってゲ

    [Ruby][DXRuby] Introduction to DXRuby - あおたくノート
  • 1