メイン

dev アーカイブ

2006年09月16日

Ajax Server Search: BF2142 を追加

2006/09/11 に Ajax Server SearchBF2142 を追加しました。 が、すでに現在 beta テストは終了しているようで、サーバリストは取得できますが、プレーヤは誰もいません :)

ass_bf2142.png

BF2142 demo が出たらすぐに対応するつもりです。

続きを読む "Ajax Server Search: BF2142 を追加" »

CountryFilter server plugin for CS:S/HL2DM: Version 2.0 開発中

CountryFilter server plugin for CS:S/HL2DM の新しいバージョンを現在開発中です。maxmind.comGeoLiteCity という、国だけでなく都道府県や都市の情報を得ることができる DB の無料版をリリ−スしたようです。それに伴い CountryFilter もアップデ−トしようかと考えています。

cf.jpg

この連休中になんとかなるかな :P

2006年09月17日

Ajax Server Search: Warsow を追加

Ajax Server SearchWarsow を追加しました。

追加した理由は、解像度 1600x1200 にて内蔵のサーバブラウザを使うと、「Search」ボタンが出ないため検索できないというバグ(?)があるようなので、自分がプレイしてみるために追加しました :)

warsow.jpg

需要がどのくらいあるかわかりませんが、しばらく様子をみてみます。

続きを読む "Ajax Server Search: Warsow を追加" »

2006年09月18日

Ajax Server Search: Quake3 1.16 を追加

Ajax Server SearchQuake3 1.16 を追加しました。

マスターサーバとの通信プロトコルが 1.32 と 1.16 で違うようで、今まで表示されていなかったようです。

q3.jpg

J's さん thx!

続きを読む "Ajax Server Search: Quake3 1.16 を追加" »

2006年09月24日

CountryFilter server plugin for CS:S/HL2DM: やっぱりマイナーバージョンアップにします

先週の連休中にどうにかするつもりだったのにどうにもならなかった CountryFilter server plugin for CS:S/HL2DM ですが、結局マイナーバージョンアップにすることにしました。

cf.jpg

コード自体を変更するのは結構サッサッとできるんですが、Windows 用と Linux 用の DLL をコンパイルして、それぞれテストして、ドキュメントを日本語と英語でそれぞれ書くのはあまりにもダルすぎ ;(

とりあえず、GeoIP Country の最新 API に対応(GeoIP-1.3.10 → GeoIP-1.4.0)して、最新の Source SDK でコンパイルしました。ただ、これだけだとつまらないので、他のプラグインが国情報を利用できるような仕組みを追加しました。この週末に終わるかと思ったけど、まだドキュメント書きが残ってます、やれやれ :/

2006年10月07日

Ajax Server Search: BF2142 Demo に対応しました

Ajax Server SearchBF2142 Demo に対応しました。ただ、サーバリスト表示、ゲーム起動は出来ますが、サーバに join することができません。詳しいことがわかり次第対応します。

BF2142pcSCRNonline5.jpg

ちょっとプレイしてみましたが、なかなか面白そうです。ただ、ポイント集めて装備を強化するっていうシステムは面倒なのでやめてほしいなー :)

続きを読む "Ajax Server Search: BF2142 Demo に対応しました" »

2006年10月27日

Ajax Server Search: BF2142 製品版に対応しました

Ajax Server SearchBF2142 製品版に対応しました。ただし、Demo と同様、起動オプションの詳細が分からないため。まだサーバに join することができません。詳しいことをご存知の方がおられたら教えてくださると助かります。

BF2142pcSCRN_PAC_AirTransport_inflight.jpg

ちなみに私も製品版買ってきましたよ :) 最近毎晩 10 時頃から clubDOOM のメンツで Skype 使いながらやってますので、一緒にプレイしたい方は IRC の #clubDOOM へどうぞ :)

続きを読む "Ajax Server Search: BF2142 製品版に対応しました" »

2006年10月30日

GyaASE: Ajax Server Search から改名しました

Ajax Server SearchGyaASE - Guwashi's yet another ASE に改名しました :)

gyaase.jpg

名前を考えるのが面倒で適当な名前にしていたのですが、色々とリンクしていただいてる方々サイトを見ると、Ajax Server Search だと長すぎて省略名の呼び方に困ってるような感じで、さらに こちら でも名前が不評のようでしたので、一晩考えて決めました :)

なんというか、ベタな名前ですが ASE が死んでしまったから作ったということがよくわかる名前にしました。読み方はなんでも結構なんですが、私は「ギャース」と呼ぶことにしました :) イメージとしてはこんな感じです。

nakata.gif <「ギャース!」

リンクしていただいている方々、どうもありがとうございます。お手数をおかけして申し訳ありませんが、リンク先の変更をよろしくお願いします。

2006年11月01日

GyaASE: BF2142 demo, DoD:S, TFC, CoD, CoD2 を追加しました

GyaASE に BF2142 demo, DoD:S, TFC, CoD, CoD2 を追加しました。

gyaase.jpg

コメント等でいくつかリクエストいただいていたゲームについて、国内サーバの状況を検討して追加しました。他にも追加してほしいゲームがありましたらご連絡ください。多少やる気のある今のうちにリクエスト出していただけると助かります。かなり気分屋なので :P

現在、Q4, Q3, ET, Warsow, CS1.6, CS:S, HL2DM, DoD:S, TFC, UT2004, BF1942, BF2, BF2142, BF2142 Demo, AA:O, FEAR, CoD, CoD2 に対応しています。これでだいたい国内でプレーヤがそこそこいるゲームは網羅したかな? あと何かあったっけ?

2006年11月05日

GyaASE: BF2 demo, CoD:UO, RO:O を追加、検索オプションの追加

GyaASE に、コメントで希望いただいていた BF2 demo, CoD:UO, RO:O を追加しました。これらのゲームは私は持っていないので、サーバ join できるかどうかわかりません、お手数ですがテストをしていただけると助かります。

gyaase.jpg

それともうひとつ。検索オプションを追加しました。Search のテキストボックスに、"-keyword"keyword 以外のサーバを検索します。また "/keyword"正規表現 による検索をします。

