Hatena::ブログ(Diary)

なんかしました

2009-09-11

HSPで思考設計型対戦ゲーム(2) バーコード

| 14:26

画像をバーコード上に画像に組み込むと言ったが、具体的にどのようにバーコード化するか。これを決めとかないとプログラムが書けない。

というわけでいろいろ考えて、フルカラー使ってRGBの各値をパラメータとして読み込むことにした。具体的には以下のように各色を使う。

赤:チップのカテゴリ(移動、攻撃、・・・)

緑:チップの種類(前進、後退、・・・)

青:チップのパラメータ(移動量、・・・)

上記のままではチップの分岐先が組み込まれていないので、もう1ドット用いて分岐先を表す。

赤:分岐の有り無し(分岐するかしないか選べるチップの場合)

緑:真の分岐先

青:偽の分岐先

以上、見てわかるとおり、非常に無駄が多い構成となっている。チップカテゴリなんて5つくらいだし、分岐の有り無しなんて0か1かしか使わない。でもなんでこうしたかというと、当然ながらプログラムが作りやすいから。わかりやすくてデータも扱いやすい。とても作者に優しい。

とまあそんなわけで、フルカラー使ってデータを保存するので、必然的にpngを使わなければならなくなる。(bmpはWEB公開という意味で論外)

pngの読み書きを行うモジュールもいくつか公開されているので、後でいろいろ試してみようかと思う。

HSPで思考設計型対戦ゲーム(1) 構想

| 14:11

HSPを使って、2D対戦を行うAIをプレイヤーが設計する、というゲームを制作している。AI設計に関しては色々考えたんだけど結局「カルネージハート」というゲームのシステム以上のものは思いつかずそれをそのままパクることに。具体的には、「移動」や「攻撃」、「索敵」などのチップを並べて繋げていくことによりAIを設計するというもの。例を挙げると、 嶌敵」で前方に敵がいるか調べ、敵がいなければ◆崟回」で向きを変えて,北瓩襦E┐いれば「武器」を使って攻撃を行う、というようにチップを繋げて構成していく形になる。チップは方眼状の基盤にはめていくので、当然置ける数には上限がある。

上記の例は実際にチップと基盤で表すと以下のような図になる。四角がチップを表し、中の数字はさっきの例の 銑の数字に対応する。黒い矢印は分岐でYesを、白い矢印はNoを表す。壁に向けて矢印を向けると、一番最初(左上)のチップに戻る。

f:id:anoato:20090911135728j:image

カルネージハートは3D、作ろうとしているゲームは2D(サイドビュー)で作成するので、戦闘システムやチップの種類などは変わるが基本の設計システムは上記のものを流用する。

ここまでは丸パクリなんだけど、このゲームで最もやりたいことは、作成したキャラクターを画像化してネット公開できるようにすること。これはバーコードのような形で設計データを画像に編み込めば別段難しいことなく実現できる。画像を読み込ませて他人のAIと自分のAIを戦わせたら面白いなあというのが一番の制作動機。画像だからカードのようにデザインして出力すれば楽しいし。ムラムラするよ。

苦労しそうなのがグラフィック、効果音関係だけどそれなりに頑張ってなるべく時間かけないように完成させます多分。そのうち。

鼻毛鼻毛 2009/09/11 19:14 フルカラーだとバーコード部分の色合いが凄い事にならないかと思ったけど
実際使うのは小さい数字ばっかだろうから全体暗めで程良い感じになりそうだね。

anoatoanoato 2009/09/12 01:47 そう一応それも想定済みです
まあ色合い変になってもそれはそれでと思っているので。

鼻毛鼻毛 2009/09/15 07:14 楽しみにしすぎて
今日これが完成する夢を見た

anoatoanoato 2009/09/15 15:01 夢で終わらないといいですね

2009-08-14

今後のアレ

| 21:08

ぼくもようやく夏休みに入ったのでいろいろやりたいことをやる


チャットの改良

これは最善策に見通しが立たないんだけど、今不具合が多いのでどうにかしなくてはならない。

いろいろやろうとするとやっぱり難しい。ローカルでうまくいっても実際サーバ上だとどんな不具合が出るのかわからない。

むしろPHPで作り直したら面白いのかもしれない

作る側が面白いってだけでそれはそれでまた問題でまくりなんだろうけど


HSPで糞ゲーを作る

別にゲームじゃなくてもいいんだけどHSPコンテストになんかインパクトある変なものを投下したい。

賞とかはいらないけど無駄に審査員の印象に残るようなやつ


iPhoneアプリ

未定


・未定

未定

2009-07-26

Perlでチャット(15) 何をどうしたって問題は出る

