三角端。

Δ-sphere管理人三角区也による絵日記/ゲーム開発日記。コメントは右側のweb拍手からどぞー。

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

タンク

最近仕事が暇すぎるので会社でもドットを打ちたい気分でございます。
アレじゃね?プログラム部分なら問題ないんじゃね?




最近ボードゲームが楽しいです。
村の人生というゲームをしました。
レビューを見た感じだとおまり面白そうなことを書いてなかったんですが、
割と好きな感じのゲームでした。


◆ゲーム制作
ずっとぽちぽち
anime201.gifanime202.gif

防御力が高くて前衛で敵の攻撃を受け止めるとかそんな人。
要はタンク。

以前会社の人と話していて、タンクがどうとかという会話になったんですが、
当時の自分はなんとなくでしか分からない状態で適当に話をあわせてました。
で、今ふと調べてみたらMMOの用語だそうですね。
MMOをやらない自分には縁のない言葉でしたー(・ω・`)
スポンサーサイト

テーマ:ゲーム開発 - ジャンル:コンピュータ

フォント

同人イベントが連続してあったりでなにかと作業時間が取れていないです。
仕事はそんなに忙しくないんですが、毎日晩御飯を作っているしね。



デジゲー博行きました。
なかなか色々なゲームがあって刺激を受けました。
鉄道を作って町を発展させるゲーム楽しいです。
いずれ出展してみたいですね。



先週初めてコミティアに行ってきましたよ。
今回だけが特別だったのかもしれませんがよくある同人スペースの机ではないスペースが楽しい感じでした。
2畳くらいのスペースを好きなように使えるようで、大きなキャンバスを置いて絵を描いている人や低い机を置いて座敷ぽくしている人がいらっしゃいました。
こういうスペースを自分で作るようなイベントも楽しいと思いました。


◆ゲーム制作
まーた似たようなものを作っています。
フォント吐き出しツール。

出力はこんな感じ。
screen_257.png

前まではテキスト一覧のCSVを入力として受けるようにしていたのですが、
CSVを編集するのが思いのほか大変だということでテキスト編集のツールを作ろうというところから始まって、
それをつくるんだったら同じツールでフォントも書き出せたほうが楽だよねということになって今に至ります。

これでフォントツール何代目だろう・・・(遠い目

テーマ:ゲーム開発 - ジャンル:コンピュータ

RPGの難易度について

ちょっとRPGの難易度について考えたことを。

RPGの難易度ってなんなんでしょう。
ここでは単純に戦闘のみの難易度を考えてみることにします。

RPGの攻略とはなんでしょう。
アクションゲームであればこのタイミングでAという行動をしてくるのでBのように回避するというパターンですね。
RPGだと
・特定条件下でAという攻撃をしてくるのでその対策をする
・攻撃力が高いので防御装備を整える
・防御力が高いので攻撃装備を整える
・状態異常耐性をつける
そんな感じでしょうか。

ストーリーに沿って線形に装備品が強くなる場合2番目と3番目の装備品に関する選択肢がほぼなくなります。
あとは死なない程度の回復能力があれば負けません。

つまり、回復しながらHPを削る簡単なゲーム、です。

敵のHPが高くなると持久戦になり、プレイヤーのMPや道具のストックが必要になるんですが、
果たしてプレイヤーは持久戦をやって楽しいの?という疑問が生まれます。
ひたすら同じ行動、攻撃して攻撃して回復して・・・
なので個人的に敵のHPが高いことはその敵の強さに対する演出であっても難易度に結びつけるのは好ましくないと思います。

これを難しくするには・・・
・回復が困難である(回復薬が高価、有限など)
・プレイヤーがもてる状態異常耐性以上の状態異常を使う
・運ゲー

回復が困難な状況はゲーム全体を通してローグライクなシビアなゲーム、
状態異常は面倒な敵という印象を与えます。

戦闘中でのプレイヤーへの要素としては
・特定条件下でAという攻撃の対策の難度
・運ゲー

特定条件下でAという攻撃の対策の難度・・・
易:強力な炎魔法を撃ってくるから炎耐性を上げよう
難:強力な無属性魔法を撃ってくるから・・・?

「難」に対する回答が多ければ多いほど、それは他のボスにも有効なことが間々あることです。
そうなってしまうとそこの難しさのために他のボスを弱くしてしまうような気がします。
上の例で言うと魔法攻撃耐性のような全属性に対して有効な防御手段が生まれるということです。

そうなると・・・
結局は運ゲーかよ!

それで締めるのもアレなんで・・・

「装備(鎧や盾に限らずいわゆるアクセサリー)を選ぶこと」がRPGの難易度ということだと思いました。

つまり・・・ 戦闘が長引くのは面倒なだけ!

カメラベクトル

もう9月も半分が過ぎそうです。

最近は自分の専門では無い部分をすることになって発狂しそうになりながらすごしています。



ふと思ったんですけど、ゲームを作ったりしていてカメラの操作ってみなさんどうやっているんでしょう。
カメラって基本的にはカメラ位置(position)、上方向ベクトル(head)、視点(lookat)を設定します。
scri_369.jpg
でもこれって意外と使いにくいんですよね・・・

上ベクトルは固定だとしても、カメラを動かすためにばらばらの2変数を操作しないといけない。
キャラクターを追いかけるにしても視点も位置も動かさないといけない。
それがカメラだけ動いて視点の変わらないレールカメラなら使いやすいのかもしれませんが、
ゲームでそんなカメラを使うことは非常に稀だと思います。

実際には内部でlookatとpositionから視線ベクトルを出して、
視線ベクトル、上ベクトル、横ベクトル(視軸と上の外積)の3ベクトルとカメラ位置情報positionで表現されます。

自分は次の変数でカメラを管理することが多いです。
・視点位置(pos)
・回転角(rot)
・カメラ距離(length)

基準ベクトル(0,0,length)を作ってrotの回転をかけます。
これで視線ベクトルを算出します。
視点はposで、視線ベクトルをposだけ移動させたものがカメラ位置になります。
ついでに上ベクトルも回転させてもいいと思います。
scri_369b.jpg

回転角はクオータニオンでもいいんですが、
そんな複雑なことはしないなら、仰角(X軸)、平面上の回転(Y軸)の2回転で表現してもわかりやすいと思います。

データベース作成ツール データ整形

前回の続き。

マサカツヅクトハオモッテイナカッタヨ

データベースの値の整形のお話。

screen_254.jpg

こんな数値データの表を作ったとします。
データ型は整数です。
そのときにユーザーが小数を入力したらどうなるでしょう。
データとしては整数を持たなければいけないのに小数がデータになってしまいます。
あるいは数値以外の文字列を入力したときデータは文字列になってしまいます。

そのために小数→整数に変換したり、不正データである文字列であればキャンセルしたりという動作が必要になります。

ユーザーが入力を決定したときにCellParsingイベントが発生します。
このCellParsingイベントでユーザー入力データを正しいデータに整形することができます。
この引数(DataGridViewCellParsingEventArgs e)のe.Valueを書き換えたらできるんじゃねという安易な考えのもと、

if(e.Value.GetType() != typeof(int)){
 e.Value = 0;
}

というコードを書きました。
結論から言うとこれだけではまったく反映されません。
文字列データを入力したとき、0が代入される・・・デバッガで1行ごと実行しても代入されるんですが表示上は入力した文字列がそのまま表示されます。
どうやらe.ParsingAppliedをtrueにしないとこの関数内の変更は反映されないようで・・・

んでe.ParsingAppliedをtrueにしてみたら今度は止まる止まる。
スタックトレースも内部的に処理されているような場所でとまっているしなんだこれ・・・
色々調べていたらこのe.Valueには必要な型というのがあるらしくその型にしないといけないっぽいのです。
e.DesiredTypeを見てみたらdecimalだったので、
e.Value = 0 を
e.Value = 0m
にしたらうまく動くようになりました。

int→decimal変換くらい勝手にしてくれてもいいと思うんだ・・・ うん
次のページ

FC2Ad

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。