例として ET のリストから TC:E だけを取り除くには Search のテキストボックスに以下のように入力します。

-tcetest

別の例。ET のリストから etproetpub だけを表示するには Search のテキストボックスに正規表現で以下のように入力します。

/(etpro|etpub)

2006年11月07日

GyaASE: MOHAA を追加、メッセージボードの追加

GyaASE に、MOHAA を追加しました。お手数ですがテストをしていただけると助かります。

gyaase.jpg

それから Ajax を使ったメッセージボードを追加しました。1v1 の募集をしたり、時間を決めて集合等に使ってみてください。全体で 50 件までメッセージは表示され、1 日経つと自動的に消去されます。また 1 個の IP あたり 5 件までメッセージを書きこめます。5 件以上書くと古いメッセージは消去されます。

2006年11月17日

Warsow RocketArena MOD 作りました

Warsow 用の RocketArena MOD を作りました。とりあえず以下の機能が実装されています。

  • 新しいゲームモード arena の追加
  • 落下ダメージ無し
  • ロケジャンダメージ無し
  • 初期武器(全ての武器を持っている)
  • 初期ヘルス100、アーマー100

ダウンロードはこちら warsow_ra_a2.zip です。先週の週末2日間をかけてざっくり作ったものなので細かいこと(ラウンド制等)は作ってませんが、RA の雰囲気は味わっていただけるかと思います :)

wdm6.jpg

まだ 1v1 の RocketArena だけですが ClanArena もぼちぼち実装してみたいと思います。

PickUp ゲーム用 IRC Bot 作りました

CTF、TDM、紅白戦などのチーム戦を即席チームで遊ぶための IRC Bot を作りました。ircpickupbot-1.0.0.zip からダウンロードできます(要 Java Runtime Environment 5.0)。これまた1日2日で適当に作ったものなのでまだ色々とやらないといけないことがあります :)

現在この Bot は friend 系 IRC の #warsow に夜 9 時頃から居て Warsow CTF の募集をしています。とりあえずドキュメントを書いている時間がなかったので、Warsow Japanese Wiki: PickUp ゲーム を参照してください :)

limechat.jpg

画像は Bot とは関係ありません :) すみません。

2006年11月19日

GyaASE: MOHAAS, MOHAAB を追加しました

GyaASE に、MOHAAS(Medal of Honor: Allied Assault Spearhead). MOHAAB(Medal of Honor: Allied Assault Breakthrough) を追加しました。私はこれらのゲームを持っていないので、お手数ですがテストをしていただけると助かります。

gyaase.jpg

2006年11月21日

Warsow RocketArena MOD: ClanArena を追加しました

Warsow 用の RocketArena MOD に ClanArena (CA) を追加しました。Team Deathmatch をベースにして、以下の機能を追加しています。

  • 新しいゲームモード CA (ClanArena)の追加 (TDM ベース)
  • 一度死んだらマッチ終了までリスポーンできない
  • 片方のチームが全滅したらマッチ終了
  • 落下ダメージ無し (g_allow_falldamage で変更できます)
  • ロケジャンダメージ無し
  • 初期武器(全ての武器を持っている) (弾薬数は ra_initial_weak_*, ra_initial_strong_* で変更できます)
  • 初期ヘルス100、アーマー100 (ra_initial_health と ra_initial_armor で変更できます)

ダウンロードはこちら warsow_ra_a3.zip です。

wdm6.jpg

なお、以下の RA/CA の特徴はまだ実装していません。

  • スコアのカウント(現状ではマッチ終了毎にリセットされます)
  • ラウンド制
  • タイムリミット(マップ切り替え)
  • 死亡後の観戦(CA)
  • マッチ中のチームロック
  • スポーンしたままカウントダウンしてマッチ開始(現状ではカウントダウンしてマッチ開始時にリスポーンします)
  • マルチアリーナ

今のところ大きめのバグ?として、プレーヤ数が多いとマップによってはリスポーンポイントが重なってしまい、マッチ開始直後にテレフラグで死亡というバグ? があります :) 現状では、リスポーンポイントのロジックはデフォルトから何もいじっていないため、Warsow 自体の仕様だと思われます。つまり、CA だけでなく、DM や TDM でも同様の現象が起きると思います。このバグ、今度 Clanbase TDM Cup があるそうなんですが、大丈夫なんですかね :)

とりあえず、今後の開発の方針としては、大がかりな変更となる機能は実装しないつもりです。理由は、Warsow はまだ開発段階なので、今後大幅にコードが変更になる可能性があります。つまり、細かいところまでいじってしまうと、新しいリリースが出たときに MOD 側の修正が大変なことになりそうです。また、自分の力量/時間の問題もあります。それに某情報筋 :) によると、開発チームがいずれは RA/CA をオフィシャルリリースに追加するだろうとのことです(現在は別の優先順位の高い仕事があるので時間がないらしいです)。ですので、出来るだけ開発チームにに貢献できる形で進められるようにしたいと思います :)

当面、以下の追加/修正を考えています。

  • Linux 版の追加
  • スコアカウントの修正
  • マッチ中のチームロック
  • 死亡後の観戦(CA)

コメントやリクエストがありましたら、この Blog のコメントか 公式のフォーラム(英語) にお願いします :)

Warsownews.net記事 にしていただいたようです。いつも すばやい情報 Thx です Layzie さん :P

2006年11月22日

Warsow RocketArena MOD: Linux 版を追加しました

Warsow 用の RocketArena MOD に Linux 版を追加しました。

ダウンロードはこちら warsow_ra_a4.zip です。

wdm6.jpg

Windows マシンの VMWareFedora Core 3 でコンパイルしました :)

2006年11月29日

Warsow dev-team に入りました

英語でコミュニケーションするのは結構大変ですが、ぼちぼちがんばってみますね :)

warsow.net.jpg

2006年12月26日

GyaASE: Nexuiz を追加しました

GyaASE に、Nexuiz を追加しました。

gyaase.jpg

2006年12月28日

Warsow 開発風景

ネタが特にないので... Warsow 開発風景として、開発マシンのデスクトップの様子を載せてみます :) (解像度は 1600x1200 で 20 インチ液晶モニタを使ってます)

