HUD作成例 タイマー位置変更

ここではHUDのカスタマイズ方法を簡単に説明していきます。なお、この文章は以下のページを参考にしています。

HUDの基礎知識

WarsowではHUDは専用のスクリプトファイルによって作られています。なので、テキストエディターで編集することが可能で、かつ容易に編集することが出来ます。まずは、実際にHUDファイルがどのように構成されているかを見てみます。

HUDファイルは

C:\Program Files\Warsow 1.02\basewsw\data0_10.pk3
もしくは
C:\Program Files (x86)\Warsow 1.02\basewsw\data0_10.pk3

のなかに格納されています。拡張子.pk3の実態はzipファイルなので、.zipとリネームして解凍すれば中身のHUDファイルを入手できます。
data0_10.pk3を別の場所、例えばデスクトップにコピーし、data0_10.pk3を選択、F2キーを押してファイル名を編集しましょう。

data0_10.pk3 → data0_10.zip

リネーム後、data0_10.zipを解凍してみましょう。中に沢山のファイルが入っていると思います。

data0_10\huds

この中にHUDに関するファイルが入っています。

default.hudを開いてみましょう。'include ***'とたくさん書かれていますね。これは

\basewsw\huds\inc\

以下に入っている.hudファイルを読み込んでいます。このようにHUDの定義は細かい.hudファイルを読み込むことで定義されています。これにより、 HUDの一部だけを変更するのが簡単になります。例えば、defaultの照準に、guwashiのHealth表示に…と言った組み合わせを容易に作れます(表示位置が重なった場合は、手直しが必要ですが…)。

カスタマイズ

では、実際にHUDを改造してみましょう。既存のHUDファイルを変更するのがお手軽です。
まずはわかりやすいclassic.hudを改造してみましょう。タイマーの表示場所を変えてみます。以下の通りにしてください。

  1. data0_10\huds\classic.hud を開く
  2. “classic.hud”と全く同じ内容のファイルを “test.hud” として保存
  3. Warsowの設定ファイルが格納されたbasewswフォルダの下に “huds” という名前のフォルダを作成 basewswフォルダの場所に関してはこちらを参照
  4. “test.hud” をhudsフォルダに移動
  5. “test.hud” の内容の'include clock' を 'include test\clock' に書き換え
  6. basewsw\huds\フォルダの下に “inc” という名前のフォルダを作成
  7. basewsw\huds\inc\フォルダの下に “test” という名前のフォルダを作成
  8. \huds\inc\ から huds\inc\test\ に “clockl.hud” をコピー
  9. コピーした “clock.hud” をテキストエディタ(メモ帳など)で編集

clock.hudの編集は5,6行目の

setAlign #CENTER, #MIDDLE
setCursor 402, 27

setAlign #LEFT, #TOP
setCursor 30, 27

に変更します。

さらに33,34行目の

setAlign #CENTER, #MIDDLE
setCursor 400, 25

setAlign #LEFT, #TOP
setCursor 32, 25

これでタイマーの表示が左上に変更されました。Warsowを起動して、Player setupからHUDをtestに変更してみましょう。タイマーの位置が変わっていれば成功です。

説明

では、編集したclockについて説明していきます。

1行目のif文は、現在のゲームモードがRaceで無いことを確認しています。Raceモードではタイマーは必要ない、ということです。

5行目のsetalign #LEFT #MIDDLE は場所を合わせる箇所を指定しています。Left topなので左上が座標の基準点になります。

6行目のsetCursor 30, 27は後の drawClock で書き込むタイマーをどの位置に描き込むかを指定しています。

34,35行目の2つ目のsetalignとsetCursorは、タイマーを2重に表示させ影を作り立体感を出す為です。この部分は無くても問題ありません。

9行目のdrawClockで実際にタイマーを描き出しています。

このように、HUDスクリプトは

  1. setalignで描き出す内容の基準点(左上、右上、真ん中など)を決める
  2. setCursorで描き出す座標を指定する
  3. drawClockで実際に描き出す

というような手順で書かれています。

setalign と setCursor の、配置のサンプルを添付します。

hud potisionサンプル

タイマーのHUDファイル解説

if %RACE == 0		// レースモードでは表示しない

	// draws the backdrop shadow
	setFont "virtue_28"		// ← フォントの指定 使えるフォントはdata0_10\fontsに格納されている
	setAlign #CENTER, #MIDDLE		// 描き出す内容の基準点
	setCursor 402, 27		// 描き出す座標の指定
	setColor 0, 0, 0, 1		// 色の指定 RGBおよび透明度
	setSize 32 32		// サイズの指定 縦 横
	drawClock		// 上記の設定に従いタイマーを描写する

	// change color according to item
	setColor 1, 1, 0.6, 1
	if %PICKUP_ITEM == #ITEM_RED_ARMOR		// レッドアーマーを拾った時にタイマーを赤色にする
		setColor 1, 0, 0, 1 // red
	endif
	if %PICKUP_ITEM == #ITEM_YELLOW_ARMOR		// イエローアーマーを拾った時にタイマーを黄色にする
		setColor 1, 1, 0, 1 // yellow
	endif
	if %PICKUP_ITEM == #ITEM_GREEN_ARMOR		// グリーンアーマーを拾った時にタイマーを緑色にする
		setColor 0, 1, 0, 1 // green
	endif
	if %PICKUP_ITEM == #ITEM_MEGA_HEALTH		// メガヘルスを拾った時にタイマーを紫色にする
		setColor 1, 0, 1, 1 // magenta
	endif
	if %PICKUP_ITEM == #ITEM_QUAD		// クアッドを拾った時にタイマーをオレンジ色にする
		setColor 1, 0.5, 0, 1 // orange
	endif
	if %PICKUP_ITEM == #ITEM_WARSHELL		// ウォールシェルを拾った時にタイマーを水色にする
		setColor 0, 1, 1, 1 // lightblue
	endif

	// draws clock
	setAlign #CENTER, #MIDDLE
	setCursor 400, 25
	setSize 32 32
	drawClock		// タイマーの影を表示

	//draws Warmup
	if %MATCH_STATE == #MATCH_STATE_WARMUP		// ウォームアップ中は画面上に Warumup と表示する
		setFont "virtue_12"
		setAlign #CENTER, #MIDDLE
		setCursor 400, 125
		setColor 0.4, 1, 0.4, 0.5
		drawstring Warmup
	endif

endif

実際に改造する際の注意点

HUDスクリプトでは、仮想的に解像度800×600として記述し、位置の指定などはこの解像度を元に行います。
なので左上の座標は0,0 、右下は800,600になります。
この値で位置が決定された後、本来の解像度に自動的に変換されて表示されるので、実際の解像度とは関係しないので注意してください。

customfile/hud作成例.txt · 最終更新: 2013/10/19 18:51 by nasa
CC Attribution 3.0 Unported
www.chimeric.de Driven by DokuWiki Recent changes RSS feed