SDキャラ上半身表示

目次

会話パートに使えそうな素材を紹介

 HSPTVフォルダには様々なフリー素材が置かれています。 いろいろあるのですがHSP3.7からの物として、珠音ちゃん・プロ生ちゃんSD上半身コラボ素材を表示するための画像素材なども付いています。 この画像素材は表情差分データもあり、アドベンチャーゲームの会話パートに使いやすそうな感じです。

2024/8/18現在はβ版なのですが、使ってみつつ紹介してみようと思います。

会話パートに使えそうな素材の使用例。2人のキャラクターが向かい合って会話をしている。

素材ファイル

 ここで取り上げる素材データは、以下のファイルです。

  • up_*.png 上半身画像と基本表情
  • face_*.png 表情差分
  • up_icon.png 漫符アイコン
  • santa_*.png サンタ帽

 「珠音ちゃん・プロ生ちゃんSD上半身コラボ素材」なので 珠音以外にも、慧、フィネス、千由莉の合計4名のキャラクターと表情データが用意されています。(敬称略)

使い方

 これらの画像素材はcel系命令で直接使用してもいいと思うのですが、もっと簡単に使うための仕組みとしてこの素材専用のモジュールが準備されています。

モジュールファイル名:mod_tamakeisd.as

 画像素材だけの場合、プログラマーは通常自分で画像を切り出すサイズや配置座標を指定するなどの手順が必要です。 しかし、このモジュールの命令を使用すると、キャラと表情を選択するだけで画像を表示するなど簡単に素材データを取り扱うことができるようになります。

 まずはサンプルを実行して、どの様なものか確認してもらった方がいいかと思います。

sd_test1.hsp~sd_test4.hsp

 sdchr_load で素材を読み込んで、sdchr_putで置くだけ。 かなり簡単です。各命令の使い方はマニュアルを…と言えればいいのですが、ベータ版の今現在はhdlに反映されていません。 モジュールファイルmod_tamakeisd.as内のコメントを読んで使ってください。

表情の変え方

 キャラクターの表示命令は、表情の選択方法が異なる2種類が用意されています。

sdchr_put SDキャラの表示(パーツ変化あり)
sdchr_putex SDキャラの表示(表情あり)

 sdchr_put(パーツ変化あり)は、眉・目・口をそれぞれ指定できるもので、画像は上半身画像(up_*.png)の右側に配置されています。 強い感情表現には向いていませんが、自由な組み合わせが可能です。上手にやれば、目パチ・口パク アニメーションをさせることも可能です。

 sdchr_putex(表情あり)は、眉目口がセットになっていて表情を指定できるものです。画像は各キャラごとに左右2枚用意されています。(face_*.png) 強い感情表現が簡単にできますが、調整は出来ません。

 さらに感情表現の幅を広げるため、漫符を追加する命令sdchr_loadiconも用意されています。 状況や組み合わせ次第では表情の意味も変わってくると思うので、便利な機能です。

 これらはすべて専用命令を介して使うので、福笑いのように顔の位置がずれるといった心配がないのがとてもありがたいですね。

sdchr_putでほしい組み合わせを見つける

 sdchr_put命令では、キャラ、眉、目、口をそれぞれ指定できます。 さらにアイコンを加えると768(=4*4*3*2*8)通りの組み合わせが可能です。 キャラとアイコンまで入れるのは、さすがにおおげさですか。 なら、眉と目だけでほぼ決まるので12(=4*3)通りとしたほうがいいでしょうか。 それでも結構な数です。

 表示結果を見ずに適切な顔パーツの組み合わせを選ぶのはなかなか難しいと思うので、ツールを書いてみました。


#include "hsp3dish.as"
#include "mod_tamakeisd.as"

	;	表情変更
	; ほしい表情を探すためのツールとして作成。
	
	screen 0,640,960

	chr=1			; キャラID
	chk_dir=1		; 方向フラグ
	chk_santa=0		; サンタフラグ
	sdchr_loadicon		; アイコン(漫符)の読み込み

*start
	;	SDキャラの準備
	;	sdchr_load p1, p2, p3
	;
	;	p1(0) : キャラID(0=慧/1=珠音/2=フィネス/3=千由莉)
	;	p2(0) : 向き(0=右/1=左)
	;	p3(0) : サイズ%(0=100%)
	;
	cls
	sdchr_load chr,chk_dir,0	; 素材の指定
	prev_dir=chk_dir

	button "キャラ変更",*chrchange
	button "眉変更",*change_mayu
	button "目変更",*change_me
	button "口変更",*change_kuchi
	button "アイコン",*change_icon
	chkbox 	"向き",chk_dir
	chkbox 	"サンタ",chk_santa


*main
	redraw 0

	pos 0,0
	if i>2 : i=0
	sdchr_put chr, chr_mayu, chr_me, chr_kuchi
	if chk_santa {
		sdchr_putsanta		; サンタ帽を表示
	}
	if chr_icon > 0 {
		sdchr_puticon chr_icon		; アイコン表示
	}

	pos 100, 10
	mes strf("sdchr_put %d, %d, %d, %d", chr, chr_mayu, chr_me, chr_kuchi)
	if chr_icon > 0 : mes strf("chr_icon %d", chr_icon)
	

	redraw 1
	await 1000/12
	if prev_dir!=chk_dir : goto *start
	goto *main