warsow_dev_desktop.png

右の黒いウィンドウでソースコードを表示しているのは Meadow というエディタです。MeadowGNU Emacs の Windows 版クローンです(Wikipedia の説明)。これでソースコードをいじっています。もうかれこれ 10 年以上 GNU Emacs を使っていて、このエディタなしには仕事ができない体になってしまいました :)。 ちなみにメール等もこのエディタ上で読み書きしています。

左上のウィンドウは Microsoft Visual C++ というコンパイラで、これで Windows 版のバイナリをコンパイルしてます。

左下のウィンドウは VMWare という仮想的に PC をエミュレートするソフトで、この仮想マシンの中に LinuxFedora Core というディストリビューションを入れて GCC というコンパイラで Linux 版のバイナリをコンパイルしてます。

最近はこんな感じでガリガリとコーディングしております =)

2007年01月09日

Pick Up ゲーム用 IRC BOT をリリースしました

前からちょこちょこと作っていた Pick Up ゲーム用 IRC ボットを大幅に改良してリリースしました(gyapickupbot-1.2.0.zip)。お正月休みで実家に帰っていたときに、ノート PC で FPS を遊ぶことできなかったため、こればっかりやってました(タッチパッドで FPS はムリ =))。

gyapickupbot.png

簡単な使い方を載せておきます。これらのコマンドのほとんどは、QuakeNet で稼働している echbot という PickUp BOT とほぼ同じように動くように作ってあります。

- !add [gameid[,gameid,...]]
  参加登録する。
  例: !add ctf

- !remove [gameid[,gameid,...]]
  参加をキャンセルする。
  例: !remove ctf

- !who [gameid[,gameid,...]]
  参加者リストを見る。
  例: !who ctf

- !ip <gameid> [newips]
  ゲームサーバの IP アドレスを設定する(管理者のみ)。
  例: !ip ctf 1.2.3.4:5555

- !motd <message>
  メッセージオブザデイ(MOTD)を設定する(管理者のみ)。MOTD はトピックに表示される。
  例: !motd 新しい BOT 完成したよ

- !lastgame
  直近のゲームの参加者と時間を表示する。
  例: !lastgame

- !promote [gameid[,gameid,...]]
  参加を促すメッセージを表示する。
  例: !promote ctf

- !status <gameid>
  ゲームサーバの状態を表示する。
  例: !status ctf

- !pickups [gameid[,gameid,...]]
  ゲームタイプを設定する(管理者のみ)。
  例: !pickups ctf:10,duel:2,tdm:8

- !set [variable [value]]
  各種変数を設定する(管理者のみ)。
  例: !set pickup,format Next Games: [%games%] || %motd%

- !help
  コマンド一覧を表示する。

現在、friend 系 IRC の #warsow で稼働しています :)

2007年01月13日

GyaASE: 国コードでソート機能の追加、検索結果を最大100件表示できるようにしました

GyaASE に、国コードでソート機能の追加と、検索結果を最大100件表示できるようにしました。

gyaase.jpg

検索結果の最大100件表示のほうは、サーバの負荷が高そうだったら元に戻すかもしれません =)。

2007年01月26日

The Art of Computer Programming?

sum.png

C

#include <stdio.h>
int main(int argc, char* argv[]) 
{
  int data[] = { 4, 6, 4, 9 };
  int i, sum = 0;
  for (i = 0; i < sizeof(data) / sizeof(int); i++) {
    sum += data[i];
  }
  printf("%d\n", sum);
  return 0;
}

C++

#include <vector>
#include <iostream>
using namespace std;
int main(int argc, char* argv[]) 
{
  vector<int> data(4);
  data[0] = 4; data[1] = 6; data[2] = 4; data[3] = 9;
  int sum = 0;
  for (vector<int>::iterator it = data.begin(); it != data.end(); ++it) {
    sum += *it;
  }
  cout << sum << endl;
  return 0;
}

Java

import java.util.ArrayList;
public class Test {
    public static void main(String[] args) {
        ArrayList<Integer> data = new ArrayList<Integer>();
        data.add(4); data.add(6); data.add(4); data.add(9);
        int sum = 0;
        for (int i : data) {
            sum += i;
        }
        System.out.println(sum);
    }
}

JavaScript

var data = new Array();
data[0] = 4; data[1] = 6; data[2] = 4; data[3] = 9;
var sum = 0;
for (var i in data) {
    sum += data[i];
}
alert(sum);

Perl

@data = (4, 6, 4, 9);
foreach $i (@data) {
    $sum += $i;
}
print $sum, "\n";

Python

import operator
data = [4, 6, 4, 9]
print reduce(operator.add, data, 0)

Scheme