| 12:07

最初に無駄な負荷が高すぎるスクリプトを設置したせいで、隔離サーバに入れられてしまった。

負荷を減らすためにPerlコンパイル常駐させるSpeedyCGIというのを試したらめちゃくちゃ処理早くなった。初めからこれ試せばよかった。

で、ここでまた問題点が。入室後はいいんだけど、退室後や閲覧時に会話ログがなかなか更新されないという問題が。(更新やページを開きなおしたとしても同様)俺の環境ではIEでこの現象が起きた。

入室時は絶対そんなことないのになんでだろう、ってことでいろいろ試してみたら、要は「前回読み込んだときと内容が変わっていないであろう」出力を、毎回処理せずに前回読み込んだものをそのまま表示するというような仕様になっているようだ。(ブラウザ側ではなくサーバ側が)要はまあブラウザキャッシュと同じなんだけど、このままだと退室したら退室前の会話ログが表示されるという状態になってしまう。これでは困る。

で、いろいろ試行錯誤していたんだけど、結局、入室時はなんでログが更新されるのかと言うと、更新あるいは発言毎にフォームデータを送信しているため、サーバ側が「フォームデータの受信により内容が変わる可能性がある」と判断しているためらしい。つまり、閲覧時はフォームデータのやりとりを行わないので、前回のキャッシュを出力してしまうのだ。というわけでもう今回も荒技としか思えないが、ページを開くたびに無意味なフォームデータを送信し、サーバ側には「会話ログ表示スクリプトはフォームデータの内容によって出力内容を変えている」と思わせる処理を書き加えた。要するにフォームデータにより無意味な分岐を行わせたわけだ。実際には分岐しても全く内容は同じなんだけど、サーバ側に変わると思わせられればそれでいい。

これを実装したら、とりあえず問題は解決した。


↑フォームデータ送信だけでいいっぽい?

ていうか500エラー出た

SpeedyCGI解除したら直った

もうなんなの

2009-07-10

Perlでチャット(14) ファイルロックの見直し

| 21:39

ファイルロック関係でいろいろあったので、ちょっと考え直してみた。もっと良い方法がないだろうか。

調べてるうちに、Symlink Checker(http://www.kent-web.com/utility/)というものを発見。サーバでsymlinkとflockが使えるかを確かめてくれるcgi。mkdirに拘る意味はないし、これを試してみたら普通に使える模様。まあusamimiサーバFreeBSDだし、使えるよな・・

ということでflock関数を試してみることにした。

いくつかのサイトを参考にして実装。実用してみてどうかが楽しみだ


参考URL

http://www.tohoho-web.com/wwwcgi8.htm

http://www.tohoho-web.com/wwwperl2.htm#flock

http://homepage1.nifty.com/glass/tom_neko/web/web_04.html#flock

Perlでチャット(13) 実用での問題点

| 20:29

更新するたびにメンバリストに更新時刻を書き込むことで、退室ボタンを押さなくても最後に更新した時間から自動でメンバリストからユーザを削除する、ということをしていたが・・

更新のたびにファイル書き込みおこなっていたら負担がやばい。ユーザが増えると特に。

しかも前述の通りファイルロックを二重に行っていたので、余計に負担がやばい。テンポりまくるのもそれが原因だと気づいた。

というわけでとりあえずなんとかしよう。

更新とは関係なしに一定時間に生存信号を送るようにして無意味な負担を減らそう、ということで一定時間ごとに別に用意したメンバリスト管理用のcgiファイルに生存しているというformdataを送ることにした。

これだとログ更新以外でもブラウザ上で更新処理したみたいに見えるから気に食わないんだが・・・今のままほっとくとusamimiにも負担かかりそうであれなんでとりあえずこの方法で修正。

何かいい方法思いついたらそのときに直す。

2009-07-01

Perlでチャット 雑談

| 21:20

cgi-boyの説明見ると、

携帯電話での使い勝手を考慮したwebチャットです。パソコン/携帯電話共に更新された分のログのみを転送するシステムによりパケット量を大幅に減少し、軽快な体感速度で会話を楽しめます。

と書いてある。無駄に軽いのはその為か・・・・

しかしそれどうやってんだ?

ソースコードが見たい・・・

鼻毛鼻毛 2009/07/06 23:27 分かんないで言うけど2ch専ブラのオープンソースとか参考にならないかな。
最新分だけ読み込みって機能あったよね。手法が全然違うのかもしれないけど。

anoatoanoato 2009/07/07 01:23 ああOpen Janeとかあったな
でもDelphiって全然使ったこともないし
そもそもOpen Jane自体は開発終了してるんだよな