*chrchange
	;	キャラ変更
	chr++
	if chr>3 : chr=0
	goto *start

*change_mayu
	;	眉変更
	chr_mayu++
	if chr_mayu>3 : chr_mayu=0
	goto *start

*change_me
	;	目変更
	chr_me++
	if chr_me>2 : chr_me=0
	goto *start

*change_kuchi
	;	口変更
	chr_kuchi++
	if chr_kuchi>1 : chr_kuchi=0
	goto *start

*change_icon
	;	アイコン
	chr_icon++
	if chr_icon>7 : chr_icon=0
	goto *start

 キャラと表情、漫符を選択すると、上部に実装例が表示されます。 これならプログラム実行してみたら思った表情になってなかった…を繰り返すことが減ると思います。

sdchr_putexでほしい組み合わせを見つける

 sdchr_putex命令では、顔の表情を指定できます。 「1=泣き/2=どや/3=丸目/4=にっこり/5=怒り/6=嬉しい/7=じと目」の7種類です。 これなら迷うことはあまりなさそうな気がします。

 といっても画像に名前が割り当てられているだけなので、場面に合った適切な表情になっているかは絵を見て確認した方がいいと思います。 というわけで、全キャラの全表情を確認するスクリプトを書いてみました。小さく表示しているので画像が荒いですがご容赦を。


#include "hsp3dish.as"
#include "mod_tamakeisd.as"

	;	並べて表示

	;	珠音ちゃん・プロ生ちゃん SD 上半身コラボ素材(イラスト: らぐほのえりか)
	;	HSP3用スクリプトサンプル( https://hsp.tv/ )
	;	(実際の画像データはpngフォルダに入っています)
	;
	;	暮井 慧(プロ生ちゃん)(C) Pronama LLC
	;	珠音ちゃん (C) オガワコウサク(チームグリグリ)/HSPTV!/onion software
	;	※このスクリプト及びサンプルデータは、ガイドラインのもと自由にお使い頂けます
	;	https://github.com/onitama/tamakei_ragho
	;
	;	(画像素材はhsptvフォルダから読み込みます)
	screen 0,900,600

	;	SDキャラの準備
	;	sdchr_load p1, p2, p3
	;
	;	p1(0) : キャラID(0=慧/1=珠音/2=フィネス/3=千由莉)
	;	p2(0) : 向き(0=右/1=左)
	;	p3(0) : サイズ%(0=100%)
	;
	m = 1
	repeat 4
		sdchr_load cnt,m,25	; 素材の指定
		m ^= 1	; 顔の向きを左右に切替
	loop

	;	SDキャラの表示(表情あり)
	;	(あらかじめsdchr_loadでキャラの準備をしておく必要があります)
	;	(posで指定されたカレントポジションから表示します)
	;	sdchr_putex p1
	;
	;	p1(0) : キャラID(0=慧/1=珠音/2=フィネス/3=千由莉)
	;	p2(0) : 表情(1=泣き/2=どや/3=丸目/4=にっこり/5=怒り/6=嬉しい/7=じと目)
	;
	nameKao = "1=泣き", "2=どや", "3=丸目", "4=にっこり", "5=怒り", "6=嬉しい", "7=じと目"
	redraw 0
	y = -10
	repeat 4
		kao = 1
		chr = cnt
		repeat 7
			x = cnt*130 - 10
			pos x,y
			sdchr_putex chr, kao
			kao++
			if kao > 7 : kao = 1
		loop
		y+=140
	loop
	
	x = 30
	repeat 7
		pos x, 10
		mes nameKao(cnt)
		x += 130
	loop
	
	redraw 1

 並べてみてわかる通りこの素材なんと、キャラごとに性格を反映した表情を反映しており、顔のパーツだけを比較すると全く同じという訳ではありません。豪華です。

 表情が豊かなのはいいのですが、ベースとなる無表情がないのが難点。 そこはsdchr_putと切り替えて使うようにする必要がありそうです。

注意点

 HSP3.7β9の現段階では、使用には若干の注意点があるので記載しておきます。 なお、今のバージョンでの事なので今後変わってくるかもしれません。ご了承ください。

 ベータ版なので、若干の不具合がある状態です。 見つけた不具合については報告を上げたので、将来的には修正されると思います。 修正されるのを待つか、変な動きする部分は避けて使う必要があります。

 このモジュールが内部で使用するウィンドウIDは固定されており、3~13を使用するようです。 自分のプログラムでcelloadcelid_autoを使っているとIDの奪い合いをしてしまうことがあるので注意が必要です。

 実行ファイルを作るために使用する画像をパックする場合、基本的には使う画像だけを指定すれば問題ありません。 使用しないキャラクターの画像はパックする必要はありません。 ただし、サンタ帽(santa_*.png)だけは使用しなくてもパックしておかないとエラー13が出てくるので注意が必要です。

便利なので使うといいよ

 ゲームでありがちな会話パートに使えそうな画像素材が2~3個の簡単な命令実行だけで手軽に使える。しかも実用レベルの豊かな感情表現が可能。 素材準備と素材を画面上に表示する下処理という手間のかかる部分が、すでに完了済みというのは大変ありがたいものです。

 実際に自作ゲームの会話パートに組み込んでみたのですが、とても便利で効率よく作ることができました。 便利なのでもっと活用した方がいいのではないか、などと思っています。