(define data '(4 6 4 9))
(display (apply + data))
(newline)

Lisp

(defvar data '(4 6 4 9))
(print (apply #'+ data))

Links:

2007年01月29日

GyaASE: PainKiller, The Ship 追加しました

GyaASE に、PainKillerThe Ship を追加しました。

gyaase.jpg

PainKillerSteam で販売開始 だそうです。PainKiller なつかしいですね :)

2007年02月03日

Warsow の fps (frame per second) 指定

Warsowフォーラム を眺めていたら demoavi でキャプチャしたシーンが実際のゲームより遅くてサウンドと同期しないバグ が報告されていました(しかも 検証ムービー 付き)。

demoavi_delay_divx.png

ってこれたぶん fumio さんの POV ですよね。で、日本人でこんな検証ムービーをささっと作れる人って... て感じで誰が投稿した人かなんとなくわかってしまったので、早速検証してみました :P

自分のデモを使って cl_demoavi_fps を色々変えて demoavi をテストしてみたところ、cl_demoavi_fps 160 を指定すると出力される jpeg の fps は 166 になり、cl_demoavi_fps 300 を指定すると出力される jpeg の fps は 333 になりました。で、フォーラムを検索したところ、この 記事 によると、Warsow のエンジンの仕様で fps (cl_maxfps、cl_demoavi_fps) は 1000 / n (n は自然数) の値しか指定できないようです(Cyph3R さん情報 thx)。

例えば、

1000 / 11 = 90
1000 /  8 = 125
1000 /  6 = 166
1000 /  3 = 333
という感じで、任意の fps を指定しても 1000 / n に相当する値になる仕様のようです。

P.S. fumio the movie の続編(?)を楽しみにしてます :D

2007年02月17日

Let's create the new FPS!

Warsow forumここ とか ここ でも次のバージョンの話題が盛り上がっていますが、新しいアイデアをあれこれ考えるのは楽しいですね。Warsowオープンソース のゲームなので、気にいらなければ自由に変更できるところが魅力だと思います。Warsow に限らず、自分で新しい FPS を作るのはプレイするよりも楽しいと思います :)

新しいゲーム(or パッチ)が出るらしい → 期待 → リリース → ガッカリ ;(
というパターンに食傷気味の方、自分の手で FPS を作ってみませんか?

こちらは最近 G-Gamma さんが作った Warsow のカスタムモデルです。forum でも 好評 のようです。

gachapin.jpg

P.S. 近いうちに nip (Lead Development)ETR (Newser, Mapper, etc.) への インタビューが予定されている そうです =)

2007年02月23日

Warsow 0.3 Information

warsownews.netnip (Lead Development)ETR (Newser, Mapper, etc.) へのインタビューが掲載されています。

9 ページ目に 新マップのスクリーンショット が 4 枚あります。よく見れば、それぞれどのゲームタイプ用のマップかすぐわかると思います :)

wsw-pre03-3.jpg

このマップかなりカッコイイです。どのゲームタイプ用かわかりますよね? :D

2007年03月09日

Warsow HUD: wa-wa- HUD and bluespear HUD

日本発の Warsow 用 カスタム HUD を二つ紹介します。どちらもとてもよく出来ています GJ :D

一つ目は mapi さん作の wa-wa- HUD です。この HUD は、画面下部に必要な情報がコンパクトにまとまっていてとても見易いです。また、ヘルス/アーマーの値によってバーの色が変わるので、直感的に状況を把握できるのでとても気に入っています。公式フォーラム(英語)でも好評のようです :) 現在私はこの HUD をベースにして ちょっと改良したもの を使っています。

wa-wa-hud.jpg

二つ目は bluespear さん作の bluespear HUD です。下の画像は TV 放送用の bluespear_show HUD です。こちらも 公式フォーラム(英語)で好評のようです :) この TV 用 HUD は放送用(低解像度)に最適化されていて、大きめのフォントを使っていたり、チームカラーが見易くなっています。こちらは今後の SSSP.TV FPS.ch の放送で使われていくようですので楽しみにしています :D

bluespear_show_ctf.jpg

こういった感じで Warsow では自分好みの HUD がかなり自由に作成できます。カスタム HUD の作成方法については、Warsow Japanese Wiki - HUD (日本語) と Warsow Wiki -HUD (英語) が参考になります。

今回取り上げた二つの HUD はどちらも 公式フォーラム(英語) に投稿されています。こうやって日本の Warsow コミュニティから世界に発信されていくことがとてもうれしいです :) もちろん、英語で投稿しなければならないという難しさはありますが、HUD に関して言えば、スクリーンショットとダウンロードリンクがあれば通じます :P Warsow はオープンソースのソフトウェアですので、コミュニティの影響力がとても強いゲームだと思います。こういったコミュニティからの寄与がよりゲームを楽しくしていくと思いますので、どんどん投稿してみてください。また、出来のよい HUD は Warsow の公式リリースパッケージに取り込まれるかもしれません :D

2007年03月14日

GyaASE: Added Savage

GyaASESavage を追加しました。マスターサーバから各ゲームサーバの IP, Port を取得するのに以下のような方法を使っているんですが大丈夫かな :P もし、もっとまともな方法があれば教えてください :)

wget -q -O- http://masterserver.savage.s2games.com/ | perl -nle 'print $1 if (/(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\:\d{1,5})/)'

また、チャットのスクリプトをすこしいじって、国旗表示、ID表示を出来るようにしてみました。

gyaase_savage.png

P.S. ASE が復旧? したとか、しないとか。後で試してみたいと思います :)

2007年03月26日

GyaASE: Added Counter-Strike: Condition Zero

GyaASECounter-Strike: Condition Zero を追加しました。これで対応ゲーム数が30になったので、これ以上ゲームを追加する場合はアクセスの少ないゲームから入れ替えになります。

また、チャットのスクリプトをいじって、オンラインユーザの表示、現在 GyaASE で検索しているゲームの表示、ゲームアイコンの表示を出来るようにしました。Name の欄に名前を入力しておくと、Online の部分に表示されます(特に Message は入力する必要はありません)。

gyaase_cscz.png

あ、それと、どうでもいいですが favicon を追加しておきました GyaASE favicon

2007年04月01日

Warsow PSP!

Quake DS

quake_ds.jpg

Quake2 PSP

q2_psp.jpg

Warsow PSP!

warsow_psp_1.jpg

:P

2007年04月15日

GyaASE API beta release

GyaASE API をリリースしました。GyaASE API とは、GyaASE の内部で使っているサーバ検索バックエンドを Web API として呼びだせるようにしたものです。この GyaASE API を使うと、自分の Web ページや Blog にサーバの一覧を表示させたり、オリジナルのサーバブラウザを作ることができます。

例えば、こんな感じで簡単にサーバ一覧を埋め込むことができます :)

続きを読む "GyaASE API beta release" »

2007年05月15日

GyaASE: RSS 配信機能の追加

GyaASE に RSS 配信機能を追加しました。サーバ情報の最下段に RSS というリンクをクリックすると RSS が取得できます。例: Warsow の日本サーバの RSS フィード

Firefoxライブブックマーク を使うと、こんな感じでブックマークみたいにサーバが表示でき、さらに、クリックするとそのままサーバに入れます。また、こちらでは Google Readerlivedoor Reader でも動作することを確認してます。

gyaase_rss.png

Firefox を使っている方は、 IE Tab というプラグインを入れて、以下のようにサイトフィルタのところで http://d3.jpn.org/gyaase/* を指定しておくと、サーバ起動のバッチファイル(.bat)が保存せずにそのまま起動できて便利です。

