今日の雑記

<< 2006/11 >>
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30

back to TOP PAGE

 | 

2006-11-30

[] まーなんというか

ゲームの箱詰め vol4」用にゲームを作ってた(る)わけでして。

ゲームの箱詰め vol4 http://www5.atwiki.jp/yaruhara/pages/77.html

次回作製作途中画面

まあこんな感じです。

ちなみにキャッチフレーズは、「ターゲット確認。突撃せよ。」

GRADLE-UNISON にひき続き、マウスゲーで、スクショ見たら解ると思いますが、シューティングではないです。今んとこ。さらに弾幕すらない予定。

そして、製作は相変わらず迷走中(えー

あーそういえば正月ネタのゲームも作らにゃ。どうしよう?鏡餅でも開くか?<どんなゲームだよ

takeuchitakeuchi 2006/12/01 10:26 >鏡餅でも開くか?
すごいやってみたいです、そのゲーム(笑

トラックバック - http://d.hatena.ne.jp/isshiki/20061130

2006-11-29

どうにも DOSコマンドより Cygwinコマンドを打つような体になってしまったので、ついに Cygwin/bin にパスを通してしまったよ。

これでいつでも ls だ。

[] とある事情で

wxWidgetsコンパイル中...。

%> env CFLAGS="-O2" sh configure[enter]
%> make[enter]

としてからすでに1時間以上経過しておりますがいまだ終わりません。さすがにこれほどの重量級のライブラリインストールするには、このマシン(PentiumIII800MHz)ではきついのでしょうか?

と思ってたら(というかこれ書いてる最中に)、つい先ほど終わった模様。早速、

%> make install[enter]

さあ!インストールよ!

...。

なんか無事に終わったっぽい...。

んで、本題。

本題はこちら http://ilaliart.sourceforge.jp/cgi-bin/MySketch/ms.cgi?t=sketch&blogid=&ShowDiary_file=/SDL/1164731974

%>cd ../../SDL_base/SDL_wx[enter]
%>make[enter]

結果。

<略>
collect2: ld returned 1 exit status
make: *** [SDL_wx] Error 1

まあつまりダメな訳でした。あーもう。

という訳でごめんなさい。再度チャレンジしますです。> kr2 さん

えっと、さっきの奴、

$> g++ *.cpp `sdl-config --cflags --libs` `wx-config --cflags --libs`

としたらコンパイルできて無事動作しました。なんなんだこれ?

ちなみに上記のは shinh さんによるものです。

cygwin のトラップなのか、これ...?

えっと、最終的に...

CFLAGS = `wx-config --cppflags` `sdl-config --cflags` -g
LIBS = `wx-config --libs` `sdl-config --libs`
GCC=g++

SDL_wx : main.cpp SDLWX.cpp Makefile
	$(GCC) $(CFLAGS) $(LIBS) -o $@ main.cpp SDLWX.cpp

これが添付されてた makefile なんだけど、これを、

CFLAGS = `wx-config --cppflags` `sdl-config --cflags` -g
LIBS = `wx-config --libs` `sdl-config --libs`
GCC=g++

SDL_wx : main.cpp SDLWX.cpp Makefile
	$(GCC) $(CFLAGS) -o $@ main.cpp SDLWX.cpp $(LIBS)

こうした方が良いみたい。ポイントは「$(LIBS)」を後に持っていくこと。

考えてみればそうだよね。 Link で怒られてるんだったらライブラリ関係を後に持っていくのが Cygwin(Mingw?) の定石というか鉄則というか。

shinh さん曰く「Mingw マヂック」というところか。

トラックバック - http://d.hatena.ne.jp/isshiki/20061129

2006-11-28

[] Titanion に稼ぎ要素を

ABA さんちより http://d.hatena.ne.jp/ABA/20061128#p1

ギャプラスに稼ぎ要素を加える方法はあるのかね

まあボク自身は点数稼ぎはわりと二の次的な考えでゲームを作ってる&遊んでる人間ですし、そういう人間意見を出すのもどうかという感じではあるけど。ここはあえて。

現状の基本(MODERN はやってないので不明<やれよ)、

  • 敵が画面内にいると倍率が下がる。
  • 敵を倒すと倍率が上がる。
  • クリア時、 HIT-RATIO でボーナスが入る。

という点があるとして。以下、思いつくままに。

  • キャプチャで捕獲した敵の数に応じてスコアに倍率がかかる

あまりにも単純かな。さすがに思いついてないとは思えないので、何らかの理由でカットされたのでしょう。

出現時(をどう判定するかにもよるけど)に全滅させたらボーナス点、みたいな感じ。注釈にも書いたけど「どう判定するか」と、あとそれをプレイヤーにどう納得させるかが問題かしら。

  • そもそも最初から高速で倒しにくい高得点の敵を出す

Gaplus というよりインベーダーに近い発想だけど、そういう敵を紛れ込ませるのはどうだろう?キャプチャした状態でないと倒しにくいというか、そういう敵がいても良いのではないかな?と。

また逆の要素なんだけど、

というのも考えた。これは無しか?マイナス要素ってあまり良くないかもしれんけど。BASIC現在隠蔽中の ver0.10 モード)のキャプチャーはあまりにも自由に撃て過ぎるのもどうか?とちょっと考えたので。 CLASSIC にはなくても良いかな?

まあ、あまり思いつかなかったけど、基本は「敵キャプチャ(というか殺さずに保持)し続けてた方がお徳よ?」という事->高得点に繋がる、という考え方です(元の考えもそうだと思うし)。

他にもまだないかしら?みんなもどんどん考えてみよう。

[] そういえば今年は

台風が来てないねえ。かわりに竜巻とか、滅多に無い自然災害があったけど。

と、明け方の NHK ニュースを見ながら思った。

ABAABA 2006/11/29 22:26 ご推察通り敵捕獲数倍率はわざと外してます。なんか遊び方がみみっちくならね?常に10個ついてないと損している気分になる貧乏性プレイというか。編隊ボーナスはなつかしくていいね。

isshikiisshiki 2006/11/29 23:27 やっぱりそうでしたか。プレイがみみっちくなるのは、脳内でもなんとなくそんな気がしたのでまあ納得ですね。

トラックバック - http://d.hatena.ne.jp/isshiki/20061128

2006-11-27

[] 脳内補間を断ち切る術ってないものかしら?

昨日の id:DK_alpha さんのコメントより。(無断転載ゴメンね)

そんなもんですよね。プログラム

簡単なミスでも思い込みによって発見できないってよくあります。

ある本(たしか"プログラミング作法"だった気が)で読んだと思うのですが、プログラミング言語の発達というのは、「プログラマが犯す(単純な)ミスを如何に検知するか」ということだと書いてました。

まあ実際のところ、現在ではそれが「プログラミング言語」というより「開発環境」の話になると思うのだけれど、例えば IDE 環境による「コードアシスト機能」であったり、えーっと、なんだろう?他にそれらしいのあったっけ?<それで終わりかよ

今自宅開発でメインで使ってる D 言語に関しても、コンパイル時にかなりチェックしてくれて、それなりに事故を未然に防ぐことはできるんだけど、それでもやっぱり昨日のようなことは起こるわけで。

あと、これはボク一人の思い込みかもしれないけど、プログラムデバッグ作業って、出版物の校正に似た部分があって、例えば本なら、誤字脱字、記述間違いがないかというのを読んでチェックするわけだけど、自分で書いたものや自分が関わってる文章って、わりと脳内で補間しがちで、「実は間違ってるんだけど合ってるように感じて読み進めてしまう現象」があるんです(少なくともボクには)。

これはプログラムも似たようなことがあって、それが上記コメントの「簡単なミスでも思い込みによって発見できないってよくあります。」という部分に当てはまるんですけど、昨日の例なら、

for(int j = 0; j < cursole_enemy_ang.length; i++) 

となってる部分は、「この辺が明らかに怪しい」と思ってなかったら、例え上記のように記述されていたとしても、

for(int j = 0; j < cursole_enemy_ang.length; j++) 

脳内で読んでしまっているんですよね。この手のバグが一番怖いんです。

まあ、この手の原因不明の(とその時は勝手に思っている)バグは、一晩置いて翌日まっさらな頭で臨むに限りますな。今回の場合もそうだったし。

[] アフェリエイトエイト

なる言葉勝手に思いついた。

Binary Hacks ─ ハッカー秘伝のテクニック100選 http://0xcc.net/binhacks/

ようは、アフェリエイトっぽい記述があるページにリンクするだけの話なのだが。

まあつまり何が言いたかったかというと、一周目読了しました。これから二周目に入ります。

頭のおかしいボクちゃんは、一周目が読了したくらいで読書感想文が書けるわけではないのですよ。

というかそれ以前に前半と後半に全く話の繋がりはないわけですが。なにが「まあつまり」だよ。

DK_alphaDK_alpha 2006/11/28 09:40 脳内補完はありますよ、やっぱり。
可能であれば前回からの差分を取って変更した部分の再確認とかよくやります。
まぁミスの大半はイージーミスなので、そう心がけてコードを読めるようにするしかないですかね。難しいですけども。
つまり、自分につっこみすぎだよ!

トラックバック - http://d.hatena.ne.jp/isshiki/20061127

2006-11-26

[] さて問題です。

for(int j = 0; j < cursole_enemy_ang.length; i++) setVertex(id, cursole_enemy_ang, j, dir, pos[X], pos[Y], 1.0f + rate);

上のプログラムには間違いがあります。さて何処でしょう?

とまあ、こんな単純なミスで2日くらい無駄にしたわけで。本気で転職考えようかしら?(by草薙素子攻殻機動隊

[] まあせっかくだから

今回の顛末をちょこっと記録しておこうと。なんか誰かの役に立つかもしれんし(たたないよ

まず、前提として以下のようなことがありました。

  • 土曜日に突然開発マシンで止まるようになった。
  • 「なんだろう?」と思いつつ、とりあえず別のマシンコピーして動かしてみる。すると何事も無かったように動く。
  • 「えー?なにいじったっけー?」と思い返してみたが、大幅な変更をした記憶がない。

上記のプログラムは、「敵がいる方向を指し示すためのカーソル描画」の処理なんですが、これ自体は木曜に実装していて、その時は何も問題なく動いてました。描画化けとかもして無かったですし(<実はココ重要)。

大きく弄った部分は、

  • 敵との距離によってカーソルのスケールが変わるように描画することにした(上記プログラムで言うと "+ rate" の部分)。

くらいで、これだって別に問題の部分(i++)を弄ることも無いし(というか弄る意味が解らない)。

その時はまだここが原因だということは解ってなかったので、とりあえず「なにが原因で止まってるの?」という事を、まず調べることにしました。

手順というか、経緯は以下のような感じ。

  • ゲーム開始後、ちょっと経って止まる(つまりタイトルでは止まらない)。
  • ゲーム開始後に止まるというタイミングをみると、どうやら「敵出現」がキーらしい。
  • 試しに敵出現を切ると止まらない。つまり敵が原因?と思った。
  • 敵の処理を色々切るが、それでも止まる。何もしないと今度は「当たり判定」の処理の「NaN」が原因で止まる。
  • それで、最低限必要なメンバの初期値を設定するも、それでも止まる。
  • しゃーないので、メインループにデバッグ出力をかまして調べてみると「drawTsk()」で止まってる模様。
  • 「んならどのタスク描画で止まってるん?」と思ってデバッグ出力すると、 TSK_GROUP の 8 で止まってるとの事。
  • 8 ってつまり「TSKsystemDraw」(さっきのプログラムがある描画関数)だよね...。これしかないよね...?
  • 試しに描画切って見たら動いた。
  • んで、プログラムをボーっと眺めてみたら...「あっ!」
  • 解決

そもそもの原因は、最初の状態で、何故まともに動いてた(フリをしてたのか)ということだ。プログラムってると、わりとこういう「たまたま動いてます」的な現象はあるけど、今回の場合、「他のマシンでは(問題のあるバイナリだけど)動いてる」というのもあって、「えーひょっとしてボクのマシン壊れた?」なんていう考えにまで至ってしまって、まあ壊れてたのはボクのプログラムなのでよかったんですけど(というか当たり前)、逆にいうと「間違ったプログラムはその時点で間違った挙動をして欲しいなあ」と思わずにいられないというか、まあ、そうそう簡単な話ではないんですけどね。

前に話した NaN よりは単純な話なんですけど、単純なバグほど細部に宿る、といったところでしょうか。「神は細部に宿る」のです。そんなにコソコソしないで頂きたい。もっと堂々と表に出ていただきたいのです(何の話だ)。

DK_alphaDK_alpha 2006/11/27 08:57 そんなもんですよね。プログラム。
簡単なミスでも思い込みによって発見できないってよくあります。
もっと堂々としたら、、、それはそれでボロボロ壊れまくりのような気もします(苦笑

トラックバック - http://d.hatena.ne.jp/isshiki/20061126

2006-11-25

[] 第一回ゲーム検定

+++ ゲーム検定 成績発表 +++
 
あなたの総合得点は67点  全国平均 53点

全国順位(11月25日 23時現在)
8697位(85208人中)

−−ジャンル別得点表−−−−−−−−−−−−
            0_________50__________100%
ハードウェア       ■■■■■■■■■■■■■■■
ゲームシステム&テクニック■■■■■■■■■■■
キャラクター       ■■■■■■■■■■■■■
ビジネス         ■■■■■■■■■■■■■■■
雑学           ■■■■■■■■■■■■
−−−−−−−−−−−−−−−−−−−−−−−−−−

−−講評−−−−−−−−−−−−−−−−−−−−−
あなたは「ゲーム将軍ゲームに関して水準よりかなり多くの知識を有してはいるが、まだまだ上には上がいる!このままの地位に甘んじていてはいけない。日々精進あるのみだ!
貴方がもっとも詳しいゲームジャンル:
   ビジネス
貴方がもっとも詳しいゲームの年代:
   80年代後半までのゲーム誕生期
−−−−−−−−−−−−−−−−−−−−−−−−−−

エンタ検定実施中!
http://ent.nikkeibp.co.jp/ent/game/  

いやまあなんつーかむずかっというか何というか。

一応順位的には上位に食い込んではいるが、この程度の得点でこの順位なんだから、おっさんの参加率は低いと見た。

貴方がもっとも詳しいゲームの年代」が「80年代後半までのゲーム誕生期」というのもまあ納得な結果。この時期に一番ゲームで遊んだし。

ところで「貴方がもっとも詳しいゲームジャンル」の「ビジネス」っていったい何のことだ?

[] D でリソース(というかアイコン)を組み込む方法メモ

リソースファイルを用意。これは Cygwin で作る方法と変わらない。

icon ICON PRELOAD "icon.ico"

んでこれを DMD 付属の「rcc」というツールで、

rcc -32 icon.rc

とすれば「icon.res」というファイルができる。それをリンクすればオッケー。

[] 考えたら良く働いてくれてます

IRC で今メインで使ってるマシンの話になって、色々思い出してみた。

とりあえず現在の構成。

以下、思い出すままに。

このマシンを組んだのは 1998 年の夏。既に8年経過しております(IRC では9年と書きましたが8年でした)。

最初は、「中古部品だけで安く組む」というコンセプトの元、最終的に6万くらいで組んだマシンだった。

その後マザーボードが逝ってしまい、結局マザーは探し回って、確か結局新宿のソフマップで新品をゲットした。

CPU は Celeron300->Celeron500->Celeron633->PentiumIII という流れだったという気が。 PentiumIII にしたのがいつなのか既に忘れた。

一番初めに入れた OSWindows95 で、その後 Windows98->Windows98SE->Windows2000 という感じ。というかそもそもこのマシンは「Windows98 用のマシンを組もう」という目的で組んだのであった。

そう言えば、当時勤めていた会社の先輩から WindowsME を安く購入したのだが、結局どのマシンにもインストールされずにダンボールの中で眠ってるな。

現在メインで使ってるのは Windows2000 で、SP1 が出た時から使ってる。

メモリは 64MB->96MB->128MB->192MB->256MB->512MB というような。 512MB になってから既に3年経ったとか経ってないとか。

SCSI-HDD を導入したのは、その年に Pen4 マシンを組んで、いつでも環境を移行できるように、というのが理由だった記憶が。あれから4年経ちました。今なら USB-HDD なり LAN-HDD なりを導入するところだが。

サウンドカードの「VIBRA 128」は、驚くことに最初からだった、気がする。

ビデオカードは、最初何を入れてたっけー?と思い出してたら「Vanshee」とだということを思い出した。懐かしい。 GF2MX400 はその次に入れたカードかと。

電源は、最初 230W とかそれくらいだったと記憶してるが、今は 450W である。無駄に大容量。地球に優しくないですね。

光学ドライブは、当然最初は CD だった。 DVD を入れた理由は(以下自主規制)<なんで?

キーボードは色々繋いだし使ったがくだくだしいので略す(というかもう覚えて無い)。最終的に今のキーボードを使ってるが、本当は今も眠ってるメカニカルキーボードを使いたい。使わない理由は「打鍵音で近所迷惑になるから」。気にせず使えるようなお家に引っ越したい。

そういえば、 D ドライブWindows2000 が出るのに合わせて導入したことを思い出した。2年弱経って(1999 年だった) 4GB の新品 HDD より安い価格で 12GB の HDD が買える事に切なさを覚えた気がしたような記憶が。

あと、ボクのページで公開しているソフトは、全てこのマシンで作った。今調べたら、一番古いので 1999/11/22 の Lupin for Windows でした。ってゲームじゃなかったのね。

現時点でのボクのプログラマ歴は 15 年で、 Windows 使い始めてから 11 年が経過することを考えると、このマシンとはその大半を過ごした事になります。コレまで我侭な挙動も起こさず、大した悲鳴をあげずによく付き合ってくれてます。

とりあえず、ありがとう。今後ともよろしくね。

root-ameroot-ame 2006/11/26 19:06 >ゲー検
やっべ、同じ点数でした。。。最近のゲーム内容に関する問いがおっさんにも結構辛かったと思います。。。

isshikiisshiki 2006/11/26 22:50 >やっべ、同じ点数でした。。。
というか、この検定は傾向がどうとかで中身が問われるというか。最近のゲーム云々に関しては全くもってですな。

DK_alphaDK_alpha 2006/11/27 08:58 二人とも点高いなぁ。
普通に難しいって。

2006-11-23

[] #define の思わぬ使い方

ボク自身が C++ とかにそんなに精通してる訳では無いのだけど、

#define privat public

という使われ方をされていると。それもそんなに珍しい事例じゃないらしい。

これを C 言語に置き換えるとだな、つまり、

#define static extern

みたいな感じになるのか!?(正確には違うけどね)

なんか、言語キーワードを根底から覆す破壊力があるのね、と言うことを再認識させられましたよ。この「プリプロセッサ」という奴は。

[] PS3PSP向けにセガサターンソフトを供給検討中

ゲーム情報ブログ http://segafan.blog62.fc2.com/blog-entry-1349.html

今まで実現不可能だった

セガサターンソフトの供給!(゚Д゚;)

CPU(プロセッサー が全部で12個もついているためエミュレート不可能がついに!

当然PS3PSPへのコンバートも可能だから、埋もれているサターンソフト

遊ぶことが可能に!!

ふーん。

[] Titanion

http://d.hatena.ne.jp/ABA/20061123#p1

ナムコがギャプラスの続編をなかなか作ってくれないのでしょうがないから自作するかと思って作ってみたが……

Titanion http://www.asahi-net.or.jp/~cs8k-cyu/windows/ttn.html

やってみた。

コレ内容についてはともかくとして(え?)、「ギャプラス」について改めて考えてみた。

そもそも、まあ人にもよると思うが、何故ボクはギャプラスやってて楽しいんだろう、と。以下思いつくままに上げてみる。思いつくままなので、その要素が「楽しい」に直結してるかどうかは解らない。手元に基板があるなら検証しながらできるんだけど。

  • やっぱり緩急があったと思う。ボーナス&逆スクロールステージを抜けた後の難易度の下降曲線というか。言い方は難しいけど。
  • んで逆スクロール面の緊張感はいいよね。
  • 突っ込んでくる敵をどう避けるというのもギャラクシャン(=ギャプラス)シリーズの良い面ではなかった?それとも邪魔と感じたのかしら?
  • フューチャーの小出し度(徐々に新しい要素が出てくる=敵のフォルム変更,クイーンが運んでくるアイテム,打ち返し等)も良いバランスだったよね。
  • ステージ中に息を抜けるタイミングがあったのもいいのかもしれない(アイテム取得中など)。
  • それでいて息が抜けない敵が出てくる点とか(スターフラッシュがい良い例/でも後半ステージでは出すぎ)。

まあこれを全て満足させるとまるっきりギャプラスになってしまうので、それはそれでどうなのよ?という話な訳なんだが。フォロワーって難しいな。

kjikji 2006/11/24 17:35 邪道極まりないですね、その使い方

FlorianFlorian 2006/11/24 21:14 教え子と一緒に仕事をしていたとき
#define hoge while(1) {
#define fga }
というコードを見つけて卒倒したことがあります。ちうかっこ(思わずひらがな)、ですか……。

2006-11-22

[] ネタゲーなんだが

今作ってる(GameHell2000向け)ゲーム、画面に色々表示しないといけなさそうで、さてどうしたもんか、という感じになってる。

画面に色々表示するのって、画面栄えはするけど、出しすぎたり主張したりしすぎるとうるさくなるんだよねー。

いまだにそのへんの具合とかよく解らんと言うか、出しては抑えて出しては物足りないからまた出して、という作業の繰り返し。

その辺が最初からピシッと決まれば、もうちょっと制作期間も短くなるんだろうけどねえ。最終的にはセンスの問題か...。

最終的には、シンプルなデザインに、1ポイントアクセントがあるような、そんなデザインが良いんだろうなー、と、最近思う。

まあ、それこそセンスの世界になってくるわけだが...。「放送大学」でその辺の授業もやってくれないものか?<ってそれをタダで受けるつもりか貴様

勉強したところでその辺が身になるかどうかは解らないのがなんとも。

ただまあ、そういう集まりとか勉強会とか、カンファレンス的なものって無いのかな?インターフェースというか、インフォメーション(≒カッコイイ情報表示のさせ方)というか、そういうのに特化した事を勉強する集まりとか(ゲーム限定でなくても良い)。

DK_alphaDK_alpha 2006/11/23 09:56 技術量の問題なので、センスって言葉はよくないよ。と誰かが言ってました。
というか、言われました(苦笑
そりゃそうだよなー
デザイン論みたいのもあるんだろうし、今まで見たもののマネをしてる部分が大きいので、何故そうなのかを自分で考える事も大事ですよね。どうしたものか。

isshikiisshiki 2006/11/24 03:46 まーある程度までは経験値で補える、と言う意味での「技量も問題」というなら解りますが。
それ以上となると、やっぱり神掛かり的なものがあるんですよねー。
「デザイン論」に関しては学ぶべき所はあると思います。あるなら学んでみたいし(というのが先に書いた”放送大学”の下りだったわけですけど)。

トラックバック - http://d.hatena.ne.jp/isshiki/20061122

2006-11-21

気がついたらこんな時刻(22:50)だった。ボクの一日はいつだってこんな感じだ。

そういえばもう年末なのね年の瀬なのね。そうして一年が過ぎて行くのねん。

[] D の out と inout

まあ滅多に使わんのですが。ちょっとはまったのでメモ

Phobos の math ライブラリに、以下のような関数がある。

real modf(real x, inout real y)

ようは浮動小数のあまりを求める関数なのだが、第2引数の「inout real y」ではまった。

以下のような感じにしてたのだが、

BgObj[i].pos[X] = cast(float)modf(cast(real)BgObj[i].pos[X], cast(real)BgObj[i].vel[X]);

んでまあ、

bg.d(n): Error: cast(real)( (*(&( (bg_obj)[(i)]) + 16))[0]) is not an lvalue

ようは「cast(real)BgObj[i].vel[X] は左辺値じゃねえよ!」とコンパイラ様は仰られてる。

正解は、

real tmp = cast(real)BgObj[i].vel[X];
BgObj[i].pos[X] = cast(float)modf(cast(real)BgObj[i].pos[X], tmp);

としなきゃならん。つまり「inout」や「out」指定された引数には cast(hoge) は使えないというか、考えたら至極まっとうな話だった、という落ち。

ドキュメントでは、

この辺がそれを匂わせる話かしら?まあ値を返すんだから、受け取る方がその型で無いとメモリ破壊してしまうかも(というか上記の場合確実に)、という訳ですな。

というか D の数学関数はほぼ real 型を使うので、素直にそれに合わせとけ、という話もあるのだが。

トラックバック - http://d.hatena.ne.jp/isshiki/20061121

2006-11-20

[] 君は知っていたか!?

ドラクエIII のメニュー画面のあの「ベー」という音すら実はリクエストされている BGM(?) だってことを?

いやまあ、知ったところで何なんだよ、という話な訳だが。

でも、どうせあの例のドラクエファンファーレが(ROMに)入ってるんだったら、鳴らせよ、と思うわけだが。

今見てもあのメニュー画面はシュールだなあ、と思わずにはいられない。

[] ドラクエIII といえば

ボクの兄貴が大学に通ってた時代(たしか今から18年位前<えー!)、実家(九州)に帰ってきてボクの部屋(というかその部屋は元々兄貴の部屋だった部屋ってなんか紛らわしいな)に篭ってひたすらプレイしていたことを思い出した。

結局、無事、クリアはしたのだが。その年の兄貴の正月記憶が「ドラクエ」だったとすると、なんかこう、ちょっと申し訳ない気持ちになったりしなくはないかもしれなくはない(つまりどっちだよ

ところで新しい物好きの我が実兄は PS3 とか購入したのかしら?(PS2 に関してはボクより速く購入した実績があるので...。)

DK_alphaDK_alpha 2006/11/21 09:15 しらなかった!ちょっと得した気分(?)です。

isshikiisshiki 2006/11/21 22:59 何のためかは不明。

実兄実兄 2006/11/25 00:50 買ってないよー>PS3。
いまはNゲージに投資しておりやす。

トラックバック - http://d.hatena.ne.jp/isshiki/20061120

2006-11-18

[] NaN を落とそう(D 言語編)

id:isshiki:20061117:p3 のさらに続き。

id:shinichiro_h 様がステキな解決方法を提示してくださった。

FPUフラグをいじろう id:shinichiro_h:20061118#1163849316

で、これ嬉しいかというとあんまりゲームとかでは嬉しくなくて、ゲームで QNaN なんて出てきたらそれはもうものすごい勢いで即日落ちて欲しいんです。

ええ。全くもってその通りです。「何も表示されない」で「何事も無かったように」動くのって「なんでやねん」という感じ〜。

shin_h さんの方法では、確かに「外部から弄られた」状況に対しての情報は取得できないけど(あくまで落ちるだけ)、まあ、自分一人で作ってる分には「誰が何してる」かは把握してるし、昨日のような対処は多少オーバースペック気味な気はする。必要なら埋め込んでチェックするくらいでいいのかも。

それよりも、main 関数の先頭にやっておけば良いというお手軽さは素晴らしい。「チェック個所に一々コード埋めないといけない」のはなんとも非生産的ですし。

で、今作ってるネタゲー(またか)に組み込んでみた。

Error
-------------------
    Win32 Exception
-------------------

早速出ました...orz

[] 高橋名人から若者へ「ゲーム作りは格好良さではなく面白さを」

http://www.iza.ne.jp/news/newsarticle/natnews/interview/28127/

はーい!精進しまーす名人

問題は、ボクがそう若くないことだよな。

トラックバック - http://d.hatena.ne.jp/isshiki/20061118

2006-11-17

GG ALESTE2 の 3 面の曲が良い。最近ループで聴きまくり。

[] タイトル画面を作る

まあゲームには大体あるわけで。 FCDRAGON QUEST III みたいにテキスト出ておしまいという男仕様もありっちゃありだけど。

いつも悩むんですよ。どういう感じにするか。どういう画面にするか。

ゲーム画面(背景)とかリプレイとかを後で流す手もあるのですが、それもまーなんつーかこう。

というわけで、最近テレビ番組、主に NHK とかが参考になるなー、なんて思ってますです。

あ、でも「プロフェッショナル -仕事の流儀-」のタイトルって、黒バックの中央に文字列出てるだけだ。<ダメやん

[] まあ昨日の話の続きだが

浮動少数 が nan になってどうこうという話。

プログラミング的には「防御的プログラミング」というのを施さないといけないわけで、いくつか考えられるのだけど。

例えば昨日の例で言うと「座標をチェックする」ことにしよう。

1.座標を更新した時に座標をチェックしてタスクを殺す

TskBuf[id].px += TskBuf[id].vx;
TskBuf[id].py += TskBuf[id].vy;
if(isnan(TskBuf[id].px) || isnan(TskBuf[id].py)) TskBuf[id].step = -1; // nan なのでタスクを殺す

でも良いんだけど、これはこれであまり美しくないねえ。処理中にオブジェクトが突然消えたりして、チェック中に「オブジェクト破壊されたのかどうか」が、テストプレイ中だと気がつない、という問題が。

2.毎ループごとに座標をチェックしてassert.

TskBuf[id].px += TskBuf[id].vx;
TskBuf[id].py += TskBuf[id].vy;
assert(!isnan(TskBuf[id].px) && !isnan(TskBuf[id].py));

コレが妥当な案かしら?ただボクのシステムの場合、タスクバッファってのはグローバルアクセス可能で、このチェックだけでは「何処から更新されたか」までは判別できない。まあ座標系は他から更新することがまずないので問題ないと言えばないんだけど、ゲームシステムによっては起こりうる問題なので安心はできない。

でもまあ一応対策はあって、メンバを更新したタスクが解るようなしくみを導入することはできる。無理矢理だけど。

// eid = 更新先のタスク ID
TskBuf[eid].px = TskBuf[id].trg_x;
TskBuf[eid].py = TskBuf[id].trg_y;
TskBuf[eid].update_id = id;

こうしておいて、

if(isnan(TskBuf[id].px) || isnan(TskBuf[id].py)){
    // TskBuf[id].update_id のタスク内容を表示
    assert(false);
}

とかしておけばまあ、デバッグの助けにはなるか。

さらにこれらの処理を、

debug{
    // 先ほどのデバッグ用の処理
}

としておけば、-RELEASE オプションで弾かれるので、リリース時も安心、みたいな。

って、

// eid = 更新先のタスク ID
TskBuf[eid].px = TskBuf[id].trg_x;
TskBuf[eid].py = TskBuf[id].trg_y;
TskBuf[eid].update_id = id;

これってつまり、

// eid = 更新先のタスク ID
TskBuf[eid].px = TskBuf[id].trg_x;
TskBuf[eid].py = TskBuf[id].trg_y;
TskBuf[eid].update_id = id;
assert(!isnan(TskBuf[eid].px) && !isnan(TskBuf[eid].py));

ってすりゃいいだけの話じゃないか。あーばかばか。

2006-11-16

[] 久々に D でやっちゃったよ。

今まで実は DMD ver0.160 で作ってたんですが。理由はそれ以降のバージョンにすると当方の BulletML が動かなくなるから。という情けない理由。

んでまあ、特にいっかーとか考えてたんですけど、さすがになー、というかまあ現状バージョンは ver0.174 となっているわけでして、あまりにも時代が遅れすぎてるので、対処することにしました。

んでまあ、とりあえずなにがどうなってるか調べてみると...、

  • タスクは発行されてる。
  • んで実行もされている。
  • さらに描画関数にもきてる。
  • そんでもってタスクはいつまでたっても終わらない。

これらの情報を元に考えられることは、

  • タスク存在するのに見えないということは、見えない場所にあると言うこと。
  • でも、画面外処理で終了にいってないということは、なんか数値が異常?

というわけで、座標を表示してみた。

Bullet(active) nan,nan

おわ。想像通りだ。でもなんで?

そんで、その後色々見てみた結果、

createBullet(active) Acc nan,nan

まあ確かに、Accel 要素は使わん限り初期化もされんからね。

えーっと?でもなんでだっけ?

TskBuf[id].px += TskBuf[id].bullet_velx;
TskBuf[id].py += TskBuf[id].bullet_vely;
TskBuf[id].px += TskBuf[id].bullet_accx;
TskBuf[id].py += TskBuf[id].bullet_accy;

えーっと、つまり?理由はよく解らんけど、つまり、

  • ver0.160 までは、浮動少数型の変数に nan な値の演算しても大丈夫だった(みたい?)。
  • ver0.161 から、nan に関する演算の処理が変わった?
  • つまり、正常な浮動少数変数に nan な値の演算をすると、その変数も nan になる。
  • でも、一部の環境Linux)では動いてたっぽい。

ということになるな。

まあ確かに、お行儀の良い処理ではないので、素直に TskBuf[id].bullet_acc は 0 で初期化することにしましたが。

なーんかこれ環境依存しそうな部分だよなあ。今までのゲーム、大丈夫だったのかしら...?

えーっとひょっとして、「Z-LOCK」とか「GRADLE-UNISON」とか「REF-LECT BALL」のリプレイバグってコレだったのかしら...?

まあだとしたら、それはそれで良いんだけど、検証するのに時間掛かるんだよねえ...。

愚痴ってもしゃーないし、まあ、暇見つけて検証してみるか...。

トラックバック - http://d.hatena.ne.jp/isshiki/20061116

2006-11-15

[] FSIJ 月例会

に行ってきます。今回は BINARY HACK な内容で期待してます。

行ってきました。ってとっくに帰ってはいたのですが。

[] 月例会まとめ&感想

「かんそう」と打って変換しようとして「完走」が第一候補に来るうちの PC というか FEP(って言い方しないよね今は)はどうなんだというか、何か最後まで走らないことなんてあったっけ?マラソン趣味じゃないし。

まとめー。

  • 「Binary Hacks」は買いましょう。(どうにもならない宣伝)
  • みんなもっと「hello, world!」なプログラムを書きましょう。(どうにもならない啓蒙
  • プログラマたるもの、実行ファイルに入ってる「デバッグに関する情報」にもっと精通しましょう。(道を間違わなければ有益)

以上、プレゼンテーターの発表をもの凄く適当に要約してみました。これはひどい

それはともかく、完走(わー

もはやこれだけ読んでも何のことやらな内容ですが。

その後の一席(まあ呑みとも言う)で、やたら 80 〜 90 年代 PC の話題で盛り上がってしまい、プレゼンテーターでもあった id:w_o さんに対する配慮がちょっと足りなかったかも、と反省。ごめんね。おじさんだからボク。

今日の一席で話そうと思って話せなかったことのメモ

  • 券売機の処理とか、あういう仕事がしてみたい。
  • ラーメン屋とかの電光掲示板とかもやりたいというか好き。
  • LCD ネタとか、そういうの。
  • ROM を焼く行為の話というかそういうの。
  • ポケコンと言えば 1 ラインで 8 キャラくらいだったよね?それでゲーム作ったよね?
  • mon[enter] と Binary について。
  • デバッガで見る高級言語アセンブラコードの比率。(ようはどっちをよくみる?という話)
  • いじるのが好きか作るのが好きか?

ここに残したからってどうかという話だが。そもそも 2 時間程度の時間では無理だしね。

というかおっさん向けの話しかないのかよとかいう話題だな。

FlorianFlorian 2006/11/16 08:28 Binary Hacks読みました。組み込み萌えですよね。
でも、すっかりOSに深入りしているので自己書き換えやオーバーレイを見ていると微妙に寒気が走る今日このごろ。ユーザーランドバイナリアン(?)への道は遠いようです。

DK_alphaDK_alpha 2006/11/16 09:54 しかし、組み込みプログラムはハード側との付き合いが難しい!
ハード側の人には「プログラムはおまけ程度」にしか見て無い人もかなりいるので扱いがなんともアレで。
やってることは面白いんですけどねぇ。

isshikiisshiki 2006/11/17 02:01 今回の参加者の中にも組み込みな方はいて、色々話は聞いてますです。
最近は組み込みの世界でもミドルウェアな開発があるようで、それはそれでまあ、と思わくはないですが...。

トラックバック - http://d.hatena.ne.jp/isshiki/20061115

2006-11-13

[] 自機操作(システム)と学習効果についてちょっと考えてみた

最近忙しさにかまけて何も考えてなかったので、息抜きついでにちょっと。

ボクが公開してるゲームって、まーたいがい自機に関するシステムって単純だ。基本は「移動して、弾打てて。」の二つ。

SS2004 以降の主だったゲームを振り返ってみよう。

  • SS2004 8方向移動+メインショット+Bulletボム
  • AREA2048 8方向移動+メインショット+制限つきワイドショット
  • Z-LOCK 8方向移動+メインショット+LOCKショット(この表現は正しくないか?)
  • DASH BORDER 4方向移動+メインショット
  • GRADLE-UNISON マウス操作+移動の為の1ボタン
  • REF-LECT BALL 8方向移動+メインショット

まあこうして見るとゲームによって「ボム」的なものは存在するけど、基本的にはショットの延長線上だね。それ以外のシステムは無いと言って良い。

ボクのゲームが非常に薄っぺらいのが多いのは、実はこの辺に起因していて、まあ遊び始めてちょっとは楽しいと思う人はいるかもしれんけど、暫くすると短に作業になってしまって、結局は「学習効果もへったくれ」もなくやめてしまうパターンになりがち。

まあでも、そこはいろいろあって、ボク自身「複雑でアレコレ考えなきゃならん」ゲームというのが、年齢を重ねるたびにダメになってきてて、というのは実は言い訳で、若い頃から実は苦手だったのよね。単純で解りやすくてそれでいて没入できるのが好き、みたいな。

まあでもそうは言いつつ、単純なルールで「学習性がある」ゲームもあって、ボクの中での代表作と言えばそれは「Rogue」なんですが、人によっては「それの何処が単純なんだ」と言う人もいるとは思うけど、「Rogue」って、最初できることは少ないんだよね。せいぜい、アイテム拾って敵と戦ってレベル上げて、何か危なくなったら意味不明なアイテム使ってよりいっそう自らを苦境に追い込んでみて反省。それの繰り返しなんですよね。

それは、ボクの大好きだった(だった?)「ゼルダの伝説」にも言えて、以前も書いたかもしれないけど、ゼルダの(唯一にして最大の)良い所って、徐々に学習できる(させてくれる)事だったはずなんだよね。最近ゼルダにそれを感じることは少ないけども。

話を戻して、というか別に戻す訳では無いんだけど(どっちだ)、ボクのゲームは基本的に「あーこういうネタで作ったらどうだろう?」というところが出発点で、それを自分の脳内シミュレーションしながら実際にホゲって、で、結局できあがったものなんですよね。つまり企画立案(<と言って良いのやらという話もあるが)当初から実は脳内にこれ以上の物は無いというか、製作中も同様。だから製作過程の物を友人知人に見せてアレコレ意見は聞くわけなんだけど。

あー話がずれてきたぞ。何もかも眠いせいだ。

えーっと無理に結論に持っていくと、来年からはもうちっとその辺を考えて自作ゲー作っていきたいなーというか、そんな感じ。少なくともネタゲーは減らしたい所存(というか今年は多すぎた)。

DK_alphaDK_alpha 2006/11/14 08:45 すんません。
今年はこうね、いろんな人がゲー製作するきっかけになればと思ってやってるんですが、成果はあったと思いますし作ってもらって感謝しています。
今度学習について語りましょう。パターンゲー製作なら負けないぜ。

トラックバック - http://d.hatena.ne.jp/isshiki/20061113

2006-11-10

[] BINARY HACKS

11/11 は BINARY HACKS の日!

友人から「ザコン館に売ってたよ!」との情報が!

というわけで買ってきた。フライングだけど。

Amazon へのリンク http://amazon.co.jp/o/ASIN/4873112885/bk256-1-22/ref=nosim

(※アフェリエイトっぽいけど違います)

うーん。知り合いの名前が著者に出てるなんて。ちょっとした感動。

[] アソビットからメールがきた

以下簡単に内容。

11/11 に PS3 売るよ!

台数は、

20GB : 150台

60GB : 80台

だよ!

結構入れるんだねえ。やっぱり関東に集中してるのかしら?

あと、

購入金額5%、わずか3000円弱お支払いいただくだけで、メーカー保証内容が3年間になる「ラオックス延長保証」。

(原文ママ

ボロイ商売だな、と思った。

そういえば、PS3キャッチフレーズであるところの「PLAY BEYOND」を「PAY BEYOND」と置き換えた奴は凄いと思った。ボクも話でしか聞いてないんだけど。

と思って検索かけて見たら、

http://digdug.seesaa.net/article/26498480.html

こんなページが。しかも結構面白い<個人的に

トラックバック - http://d.hatena.ne.jp/isshiki/20061110

2006-11-08

[] Google で思い出す記憶もある

という話。

チャットで「ラーメン屋」の話になって、「そういえば『まるきんラーメン』が」という話を聞いて。

ネットで調べてみると、最寄の場所が「中延駅」の近く。さらにその情報を元に GoogleMap で場所を調べてみると、「あーなんかそうだったかも(最近散歩でこの辺は歩いてるけどすっかり忘れてた)という感じで。

というのも、今から 7,8 年くらい前に、当時勤めていた会社の先輩に連れていかれたラーメン屋もこの辺だったなー、と、今更ながらに思い出したのですよ。

思い出ついでに、近いうちに行ってみようと思う。今なら自宅から歩いて 30 分くらいだし。

ここんとこ更新が無かったのは、単純に仕事が忙しかったせいですよ。

というかこの分だと今後の仕事に響きそうで、はたして今年の年末とかあるのか?と言う状況になってきそうだ。ひー勘弁してくれよもう。

今年こそ実家に帰ろうと思ったのに...。抱えてる三つの仕事のうち何一つ解決して無いよ...。

今って11月だよね?そうだよね?嘘じゃないよね?嘘だと言って!<どっちだ

一応、livedoor マップのリンク張っときます。興味のある方はどうぞ。

http://map.livedoor.com/map/scroll?MAP=E139.43.1.5N35.36.7.2&ZM=12

中延店の住所からのリンクなので間違いないと思いますが、まあ、この辺の幹線通り沿いを歩いてれば見つかると思うので。

oyajioyaji 2006/11/09 18:56 帰ってこいよ!父さんはそれを望んでるよ。母さんは「仕事が大事」といっているけれど・・・」

isshikiisshiki 2006/11/09 20:00 ええ是非帰ってきたいですねえ。仕事持ち帰ってでも<こら

トラックバック - http://d.hatena.ne.jp/isshiki/20061108

2006-11-04

[] Auto Fire Conpetition 向けゲー

とりあえず、以前 C+SDL で作っていた奴を D に移植した。

核となる部分だけだけど。他はまああんま変わらないし。シューティングだし。

とりあえず自機ショットのシステムが動いて(ここが今回の肝なのよ)、敵が弾吐いて、自機も死んで、敵も破壊できるところまでできた。できた、というか、プロトタイプがあるのでそりゃすぐだわな。

しかし、なんかもうできた気分になってしまってよろしくない。実はほとんどできて無いというのに。

すでに解ってることなんだが、今回のゲームは敵の配置にバランスが凄く左右されるゲームだ。ネタゲーなのに。提出までに、実際にどこまで作り込めるかなあ...。

h_sakuraih_sakurai 2006/11/06 23:21 うう、まさに、私です。自分でゲーム作るとだいたい、動いたら満足してしまいます。駄目なんだよなぁ。実はほとんどできてないんですねぇ。むむぅ。

isshikiisshiki 2006/11/07 01:15 こういうコンテストに応募するというメソッドはかなり有効ですよ。一度お試しあれ。

DK_alphaDK_alpha 2006/11/08 09:32 ヘルで正月ゲーを作るみたいです。
新春餅つきシューティングとか期待してる俺です。

isshikiisshiki 2006/11/09 03:38 餅つきでなにかできるかどうかは解らんけど、何とかしてみるよ。半分言い出しっぺみたいなもんだし。

DK_alphaDK_alpha 2006/11/09 09:41 餅に深い意味はないので気にせずにー
お年玉ゲー1時間で作りました。やっけもいいところ!

トラックバック - http://d.hatena.ne.jp/isshiki/20061104

2006-11-03

[] フリーズドライ

今日コンビニで買い物してて思った。

カップラーメンに付いてるフリーズドライの具、あれ、別売りもしてくれんものか。\50〜\100 くらいで。それともすでにある?

嬉しいこととしては。

まあ普通に考えたらあまり嬉しいこととか無いのか?ボクは嬉しいけど。

トラックバック - http://d.hatena.ne.jp/isshiki/20061103

2006-11-02

[] shmups-dev.com に登録した

Auto Fire 2007 に出場するために。

で、レジストした後に出たメッセージ

Thank you for registering. You will receive an email soon with a link to activate your account.

If you don't receive an email after some time, check your spam folder.

スパムフォルダもチェックしてね!」だと。大変だねえ。

そして「メールこねーなー」と思ってたら、しっかり niftySPAM に引っかかってたよ...orz

なんてことするんですかっ!@nifty

[] 参加表明してしまった@AutoFire2007

宣言メソッド完了。もう後に引けない。

今回もネタゲーだなあ...。次こそはもうちょっとなんとかしたものをなんとかできるようになんとかしたい。

トラックバック - http://d.hatena.ne.jp/isshiki/20061102

2006-11-01

[] The 5th International GPLv3 Conference

http://gplv3.fsij.org/

ほむ。行ってみようかしら?

というか何時からるんでしょうこれ?

[] AutoFire 2007 SHOOTER Competition に参加してみようかな?

http://d.hatena.ne.jp/isshiki/20061029/p3 の続き。

宣言メソッドに基づき、参加表明をしてみたい。実際に参加できるかどうかは謎。

まあネタは考えてあるのだが、実際にできるかどうか...。できたものが面白い保証が全く無いのも悩みどころだ。

[] 何か唐突に

FFVII が遊びたくなった。なんでか解らんが。

でも、今やるときっとディスクアクセスに何かと不満が出るんだろうなあ。そのままでいいから DVD 版を PS2 で出していただけないだろうか?>スクエニ

というか来週末に PS3 が出るというこの時期にお願いすることではないが。なんなら PS3BD でもいいよ(よりいっそう無理

トラックバック - http://d.hatena.ne.jp/isshiki/20061101
 | 
20040203040506070809101112
20050102030405060809101112
2006010203040506070809101112
2007010203040506070809101112
2008010203040506070809101112
2009010203040506070809101112
2010010203040506070809101112
2011010203040506070809101112
2012010203040506070811
201301020708101112
20140203040509101112
2015010203040506070809101112
201601020304101112
20170405091012
201801020410
プロフィール

isshiki

isshiki

上級NEETの実態