2008年9月25日
実践Common Lispを読んでみる(その2)
さて、本来なら第3章を読みたいところですが、案の定日本語関係でいろいろミスったのでそれについて。
とりあえず修正した.emacs.elファイルを。
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; emacs-lisp-mode(下のslimeモードとelispモードを分けるため) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (setq auto-mode-alist ;;; 拡張子とモードの対応 (append '(("/.el" . emacs-lisp-mode)) '(("/.emacs-*" . emacs-lisp-mode)) '(("/.wl" . emacs-lisp-mode)) auto-mode-alist)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;slime ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (add-to-list 'load-path "/usr/share/emacs/site-lisp/slime/") (require 'hyperspec) (setq common-lisp-hyperspec-root (concat "file://" (expand-file-name "~/.emacs.d/HyperSpec/") ) common-lisp-hyperspec-symbol-table (expand-file-name "~/.emacs.d/HyperSpec/Data/MapSym.txt") ) (defun ime-onoff-slime () (interactive) (if slime-mode (progn (slime-mode nil) (toggle-input-method)) (progn (slime-mode t) (toggle-input-method)))) (require 'slime) ;; 日本語利用のための設定(emacsのデフォルトがutf-8ならutf-8-unix) (setq slime-net-coding-system 'euc-jp-unix) (setq inferior-lisp-program "sbcl") (add-hook 'inferior-lisp-mode-hook (lambda () (inferior-slime-mode t))) (add-hook 'lisp-mode-hook (lambda () (slime-mode t) (show-paren-mode) (global-set-key "\C-cH" 'hyperspec-lookup) (global-set-key "\C-\\" 'ime-onoff-slime) ) ) (slime-autodoc-mode) ;以下前と同じ
どうもslime-spaceがanthyの変換キーより先に有効になってしまうので、slime-modeでかつ日本語入力モードにしたときはslime-modeを切ってからtoggle-imput-modeでanthyに切り替えるようにしました。んでもてって(global-set-key "\C-\\" 'ime-onoff-slime)で
slime-modeの時のみ有効になるように設定。
また、emacs-lispと通常のlispを分けるために新しくemacs-lisp-modeを追加しました。
あと意外と引っかかったのが文字コード設定。今うちの環境はデフォルトの文字コードをEUC-JPに統一しているのでそれに併せてslime-net-coding-systemもeuc-jp-unixにしないと日本語コメントありの*.lispファイルを読み込めない(正確にはREPLでloadしようとすると怒られる)というすげーいやな問題が発生します。
やっとこれで日本語コメントありのファイルを生成できるようになった・・・、っていうかここで今日はダウンきゅー・・・。
投稿者 mak : 03:44 | コメント (0) | トラックバック
2008年9月24日
実践Common Lispを読んでみる(その1)
ついにCommon Lispに浮気することにしました。とりあえず今日は第2章までとそれ以前の問題として環境構築のお話を。
当方の環境:Debian(etch)においてとりあえずインストールするものは
$ sudo apt-get install slime sbcl hyperspec
これで一通りのファイルは取得できます。hyperspecは/root/tmp以下に保存されたので自分のhomeの.emacs.dフォルダ以下に展開しておきました。
続いて.emacs.dの編集
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;slime
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(add-to-list 'load-path "/usr/share/emacs/site-lisp/slime/")
(add-hook 'lisp-mode-hook (lambda ()
(slime-mode t)
(show-paren-mode)))
(require 'hyperspec)
(setq common-lisp-hyperspec-root
(concat "file://"
(expand-file-name "~/.emacs.d/HyperSpec/")
)
common-lisp-hyperspec-symbol-table
(expand-file-name "~/.emacs.d/HyperSpec/Data/MapSym.txt")
)
(require 'slime)
(setq slime-net-coding-system 'utf-8-unix) ;; 日本語利用のための設定(Lisp 環境側の対応も必要)
(setq inferior-lisp-program "sbcl")
(add-hook 'inferior-lisp-mode-hook (lambda () (inferior-slime-mode t)))
(add-hook 'lisp-mode-hook
(lambda ()
(slime-mode t)
(show-paren-mode)
(global-set-key "\C-cH" 'hyperspec-lookup)
)
)
(slime-autodoc-mode)
;; These are the 3 CL implementations that currently work with SLIME/Win32:
;; (Note: Unless you want to try out all 3, you only need one of these functions)
;; CMU Common Lisp - http://www.common-lisp.net/project/cmucl
(defun cmucl-start ()
(interactive)
(shell-command "~/local/bin/lisp -core ~/local/lib/cmucl/lib/user.core -load ~/.slime.lisp&"))
;; SBCL
(defun sbcl-start ()
(interactive)
(shell-command "sbcl --core ~/local/lib/sbcl/main.core --load ~/.slime.lisp &"))
;; GNU CLISP - http://clisp.cons.org/
(defun clisp-start ()
(interactive)
(shell-command (format "clisp -K full -q -ansi -i %s/.slime.lisp &" (getenv "HOME"))))
えー、google-code-prettifyがlispに対応してないので若干コードが見づらいですが基本的にはEmacs による Lisp Hackingをそのままコピペしただけです、はい。
作業は全部Emacs上で行います。基本的な流れとしては- M-x slimeでREPL(対話式のLispバッファ)を起動
- 直接REPLでLispを実行するか、別バッファでLispファイルを編集しコンパイルしてからREPLで評価
- C-c C-q (slime-close-parens-at-point) 必要な閉じ括弧を全て閉じる
- C-c C-c (slime-compile-defun) 関数定義をLispに送信し、評価、コンパイルを行う
- ,(slime-handle-repl-shortcut) コマンドを入力するプロンプトを表示、ここでquitかsayoonaraでslimeを終了
ついでになんとなく画面写真を載せてみる
投稿者 mak : 05:07 | コメント (0) | トラックバック
2008年9月21日
Ruby/Rails勉強会@関西-30メモ
さて、勉強会にはぼちぼち参加しているのですがblogの記事として書くのはずいぶん久しぶりだったりします。とりあえずいろいろ思ったことなど。
まずは石川さんによる信長の野望 on Rails。さーておじさん昨日のうちにノートのVMware上にRails環境そろえたしこれでばっちりだろ、と思ったらrake db:migrateでエラー。確か昨日ちょっとファイル消したのでその影響かな・・と(ファイル消したσ(`ε´) オレバカ)。
仕方ないのでサーバに急遽Railsの環境をそろえて実行、うん、こっちはうまくいったっぽい。配布資料がなかったのが残念です。
で、今回久しぶりにRailsをさわってみて思ったのが「Web上にいいRailsの情報、少なくとも初心者がぱっと見てなんとなくわかる情報がないなぁ」ということでした。そして、一番問題かなと思ったのが「古い情報と新しい情報が混在しすぎ」ということ。たとえば、今のRailsの最新バージョンは2.2.1で、推奨されるデータベースはSQLite3なのに、まだまだWeb上だとMySQLとか多いですし・・・。一番ぱっと見たなかで役にたったのはRuby on Rails 2.0アプリを1分で作る :ITproだったりします。
次はサイロスさんによるニコニコ技術部関西勉強会でネギを振らせてみた。めっちゃ行きたかったんですが、いろいろ都合が合わず泣く泣く断念しました。FPGAとかすげー見たかったです。内容はライブコーディングでMiyakoからネギをふらせるという(何にネギを降らせるかは言わずもがな)。ライブコーディングの難しさはいかにして空白の時間をつぶすことなのかなとふと思ったです。
続いて、Yuguiさんの「Ruby黒魔術入門」。いや、正式にはタイトルはないのですが、勝手にこんなタイトルにしてみました。話はほとんど分からなかったのですが、特異メソッドとか特異クラスとかでていたので個人的にまとめてみました。
class Foo
def hello
print "hello.\n"
end
#クラスメソッド、これはインスタンスを作らなくても
#(つまりnewで作らなくても)表示可能
def self.show
print "this is test sentence.\n"
end
end
Foo.show #1
foo = Foo.new
foo.hello #2
#上で定義したfoo (foo = Foo.new)のみのhelloメソッドを変更する
#元のFooのメソッドは変更しない、このfooは特異クラスとなる
class << foo
attr :name, true
def hello
print "hello. I'm ", @name, ".\n"
end
end
foo.name = "Tom"
foo.hello #3
#このhogeの出力はhelloのみとなる
hoge = Foo.new
hoge.hello #4
#ここで特異メソッドを追加する
def hoge.hello2
print "hello2\n"
end
hoge.hello #5
これを実行すると以下のようになります。
[kazunori-s@wonder60] $ ruby test.rb this is test sentence. #1 hello. #2 hello. I'm Tom. #3 hello. #4 hello2 #5
そもそも、特異メソッドや特異クラスの「特異」とは一般的には、普通と特に異なっているという意味です。わかりやすくいうと、「おまえだけ特別扱いしてやるぜ、ぐへぐへ」という感じです。
まず特異メソッドから。これはクラスのあるインスタンスを特別扱いする(特別なメソッドを追加することで)という意味です。#4ではFooのインスタンスhogeのメソッドhelloを実行してます。ここで特異メソッドであるhello2を追加、つまりこのhogeを特別扱いしてあげます。すると#5ではメソッドhelloの結果がhello2になりました。
次にクラスメソッドです。これはクラスの特異メソッド、つまりクラスを特別扱いするということになります。実際にはどんなインスタンスであっても処理してほしい内容をメソッドとして定義することです。メリットとして、インスタンスを生成しなくてもこのクラスメソッドは実行可能です。それが#1の結果となります。
最後に特異クラス。これは特異メソッドの拡張と思えばいいのかな。特異メソッドはあるクラスに対してメソッドの追加(実は同じメソッド名もOK、その場合上書きされる)が可能ですが、この特異クラス機構を使うことでインスタンスを通じて元のクラス自体を一時的に変更しちゃうという荒技です。#2は元のクラスFooでしたが、#3ではクラスに変数としてnameを追加、さらにメソッドhello内でnameを表示させるようにしました。
ただ、特異クラスは相当に黒魔術らしくあんまり推奨されてないですが、知識として知っておくのは悪くないかなと思います。特異メソッドやクラスメソッドはまだ使い道があるでしょうが、さすがに特異クラスをそうばんばん使う状況はないでしょうし(つーかクラスの設計見直せよ、って感じですが)。特異クラスについてはohai日記なんかが詳しいかと思います。
最後に初級者向けレッスン。今回のネタはもう何回目になるかわからないけどよく見たTDD。さすがにテストもそれなりになれてきました。ただやっぱり思うのは、これをゲームプログラミングに導入するのは難しいのかなと。あと、例外が未だに分かってないσ(`ε´) オレだめすぎ・・・。
******************************************************************
原付で会場に行っていたので懇親会をキャンセルして(四条を原付で彷徨うのは怖すぎなので)、営業再開した「夢を語れ」というラーメン屋に行ってきました。やっぱここのラーメンはたまーに無性に食べたくなる味です。1回食べたら2~3ヶ月は食べようとは思わないけど。
投稿者 mak : 21:11 | コメント (1) | トラックバック
2008年2月17日
EGaLS(仮)、初公開です
さて、ここ最近(約3ヶ月ぐらい)ずっと作ってたソフトがようやく形になってきたのでここらでちょっと公開したいと思います。ソフト名はEGaLS(仮)、正式名称は「Educational Gate-Level Simulator(仮)」です。
取りあえず仮の名前なので正式名は大幅に変わるはずです、っていうか誰か名前のアイデアちょーだいよぉぉ・・・。
![]()
まず、これがメイン画面となります。ソフト名の通り、ゲートレベルの回路シミュレータとなっています。いろいろボタンがありますが、基本的にはゲート等をおいて、「回路テスト」ボタンでテスト、という流れになります。
![]()
これが基本ゲートをおいてテストしている様子です。現在設置できる基本ゲートはAND、OR、NAND、NOR、EOR、NOTの6つです。まぁ3入力のNANDとかNORとか必要な場合は後述するサブサーキット機能で作成することになります。
![]()
基本ゲートをこのように並べて全加算器、FullAdderをこんな感じで作成することが出来ます。図にあるように配線の分岐機能も実装しています(配線はまだまだバグの温床となっていますが・・・)。
![]()
でもって、これがサブサーキット機能です。さっき作った全加算器をこのように1つのモジュール(サブサーキット)にまとめることで同じ回路を複数画面に設置することが出来ます。左が入力、右が出力となっています。ちなみにサブサーキットという言葉は私が普段使っているHSPICEからそのままパクってます(これぐらい、いいよね?)。
![]()
設置できるのは組み合わせ回路だけではありません。このようにD-フリップフロップも設置できます。現在仕様上の制限でマスタースレーブ型のFF、つまりクロックの立ち下がりで値を出力する仕様になっていますが、いずれはエッジトリガ型のFFも準備出来たらなぁと考えています。また、リセットに使っているボタンは押しボタンでクロック動作時にここを押すと値が1になります。
![]()
このソフトの機能として状態遷移図を描画する機能があります。状態遷移図に関する説明は省きますが、図のような状態遷移図を簡単に書くことが出来ます(状態設置ボタンで各状態を配置、画面クリックで矢印を描画)。
![]()
でもってさっきの状態遷移図から制御回路を生成することが出来ます。その制御回路とインクリメンタを2つ設置した回路がこれになります。CLOCKをONにすると、画面下のインクリメンタが1ずつ増加し、9の時点で上のインクリメンタが増加しかつ下のインクリメンタがリセットされます。つまり7→8→9→10となります。ってことでこれで簡単なストップウォッチが出来たことになります。
とまぁざっと機能紹介してみましたが、まだまだバグだらけだったりします(とりあえず最低限動く)。でもって同じ研究室の人からいろいろ言われているのは
- タイトル名がださい
- Verilogはき出せないの~?
いやまぁタイトルについては今後なんとかするとして、Verilogは難しいかもなぁとは思っています。出来たらかっこいいけどね。
というわけで近況報告みたいな物でした。
投稿者 mak : 23:05 | コメント (0) | トラックバック
2007年10月 2日
Simple Slide Show公開!!
さて、前々から公開しようと思ってましたSimple Slide Showをようやく公開しました。
ここからダウンロード出来ます。例のごとくWindows用のバイナリとLinux系のソースの両方を公開しています。
とりあえず、お詫びでも。
当初は7月の段階(びわ湖開発合宿)で公開しようと思ってたのですが、Ruby/SDLのバージョンが1.3.0に上がった時に内部DLLも大分変更されまして、それのチェックに結構手こずってました。でもって気がついたら夏休みでアメリカ行って、若狭湾行って、東京行って、で・・・・、すっかり忘れてまして・・・。
でもって先日のRuby/Rails勉強会で、一緒に開発合宿に行ってた人から「この前の画像ビューア公開しないんですか」と言われてようやく思い出して、なんとか整備して公開、となりました。
とりあえず、自分の欲しかった機能はだいたい実装したつもりです。というか、普段使いながら自分が欲しいと思った機能のみに絞って実装しています。
えー、どんな画像を見ているのかは・・・、お願いだからスルーしようね、ね、ね?
また使ってみて感想とか聞かせてくれるとうれしいです。
工夫した点としては
○zipファイルが混在しているフォルダでも自由にスライドショーが出来る
○(windowsのみ)画像ファイル削除→ゴミ箱を利用、ドラッグ&ドロップでスライドショー開始
○あらかじめ指定しておいたフォルダに分類可能
どー見ても実用性皆無の機能ばっかですが、いーもんいーもん、俺が欲しかったんだもん、o(`ω´*)o。
個人的には一度内部ソースのリファクタリングをそろそろしておきたいなぁとか思ってます。とにかく今のソースはかなりぐちゃぐちゃのスパゲッティなので。
10/02 10:30追記
バグが発覚したので公開を一時中止しています。再公開は10/03に行います。ご迷惑をかけ、申し訳ありません。
10/03 00:30追記
新しいバージョンを公開しました。バグったのはexeの方で、特定の環境で動作しないというものだったのですが、これてたぶんどの環境でも問題なく動作すると思います。
投稿者 mak : 02:47 | コメント (0) | トラックバック
2007年9月30日
Ruby/Rails勉強会@関西-19参加メモ
さて、たまにはプログラマっぽいことも書いてみようということで9/29に京女であったRuby/Rails勉強会の記録でも書いてみようと思います。
とはいえ、マジで最近プログラムしてないのでなんかものすごく新鮮でした。
まず、いきなり遅刻しました・・・、なので西本さんの「ScalaからみたRuby」は何にも聞いてません。一応いいわけすると、目の前で高の原行きのバス(1時間に1本)が行きました。仕方ないので北生駒→生駒→大和西大寺→高の原経由で京都という最悪の遠回りルートになってしまいまいて、結果として1時間遅れました・・・。詳しいことはここなんかを参考にどうぞ(ってyharaさんも遅刻して聞いてないんだけど(-。-;))
次は石川さんによる「Railsを教える順序」、タイトルにはRailsとありますが、実際にはRailsだけでなくプログラミング全体についても言及していました。例えば、情報系ではまず最初にCを教える場合がほとんどだけど、はたしてそれっていいのかなど。Ralisの場合だと、MVC(Model-View-Controller)を先に教えるか、それともプログラムの1つとして教えるか等々。個人的におもしろそうだなと思ったのはRails検定(みたいなもの)の導入。Rubyの資格試験も始まりますし、これにあわせてRailsでも何かするのもおもしろそうかもしれません。
って、この文章を書いている俺も実はRailsをほとんど触ったことがなかったりしています。Railsをよくわかってないというのもありますが、個人的にRailsをわざわざ使う、あるいは使ったらいいかもという機会が全くないんですね。そもそもWebアプリケーションに携わる、とかいう状況が全然ないです・・・。なんていうのかなぁ、こう、普段スタンドアローンでしこしこプログラムを書いているプログラマが触手を動かしたくなるような何かがあればいいんですけど。
えー、閑話休題。次はokkezさんのるりま進捗状況報告。簡単に説明すると、るりまとは「Ruby リファレンスマニュアル」で現在多くのスタッフがこのマニュアルの刷新作業を行っています。内容としては現状+関係者にはっぱかけまくり+スタッフ募集でした。とりあえずここを見てほしいとのことです。
そして氏久さんによる「入門Kagemusha - 影武者」。スライドに大量に仕込まれてたネタはまぁ(つ´∀`)つ。影武者とはMock機能を実現するためのライブラリです。って、最初Mockって何?とか思ってました。いろいろ説明を聞いてて、なんとなく持ったイメージでは「普通のオブジェクトに一時的に別のメソッドの動作をさせる」なんですが、まぁこれで大きく間違ってはないでしょう。例としてあがってたのは、Fixnum#to_sでした。通常なら数値の文字列が帰ってくるのですが、この影武者を使うことで一時的に(つまり、ユーザが希望した区間だけで)その動きを変更する、例だと、どんな数値に対して"ujihisa"という文字列を返すものでした。うーん、うまく使うとすごく便利そうなんだけど、ぱっと使い道が思い浮かばないですなぁ。
最後は恒例の初級者レッスン。めんどくさかったので4つある課題のうち1つしかしませんでした。しかも全然継承とか使わずに(;´Д`)。だって、継承使わなくても普通に書けるし・・・。
とまぁこんな感じで勉強会が終わり、プリンセスラインで酔心へ。なんか初めて地下2階へ誘導されました。でもって今回の部屋が・・・「なに、この細さ・・・」。対面のテーブルが延々と横に並ぶ席ってのを初めて見ました。メニューはいつも通り、のはずなんですがアイスってなくなったんでしょうかなぁ、楽しみにしてたのに、あの抹茶アイス・・・。
その後は京都駅の地下のカフェでまったり2次会。とりあぜずウィルコムの歴代のZERO3シリーズとipod touchが全部そろったのはさすがというかなんというか・・・。
久しぶりにプログラマ気分を味わえた1日でした。
投稿者 mak : 01:43 | コメント (0) | トラックバック
2007年5月22日
Haskell勉強会#4メモ記録
なんか、blogに書くまでが勉強会みたいなのでちょっといろいろ書いてみます。ただ会場にいるメンバの3分の1がどうみてもRuby勉強会のメンバだったのはさすがというかある意味というか・・・。
まず、Haskellがなんぞやという人はごめんなさい、興味ある人は適当に各自で調べてください。LispやSchemeと同じ関数型言語ですが括弧がそんなに出てこないので多少はとっつきやすいかと思います。
今回は6.1から6.6までを主に読み進めました。
まずは復習というか基本的なことから、ということで関数の読み方を。
(&&) :: Bool -> Bool -> Bool
translate :: Char -> Char
たとえば、上の&&は第1引数がBool、第2引数もBool、返り値がBoolである関数、下のtranslateは第1引数がchar、返り値がcharであるような関数を示している。
公式には「関数名 :: 第一引数の型 -> 第二引数の型 -> ‥‥ -> 返り値の型」となっている。まぁ忘れやすいというかとにかくぱっと見て思い出せないと思う。
また、true && y のように書かれていた場合、yに関しては評価されない。
さらに自分で演算子を定義することも可能。
(^-^) :: String -> String -> String
(^-^) x y = x ++ " Love " ++ ymain = print $ "I" ^-^ "ruby"
これは[^-^]という演算子を自分で定義した例です。この例では2つの文字列を引数にとって、その間にLoveという文字列を挟むというものです。演算子として使える記号は[^]、[-]、[%]、[+]、[-]などなどです。多用しすぎるといろいろ文句言われそうな気がしますが。
普通の関数の場合だと前置記法で順番が関数、引数(f a b)となり、演算子だと中置記法で順番が引数1、演算子、引数2(a + b)になる。しかし、括弧をつけると中置記法を前置記法に変換( (+) a b)でき、また関数もバッククオートで囲むと中置記法になる(a 'f' b)。
ちなみに「中置記法」は「ちゅうちきほう」と読むらしいです。
次は数値型について。
基本はInt型とInteger型の2つがある、Int型は32ビット、Integer型は大きさが任意に決めることが可能。しかし2つを同時に計算はできない。
Prelude> ((300::Int) * (30000::Int)) 9000000Prelude> ((300000::Int) * (300000000000::Int))
-305594368Prelude> ((300000::Integer) * (300000000000::Integer))
90000000000000000Prelude> ((300000::Integer) * (300000000000::Int))
:1:22:
Couldn't match expected type `Integer' against inferred type `Int'
In the second argument of `(*)', namely `(300000000000 :: Int)'
In the expression: ((300000 :: Integer) * (300000000000 :: Int))
In the definition of `it':
it = ((300000 :: Integer) * (300000000000 :: Int))
一番上がInt同士の計算、その次がオーバーフローを起こしたIntの計算、その次がInteger同士の計算、最後にIntとIntegerの計算です。ちなみに型宣言(::Intとか)を書いてない場合はIntegerになります。
後の型については省略、っていうかなんにもメモってなかった。
1つ注意しておくのはchar型とstring型は異なるということ。つまり1文字だとchar型、2文字以上だとstring型で別の型になる。
最後にタプルとリスト。
まず、リストについて。要は配列と思ってもらっていい(と勝手に考えている)。ただRubyなどに慣れている人間が1つ気をつけることはリストの中に格納できるのは同じ型のみ。一方タプルは異なる型でも格納できるという利点を持つ。
以下、はまりそうなところを。
zip :: [a] -> [b] -> [(a,b)]
2つのリストの各要素をつないだタプルのリストを作成、となるけどこの際aとbの長さが異なる場合は短いほうに合わせてくれます。
Prelude> zip [1, 2, 3, 4] ["Jan", "Feb", "Mar"] [(1,"Jan"),(2,"Feb"),(3,"Mar")]Prelude> zip [1, 2, 3, '4'] ["Jan", "Feb", "Mar"]
:1:6:
No instance for (Num Char)
arising from the literal `1' at:1:6
Possible fix: add an instance declaration for (Num Char)
In the expression: 1
In the first argument of `zip', namely `[1, 2, 3, '4']'
In the expression: zip [1, 2, 3, '4'] ["Jan", "Feb", "Mar"]
unzip ::[(a,b)] -> [[a], [b]]
タプルのリストをリストのタプルの変換、ですがこの場合はタプルの中の要素数は必ず2個です。
リストについてはこんだけわかってればいいと思う。
[1..7] = [1,2,3,4,5,6,7]
['a' ..'e'] = ['a' , 'b' , 'c', 'd', 'e']
[1..] = [1,2,3,4............] 無限リスト
[1,3..] = [1,3,5........] 奇数を含む無限リスト
最後に内包表現。ここがある意味一番数学っぽい。例えば[abs x | x <- xs]のような表現があったとする。これは「リストxsの各要素について絶対値を返す」という意味だけど、数学的に表すと{ f(x) | ∀x ∈ {1,2,3,4,5,6} }みたいになる(この場合、リストxsの各要素が1から6までの値、関数fが絶対値を取る関数)。
これでかなり納得できたのはやっぱり理系人間だからなのかな。
というわけで今回はここまで。
投稿者 mak : 22:51 | コメント (0) | トラックバック
2007年3月 3日
熊カレー体験版公開!!
さてさて、1ヶ月以上ここを更新出来てませんでした。いやはや、もうすっかり春ですね。あと1ヶ月ぐらいで桜ですね、宴会ですね、酒ですね。
そこかよ!!!
というわけでようやく新しいバージョンの熊カレー体験版を公開しました。
熊カレーのページ
今回新しく公開したバージョンはVer1.01(Trial Ver)となっています。体験版なのでStage2-1までプレイ可能です。あと、VSステージも1つのみですがプレイ可能となっています。
ぜひお楽しみください。
おまけ、世我流立体化プロジェクト
オリジナルの世我流
![]()
これが実際にゲームで使用されているオリジナルのドット絵です。いやまぁ、個人的にこのジャンプしているのが一番お気に入りです。
世我流 in dot's
http://sorakaze.net/blog/archives/2006/11/post_69.html
![]()
で、上記のドット絵を元にdot'sのパーツをいろいろ買ってきて組み立てたのがこれ。これもまぁいろいろ思い入れがある一品です。っていうか世界でたった1つだけのオリジナルです。
世我流 in favicon2dots
http://favicon2dots.com/show/5c1b77f8ee9b8e2c2ef68a0b2f2a034b78daeea9
![]()
さて、上記のドット絵をそれっぽくdots風にしたのがこれ。確かにそれっぽいです。青色で全部埋めたらもっとそれっぽくなるんだろうけど、もともとdot'sって単色でピンをばら売りしてないからなぁ。
世我流 in 1024人応援団!
1024人応援団!
![]()
最後に人間がドットになったらきっとこんな風になるんだろうという一枚。甲子園でPL学園とかがきっとやってくれると信じてます(絶対しねー)。
投稿者 mak : 02:01 | コメント (0) | トラックバック
2006年12月30日
熊カレー出来ました!!!
というわけで熊カレーのVer1.00が出来ました。いやー、やっとここまで来たって感じです。それではまだ未公開だったStage3のスクリーンショットをいくつかどうぞ。
このゲームのほかにいろいろ入ったゲーム詰め合わせをコミックマーケット71で販売します。
12月31日(日) 西"い"25aです。
って明日やーん(ちなみにこれを書いているのも東京の某所です)。
お暇な方は是非大晦日の有明にどうぞ。
投稿者 mak : 22:05 | コメント (2) | トラックバック
2006年11月27日
学園祭の裏側で
さて、学園祭でどのような展示が行われてたのか、たまにはそんな写真でもアップしてみようと思います。
今回、熊カレーはこの写真のようにプロジェクタを使用していました、画面には映っていませんが使用したマシンはKMC所有のLinuxマシン(Debian)です。後、画面みて分かるように実は対戦モードなんてものも追加しました。ホントにおまけのつもりで追加したのですが意外と好評でした。
Linuxマシンだからといってキーボードじゃないとプレイ出来ないということは無く、このようにUSBコントローラを2つ用意しています。1人プレイの場合は1コン(これも懐かしい響きだな、ヲイ)で、対戦の場合は両方のコントローラを使用します。ちなみにこの2コンのマイクは遊びではなくきちんと動きます(Skype用のマイクとして)。ちなみにこのコントローラにはLボタンとRボタンも密かにあったりします。まぁこれは時代の流れでしょうねぇ。
後、右の説明文を読んで貰えればわかりますが会場ではStage2-1までプレイ出来ますが、会場で販売していたNFCD(今年ちょっと実験的に販売してみた)でがStage4までプレイ出来ます。
で、さらに会場にはこんなものも置いていました。私makが制作した、熊カレー主人公、山田・スティーブン・世我流の1/1スケールのフィギュアです。元ネタはdot'sなんですが、自分で色を計算し、その色を持つドッツを4つほど購入し組み立てた代物です。
会場の外の雰囲気はこんな感じです。ちょうど紅葉が色づき始めたころでした。たまにはこんな上からのアングルもおもしろいでしょ。
おまけ、今年のアニ同(アニメーション同好会)の看板です。あえてこっちを持ってきたことに心より拍手を送りたいです。にしても胸でかいなぁ(;´Д`)スバラスィ ...ハァハァ。
最後のオチがこれかよ・・・・。
投稿者 mak : 22:40 | コメント (0) | トラックバック
2006年11月26日
熊カレーまだまだ作成途中
さて、ここで突然ですが熊カレーのStage4を全世界に先駆けてここでちらっと公開したいと思います。
えー、諸事情により一部画像にモザイクが入っている点に関してはご了承ください。というか最終ボスの画像なんて堂々と公開出来ませんって、さすがに。
まぁ分かるとおり最終ボスは○○なのですが、○○のくせに○○したり○○が出来たり○○と何かとこざかしいです、つーか勝てません、まじで強いです。そりゃ最終ボスですからそれぐらい強くなくてはおもしろくないのですが。
しかしまぁ結局このStage4をNFまでの約20日強で仕上げたってのは1つの奇跡ではないでしょうか(いやまぁ俺が卒論そっちのけで開発してましたが)。でもってC71までには残りのStage3を仕上げて完成版として販売出来ればと思っています。
あと少しです。
投稿者 mak : 22:13 | コメント (0) | トラックバック
2006年11月19日
オープンな世界で何を思う(その2)
Ruby関係はここでまとめて書いておこうかなと。やっぱRuby人気高いよ、ほんと。
まず、Rubyアプリケーション大集合ということでRuby関西のおなじみのメンツによる発表です。
内容としては
RubyのWebアプリケーション
---発表者はかずひこさん、実はこの時点ですでにフランス行きが発表されてました(オフレコで)。これからもフランスでがんばってほしいものです。
Ruby/PureImage、DRUM
---Ruby/PureImageはだいぶ前にRuby関西で発表されてたネタです。やっぱり純粋にRubyのみで動くってのがほんと売りだなぁと(Ruby/SDLはSDL関係のライブラリインストールがなにかと面倒だったりする)
Miyako
---発表よりあのファミコン型コントローラを使ってたことに感動しました。いやー、もし知らなかったら教えてあげたほうがいいかなぁと密かにおもってたのですが・・・・、うーんさすがです。
遊びに使えるRuby(ThinkPadの傾きセンサを使った遊び)
---あるいみThinkPadユーザ専用ですが。これは前に何度かRuby勉強会後の懇親会で見かけたのですが、やっぱりおもしろそう。まずはThinkPad購入からかな。
RushCheck+RSpec紹介
---いまだかつて味わったことのないプレゼンでした。というか何?、みたいな。詳しい内容は次回のRuby勉強会@関西で発表されるようなのでそちらに期待しましょう。
まぁ発表はこんな感じだったんですが、如何せん人大杉、じゃなくて人おおすぎ。定員50人ぐらいの小さい部屋にどうみても100人ほどはいってました。ここまでRubyが人気だったのかとびっくりです。
あと6階のステージでscim-rubyの紹介。これはAmetPerlのscim版といえばわかる人にはわかると思います。普通に1+2と入力して変換ボタンを押すと3と出てきたり、あとはRubyの構文が使えます。
個人的に思ったのはRuby/SDLの例文というか仕様が出てきたらいいのになぁと。最近バイトでVB.netを使っているのですがやっぱりあのインテリセンスは慣れるとついつい他の言語でも要求したくなってしまいます。
で最後は懇親会。当初は参加人数が20人もいなくて「あー、めずらしく平和な飲み会だなぁ」と思ってたのですが当日参加の人がどんどん増えていき気が付いたら結局いつもの飲み会でした。なんかいろいろと話を聞いてたような気がします。ほんとは2次会どっかに行きたかったんですが周りになんにも店がないようなとこだったのでそのままお開きに。
でもって帰り俺だけ電車乗り損ねたのはここだけの秘密です、(´Д⊂グスン。
投稿者 mak : 22:05 | コメント (0) | トラックバック
オープンな世界で何を思う(その1)
今年もこの時期がやってきました、関西オープンソース2006です。去年までは大阪産業創造館で行われたのですが、今年は会場を大阪南港ATCのITM棟6階に会場を移して行われました。
来年だったら電車一本でここまで直通で来れるのに、と思いながら会場へ到着。がしばしそこで迷う。だって建物広かったし。でもなんとか会場へ到着、にしてもなんともでかい建物だなぁと。
まず聞いたのが池上さんによるプログラミング言語Haskellの紹介。去年は途中でHaskellを抜けてRubyのほうへ行ってしまったんですが今年は最後までいました。内容としては前半15分ぐらいがHaskellの紹介、後半30分ぐらいがGHCネタでしたが・・・
ごめんなさい後半思いっきり寝てました。
だって素人が聞いても全然さっぱり意味がわかんなかったです。ただ今年に入って間違いなくHaskellが広がってきているなぁと。特に日本語の本が2冊、そのなかでも青木さんの通称ふつける(正式名称はふつうのHaskellプログラミング)が初心者にはお勧めらしいです、っていうか俺も欲しいんですがまだ購入には至ってません、うーん、買わねば。
続いて6階のステージでS600.orgの発表。いやまぁこの発表者の坂下さんがサークルの大先輩にあたる人だってのもあるんですが(ちなみにこの1週間後の11/25にもサークルのOB会でお会いしました)。
このS600.orgってのはOOoをベースにしたネットワーク共有型表計算ソフトというものですが、会場ではおもに開発の裏話をされてました。例えば、OOoはソースファイルは6万個、約1GB、.hxxファイルが12万行、.cxxファイルが48万行、.javaファイルが63万行でコンパイルに丸一日かかる。夕方帰宅時にコンパイルを初めて、朝来てもまだ終わってないとか。しかも開発スタッフがドイツ人らしく、コメントにドイツ語はまだ分かるけど変数にすらドイツ語があるとか。まさにドイツ人の科学力はなんたら、らしい。
お次は会場の話でも。今年も例のごとくメイドさんがいました、いやー、あういうのを見ると癒されますね、ほんと。それと今年はあんまりCDとかもらえませんでした。XenのCDとか配布されてたっぽいのですが俺が会場についた時にはもうWin版はなくなってました、(´・ω・`)ショボーン。
会場で記憶に残ったのをいろいろと。
Pythonの人といろいろしゃべって来ました。Pythonも興味ある言語の1つではあります。特にゲーム開発という面では海外ではPygameというSDLをPython上で使う為にライブラリがかなり人気なのですが日本ではほとんどはやってないよねぇと。未だにゲーム開発となると日本ではDirectXが幅をきかせているのはいかがなものかとRuby/SDLユーザは思うわけであります。
もじら組のひとになんとかFirefox1.5のエクステンションが2系でも使えないか聞いてみたけど(俺が普段使っているエクステンションが開発を停止していて2系に対応してない)やっぱ開発者に頼んでなんとかしてもらうしか方法はないそうな。
それとRuby関西もいつも通りブースを出していました。今年はRailsのデモとMiyakoのデモが行われてました。Miyakoはなんか気が付いたらシューティングまで出来るようになっていました。すげー。
あとどうてもいいことなのですが、先輩と話していてふと出たのが「ここって有明と似てねぇか」。いわれてみればあの有明の物寂しさとどこか似通った雰囲気があるなぁと。ただ有明の場合はもっと人がいっぱい(オタばっかだけど)。
最後に、ITProの記事でも載せておきます。
コミュニティが育てる・作る言語,フレームワーク,ERP,SNS---「関西オープンソース2006」レポート:ITpro
投稿者 mak : 20:26 | コメント (0) | トラックバック
2006年11月 2日
熊カレー、Stage2できました!!
さて、熊カレーですが順調に進んでいます。なんとかStage2を完成させました、いやー、ぎりぎり10月中に終わりました。
えー、前に書いたこのゲームの紹介文では「横スクロール」となってましたが、見てわかるようにStage2は縦スクロールだったりします。いやまぁトラブルというかいろいろややこしい問題でまくりだったんですが。やっぱ縦方向のスクロールは難しいす。
当初なら院試が終わる8月ぐらいから開発を再開したかったのですが、いろいろあって結局再開は10月からとなってしまいました(まぁご存知のとおりその事情はこのblogにも書いてますけど)。
目標としてはNFまでにStage4(Stage3は間に合わないのでとばします)を作成できたらなぁと今必死こいて作ってる最中です。
乞うご期待!!
はい、がんばります・・・。
投稿者 mak : 18:01 | コメント (0) | トラックバック
2006年10月 8日
第12回Ruby勉強会です
というわけでもう12回目の勉強会@京女です、今回も例のごとく雨がふったりやんだりという微妙な天候でした、誰だ雨男は(どうやら俺らしいです、すんません)。
まずは初級者向けレッスンの前半、ペアプロによるTDDの説明でした。TDD自体は1年前ぐらいの勉強会で聞いたことあるんですが、それ以来全く使ってないす(理由は後述)。にしても、ペアプロというより素人の漫才にしか見えなかった、いや、内容はわかりやすかったけど。
まずはRubyリファレンス刷新計画、話し手はわざわざ東京から来てくださった青木さんです。プレゼンがとてもおもしろかったです。
で、現状のリファレンスに対する10個の不満が↓
01.書きかけのドキュメント、足りないドキュメントがある
02.全体の統一感がない
03.文章の質が低い
04.複数の Ruby バージョンの記述が混在していて読みにくい
05.デザインが気に食わない
06.メソッド検索がヘボい
07.ライブラリによるメソッドの追加、上書きに対処できない
08.記述形式がファイルごとにバラバラ
09.内容の自動化が難しい
10.ドキュメントのファイルに直接アクセスできない
私たちみたいな一般ユーザからみれば気になるのが01や02、06やら08だと思います(03もそれなりに問題ではあるんですが)。私は個人的には今のリファレンスマニュアルはほとんど使ったことがない(大抵はたのしいRubyで済ませてる)んですが、その理由はやっぱり使いづらいんですね、これが。あと、異常に重いときがある(いつまで経っても表示されない)。なんで使いづらいかってのを考えると01や02、06なのかなぁと。なので新しいリファレンスマニュアルはそのあたりをなんとかして欲しいなぁとふと思いました。
次は西山さんによるnadoka。いやー、nadokaはずっと使ってるんですがbotで遊んだりということはなかったのでbotの説明は新鮮でした。ただ下手に使うとうざいだけなのでどう使うかが多少悩みどころではあるんですが。あと久々にバージョンがあがってたんですね(Ver0.7.0)、しらなんだ。それとrabbitでプレゼンしている人を久しぶりに見ました。
次は小波ゼミの学生による発表。内容がちょっと専門外で分からなかったんですが、いろいろ小波先生につっこまれたりフォローされたりしてるのを見て、「ああ、上の人が口を出すのってよくある光景なんだなぁ」としみじみ思いました。今月末には自分の研究室でも発表があるんですが、きっと同じような状況になって((((;゚Д゚)))ガクガクブルブルするんでしょうなぁ、俺。
最後に級者向けレッスンの後半、実際にテストを書いてみます。一応俺はなんか上級者らしく、一緒にペアプロをしてました。でも例外発生のところでつまづきました。相手の方ごめんなさい、だって例外クラスなんて使ったことないもん。あと、「なんでこんなめんどくさいことするんですか」とさんざんつっこまれたんですが、「まぁ今回はそういうネタなので」と必死になだめながらペアプロしていました。そりゃそうだろ。普通はソースをある程度書いてからその結果をみてきちんと動いているかを判断するのに、いきなりまともな結果だけ返すようなソースを書いたんじゃ「なんじゃこりゃー」と思いますわな。
別の上級者と話してたんですが、結局TDDがうまくいく事例ってのははじめから仕様ががちがちに決まっていて、あとはその仕様をきっちり満たすように作っていく場合ぐらいじゃないかと。いや、これは俺の個人的な予想であって全くの的はずれかもしれませんが。なのでゲーム開発などの場合にはやっぱTDDは使えないだろうと。そもそも仕様が全くの不確定ですし、ゲームだったらテストなんてしなくても結果を直接表示すればいいだけのことですし。
******************************************************************
懇親会はこれまた例のごとく酔心で。今回は前回の反省を活かしてちょっと食べる量を減らしました。あととある人がC70のKMCDを持ってきていました。購入していただき、本当にありがとうございます。熊カレーがんばります。あー、偽キッチンは・・・、まぁwebにUPしたのでそれで許してください。
あと、なぜか抹茶アイスを3つほど食べたのはここだけの秘密です(おいしかったんだもん)。
3次会もこれまた例のごとく駅前の喫茶店で。そこで初めてUbuntuLinuxを見せてもらいましたがなかなか出来がよさそう、また暇があったらVirtualPCに入れて遊んでみたいす。あとMiyakoのプレゼン機能がなかなかかっこよかったです。これなら普通にプレゼンとして使えるかも。
まぁ何はともあれ発表した皆さん、お疲れさまでした。
投稿者 mak : 12:13 | コメント (0) | トラックバック
2006年9月 9日
Ruby/SDLサイト立ち上げました!!
いやまぁ、ぶっちゃけ立ち上げたのは今年の1月で更新し始めたのが8月からってなわけなんだけどね・・・・。
つーか今まで何してたんだYO!!、俺。
いやまぁ、いろいろとRuby/SDL関係のネタというかいろいろ自分がゲームを作りながら見つけたネタなんかを書いてます。
一応コンテンツとしては、Ruby/SDLで作った作品(今のところ偽キッチンと熊カレーはUPしてます。またそのうちキッチン大往生もUPします)やテクニック(主にExerb関係)、あとRuby/SDLとは関係ない、Rubyでかいたちょっとしたプログラムなんかもぼちぼち公開してたりします。
最近力を入れているのがこのSimple Slide Showです。もうほぼ実装したい機能は実装出来た(あと2,3追加しますが)ので9月中には公開出来るかと。
ちなみにこのサイトにある「ファイル名、フォルダ名に日本語がある場合、たまにスライドショーが実行出来ない」についてですが、例えば鬼畜の「畜」です。
・・・・・、フォルダ名になぜ「鬼畜」という文字があるのかについてはお願いですからつっこまないでください。
こんなんだから「変態バトン」で検索すると俺のblogが1位と2位を独占、なんてことになるんだよなぁ、(´・ω・`)
投稿者 mak : 20:03 | コメント (0) | トラックバック
2006年8月22日
C70のKMCDを購入された方へのお詫び
C70において、こちらのミスにより動作しないゲームを配布してしまいました。商品を購入された方に対してお詫び申し上げます。
現在こちらで修正したのを公開していますので是非ダウンロードして頂ければと思います。
今後2度とこのようなことのないように徹底します。
------------------------------------------------------------------
えー、ここからはちょっと楽にいきます。
具体的には、タイトル画面の先のゲーム画面に移行しない、その手前で落ちるという、もうあってはいけないような致命的なエラーです。exeを作った時に動作確認はしたのですが、タイトルが出た時点で大丈夫だと思ってそのままC70で配布、そのまま1週間ぐらいしてふとなにげなく偽キッチンをプレイしてみて
(;゚д゚)ァ.... マジ? (゚┏Д┓゚ ;)
というわけです。
ちなみにゲーム画面に移行しない原因はロードしていないサウンドファイルを引数として読み込んだからです、コミケ前にちょっとソースの修正をしたのが原因です。
しかし気づかなかったら1ヶ月ぐらい普通に放置していたと思います、((((;゚Д゚)))ガクガクブルブル。
投稿者 mak : 00:19 | コメント (0) | トラックバック
2006年7月23日
FreeBSDでRuby/SDL
なんとなくふと気が向いたのでVirtualPCを使ってFreeBSDをインストールし、そこでRuby/SDLを動かしてみました。
ええ、もちろん試験勉強からの現実逃避ですよ。
orz
試した環境はVirtualPC2004+FreeBSD6.1-RELEASE-i386です。
1,まずXとports、CVSup、 portupgradeが動いている環境にしてください。具体的な作業については各自で調べてください。俺が参考にしたサイトは
FreeBSD 6.0/i386 note
FreeBSD Memo
などです。
2,次にSDL関係をインストールしていきます。
# portinstall sdl12
# portinstall sdl_image
# portinstall sdl_mixir
# portinstall sdl_ttf
これでSDL本体、sdl_mixer、sdl_image、sdl_ttfがインストールされます。この当たりでおそらくfreetype2やらsmpegなどもインストールされると思います。
3,次に、portsにないSGEをインストールします。これが一番大変でした。
最初に取ってきたソースに変更を加えます。具体的にはsge_tt_text.cppにおいて
#include <freetype/freetype.h>
↓
#include <ft2build.h>
#include <FT_FREETYPE_H>
に書き換えます。
次にMakefile.confの中にあるsdl-configを全部sdl11-configに書き換えます。
そして、通常ならここでmakeを使ってインストールするんですが、FreeBSDは特殊なmakeを使っているのでここではgmakeというコマンドで実行します。
最後に/usr/local/include/SDL/の中にいろいろファイルがインストールされていますが、それを /usr/local/include/SDL11/にコピーしてください。
4,次に、音関係のセッティングをします。なぜか初期設定では音のデバイスが見つからなかった(kldstat snd_driverでも何も起こらなかった)のでOSS、Open Sound Systemをインストールします。公式サイト、4Front TechnologiesからFreeBSD6.1を選んでインストールします。デバイス選択画面ではSoundBlaster16(どうやらVirtualPCがそうなってるらしい)を選択し、後は適当に選んで(このあたりよく分かりません)、テストを行うと、おお、確かに音が鳴っている。ちょっと雑音がするけど。
でもって、インストール終わったあとは
#/usr/lib/oss/bin/soundon
で起動しておいてください。
5,やっとここでRuby/SDLのインストールです。これは
#portinstall ruby18-sdlで終わります。ruby-sdlではないので注意。
6,お疲れさまでした。これでおそらく起動出来ると思います。ちなみに私はこんな画面がでました。
FreeBSDで動くRuby/SDLゲーム
ネタバレ防止の為一部モザイクを書けています、その点はご了承ください。
後、俺の環境では起動時に[Couldn't set audio blocking mode]というエラーが出ます。仕方ないので音関係を全部切って実行するようにしています。
というわけでなんとかFreeBSDでもRuby/SDLが動くようになりました。ただこれ以上はしばらくはFreeBSDにはさわりたくないです。コンパイルだけでものすごく時間かかるのはつらいっす(Firefoxで4時間ぐらい)。
7/25 いろいろ表示がおかしかったので修正
投稿者 mak : 02:54 | コメント (0) | トラックバック
2006年7月17日
Exerb的コネタを一つ
さて、Exerb4.0.0でバイナリ、画像、データベースなどのデータファイルを実行ファイルに結合出来るようになったのでちょっとサンプルを作ってみました。
最初、「実行ファイルに格納されたfilenameに一致するファイル名を持つデータファイルをStringIOオブジェクトとして取得します。」の意味が分からなかったんですが、いろいろ試行錯誤してなんとか動く物が出来るようになりました。
Picarray = [["change.wav", 8864], ["circle.bmp", 196662], ["kmc.bmp", 97590], ["sample.txt", 26]]#datファイルから各ファイルを生成
def readDatbinary = []
#ExerbRuntimeが定義されている場合はそのStringIOを取得、そうでない場合はFileを開きます
If defined? ExerbRuntime
#exeファイルではこちらが選択されている
iofile = ExerbRuntime.open("picdata.dat")
else
#ruby combine.rbではこちらが選択されている
iofile = File.open("picdata.dat", "rb")
end#datファイルから各ファイルをサイズ分読み込む
Picarray.each{ |pic|
temp = []
temp << pic[0]
temp << iofile.read(pic[1])
binary << temp
}
iofile.close#各ファイルを保存する
binary.each{|binarydata|
tempfile = File.open(binarydata[0], "wb")
tempfile.write(binarydata[1])
tempfile.close
}end
えー、ソースにも書いてますが、Exerbで1つにまとめている場合はExerbRuntime.open("picdata.dat")
でStringIOオブジェクトとしてpicdata.datファイルを取得し、通常の場合(コマンドプロンプト、及びLinux環境)ではFile.open("picdata.dat", "rb")で取得しています。後は普通に必要な大きさに切り分けているだけです。
上記サンプルをまとめたのがこれです。
Exerbサンプルプログラム
投稿者 mak : 03:20 | コメント (0) | トラックバック
2006年7月16日
第11回Ruby勉強会です
というわけで第11回の勉強会です。今回はどうしても聞きたかったExerbの中の人のお話です。
Exerbとは通常のRubyファイルをexe形式にしてwindows上で実行出来るようにしたもの、KMC的にはRuby/SDLで作ったゲームをExe形式にする為のツールです。これがないとwindowsユーザはゲームしてくれませんからもう必須です。
実は土曜日の朝、ちょっと調べてみたらExerbのVer4系が出ていることに気づいてあわててインストールしてみました。使ってみて、もうこれでほぼ完成かなーと思いました。かゆい所に手が届くようになった(exerb.batのおかげでコマンドプロンプトからexeファイルが楽に作れるようになった、アイコンが設定出来るようになった)。懇親会で作者のYuyaさんといろいろ話をしてみたところ、これで一通り出来たのであとはRubyのバージョンアップに合わせてコアファイルを更新していくぐらいだとか。
まぁ欠点としてはexeファイルのサイズが大きい(今作っているゲームは1MBぐらいですが、昔のキッチンなどは役3MBありました)ということと、forkなど一部動かない機能があるとか。実行ファイルが大きいといっても最近のパソコンの性能からしてみれば1MBぐらいどーってことないと思います。
次はRRSE、これまた発表者は先輩のohaiさんです。emacs上でRubyのリファレンスを表示させるという機能。個人的にはxyzzyで動いたら便利そうだなぁと思ったのですが、どうやらemacsとxyzzyはlispが異なるとのこと(emacsはemacs-lisp、xyzzyはcommon-lispとか)。うーん、windowsユーザにとっては試練だなぁ。
そしてcuzicさんによるRubyクイズ、初心者がはまりやすいRubyの落とし穴をいろいろ解説していました。といってもその間ずっと内職してました(ゲームの改良に決まってるじゃないすか!!!)、また後で参考資料みて勉強します。
次は川端さんによるライトニングトーク: アジャイルドー えっくすぴーの森。高橋メソッドによる超高速プレゼンでした(でもぴったし5分で終わったのは素晴らしい)。9/30に大阪でXP祭りが行われるそうで、その宣伝も兼ねてました。ちなみに会場はワッハ上方・・・・、エッ? (;゚⊿゚)ノ マジ? (まじです)
最後にいつもの初級者レッスン。なんか気が付いたら上級者ということにされ他の人と新しいEnamerateモジュールの実装に加わりました。当初考えていたのは配列の要素をランダムに取得するというものでしたが、いざ実装してみるとyield使ってねーということになってあわてて追加したのが「ある閾値以上の値の中で」という一文。うーん、やっぱyieldはどうも苦手だ。
*********************************************************
懇親会は例のごとく酔心で。なんか久しぶりに酔った、というより食べ過ぎてお腹痛かった・・・、次からは気をつけますorz。でもなんか量多かった気がするんですが・・・。
3次会は駅前の喫茶店で。にして30人ぐらいでたむろするこの集団って一体。でもまぁいろんな人のお話が聞けました。最近のインターフォンの進化にびっくりしました(Rubyと全然関係ないやん!!!)。
でそのまま帰りましたが、途中祇園祭の様子見に行こうとしてあまりの人の多さに泣きそうになりました、ヽ(`Д´)ノウワァン。
投稿者 mak : 20:01 | コメント (0) | トラックバック
2006年7月 1日
新プロジェクト進行中!!
という訳で、本家の方にも書きましたが現在進行中のプロジェクト紹介です。まぁ想像つくと思いますが、ちびちびと裏で新しいゲームを作っています。
えー、見てもらえれば分かるように今までのシューティングでは無くて横スクロールの2Dアクションゲームです。主人公のアクションはスクリーンショット見てもらえれば分かるようにジャンプと爆弾を投げるです。
でもいろいろこの爆弾が便利でして、2枚目みたいに上に乗ることも出来ます。この爆弾を駆使して前に進んで行きます。
現在の進行度はこのStage1が完成したところです。開発は一端ここで終わって、再開は俺の院試試験が終わってからとなります。
また、このゲームはC70、コミックマーケット70の京大マイコンクラブ(3日目 た”ブロック 01a)のブースで配布します。制作言語は例のごとくRuby/SDLです。なので対応プラットフォームはいろいろです。配布内容としてはexeファイルとソースの両方を配布する予定です。
えっ、ゲーム名は何かって・・・?、それは当日のお楽しみということで。
7/10追記
C71ではなくてC70でした・・・、 ⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡
投稿者 mak : 21:40 | コメント (5) | トラックバック
2006年5月14日
もう10回目なのね
というわけで、Ruby勉強会ももう10回目となりました。俺ももう5回目ぐらいの参加になりますが、毎回来る人が増えてきてるなぁと思います。そろそろ新しい部屋にする必要があるなぁと小波先生もおっしゃってましたし。
今回は雨ということもあり、ノートPCは持って行かなかったのですが、やっぱ今思えば持って行った方が良かったのかなぁと。でも正直あの3kgのノートは持って行くのが何かとめんどくさくて。それともう1つ、京阪七条から京女までは意外と遠かった・・・。
で、勉強会について。まずは西本さんによる丸投げシリーズ第3回、今回はRubyからCのソースを呼び出すという、ある意味Rubyプログラマに一番難関じゃないのかと思うネタ。俺も結局C++を挫折してRubyに逃げてきた口ですから。というか一番の理由はこれでRuby/SDLのソースが理解出来るかも、なんですけどね(Ruby/SDLも結局*.soファイルですから)。
結論としては、やっぱり速くなる、つーか平気で10倍とか30倍とか300倍の速さが出る。すげーぜ、さすがC言語。とはいったものの、やっぱりいろいろ難しそうだなぁとは思いました。それと、unix系とwindows系だと開発環境が異なるのもものすごくめんどくさい(結局これが原因でRuby/SDL1.1.0ではmp3再生機能がなくなってたりしてる)。でもまぁまた暇があったらRuby/SDLのソースでも読んでみますか。
お次はサイロスさんによるRuby/SDLベースのゲーム用ライブラリMiyakoの解説。この前俺がRuby/SDLでやったような感じです。これはいろんなところで賛否両論になってますが、俺個人としてはそこまで叩く必要ないんじゃないかと。確かにプレゼン内容が痛かったとか(どう考えても女性受けしないキャラ設定)、文字が小さかったとか(これはフルスクリーン対応してなかったせいです、今は対応出来ていますが)いろいろ問題あると思いますが。
それと途中からあゆさんが声優となってセリフをしゃべるというのがありましたが、これはやっぱり見ていて(聞いていて)痛かったです。分かる人なら分かるのでしょうが(俺はこっちの人間ですが)、分からない人には明らかに分からない、それどころか引いてるのが後ろから見ていてありありと分かりました。たぶんRuby/SDLの時もこんな感じだったんだなぁと思うと、もう怖くて2度と発表なんか出来ないです。
後、Ruby/SDLが完全なゲーム開発ツールであるのに対して、このMiyakoはあくまでアドベンチャーツールやプレゼンツールという方向で向かっているのは悪くないなぁと。後はどこまで初心者にわかりやすいツールとなるか、かなぁと。うまくいけば吉里吉里とかに対抗出来るツールになるかもしれません。
でも、やっぱりRubyでゲームを作るってのは邪道なのだろうか。なんかそんな空気を感じてしまったです。俺も、たぶんサイロスさんもただ純粋にゲームを作るのは楽しいってことを伝えたかったのだと思うんだけどどうもそれが伝わってない(サイロスさん、違ってたらごめんなさい)。何というか、Rubyでゲームなんて作るなっていう声が聞こえてきそうでした。それでも俺はやっぱりRuby/SDLでゲームを作っていきますが。だって、楽しいやん、ゲーム作るのって。
閑話休題。さて、次は兼重さんによるLT(lightning talk)ネタ、Ruby on Google SketchUPです。なんというかRubyそのものよりGoogle SketchUPの方がおもしろそうに見えました。お気軽に3Dオブジェクトを作れる点ではおもしろそうですが、建築バースなのでおにゃのことかは無理そうでした、残念。だれか日本語の解説とか作ってくれないかなぁとふと思った。
最後に、勉強会メインであるRuby 初級者向けレッスン 7 -ブロックとイテレータ-です。まぁ今回はマシンもなかったので勝手に「たのしいRuby」をだらだら読みながらようやくmix-inの部分を読み終えました。前からこの部分は読もうと思いつつなかなか読む暇無かったのでちょうどよかったです。つーかマシンないと暇だよ、ほんと。というわけで次はノート持って行きます、はい。
懇親会は諸事情により欠席。というわけで、これにておしまい。
投稿者 mak : 04:32 | コメント (3) | トラックバック
2006年3月13日
久しぶりの勉強会
というわけで、久しぶりにRuby勉強会@関西に行ってきました。たぶん2回ぐらい行ってなかったような。
会場は大阪、ドーンセンター。このドーンは「ド━(゜Д゜)━ ン !!!」ではなくてDawn、夜明けって意味です、まあ当り前ですね。つーかやっぱり大阪は遠いです。
今回のネタは俺の先輩にあたるohaiさん(俺をRubyの道に引き込んだ、もとい、導いてくれた方です)による、RubyRefacteringBrowser、通称RRBの紹介です。あ、ちなみにRuby/SDLもこの人の作ったものです。そうそう、Ruby/SDLはようやくVer1.0.0が出ました。ようやくベジエ曲線が書けるようになりました。まだ全然blogには書いていませんが、この前の学園祭、通称NFに出したゲーム「偽・キッチン大往生」にも早速使っています。つーかそろそろ公開しないとなーと思いつつ春休みが終わりそうな雰囲気です・・・。
閑話休題。まずはRRB、の前にそもそもリファクタリングとは何ぞやというお話。一言でいうとソースをきれいにする、つまり可読性を上げる、ただそれだけです。決して機能を増やすとかデバッグとかそういう事は行いません。正式には「外部から見たときの振る舞いを保ちつつ、理解や修正が簡単になるように、ソフトウェアの内部構造を変化させること」ですが、要はソースを読みやすくする、と思ってもらえれば大丈夫かと。
具体的にどういうことをするかというと、まずはグローバル変数やローカル変数、インスタンス変数、そしてクラス変数の名前変更です。つまり、やたらめったら書いている@hogeや@fooとしたインスタンス変数をきちんとした名前に変更してくれるわけです。っていうかそもそも変数名にhogeって付ける俺ってどうよ、みたいな。それ以外にもメソッド名の変更やコードの一部を切り取ってメソッドとして再定義する、という機能があります。これ以上の事はみなさんで調べてください。
ただ、問題点というか基本的に使えるプラットフォームがEmacs、Vim、つまりLinux上かあるいはxyzzyといったやや特殊なエディタ上ということです。一応FreeRideなんかもありますが、確かこれは日本語のコメントが書けなかった記憶があります。それと俺のキッチンのソースでいくつか変数名を変更しようとしたら全然変更できなかったという事がありました。まぁ文字コードがSJIS(Windows上で書いたソースは全部SJISになってしまう)とか1つのメソッドが複雑とか、そもそも8割動けばいいって言ってたし、まあいいか。
で、お次は西本さんのJRuby、つまりJava上でRubyのソースが動いたり逆にRubyでJavaのAPIが呼び出せるというもの。メリットは、そんだけ。デメリットはとにかく遅い。当日行ったデモ(モンテカルロ法によるπの計算)ではRubyなら高々1秒強の内容が、JRubyで呼び出すと20秒ぐらいかかるという・・・。まぁ世の中そんなもんです。
最後はかずひこさんによる初級者向けレッスン。今回のネタは「わかりやすいRubyのコードを書こう」ということで京女の学生さんが書いたRubyのソースを添削するというお話。最初は文字コード(SJISじゃなくてEUC-JPかUTF8を使おう)とか変数名はわかりやすいものに、あるいは適度に空白や改行、コメントを付けるという話だったのに気がついたらいかに速いソースを書くかと計算精度で盛り上がりました。そもそも、今回の元ネタとなったのが数式処理のプログラムだったというのも1つの大きな要因かと。
個人的にはそこまでRubyに精度を求めるのは酷だし、精度や速度を本気で要求するなら他の言語でソースを書くべきだろうと思います。Rubyの売りは「気軽に出来る」であって精度や速度を売りにしている言語ではないですから。
ちなみにRubyのコーディング規約というのでこんなのがあるそうです。
http://shugo.net/ruby-codeconv/codeconv.html
でもこれはあくまで雛型で各自で変えていきましょうとのこと。というかインデント幅はそれだけで宗教戦争ですから。あと、-r profileってのは知らなかったすなぁ。
さて、勉強会が終わったところで次は懇親会。場所はドーンセンター近くの「うまいもの処 くねんぼ」っていうお店。ここの最大の特徴はドリンクは特殊品を除き全種飲み放題、かつ料理が食べ放題・・・。つーか3000円であり得ないぐらいお腹いっぱいになりました。メニューは覚えているだけでも「刺身盛り合わせ」「サラダ」「とんぺい焼き@ジンギスカン鍋山盛り」「エビフライ&カキフライ」「からあげ」「ピザ」「鍋」「たこ焼き」「点心盛り合わせ」「きしめん(鍋用)」「シューアイス」「つけもの」などなど。しかもひっきりなしに出てくる(ここ、重要)。なんかお皿が空いたらすぐに新しいメニューがやってきてまさにわんこそば状態。なんというか記憶に残るお店になりました。で、その後は2次会@スタバ。10人ぐらいでまったりといろいろお話して終了。
久しぶりに参加しましたが、いつも通りのマニアックでした。おしまい。
投稿者 mak : 00:25 | コメント (0) | トラックバック
2006年1月10日
SDL関西OFF会でちまちまと
というわけで、SDL関西OFF会なるものに参加してきました。といっても参加を表明したのが当日の朝3時というものすごい時間でしたが、皆さん快く了承してくださいました、本当にありがとうございます(つーかもっと早く表明しろよ、俺)。
前日カラオケで3時過ぎに帰宅、そのままぶっ倒れて、朝無理矢理起きて準備していざ出陣。久々に梅田で下りて会場へ。ちょっと噴水の場所に迷ったもののなんとか会場までたどり着きました。
全然関係ないんですが、この日はちょうど成人式ということでどこか板に合わないスーツ姿の若者を多数見ました、ちょっとだけ2年前の自分が懐かしく思えました。
当日集まったのは6人、まずは自己紹介をして次に各自の成果物を発表となりました。詳しくはここを参照して頂きたいと思います。
個人的な感想では。
shinichiro.hさん、もう俺の中では「白い弾幕くん」や「psyno」の作者として俺の中では燦然と輝いている方でしたが、実際お会いして・・・・、まぁ普通の学生でした(そりゃそうか)。で、反復横跳びシューがかなりおもしろそうでした。
Zinniaさん。日本におけるSDLの普及の第一人者、と俺が勝手に思っている人なんですが、この人の作品は某水玉飛ばしのFLASHゲームのSDLバージョンとSPS(SDL Presentation System)。特にSPSはなかなかおもしろそうでした(プレゼンのツールで背景にOpenGLを使っている)、こういうツールも作ってみたいなぁと。
俺はまぁいつも通りキッチン大往生と偽・キッチン大往生とこの前のRuby勉強会in関西で発表したRuby/SDLを使ったRuby/SDLの紹介デモを紹介しました。でも途中でゲームが止まってしまうのはほんと、いいかげんなんとかしないとなー、というかもうこのノートだめぽだなぁとつくづく実感させられました。
後、Ruby/SDL紹介デモが好評だったのがちょっとうれしかったっす。
会場の雰囲気としてはマシンを持っている5人の内俺を除く4人がハブでつながって、さらにそのうちの1人がWILLCOMのケータイで外部につながっているという、さすがというか濃い状況でした。
でお次は2次会へ。場所はつるとんたんというなんとも変わった名前のお店に。ここはうどんのお店ということでメニューはうどん鍋(しかもうどん食べ放題)というお店。おかげでうどんをお腹いっぱい食べることが出来ました。というか初めて北新地なる所にいったのですが、なかなか独特の雰囲気でした。
参加者の中にサークルの卒業生の方がいらっしゃったので時々大学周りのお店の話で盛り上がりました。なんでも昔はお好み焼きといえば将月だったとか、いまではすっかりモダン焼きフジになってしまいましたが。それ以外にもいろいろ昔のサークルに関する話で盛り上がったりしました。
で、駅前の喫茶店でちゃーしばいてから(古い表現だ)、帰宅となりました。帰りの阪急では久しぶりに爆睡してしまいました。
参考までに→SDL 2006年新春オフ
投稿者 mak : 20:45 | コメント (0) | トラックバック
2006年1月 7日
デザインを変えました。
というわけで今年こそはこのサイト(SIDE_K)を充実させようということで、思い切ってここのデザインを変えてみました。
まずは前から思っていたFirefoxの対応(CENTERタグとDIVタグの順番の入れ替え等)を行い、次に暗かった背景を白に変えて、あとトップページのデザインを変えてみました。
ちなみにTOPの写真は地元長田の長田港で撮った1枚。なんとなくHDDをあさっていたら出てきたのでちょっと処理を加えてみました。
投稿者 mak : 22:56 | コメント (0) | トラックバック
2005年11月 8日
オープンの名前を持つ世界(その2)
ちょっと間が空きましたが、関西オープンソース2005のruby関連行事です。
で、この前の話で書き忘れてたのですが、今回もとあるブースにメイドさんが来てました(それかよ!!)。まぁいろいろと話を聞きたかったのですが、途中からそのブースの代表の人に代わっていろいろ話を聞かされました、しょぼーん。
後、チャイナ服を着た人も見かけましたが、えー、深くは言いません。でも1人、かなり似合ってる人がいた、つーか萌えた。
結局それかよ!!!!
まずは「日本Rubyの会発足 1 年、そしてこれから」。
今回こそは生まつもとさんに会えるかと思ったけど、奥さんの体調不良で残念ながら声のみの参加ということに。
最初はまつもとさんのお話。うーん、Rubyでビジネス出来るような社会になればいいなあと。まぁ俺はまったりとゲームを作って行きますが。
次は高橋さんによるRubyの会のお話、もちろん高橋メソッドで。思ったのは、意外と日本Rubyの会のMLに入っている人が少ないんだなぁと(100人程度、で、かくいうおいらも入ってませんが)。詳しいのはこちらのページで見てもらうとして、これからどうするかというのがやっぱり重要な課題なんかなぁとふと思いました。Rubyist Magazineとかを発行していって(これも裏ではスタッフはかなり必死こいてると言ってました。)かなりRubyの認知度は高まったと思うので後は興味を持った人をどのようにひっぱっていくか、が大切だということ。まぁつまりRubyをやろうということですな(マテ)。
後、高橋さんにちらっと見せてもらったのが高橋メソッドの本の生原稿。すげー、絶対買うっす。
で、次は「Ruby on Rails Hour!」
今話題のRailsですよ、奥さん!!!。まずびっくりしたのは人の多さ。Railsの前はRast(全文検索システム)のお話だったのですが、そのままほとんどの人が残ってたのでもう部屋はぎゅうぎゅう詰めでした。内容は・・・、ちょっと難しかったかなぁと。でもうまくいけばいろいろ面白そうな事が出来るんじゃないかと思ってがんばってうちの鯖にインストールしてみたのですが、動きませんでした、しょぼーん。
どうもRailsは日本語の資料がちょっと足りないかなぁと思いました。というか英語読まないのがだめなのかなぁ?後、Railsを触るには多少のデータベース系(MYSQLとか)の知識が必要になります。いやー、俺前期のデータベース落としたしな(そこかよ!!)。
んでもって「Ruby 入門 (Ruby 勉強会@関西番外編)」
今回は実は入門とは書いていても初心者とは一言も書いてなかったりするわけで。まぁそもそも普段の勉強会だと2時間半ぐらいかけて行うことを1時間で行うわけですからね。
Haskell勉強会を途中で抜け出してきて(むぅ、最後まで聞きたかったっす、ほんと)、会場のセットアップ開始。といってもrubyppixというrubyの入ったknoppixを焼いたCDを入れてブート画面でCDドライブから起動するようにすればあとは勝手に立ち上がってくれるだけ。なんかまじで時代のすごさに感動したっす。
で一番びっくりしたのは人の多さ。会場にあふれんばかりの人・人・人。公式サイトには最大で88人来てたとか、すげぇーーー。内容はイテレータということで前半はイテレータの使いかた、後半はイテレータの作り方(このあたり、入門とはいえないかもとふと思ってしまったけど)でした。でもはじめてyieldの使いかたが分かりました。なるほどねぇ、こうやってイテレータって作れるのか・・・。といってもほしいようなイテレータは大体あるんですけどね。
最後は懇親会。いやー、いろいろ盛り上がっちゃいました。例えば、 「君のためなら他の全てのスレッドを停止させるよ」。うん、俺も全部停止させるよ・・・・。
うぅ、目の前がみえないよ、ままん。
後は次のruby勉強会@関西のネタがYARVに決まりました。これはぜひとも聞きに行きたいところ(理解できないかもしれないけど)。でもNFのOB会と思いっきりかぶってたりするー。むぅ、がんばる。
お店は炭火焼 ぢどり家というところでとにかく鶏肉が多かった。刺身(心臓とかかなぁ)がこりこりしていておいしかったです。あと、ジュースとかがピッチャーで運ばれてきたのは衝撃だった。まだまだ俺の知らない世界があるなぁと。
でもって本当の最後である二次会。ここが一番盛り上がったですね、ほんと(いいのか、それって)。覚えている事を書くと
・ドラゴン桜はいいらしい。でも昔はこのマンガに載ってるようなことを普通にしてた、らしい。
・30代はあんまり英語のエラーメッセージを読まないで電話してくる。
・敬語は自分の中で3段階(最上級、普段の会話、気のしれた人用)を用意しておいて、普段は最上級を使わない、ここぞというか本当にやばいときに最上級を使うようにしておく。普段から最上級のを使うと、ここぞというときに敬語が出てこない。
・RHGは重箱のすみをつつくような事をしているらしい。というかrubyの話が出てこない。
とにかく盛り上がりました。やっぱこういうのが一番楽しいんですよ、ほんと。
というわけでエウレカセブン見ましょう(絶対この締め間違ってるよ)。
投稿者 mak : 22:48 | コメント (0) | トラックバック
2005年11月 2日
オープンの名前を持つ世界(その1)
最近、急にSIDE_K Diaryが増えてきましたなぁ、とふと思った。まぁ裏を返せばそれだけ何かと行事があってそれに参加しているということでもあるのですが。
というわけで、10/29(土)に大阪産業創造館で行われた関西オープンソース2005に参加してきました。去年も参加したので今年で2回目となります。
で、ふと去年の日記を見て思い出したのですが、去年これにいくにあたり出町柳駅に自転車を止めてたら、帰ってきたとき撤去されてましたorz。
今思い出してもあれはつらかったっす、ほんと。
というわけでruby関係はまた別の記事で書きますので、ひとまず全体の感想とか。
まず、なんかどこかでお会いした人がいろいろいたのにびっくりしました。mozzilaの中の人とかOOsの中の人とか。つい2週間ほど前に出会ったばっかですけどね(要はcodefestに参加してた人たちです)。あと、g新部さんもちらっと見かけました。昨日は普通にサークルのOBの方々が来ていたそうです。うーん、世間って意外と狭いのか?
で、この参加の一番の目的はただでいろいろなCDがもらえるということなのですが(それかよ!!!)。いやねぇ、実はこれが意外と役立ったんですよ。ちょうど今年の8月、サーバ、といっても旧サーバですが、のHDDがぶっとんだときどうやってデータ救出しようかといろいろ考えた結果、去年ここでもらったKnoppixを使ってUSB接続のHDDにデータを移すという方法でなんとかなりました。いやー、まさに奇跡です、ほんと。
ってことでまずはKnoppixをもらいにいきました。Ver4.0を頂いたのですが、もうメディアがDVDになってます。すげー。あと大阪電気通信大学で使ってるKnoppixDDも頂きましたが・・・、これもDVDかよ。それと起動の高速化をはかったAccelated-KNOPPIXももらいました。これはどうやら普通のCDのようです。さてさて、これで当分は安心です。まぁこれを使わなくてはならない事態ってのはあんまり起こって欲しくないものです。
次にもらったのがOpenOffice2.0。ちょうど前日にVer2.0の日本語版がリリースされたばっかだったので、配布されたのは2.0の直前にあたるRC3。でも中の人(codefestでいろいろとお世話になりました。今度OOsの本を出版されるとのこと。)に話を聞いて見るとVer2.0は実際にはRC3の名前を変えただけとのこと。おお、なるほど。というわけで早速使ってみることに。
で、中の人にすすめられてOpenOffice.orgの開発者であるルイスさんの講演を聞いてみました。全部英語だったのですが、通訳の人がいてくれたのでそれなりにはわかりました(ただ、ちょっと通訳がだめだめというかものすごくぎごちなかったですけど)。でも熱意は伝わってきました。うーん、すごいです。
でもって次に行ったブースは未踏ソフトウェアのブース。uim+anthyのはなかったですが(見たかったですな)代わりにあったのが低価格のFPGAの組み込みボード。サンプルであったのは別のものでPCI Expressに4つFPGAを並べたのを差し込んだのです。で、普通に200GFLOPSとか出てます。すげーです。でもおねだんも200マソぐらいするとか。で、この低価格のは10万ぐらいで性能は半分ぐらいだそうです。
それと、Haskell同好会BOFの発表を聞いてきました。いや、知り合いが出ているし、Haskellにも興味あるので。ほんとは最後まで聞きたかったのですが途中でruby入門の準備で抜けてきました、残念だ。で、話は基本的なことです。例えば遅延評価とかモナドとか(既にこの時点でついていけない人がいっぱいいると思うんですがねぇ)。
簡単にいうと、遅延評価とはいっぱい変数が使える(というか確保されてすぐにでも使える)ように見せておいて、実際はその変数が呼び出されるときになってようやく使う準備をする、ようなもの、らしぃ(だれか捕捉キボンヌ)。
モナドは、複数の計算を1つにまとめることで見た目をシンプルにさせる、でいいのかなぁ(結局なんにもわかってない俺)。
おもしろそうではあるんですが、いかんせんこの面白さって一番伝わりにくいものなんですよね。
後、気になったのをいろいろと。
ubuntu・・・・、linuxのディストリビューションの1つ。始めて聞いたのですが、なかなか便利そうです。で、いつ使ってみるんだろうなぁ。
Gentoo/Linux・・・、同じくディストリの1つ。なんでもインストーラがなくてfdiskから実行するとか。うーん、敷居高すぎな気がする。
というわけで感想おしまい。ruby関係が残っているのでまた続き書きます。
投稿者 mak : 01:10 | コメント (0) | トラックバック
2005年10月24日
10月の雨とハッカーの集う街(その2)
さて、この前の続きです。実際にオープンソース関連でどんなことしてたのかというと、まぁ案の定Ruby/SDL関連ばっかやってました。具体的には夏コミで出した「偽・キッチン大往生」のソースをいろいろリファクタリングとか改良とかです。
まずやったのがリファクタリングです。まぁタイトルからわかるように偽キッチンは前作のキッチン大往生のソースをそっくりそのまま流用してます。なのでもう見るのも嫌になるぐらいソースが汚いんですな。とにかくまずはそれをなんとかしようということでいろいろソースを改善してました。
やったのは無駄な変数の削除や、各シーンにおける数値を構造体に直したり、ゲーム全体で使っている配列(画面上のすべてのものが入っているクラスの配列)を「背景」、「敵、敵サブ」、「自機」、「敵弾」、「自機弾」、「文字関係」
の6つに分けたりです。って、ソースしらない人には何が何だかさぱーりわからないと思うのですが。
それを始めたのがちょうど日付が土曜に変わったころで、途中で一眠りもしましたが終わったのが土曜の10時前ぐらいです。それから本格的な改良というかだらだらソースを修正してました。
まずやったのがオープニングの警告画面の演出方法。今までは単に文字のRGB値を書き換えるだけでしたが、ちょっと文字の大きさを変えたりとか、α値を設定したりとかしたくなったので、ちとがんばってみました。
その結果わかったのがrenderBlendedUTF8で生成された文字サーフェスにはα値が設定出来ないということ。じゃあどうすればいいかというと、いったん画面に描画して、それをcopyRectしてサーフェスを生成する、というちとめんどくさい方法です。
これは文字だけじゃなくて図形でも有効です。まぁもっとも図形はサーフェス生成機能がないのでいったん画面に描画してcopyRectするしかないんですけどね。
で、これを使って背景をちびちびとつくったりしてました。背景を画像で処理するか図形で処理するかでいろいろ悩んだんですが、結局わかったのは、あんまり多くの画像を使おうとすると、その下準備だけで結構時間食うってことだけです(当り前ですが)。まぁ今回はこれぐらいしかしてないんですが。でもまぁこういう制限があるということがわかっただけでもよかったよかった。
さて、次は会場の雰囲気でも。
場所は京都大学人文科学研究所の本館、大会議室です。いやー、始めてこんな場所入りました。そもそも理系の人間が人文研の建物になんて入る訳ないし機会もないのですが。で、会場であらかじめ用意されてたのはバナナ(必須らしい、笑)と水、それとネット環境。後は各自でマシンを持ち込んでいろいろと開発に勤しむという、端から見れば何とも地味なイベントです。
ちなみに、会場で出された食い物はピザとお寿司でした、特にお寿司はまじうまかったです(っていうかそれしか言うことないのかよ、俺)。ちなみに、この寿司は軽食であって昼食ではないとのこと。
で、途中からずっと雨がふり続いてました。雨がうざいなーと思いながら時たま会場から中庭をぽけーっと眺めてましたが、なかなかいい雰囲気の中庭でした。なぜかバレーボールのコートがあったりしてました。
進行自体は特に大きな問題もなく終わりました。ただ前のcodefest(日本でのcodefestは今回が2回目で第1回は東京で行われてました)に比べるとちょっと参加者が少ないかなぁという気はしました。それに東京のと比べるとかなりゆったりしてました。東京だとラジオ体操とか朝食とか昼食があったのですが、それがこっちにはなかった(個人では勝手に行ってたかもしれないけどイベントとしてはなかった)。関西と関東という大きな違いのせいかもしれませんが。まぁその分ゆったりと開発できたのでよかったです。
************************************************************************
最後に、個人的な感想でも。
実は俺はハッカーではなくスタッフとして参加してたのですが(衝撃の事実が発覚!!!!、みたいな)、正直ほとんどスタッフらしい作業はしてませんでした。せいぜい最後の後かたづけぐらいでしょうか。なのでスタッフとしてほとんど大した作業をしてないのが自分ではちょっと反省点となっているわけですが。しかも、実際はスタッフ作業そっちのけでマシンのセットアップしてたり開発をしてたりと、なんちゃってハッカーやってました。
というのもスタッフとして登録したのが前日の夜なんですね。本来はきちんとハッカーとして参加したかったのですが、いろいろ意見を聞くうちに「やっぱ俺の現状の実力じゃまだまだだなぁ」と思い当初は参加をあきらめかけてたのですが、スタッフとして参加できることがわかり、「これならしょぼいコード書いてても全然OKじゃん!!!」というわけで急遽先輩に頼んでスタッフに応募してもらった訳です。
ちなみに今回の京都のcpdefestにはサークルから6人(ハッカーとして3人、スタッフとして3人)参加させていただきました。なんか身内ばっかな気もしましたけど、ま、いいか。
感想としては、会場準備などがちょっと準備不足気味だったかなぁと(開始時間の5時の段階で一応ハッカーの分の電源タップやハブは用意出来たものの、スタッフ側のマシンにつなぐタップなどが全然なかった)。でもそれ以外は特に大きな問題もなく、それに途中で体調が悪くなるような人が出なかったとかということを考えると成功したのではないでしょうか。
************************************************************************
以下、チラシの裏っぽい何か。
このblogを書くときにふと目に止まったのがこんなネタ。
コードも書かない人に言われたくはない - 羊堂本舗 ちょき
まぁタイトルだけ見てもわかるようにかなりいろいろと炎上したっぽいのですが、気づいたのはこのblogを書くとき、つまりcodefestが終わってから1週間以上立ってからでした。もしかしてこのせいで参加者が少なかったのかなとふと邪推。
ただ、なんだろうかなぁ。OSS(オープンソースソフトウェア)ってのが何だか俺が思ってたのより複雑っぽいのが少し残念です。単純にコードを書くだけじゃなくていかにしてその書いたコードを上手に利用していくか。それを実現するにはソースを書く側と利用する側が歩み寄る必要があると思うんですが・・・。って、今どきのプログラマがそれを理解してないとも思えないですし、特にオープンソース系の人は。
うーん、それでももめるときはもめてしまうのかなぁ。
投稿者 mak : 01:39 | コメント (0) | トラックバック
2005年10月21日
10月の雨とハッカーの集う街(その1)
さて、珍しくSIDE_K Diaryが2回続けて更新されます。今回のネタは10/14の17:30から10/15の17:30までの丸々24時間開催されたCodeFestです。
CodeFestって何かちゅうーと、普段ネット上でのやり取りのみで顔を会わす機会の無いハッカー達が一ヶ所に集い、いろいろと自由にコード(ソフトウェアのソースコード)を持ち寄って頭を突き合わせて議論し、開発を進めるイベントだ、って公式サイトには書かれてますが、まあ簡単に言うとだらだら開発しつつ、いろんな人とおしゃべりする、みたいなものでしょうか。
で、俺は何を開発したかと言いますと・・・・。
まぁ対外活動ということで一応HNではなく本名使ってますが、やってることはそんなに大したことないです。
で、ちょっとした裏話なのですが、そもそも俺が普段使っているマシン(っていうかこのノート)は日記にも書いたかもしれませんが、デュアルブートでしてWindowsXPとVine3.1が入ってました。が、どうしてもVine3.1だとRuby/SDLが動かない(正確にはSDLが動いてくれない)ので仕方なくずっとXPを使ってました。当然、先週のRuby勉強会@関西もWindows環境でいろいろデモを行っていました。
が、Vineの3.2がリリースされたのでひとまず鯖(sorakaze.netです、こいつも同じくVine3.1)でアップデートしてみたらなんかX関係でいろいろアップデートがあるのでもしかしたらもしかするかもと思い、SDLを実行してみると・・・、やたー動いたーーーー、というわけでいろいろ設定して、ようやく鯖のX上でRuby/SDLが動くようになりました。
まぁ、そもそも、鯖のくせになんでXが入ってるのかというツッコミが飛んできそうなのですが。
それがわかったのが水曜日の夜で、次の日の夜、つまり木曜日の夜にいろいろこのノートでもapt-get updateなどをしまくったりソースからコンパイルしまくってようやくRuby/SDLが動くようになりまし
た。で、これでようやくwindowsを捨ててLinux環境に移行できるようになったんです。
(この当たりの設定やソースからのインストール方法はいずれどっかで書きたいと思います)
そういう事情の中、CodeFestを迎えるわけですが、まずはこのVineたんをまともに使える環境にしなければということで前半いろいろとインスコしてたわけです。
***********************************************************
具体的にインスコしたものを書き上げると、
まずはSSHのバージョンアップ。古いバージョンはsshでトンネルを掘っても10分ほどで切れてしまいやっかいなんですね。で、なんでトンネル掘る必要があるかというと、今回の会場は大学の関連施設だったので外部にポートを公開してないんですな、なのでわざわざポートフォワード専用のアドレスにアクセスしてトンネルを掘らないとsorakazeにもsshでアクセス出来ないという不便さ。でもまぁセキュリティを考えたら当然ですが。
具体的な方法は keep-alive for sshのページを参考にしました。
まずopenssl-0.9.8.tar.gzをOpenSSL: The Open Source toolkit for SSL/TLSから持ってきてインストールします。
最新バージョンは0.9.8aです、まぁこっちの方がいいです。何故かこれを入れないとsshの新しいバージョンをインストールできないので。
で、上のページに書いているようにOpenSSHからopenssh-4.0p1.tar.gzとHeartbeat/Watchdog Patch for OpenSSHからopenssh-4.0p1-watchdog.patch.tar.gz
をインストール。パッチの当て方は公式サイトに書いてますが、基本的には
$patch < openssh-4.0p1-watchdog.patch
で、入れてから/usr/local/etc/ssh_configにHeartBeat 180と1行付け加えます。これでsshのトンネルを掘っても切れることがないです。
トンネルの堀りかたってのは各自で調べてください。ちなみに俺の設定例は次の通りです。
ssh -N -f -L 1234:hogehoge.co.jp:22 foo@forward.***.***.co.jp
まずこれでいま使っているマシンのローカルポート1234番がhogehogeというサーバの22番につながります。hogehogeってのは外部にあるサーバです。foo@forward・・・ってのは大学のアカウントとポートフォワード専用のアドレスです。
ssh -N -f -L 1235:sorakaze.net:22 -p 1234 mak@localhost
で、次にこのような書き方をすることでマシンのローカルポート1234番を経由して、ローカルポート1235番がsorakaze.netの22番につながります。
次にanthyのインストール。anthyってのは日本語変換エンジンの1つで、現在も開発が進行しています。っていうか単に俺のいるサークルの先輩が作って,サークルの同じ回生の人がそれを引き継いでいるだけなんですけどね。
基本はAnthy wiki - FrontPage以下のページを参考にしてください。Vineの場合だと普通にapt-get install anthyでインストール出来るのでホント楽でした。でもって次にuimを入れようとしたんですが全然うまくいきませんでした。
uimってのはLinux環境で簡単に日本語入力をするためのツールです。上のanthyっ手のはあくまで日本語変換エンジンであって具体的にどうやって日本語を入力するかってのは別問題なんですな、うーん、ややこしい。
[Anthy-dev 999] 入力システムの概要←ここなんか多少は参考になるかも。
で、uimを入れたのですが、どうにもこうにも動かないのでapt-get remove uim uim-xim anthyで消してapt-get install scim scim-anthy anthyとインストール。先にanthyを入れてからscimを入れるとうまく動かないっぽいみたいなので先にscimからいれるようにしましょう。
ここからちとややこしいです。公式サイトには「~/.xinitrc もしくは ~/.xsession あるいは ~/.gnomerc (gdmからgnomeを開始する場合) にいろいろ記述」って書いてるんですがそんなファイルが見当たりません(どうやらvineのみ、らすぃ)。ということで.bash_profileに以下の4行を追加します。
# using SCIM
XMODIFIERS=@im=SCIM
GTK_IM_MODULE=scim
export XMODIFIERS GTK_IM_MODULE
scim -d
でも、これだけだとなぜか動かない。いろいろ調べた結果/etc/gtk-2.0/immodulesに次の行を追加すればいいことがわかりました。
"/usr/lib/gtk-2.0/immodules/im-scim.so" "scim" "SCIM Input Method" "scim" "/usr/share/locale" "ja"
たぶんaptでscimをインストールした場合はこの行があると思うのですが、最後に「ja」というのを追加してください。これでgnomeからscimが立ち上がります。この設定は元はuim用なのですが、実はscimでも必要だったりするんですね、うーん、やっかいだ。
で、最後にFirefoxを入れました。当初はmozzilaを使ってたのですが、あまりの使い勝手のわるさについに根をあげてインストールしてしまいました。普通にapt-get install firefoxで出来ます。
後、インストールした拡張機能は
○Tabbrowser Preferences
○All-in-One Gestures
○FlashGot
○Resize SearchBox
○Download Statusbar
ぐらいです。が、まぁこんだけ入れるだけでかなり使い勝手よくなりました。ほとんどsleipnirと遜色ないぐらいです。sleipnirと違うのは
・新しいタブで開くときはctrl+クリック
・お気に入りであるフォルダを開いて、別のフォルダを開いたときsleipnirならそのフォルダを自動で閉じてくれますが、Firefoxは自動で閉じてくれません、ずっと開きっぱなしです。これがちとうざいです。
・クリップボードにURIが渡されたときwindowsならそれを認識しれくれますがlinuxはそうはいかないみたいです。いちいちコピーして張り付けする必要がある。
ちょっと長くなったので本来のネタであるRuby/SDLは次の記事ということで。
投稿者 mak : 23:52 | コメント (0) | トラックバック
2005年10月 9日
Ruby勉強会で発表してきたずぇぇーー
さて、ものすごく久しぶりとなるSIDE_K Diaryの日記です。ネタはもちろん私、makが10/8に京都女子大学で行われたRuby勉強会@関西の第6回で講演した「Ruby/SDLでお気軽っぽいゲームプログラミング」です。
いやねぇ、こういう講演ってのは始めてなのでめちゃくちゃ緊張しました。いろいろミスとかバグでRuby/SDLのデモが落ちたりもしましたが(だめじゃん、それ)、でもまぁなんとか無事90分を喋りきることができました。
ほんと、聞いてくれたみなさん、ありがとうございます。これを機に是非Ruby/SDLに興味をもってもらえれば1ユーザとして幸いです。
でもって、ここからは裏話でも…。
まずはあのサンプルデモから。あれはかなり時間かけて作りました…って言えればいいんですが、実際に作り始めたのは1週間前ぐらいからだったりするんですね(だめだめー。)
とは言ってもそれなりには使えるものになってまして、scenario.rb(拡張子が.rbってなってますけどただのテキストです)にシーンナンバーとフォントカラー、フォントサイズやキャラクターの画像や立ち位置などを記述しています。もう少し手を加えれば、それなりにまともなツールになるかもしれません。後は俺のやる気かと、まぁ、それが一番問題なのですが。
手を加えたいと言えば、デモで見せたマウスによる描画ツールもどき。あれも手を加えればそれなりのグラフィックツールになるかもしれません(Ruby/SDLには画像を読み込む機能もありますし、BMP形式で保存することも可能ですから)。だれかやってみませんか、Ruby/SDLのグラフィックツールとか?
実はまだいくつか発表してなかったネタとしてはcollisionMapのデモとかあります。イメージとしてはイライラ棒みたいなのを考えてたのですが(っていうか最近の若い人はイライラ棒って知ってるのかな?)。要は複雑な線が入り乱れた画像を用意して、その画像にcollisionMapを設定して、当たるとどかーん、みたいな。
後、間に合わなかったのがキャラの名前付けとか、BGMの演奏とかです。それと当日来てくださった方の感想の中に「CV(キャラボイス)あったほうがいいよねー」ってのもあるのですが、さすがに俺が喋るわけにもいかないですし・・・、うーん、難しいですねぇ。
それと、なぜあんなに落ちまくったのかというと、話すと長いのですがまとめると「デモ内デモを終了するキーとデモを終了するキーが同じだったから」。ただ、これは正直想定の範囲外だったのです。
そもそもあのデモは下宿の高性能デスクトップマシンで開発してたのですが、それをこのノートで実行すると数分でノートが落ちるんですな。というのも、このRuby/SDLデモでメインループを実行するとCPU利用率が常時100%を指し示すんですが(これは当然ですが)、加えてこのノート特有のやう”ぁい現象でCPU利用率が常時100%で数分たつとノートが落ちるという…(これについては語ると止まらないので(ry)。
でもって、前日の夜にソースファイル一式をこのノートに移して実行したらノートが落ちるー、さー大変。というわけでなんとかがんばって落ちないようにしましたが、そのせいでもともと考えてなかった上記のバグが発生したというか、ぶっちゃけいうと単純なミスなのですけどねぇ。
ほんと、すいません。
で、今回ああいうビジュアルノベル形式でRuby/SDLのサンプルを見せつつ、かつそのサンプル内でRuby/SDLのコード解説を行うという、なんとも無謀というかネタに走りまくりのをやったのですが、改めて思ったのは、こういう一人でニヤニヤしながら楽しむようなものを大勢の前で見せるってのは難しいのぅということでした。
えっ?おまえの文才のせいだろーーって? すいません、精進します。ほんと、こういうビジュアルノベルのシナリオ書ける人ってすごいですね。
***************************************************
で、あのスライドについて。
ぶっちゃけいうとほとんどRuby Gem Box ツール利用でここまでできる という本からかなり流用してます。具体的にどれぐらい流用しているかは見てもらえればわかるかと・・・、いや、やっぱみないで、はずかしぃすから。
しかしまぁそれなりには自分の意見、つまりいろいろ自分でソースを書きながら思い付いたことも書いてたりしてます。でもまぁ結構一般的な事というか、ゲーム開発における最低限の注意事項みたいなものですので。
後、字が小さいとか参考リンクすら書いてないとか、いまになって思えばいろいろ抜けてる点ばっかですが。それにずっと座りっぱなしで一人で喋りまくってたとかみんなに全然話をふってないとか、ずっとすみませんばっかいってたとか(後でKMCの人に指摘されました)。
まぁとにかくいろいろありましたが、ほんといい経験をさせてもらいました。また機会があれば発表したいと思います。
****************************************************
後は個人的な感想。
いきなり30分遅れたのは焦った。全然プロジェクタが動かなくて、みんなで「なんでやーなんでやー」って調べて、結局原因が「電源入ってなかった」とか・・・、悲しすぎるよ、ママん。
で、初心者レッスンのテスト駆動開発。たぶん、普通のプログラムなら有効なのですが、俺みたいに画像ごりごり使ってる人にとってはちょっと使えないかなぁと。まぁその分普通のプログラム、あるいはちょっと大規模なプロジェクトなら絶対有効のはず。
最後に飲み会やら。当初は30人で注文しておいて、実際に来たのは44人という、なんとも大所帯だったのでみんなでつつましく食べてました(後からいろいろ追加注文で食べましたが)。で、そのときいろんな人から「今日の発表よかったですよ〜」って言われてうれしかったです。
後は・・・忘れた。まぁ弾幕はパズルということで(ちょっと待て!!!!)。
投稿者 mak : 01:10 | コメント (4) | トラックバック
2005年1月19日
コミケから20日経ちましたね、そうですね
さて、コミケでKMCDを買ってくれた方々、本当にありがとうございます。
今のところキッチン大往生でググっても俺のページとKMCしかヒットしませんが (。・x・)ゝ。
で、実は結構大きなバグがあったりします(ヲイ)・・・。
えー、今回ちょっと回転壁にいろいろ細工をしてみたんですが結果的にここが問題の発生源でした。
まあソース見れる人にはわかると思うんですが、なんか配列がどんどん巨大化していってそいつのせいでゲームのfpsが5~10ぐらい下がるという・・・・
かなり致命的なバグじゃないかと思った人、アナタは正しい!!!!!
アゥ、ほんとすいません、だって普通デバッグプレイで2周目とかやらないでしょ、ね・・・。
なんか全国のクリエイタから挿されそう、もとい刺されそうな発言ですが。
今はテスト前でどたばたしまくっているんのでまたテストが終わる2月中旬ごろにバグとかを修正して公開したいとおもいます。
久々に公開、しかもKMCとしての公開ということで結構((((;゚Д゚)))ガクガクブルブルです。
単に趣味でしかもバックになんにもない今までのと違いそれなりに背負うものがあるってのはやっぱり多少は怖いものですが、でも公開しないとなんにも始まらないですから。
投稿者 mak : 22:36 | コメント (0) | トラックバック
2004年12月28日
結局こうなりました・・・・
というわけで、一応C67版が出来ました。
正直言って、開発時間があんまりなかったです。なんかNFが終わってから急に忙しくなってしまったので(まあ言い訳じゃないかと言われればそれまでですが)。実質の開発は12/23から27まででした。もしかしたら28日も開発出来るかもしれないすが(東京で)。
当初は新しいステージの追加をする予定でしたが、それがステージの追加をあきらめ、代わりに弾幕を追加しようという計画になり、それも結局無理となって・・・。
でもコントローラの対応と難易度の追加、オープニングの追加やバグ取りといったそれほど手間のかからない作業は一通りやりました。まあ、仕方ないですかなぁ。
ではでは、30日にコミケ会場で会いましょう。
投稿者 mak : 01:15 | コメント (1) | トラックバック
2004年12月19日
技術の進歩
さて、先日サークルで新しいマシンを導入しました。グラボとかマザボとかがかなり最新のマシンです。
ふとこれでキッチン大往生をやってみました。
すると・・・・・・
全く処理落ちしない、っていうか速すぎてついて行けない!!!!。
まあこれが本来の速度なんですが、でもこれで安心しました。
マシンの性能さえあればRuby/SDLでもかなりすげーゲームが作れるということが!!!!!!。
むしろ、作者、つまり俺のマシンがぼろいほうが問題だと。
最近というか、この2~3年でグラボの性能がかなり急激に上がってきましたですし、ある程度そのあたりは考慮すべきなのでしょうが・・・、如何せんニューマシンを買う予定などもう2年ぐらいないんですなぁ。
しばらくはサークルのニューマシンで調整しつつ自分のマシン(2年前ぐらいのノート)で開発とか続けるんでしょうなぁ。
なんかちょっと寂しいです。
投稿者 mak : 15:25 | コメント (0) | トラックバック
2004年11月26日
なんとかNFが終わりました・・・
さてさて、いろいろとトラブル続きでしたがなんとかNF、学園祭が終わりました。
結局今年もあんまり見回ることが出来ませんでした、まあ仕方ないですなぁ。
で、ゲームですが、果たしてエンディング画面(といっても画面にCLEAR!!と表示されるだけですが)
にたどり着いた人が何人いたのか、とふと思ってしまいました。
俺が思うに2~3人ぐらいかと。
まあ一番の失敗はNF向けに難易度を調整しそこねたということでしょうか。そりゃNFに来る人はまあほとんどが一般素人、当然シューティングなんて見たことも聞いたこともプレイしたこともない人ばっかでしょうから、その様な人がいきなりキッチン大往生をやってもそりゃクリアなんてとうてい無理な話、なんですな。
来年はもう少しそのあたりを考慮しつつ展示をしていきたいと思います。
で、結局開発は間に合ったのかというと・・・・・。
NF期間中にバージョンUPを5回繰り返した、とだけ言っておきます。
いきなり初日の朝になってかなり規模の大きいバグを発見した時はさすがに焦りましたが。
で、これからのキッチンですがひとまずコミケに向けてもうちょい改良します。
ひとまずの目標としては「キッチンモード」と「大往生モード」をつける、あたり判定をcollisionMapに移行、SEのさらなる追加、細かいバグの修正、オープニングをもうちょい作る、などなどですなぁ。
collisionMapへの移行が思ったよりうまくいけそうなんですなぁ。回転しない弾に関してはそのままですが、回転あるいは拡大縮小する弾に関してはSDL::Surface#transformSurfaceを使用する必要がありますが、Ruby/SDLの作者のohai先輩に聞いてみたところ、結局transformBlitは内部でtransformSurfaceとBlitsurfaceを読み込んでるに過ぎないとのことなので。
つまり、数フレームごとに回転するとしてその画像を数フレーム枚に作成(元の画像をSDL::Surface#transformSurfaceで回転縮小拡大)してそれをcollosionMapに登録すればおそらく可能だとは思うんですが、まだ本格的には試してません。
閑話休題、ちと専門的すぎましたかな。
ただ、このNFを通じて多少は自信というか、Rubyでも普通に動くゲームが出来る、少なくとも一般ユーザにはRuby/SDLを意識させないほどのゲームは出来るということが実感できたというのが一番の収穫です。
後、NF期間中にOB会があったのですが、そこでキッチン大往生の話をしたところ「Ruby/SDLで1秒間に60回も書き換えてるのか。」とかなり驚かれたりしました。また別のOBの方は俺がRuby/SDLというまであのゲームがRuby/SDLで書かれたということに全く気づかなかったということでした。
個人的にはかなりこのことがうれしかったです。
投稿者 mak : 01:14 | コメント (0) | トラックバック
2004年11月14日
さて、タイトル画面です
なんとかここまで出来ました。
ちなみに、このタイトル画面は3分で完成しました(笑)。
まあいろいろと改善したいとは思いますが、ひとまずはNFに向けて最低限プレイできる環境を作成しなければ、ですなぁ。
今日は効果音とレーザーの修正を行ってました。おかげでみんなに非難されないレーザーが出来ました(ってことはいままでがいかにひどいレーザーだったかということですな)。
後は、コンティニュー画面とか、敵を倒したときの処理とか、ちんたらした処理が残ってます。
残り1週間、がんばらねば。
投稿者 mak : 03:21 | コメント (0) | トラックバック
2004年11月11日
あんまり開発とは関係ないですが・・・
まあ、同じサークルのmiz君がblogを立ち上げたというので記念にトラックバック。
いやー、こうやってみんながblogしていくのは楽しいものですなぁ。
っていうか開発はどうなっているかって?
まあ、ぼちぼち進んでます。
あとNFまで1週間ちょいなのでかなりやばいのは間違いないのですが。
投稿者 mak : 20:27 | コメント (0) | トラックバック
2004年11月 4日
うーん、やっぱ速度がねー。
さて、これまでの成果です。
ぼちぼち、メインのゲーム以外の所にも手をつけていかないとなーというわけで
いろいろやってます。
問題は、この弾幕はどうしてもfpsが遅くなるのでさて、どうしたものかなぁと
あれこれ悩んでいます。
でも50ぐらい出ていればそれで十分かなとかとも思ったり。
まあ、遊べないレベルではないんでねぇ。
投稿者 mak : 01:37 | コメント (1) | トラックバック
2004年10月27日
背景とか作成中
というわけで、背景なぞ考えています。
まあ、静止画ではわかんないですが、背景は一応動いてます。
ホントは画像とか持ってきたかったんですが、多分背景に画像を持ってくると極端に遅くなると思われるので線や曲線なんかでなんとかうまく表現してみたいと思います。
しかし、背景が付くとぐっとゲームっぽくなってきたと思うのは俺だけでしょうか?
投稿者 mak : 02:44 | コメント (0) | トラックバック
2004年10月21日
なんとか進行中
というわけで、こんなもん作ってみました。
えー、思いっきり某シューティングまねてます (。・x・)ゝ
まあそれが何かは追々話すとしまして・・・・。
これともう1つ攻撃パターンを追加してSTAGE1の基礎を完成させたいと思います。
(スコアとかもう少し細かいエフェクト、BGMやSEなどが実は全然実装されてなーーい)
うーん、がんばらなきゃ。
投稿者 mak : 02:09 | コメント (0) | トラックバック
2004年10月11日
週末の過ごし方
ええっと、週末はずっとこれを作っていました。
前からぼちぼちと作っていた「キッチン大往生」です。
目標はシューティングゲーム、のはずです(ヲイヲイ・・・)。
なんとか今日はレーザーを完成させました。
後は当たり判定とか衝突時のエフェクトとかを作らないとなぁ、と。
うーん、時間がちとやばめかな。
投稿者 mak : 22:08 | コメント (0) | トラックバック
2004年6月17日
さて、移行しようか
気がついたら、ここ全く更新していませんでした。
やばー。
最近ですが、あんまりゲーム制作進行してません。
微妙に忙しくて、ね。
で、これはまだ構想の段階なんですが、
ここの日記をblogにしようかと。
でもって、SoraKazeとの共同運営にしたいな、みたいな。
正直、日記が3つってのはちと厳しい。
でも、メインの日記(Pegasus' Wing)は止めたくない。
となったら、残りの2つ、こことSoraKazeを
1つにまとめてもいいかなぁと。
多分、俺の自鯖にblogを置くかと思います。
夏ぐらいをめどにちょっとがんばってみますかな。
肝心のゲーム開発は・・・。
ぼちぼち進めたいです、はい。
投稿者 mak : 00:00 | コメント (0) | トラックバック
2004年4月30日
Ruby/SDLを本妻とします(笑)
もはや完全に放置プレイ状態のSIDE_Kです。
いやー、なかなかこっちまで手が回らないもので・・・。
で、結局Terragenのページはまだ作ってません。
っていうか最近全然触ってません。
なんつーか、マシンパワーがしょぼいと
作る気も失せるです、はい。
で、ゲームについてですが。
まあC++を半ばあきらめてます。
で、どうするかというと、
Ruby/SDLっていうツールを使いたいと思います。
少なくともCよりは楽です、かなり楽です。
VC#よりはちょっとめんどいかもしれませんが。
(DirectXを使わないシンプルなプログラムに比べて)
まあ多少速度が遅いかもしれない、って書かれてたんですが
これがどうもひっかかります・・。
まあとにかく作らないと。
っていうか、Cは嫌でも実習で覚えさせられます・・・。
ポインタなんて嫌だよぉぉぉぉ。
投稿者 mak : 00:00 | コメント (0) | トラックバック
2004年3月 9日
またまた浮気、かな?
さすがにそろそろ日記を更新しないとやばそうなので
ちょっこら更新。
で、最近全然C++さわってません・・。
だめじゃん。
その代わりずっと触っているのはTerragen。
3Dで景観作成するソフトです。
なかなかはまってますが、如何せん
かなりのマシンパワーを必要とします。
ノートではほんと厳しいです。
3月一杯はTerragenで遊びますが
4月入ったらそろそろゲーム作成に戻ろうかなと思ってます。
出来た画像はそのうち公開しますね。
投稿者 mak : 00:00 | コメント (0) | トラックバック
2004年2月 8日
ぼちぼち・・・
さて、プログラムですが
ようやく原形を作りかけです。
そろそろ分割コンパイルの方法を修得したいんですが
如何せん、よくわかってない(笑)。
正直、ファイルが一つだけってのは見づらいです。
でもELを使ったサンプルのなかで分割コンパイルしているのって
ないんです、本当に。
確かにC言語っぽいですが、classとか使いたいです、やっぱ。
もうしばらく粘ってみましょうかねえ。
で、ちなみになぜかこの日記はTera Term上で書いてます。
投稿者 mak : 00:00 | コメント (0) | トラックバック
2004年1月30日
壁は高い
ようやくプログラム作成開始。
で、早速壁が。
複数個の敵弾をどうやって表示すべきか?
ああ、先は長いのぉ。
投稿者 mak : 00:00 | コメント (0) | トラックバック
2004年1月 8日
脳内構想
っていうかすげー久しぶりの更新です。しかもこれ部室で書いてます。
まあ、「どーでもいいこと」にも書きましたが、プログラム最近さぼりぎみ。
一応、「キッチン大往生」のイメージは脳内にあるんですが・・。
テスト明けぐらいから本格的に動き始めるつもり、かな?
だめじゃん。
投稿者 mak : 00:00 | コメント (0) | トラックバック
2003年12月15日
移り気の激しい性格なので、ね?
なんとかVisual C#の本をゲット!!
ついでにhaichiさんのソースもゲット!!
あとは自分でいろいろとお勉強・・・、
っていうか、あんまりCの知識ないんですが何か?
投稿者 mak : 00:00 | コメント (0) | トラックバック
2003年12月 8日
結局、(´Д⊂ モウダメポ
いろいろと聞いてみたけど、
結局yaneは動かない。
一番やっかいなのは、MIGがコンパイル出来ないってことなんだけど。
はぁ。
投稿者 mak : 00:00 | コメント (0) | トラックバック
2003年12月 7日
これならどうだ!!
yaneをあきらめて代わりにこんなのを入れてみた。
DXライブラリ
Easy Link Library
有名どころなのは下のEasy(以下el)。
まあかなり多くのゲームでも使われているとか。
hファイルしかないのがやや難点。
いまいち意味がわかってないんですけどねぇ。
投稿者 mak : 00:00 | コメント (0) | トラックバック
2003年12月 4日
動かない・・・
結局yaneSDKが動かない。
明らかにBuildLogにはあやしい箇所があるのだが、
どこかさっぱり不明・・・・。
もう、yaneの2ndはあきらめようかな?