ff_ietab.png

今回この機能を作るために、 RSS についてすこし調べた のですが、RSS1.0, RSS2.0, Atom 等の規格があって、どれで対応するか迷いました。ちょっと前の情報だと RSS 1.0 あたりが無難らしいということで RSS 1.0 を生成するようにしたんですが、最近はどの規格がメジャーなんでしょうかね。詳しい方が居られたら教えてください :)

2007年06月14日

Warsow Pickup mod - auto team shuffle by stats

最近はこういう Warsow 用 mod を作ってます。プレーヤの kill とか death をサーバ側のデータベースに保存しておいて、チーム分けの際に均等な実力差になるように調整する mod です (公式フォーラム)。

pickup_mod.jpg

2007年06月30日

Warsow 0.31 released!

Warsow 0.31 でました =) リリース日は時差の都合で毎回大変です...

have fun :D

2007年08月09日

GyaASE: Added ET:QW (Enemy Territory: Quake Wars)

GyaASEET:QW (Enemy Territory: Quake Wars) を追加しました。

etqw_ss.png
↑夕日をバックにスクリーンショットを撮るとかっこよく見える法則 :P

また、Bot の数を表示してほしいというリクエストをいただいたので、人数表示のフォーマットを "プレーヤ数(人間の数)/スロット数" に変更してみました。とりあえず Ping が 0 かどうかで Bot かどうかを判断しているので、id系ゲーム以外のゲームで表示が若干変になるかもしれません :) また時間のあるときに調べてみます。

それと、GyaASE で内部の色々な情報を、ぼちぼちドキュメントに書いています。サーバブラウザ関連に興味のある方はどうぞ :) 今のところ マスターサーバの情報 をまとめおわりました。

2007年08月11日

Google Translate (自動翻訳)をサイドバーに追加

Google Translate (自動翻訳)をサイドバーに追加してみました。

<script type="text/javascript"><!--
var target = encodeURIComponent(document.location.href);
document.write('<a href="http://translate.google.com/translate?u=' + target + '">English</a>');
//-->
</script>

こんな感じでちょっと JavaScript を使うと見ているページに合わせて URL を自動で書きかえられます :)

実行結果:

2007年10月15日

GyaASE: Added TF2, ET:QW Retail, FF, GRAW2, UT99, DoD

最近 blog の更新はさぼり気味なんですが、GyaASE に TF2, ET:QW 製品版, FF (FortressForever), GRAW2, UT99, DoD を追加してます。

TF2_Group.jpg

技術的な情報は、Wiki にまとめてあります :)

GyaASE: Added UT3 Demo (Unreal Tournament 3 Demo)

GyaASEUT3 Demo を追加しました。

ut3ss.jpg

まだ情報が少ないため、ゲーム起動のプロトコル名がわかりませんでした。応急措置として .bat ファイルで対処しています。UT99 の時は unreal://IP:PORT で、UT2004 は ut2004://IP:PORT だったので、類似のものがあるはずなんですがまだ見つかっていません。情報求む :)

こちらで把握できた範囲でのまとめ

まず、マスターサーバは GameSpy 系 (master.gamespy.com:28900) なので、GSlist を使うと簡単にゲームサーバの IP リストが取得できます。ゲーム名は ut3pcd を指定します。

gslist -q -o 5 -n ut3pcd

ゲームサーバ内の情報を取得するには QStat で -gs4 オプションを付けると情報を取得できます。

qstat -gs4 IP:PORT -P -R
なお、サーバ情報取得のプロトコルは gs4 の拡張?になっているみたいで、まだ QStat が正式には対応していないみたいです。が、以下のようにルール中に、マップ名(p1073741825)、ゲームタイプ(p1073741826)、サーバ名(p1073741827)が書かれているので、こちらから取得できます。
<rule name="p1073741825">VCTF-SUSPENSE</rule>
<rule name="p1073741826">UTGameContent.UTVehicleCTFGame_Content</rule>
<rule name="p1073741827">UT3 VCTF server</rule>

ゲーム起動は、ut3://IP:PORT だろうと思ったんですが、まだ出来ないみたいなので、とりあえず以下のコマンドを .bat ファイルで実行させています。

C:\Program Files\Unreal Tournament 3 Demo\Binaries\UT3Demo.exe IP:PORT

情報は、Wiki にまとめておきましたので、新しいことがわかったら更新しておきます :)

2007年11月22日

GyaASE: Added CoD4 (Call of Duty4)

追記2007/12/21: 検索エンジンで "CoD4 Wiki" でこのページに飛んでくる方がたくさんいるのですが、たぶんお求めのものはこちらです→ http://www41.atwiki.jp/cod4/

GyaASECoD4 を追加しました。

cod4ss.jpg

QStatSVN rev.280CoD4 対応がされたようです。以下にまとめておきます。

マスターサーバ
cod4master.activision.com:20810
master.gamespy.com:28900
サーバ一覧
qstat -cfg qstat.cfg -nh -cod4m,outfile cod4master.activision.com:20810,-
gslist -q -o 5 -n callofduty4
サーバ情報
qstat -R -P -cod4s IP:PORT
ゲーム起動
C:\Program Files\Activision\Call of Duty 4 - Modern Warfare\iw3mp.exe +connect IP:PORT

情報は、Wiki にまとめておきましたので、新しいことがわかったら更新しておきます :)

2007年11月29日

GyaASE: Added Crysis

GyaASECrysis を追加しました。

crysis_ss.jpg

GameSpy 系なので Gslistで簡単に情報を取得出来ます。以下にまとめておきます。

マスターサーバ
master.gamespy.com:28900
サーバ一覧
gslist -q -o 5 -n crysis
サーバ情報
qstat -R -P -gs3 IP:PORT
ゲーム起動(未確認)
C:\Program Files\Electronic Arts\Crytek\Crysis\Bin32\Crysis.exe +connect IP:PORT

情報は、Wiki にまとめておきましたので、新しいことがわかったら更新しておきます :)

2007年12月05日

