この記事は Ruby Game Developing Advent Calendar 2016 の18日目の記事です。今日は shinokaro が担当します。
前日は t_tutiya さんの ゲームプログラミングの新手法「コード注入式ステートマシン」の可能性を探る(意図的な煽りタイトル) だったのでした…。
はい、すみません、今26日です。この記事は遅刻しました。
# このコードで作成されたフォルダーの削除にはGIT CMDを管理者権限で起動し、 | |
# rmdir c:\LongestPath /s | |
# を実行する。この方法以外で削除するとエラーが出ることがある。(アプリが最大パスに対応できていない) | |
Dir.chdir("c:\\") | |
first_dir = "LongestPath" | |
Dir.mkdir(first_dir) unless Dir.exist?(first_dir) | |
Dir.chdir(first_dir) | |
len = 247 | |
loop do |
この記事は Ruby Game Developing Advent Calendar 2016 の18日目の記事です。今日は shinokaro が担当します。
前日は t_tutiya さんの ゲームプログラミングの新手法「コード注入式ステートマシン」の可能性を探る(意図的な煽りタイトル) だったのでした…。
はい、すみません、今26日です。この記事は遅刻しました。
この記事は Ruby Game Developing Advent Calendar 2016 の4日目の記事です。今日は shinokaro が担当します。
前日は aoitaku さんのはじめての司プログラミングでした。aoitaku さん、今年も Advent Calendar を開催してくださってありがとうございます!
ゲーム・プログラミング、特にコードだけでゲーム全体を構築(要は即席制作という事)しようとすると最初にぶつかる問題があります。それは初期値です、例えばキャラクターの最初の表示位置です。ゲーム・フレームワーク上で作業しているならば初期値を設定できるように設定ウィンドウ(GUI)や設定ファイルが用意されているでしょう。
設定システムを自作で準備しようとすると結構な手間です。まずはゲームを立ち上げることに集中するべきです(素晴らしい思い付きを忘れる前に)。さらに Ruby では即時にコード実行(コマンドを入力してエンター・キーを叩く!)されるので、操作が必要な数値設定環境よりコード本体に直接記述できる方が望まれます(私は望みました)。
それに Ruby らしく初期値を書くならば Ruby on Rails のように設定ファイルより設定コードで書きたいはずです。設定コードならば面倒な相対値計算から解放されます。計算式や変数を使って値の意味を明示したり、他のオブジェクトを元に値を算出したりもできます。
$ glxinfo | |
name of display: :0 | |
display: :0 screen: 0 | |
direct rendering: Yes | |
server glx vendor string: ATI | |
server glx version string: 1.4 | |
server glx extensions: | |
GLX_ARB_multisample, GLX_EXT_import_context, GLX_EXT_texture_from_pixmap, | |
GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_OML_swap_method, | |
GLX_SGI_make_current_read, GLX_SGI_swap_control, GLX_SGIS_multisample, |
$ ./pmx ./KumaMku_Ver1.3/miku.pmx ./KumaMku_Ver1.3/popipo.vmd | |
PMX Ver. 2 | |
Loading vertices...done. | |
Loading faces...done. | |
Loading textures...done. | |
Loading materials...done. | |
Loading bones...done. | |
Loading morphs...done | |
Loading display frame...done | |
Loading rigid body...done |
require "dxruby" | |
# extend | |
class Array | |
def to_sound | |
::DXRuby::SoundEffect.new(self) | |
end | |
end | |
class Object |
require "dxruby" | |
f = Fiber.new do | |
loop do | |
8.times do | |
Fiber.yield 0 # alpha 透明度, 0は透明。試すなら128(半透明)が分かりやすい | |
Fiber.yield 255 # red | |
Fiber.yield 0 # green | |
Fiber.yield 0 # blue | |
end |
しのかろ(Twitter@shinokaro)
2013-12-26
DXRuby Advent Calendar 2013 の21日目は“しのかろ”が記事をお送りします。前日はaotakさんが ゲーム作りました という記事を書かれました。内容は、実際にゲームを作る上での思考過程についてでした。
ゲームを完成させるには他の作品ジャンルに比べて時間が掛かります。
=begin | |
DXRuby Advent Calendar 2013 7日目 | |
title: DXRubyのSpriteを継承して拡張する方法について | |
author: しのかろ(Twitter@shinokaro) | |
DXRuby Advent Calendar 2013 も7日目。 | |
1週間目の終わりは“しのかろ”が記事をお送りします。 | |
世にゲーム・プログラマー多数あり、と言えども実際のコードにおいては、 | |
文章の形で公開されることは稀です。 | |
ですから、今年のこのイベントで公開される記事を楽しみに毎日を過ごしています。 |
class Script < Fiber | |
def self.new(*dsl_mods, &block) | |
Class.new(self).tap do |c| | |
# DSLメソッド郡をextendする、DSLを組み合わせ可能にしている | |
dsl_mods.each{ |mod| extend(mod) } | |
# 生成したクラスではnewメソッドでインスタンスを生成するように書き換える | |
c.class_eval do | |
def self.new(*args, &block) |