Twitter 登録してみた

Layzie さんの blog を見ていたら閉鎖されるとのこと。どうもおつかれさまでした。一時期、お昼休みの楽しみは Layzie さんの blog でしたよ(朝記事が更新されていたので) :P

twitter.png

んで Layzie さんのはてなダイアリー を見てたら、何やら Twitter にハマっているみたいだったので、前から気になっていることもあって、登録してみました。

もし Twitter をやっている方がいたら登録してやってください :)

Twitter Tips: キーワードに関連する記事を書いた人を登録する方法

Twitter の話題。とりあえず、friend を登録しないとはじまらないみたいだったので、ちょっとスクリプトを書いて、キーワードに関連する記事を書いた人を自動的に登録してみました。

twitter_tips_1.png

まず、Twitter 検索 という便利なサイトを見つけたので、このページ からキーワードで検索をして、その結果からユーザ名を抽出しました。

で、そのユーザ名を Twitter API (日本語訳) に渡して自動的に登録するようにしてみました。スクリプトはこちら。

wget -O- "http://twitter.1x1.jp/rss/search/?keyword=foo&text=1" | perl -nle 'print $1 if (m|<title>.*@(.+?)\s.*</title>|)' | sort | uniq | perl -nle 'print "wget --save-headers -O- --user=\"email\" --password=\"pass\" http://twitter.com/friendships/create/$_.xml";' | sh > result.log

foo にキーワード、email に登録時のメールアドレス、pass にパスワードを置き替えてください。これでキーワードに関連する記事を書いたユーザを friend (Following?) に登録できます。なお、既に登録されているユーザを再度登録しようとすると 403 Forbidden、また、60分間に70リクエスト以上送信すると 400 Bad Request が返って来るので注意。

スクリプトをちゃんと書かないとダメかと思ったけど、やや強引に one liner で済ませました :D

2007年12月09日

Twitter Tips: Followers を friends(Following) に一括登録するスクリプト

add_followers_to_friends.png

TwitterFollowersfriends(Following) に一括登録する shell script を書いてみました。

userpass は自分のアカウントのものに書き換えてください :)

2008年01月20日

Warsow 0.4 released!

Warsow 0.4 でたよ :D

ねむいです...
Have fun! :D

2008年01月30日

Paul Graham の新しい Lisp 系言語 Arc がリリース

有名な Lisp ハッカー Paul GrahamArc という新しい Lisp 系言語を リリースしました

arc.png

以下、Windows でのインストール方法です。

  • MzScheme Version 352 をダウンロードしてインストール。ここでは C:\MzScheme にインストールしたとして説明します。
  • arc0.tar をダウンロードして、MzScheme のフォルダで展開。C:\MzScheme\arc0 以下に *.scm と *.arc があればOK。
  • こんな感じのバッチファイルを作って C:\MzScheme\arc0\arc.bat として保存。
    @echo off
    cd /d C:\MzScheme\arc0
    ..\MzScheme -m -f as.scm
    
  • コマンドプロンプトを起動して、C:\MzScheme\arc0\arc.bat を実行すると Arc が起動。
  • アンインストールは C:\MzScheme をごっそり消すだけでOK。

とりあえず Arc 関連のリンクをまとめておきました。他にもあったら教えてください。

2008年02月02日

Arc のソースを読む #1

Arc のソースをつらつらと眺めているので、ついでにメモを書いてみる。チュートリアルArc Cross Reference も適宜参照してもらうとよいかも。

スタートアップファイル (as.scm)

まず、Arc を起動するときに最初に読み込む Scheme のスタートアップファイル as.scm から。(as.scm の as は Arc Startup の略?)

(require mzscheme) ; promise we won't redefine mzscheme bindings

(load "ac.scm") 
(require "brackets.scm")
(use-bracket-readtable)

(aload "arc.arc")
(aload "libs.arc") 

(tl)

いくつかのファイルが順にロードされていて、どうやら以下のように分かれているようだ。

ac.scm (ac は Arc Core の略?)は Arc の式を Scheme に変換して実行するコア部分。Arc から Scheme に変換するコンパイラと、プリミティブな関数が Scheme にて書かれている。

brackets.scm は Scheme のリードテーブルを拡張して [+ _ 1] のような式を扱えるようにしている("[" と "]" というトークンはもともと Scheme にはないため)。

arc.arc で様々な関数/マクロが Arc にて記述されている。

libs.arc では HTTP サーバやアプリケーションサーバ等のライブラリをロードしている。

read-eval-print ループ (ac.scm)

次に ac.scm (Arc Core?)。まず as.scm の最後で呼ばれている (tl) を見てみる。tl は Top Level の略か。

(define (tl)
  (display "Use (quit) to quit, (tl) to return here after an interrupt.\n")
  (tl2))

(define (tl2)
  (display "arc> ")
  (on-err (lambda (c) 
            (set! last-condition* c)
            (display "Error: ")
            (write (exn-message c))
            (newline)
            (tl2))
    (lambda ()
      (let ((expr (read)))
        (if (eqv? expr ':a)
            'done
            (let ((val (arc-eval expr)))
              (write (ac-denil val))
              (namespace-set-variable-value! '_that val)
              (namespace-set-variable-value! '_thatexpr expr)
              (newline)
              (tl2)))))))

これは典型的な read-eval-print loop (repl)。on-err の部分はエラー処理で、エラーが起きたらそっちに飛んで、最後にまた tl2 を呼びだしている。

read は Scheme のをそのまま使っている(前述の "[" と "]" を扱うためにリードテーブルはいじってある)。Arc も Scheme も S 式なので楽できるね :D

eval は当然 Arc から Scheme に変換しないと評価できないので arc-eval という関数でやってる。arc-eval については後述。

で、評価結果を write で表示。ここで、ac-denil って関数でラップしてるんだけど、この ac-denil や ac-niltree 等の関数は他の部分でも沢山ある。Arc をも含めた一般的な Lisp では、真偽値は t と nil で空リストも nil で表わすことになっている一方、Scheme だと真偽値は #t と #f で、空リストは '() で表わすことになっている。で、その辺の差異を ac-denil 等の関数を使って吸収してると思っておけば OK。

コードを見るとわかるけど、Arc のプロンプトで :a と入力すると Scheme に戻ってこれる。で再度 Arc に入るには (tl)。

eval/コンパイル (ac.scm)

次は arc-eval。arc-eval は単に Arc の式(expr)を ac という関数で Scheme の式に変換して Scheme の eval に渡しているだけ。つまり ac が Arc→Scheme のコンパイラになっている。ac は Arc Compile(r) の略?

(define (arc-eval expr) 
  (eval (ac expr '()) (interaction-environment)))

(define (ac s env)
  (cond ((string? s) (string-copy s))  ; to avoid immutable strings
        ((literal? s) s)
        ((eqv? s 'nil) (list 'quote 'nil))
        ((ssyntax? s) (ac (expand-ssyntax s) env))
        ((symbol? s) (ac-var-ref s env))
        ((ssyntax? (xcar s)) (ac (cons (expand-ssyntax (car s)) (cdr s)) env))
        ((eq? (xcar s) 'quote) (list 'quote (ac-niltree (cadr s))))
        ((eq? (xcar s) 'quasiquote) (ac-qq (cadr s) env))
        ((eq? (xcar s) 'if) (ac-if (cdr s) env))
        ((eq? (xcar s) 'fn) (ac-fn (cadr s) (cddr s) env))
        ((eq? (xcar s) 'set) (ac-set (cdr s) env))
        ; this line could be removed without changing semantics
        ((eq? (xcar (xcar s)) 'compose) (ac (decompose (cdar s) (cdr s)) env))
        ((pair? s) (ac-call (car s) (cdr s) env))
        (#t (err "Bad object in expression" s))))

で ac は Shiro Kawai さんの 2008/01/30 の日記にある通り、

よく、「Schemeはdefine, quote, if, lambda, set!の基本構文があれば残りの構文はそれで書ける」と言うけれど、ほんとにそれをやっちゃった。コアで定義されている構文は quote, quasiquote, if, fn (lambdaに相当), set (defineとset!に相当)だけ。

数値等のリテラルならそのまま。シンボルなら ac-var-ref で値を返す。シンタックスなら expand-ssyntax で展開して再度コンパイル。式がペアなら関数呼び出し。で、あとは quote, quasiquote, if, fn, set をそれぞれ専用の関数(ac-*)で処理してる。

シンプルな Lisp ですね :D

もし、Arc→Scheme の変換結果を見てみたければ、以下のように arc-eval をちょっと変更してやって、Scheme のコードを表示させるようにしてみるとよいかも。

#|
(define (arc-eval expr) 
  (eval (ac expr '()) (interaction-environment)))
|#

(define (arc-eval expr) 
  (let ((scm (ac expr '())))
    (display "scm: ")
    (newline)
    (pretty-print scm)
    (eval scm (interaction-environment))))

実行してみるとこんな感じ。

arc> 1
scm: 
1
1

arc> (+ 1 2)
scm: 
(ar-funcall2 _+ 1 2)
3

arc> (= a 1)
scm: 
((lambda ()
   'nil
   (begin (let ((| a| 1)) (namespace-set-variable-value! '_a | a|) | a|))))
1

arc> a
scm: 
_a
1

arc> (def fact (n)  
       (if (<= n 1) 1 (* n (fact (- n 1))))))
scm: 
((lambda ()
   'nil
   (ar-funcall3 _sref _sig '(n . nil) 'fact)
   ((lambda ()
      'nil
      (if (not (ar-false? (ar-funcall1 _bound 'fact)))
        ((lambda ()
           'nil
           (ar-funcall1 _disp "*** redefining ")
           (ar-funcall1 _disp 'fact)
           (ar-funcall1 _writec #\newline)))
        'nil)
      (begin
        (let ((| fact|
               (lambda (n)
                 'nil
                 (if (not (ar-false? (ar-funcall2 _<= n 1)))
                   1
                   (ar-funcall2
                     _*
                     n
                     (ar-funcall1 _fact (ar-funcall2 _- n 1)))))))
          (namespace-set-variable-value! '_fact | fact|)
          | fact|))))))
#<procedure: fact>

arc> (fact 5)
scm: 
(ar-funcall1 _fact 5)
120

とりあえず今日はここまで。次回は、個別のコンパイル関数(ac-fn等)やマクロ関連を見ていくつもり :D

Arc 開発環境 on Emacs (Meadow)

arc_emacs.png

Arc のフォーラムで見つけたEmacs での Arc開発環境の話。いずれ近いうちに Arc 専用のモードが出てくると思うんですが、それまでの一時しのぎとして lisp-mode を乗っ取る形で対応する方法です。以下は Meadow でのやり方ですが、Unix 系では .bat を .sh に置き換えてください。

Arc 起動用のバッチファイルを作成。例) C:\MzScheme\arc0\arc.bat

@echo off
cd /d C:\MzScheme\arc0
..\MzScheme -m -f as.scm

~/.emacs.el に

;;;
;;; for Arc
;;; see http://www.robblackwell.org.uk/?p=88
;;;
(setq inferior-lisp-program "C:\\MzScheme\\arc0\\arc.bat")
(setq inferior-lisp-prompt "^arc>+ *")
(add-to-list 'auto-mode-alist '("\\.arc$" . lisp-mode))
(put 'def 'lisp-indent-function 'defun)
(put 'if 'lisp-indent-function 0)
(put 'do 'lisp-indent-function 0)
;; TODO: more indent definitions

などと書くと普通の Lisp のように M-x run-lisp でArc を立ち上げたり、ソースコード中で C-x C-e で直前の S 式を評価したり、C-M-x で def を評価したりできます。インデントについてはやりかけなので、もっと追加する必要があります。

2008年02月05日

QStat Win32 binary (SVN rev.292 with ET:QW 1.4 fix)

qstat_win32bin.png

需要があるかどうかわかりませんが、QStat の Windows 32bit 用の exe を置いておきます。ET:QW 1.4 対応の patch をあててあります。 SVN で新しいバージョンが出ても zip 中の src/qstat.vcproj をコピーして、Visual Studio で開いてビルドすれば OK だとおもいます。こちらでは Microsoft Visual C++ 2008 Express Edition でコンパイルしました。Unix 系 OS でのコンパイル方法は GyaASE:Compiling Qstat を参照してください。

2008年02月09日

GyaASE: Added RtCW and TC:E

GyaASERtCWTC:E を追加しました。 マスターサーバ等の情報は、Wiki にまとめてあります。

それと、id 系のゲームのカラーコード (^数字) を表示できるように修正しました。カラーコードの実装は このサイト がとても役に立ちました。thx ayunyan さん :D

gyaase_rtcw_tce.jpg

2008年02月13日

Arc New Version - arc1

Arc新しいバージョンが出ました。arc1.tar ダウンロードして、MzScheme のディレクトリに展開で OK です。

今回の目玉?は

The most dramatic change is probably the ability to use x.y and x!y as abbreviations for (x y) and (x 'y) respectively.
ということなので、ちょっといじってみました。
Use (quit) to quit, (tl) to return here after an interrupt.
arc> prn.1
1
1
arc> =.x.1
1
arc> x
1
arc> +.1.2
3
arc> prn!hello
hello
hello
arc> (= lst '(1 2 (3 4) 5 (6)))
(1 2 (3 4) 5 (6))
arc> lst.0
1
arc> lst.2
(3 4)
arc> lst.2.1
(3 4)
arc> (lst.2 1)
4
うーん、なんかこれはやりすぎのような気がしないでもない...

2008年02月29日

Warsow 0.42 released!

Warsow 0.42 でたよ :D

Download Now!

Have fun! :D

2008年04月03日

Warsow Mumble Mod

Warsow Mumble Mod をリリースしました。この MOD は、Warsow のプレーヤの位置情報(場所、見ている方向)に応じて、声の聞こえる方向や音量を調節してくれます。例えば、右にいるプレーヤがしゃべると、右のヘッドフォンから声が聞こえます。また、遠くにいる人の声は小さく聞こえます(設定で調節可能)。Mumble は、主にゲームで使われることを想定した、オープンソース、低レイテンシ、高品質なボイスチャット(VC)ソフトウェアです。

mumble_warsow_linked.png

2008年04月24日

GyaASE まだ続けます

GyaASE に faker が出現して blog のアクセスを増やしてもらったので、ついでになにか記事を書いてみた :P

Chat のほうにも書きましたが、とりあえず、来年の3月までサーバ会社にお金を払っているので、特別な事情が起こらない限りサービスを続ける予定です。それと最近すごく忙しいのでコーディングできてないのですが、ひと段落したら GyaASE 2.0 もぼちぼち作っていきたいと思います :D

gyaase_faker.png

それと、寄付にご協力していただいている皆様、ありがとうございます :D

EDIT: faker 対策もしておきました。faker は IP の一部が表示されるようにして、Guwashi 本人の投稿は id のところに admin と表示されるようにしました。

2008年06月27日

QStat UTF-8対応

たぶん、超ニッチな情報だと思うんですが、一応書いておこう :)

QStat の UTF-8 対応はかなりいい加減になっているようなので、以下のように修正すると、Source 系のゲームで日本語のサーバ名等が表示できます。あまりよくわからんのですが、Source 系は既に UTF-8 でサーバ名等を返してくるので、わざわざ Unicode から UTF-8 に変換しなくてもいいって感じなのかな。

% svn diff qstat.c
Index: qstat.c
===================================================================
--- qstat.c     (revision 310)
+++ qstat.c     (working copy)
@@ -11771,7 +11771,7 @@
        static unsigned char _buf[4][MAXSTRLEN + 8];
        static int _buf_index = 0;
        unsigned char *result, *b, *end;
-       unsigned int c;
+       unsigned char c;
 
        if (string == NULL)
        {
@@ -11843,7 +11843,7 @@
                {
                        fprintf(stderr, "Encoding error (%d) for U+%x, D+%d\n", 1, c, c);
                }
-               else if (xml_encoding == ENCODING_LATIN_1)
+               else if (xml_encoding == ENCODING_LATIN_1 || xml_encoding == ENCODING_UTF_8)
                {
                        if (!name_xforms)
                        {

実行例はこんな感じ。

% qstat -utf8 -xml -a2s 121.113.186.235:27015 
<?xml version="1.0" encoding="UTF-8"?>
<qstat>
        <server type="A2S" address="121.113.186.235:27015" status="UP">
                <hostname>121.113.186.235:27015</hostname>
                <name>[JP](test-L) 鉄砲倶楽部/部室</name>
                <gametype>cstrike</gametype>
                <map>de_dust2</map>
                <numplayers>0</numplayers>
                <maxplayers>32</maxplayers>
                <numspectators>0</numspectators>
                <maxspectators>0</maxspectators>
                <ping>47</ping>
                <retries>0</retries>
        </server>
</qstat>

ちなみに -utf8 をつけないとこんな感じ。

% qstat -xml -a2s 121.113.186.235:27015 
<?xml version="1.0" encoding="iso-8859-1"?>
<qstat>
        <server type="A2S" address="121.113.186.235:27015" status="UP">
                <hostname>121.113.186.235:27015</hostname>
                <name>[JP](test-L) IG 2E(6F%=I(/I(E.$</name>
                <gametype>cstrike</gametype>
                <map>de_dust2</map>
                <numplayers>0</numplayers>
                <maxplayers>32</maxplayers>
                <numspectators>0</numspectators>
                <maxspectators>0</maxspectators>
                <ping>31</ping>
                <retries>0</retries>
        </server>
</qstat>

2009年02月14日

Windows PowerShell で .NET Framework

.NET Framework を使ってちょっとしたアプリケーションを作るために Windows PowerShell をお勉強中。今作ってるのは...

サーバに空きがあるとバルーンで通知してくれたり、
gyaasechecker2.png

登録しておいたフレンドがサーバにいると通知したり、って感じ。
gyaasechecker1.png

近いうちに公開できると思います :D

2009年08月28日

Warsow 0.5 Released

A Fast Paced First Person Shooter Game - Warsow