ラベル プログラミング の投稿を表示しています。 すべての投稿を表示
ラベル プログラミング の投稿を表示しています。 すべての投稿を表示

2009年3月22日日曜日

.fx

ここ数日fxにはまっておりました。
fxと言ってもふつーのオトナがはまっているのは外国為替証拠金取引ですが、僕の場合はシェーダー・プログラミングだったり…。
分からん人には分からんのだろうけど、もともと3dfx派でいまだに使うあても無いのにVoodooシリーズのカードが大切にとってあったりして、Voodoo3あたりが発表された時には遠足前の小学生のような気分になってしまった僕としては「RednderMonkeyよりFxComposerなんだよね」とかマニア風吹かせてみたい気分なんですが、残念ながら生来文系のおつむですからHLSLとかになってくるとちょっと理解するのがしんどくて…。
某所でPreston氏が公開しているエフェクト・ファイルをどうにかこうにか改変して、自分なりに必要と思われる機能を実装中です。
オリジナルのものはアウトラインの太さや色が固定になってしまっていたので、任意の色と太さをアプリ側で指定できるようにしてみたら結構良い感じになりました。
本当は任意の色と、テクスチャをブレンドしてアウトラインを描画する機能を盛り込みたいのですが、テクスチャのルック・アップがどうもうまくいかんです。
う~ん…。

2008年7月18日金曜日

ソフトボディダイナミクス - Softbody Dynamics その7


Here is a shot clip from the original softbody engine I've been working for a year. Now, it has following functions:
a. Collision detection with sphere and capsule shaped collider object.
b.Softbody object deforms along with collider object when you move SB object or colliders, of course.
c.You can built any shape of softbody object with a softbody editor specially made for this engine.
d.You can control your softbody object in several ways:
i)You can give velocity to control your object.
ii)You can drag anchored nodes in your softbody object to move it directly.
iii)Of course, you can use both way above at the same time.

Now I start working for adding collision system with convex shaped collider, but this function may slow the whole engine down a bit. Let see how it's gonna be.
Also, I am thinking about adding a function which keeps the volume of a SB object automatically to help us set up a softbody object which behaves as we wish...
All functions are written in DBP, so it must be a lot slower when we compared to the one written in C++, but I have no idea if there is any good Plug-ins for DBP for handling softbody object.
If any one feel ok to re-write this in C++ for DBP dll, please contact me.
If you have any comment, adivise or anything, plase leave it to the comment of this article.

ソフトボディエンジン、こつこつ続けております。 最近の進捗内容は、Spere、Capsule形状のコライダーとの衝突検知の実装、shared vertex情報をモデルに持たせて、それを基にしたスムースシェーディングの実装、キネマティクスによる弾性体の位置、姿勢制御の実装などです。 ソフトボディ・エディタの方もエンジンの仕様変更にあわせて小さなアップデートは続けているのですが、正直使い勝手のことを考えるとフルスクラッチしたくなってきています。衝突検知の実装にあたり、20年ぶりくらいにまじめにベクトルだの行列だの思い出してみたら、エディタの使い勝手を向上させる様々なアイディアも浮かんできてしまったので。 エンジンの方は、凸形状に限定したconvexコライダーの実装、閉じた形状の体積の変化から、ひしゃげてしまった弾性体の形状を能動的・自動的にもとの形状に戻る機能の実装などを考えてます。 妄想レベルではアルゴリズムはほぼ出来上がっているので、あとは私の悪癖といえる、なかなか動かない手に仕事をさせることができるかどうか、ですね。 DBP専用の関数群なんですけど、興味あるひといたらコメント欄に一言どうぞ。 機能に関する要望なんかもあるようでしたら是非。

2008年5月14日水曜日

ソフトボディ・ダイナミクス

昨日の夜中に組んでみた衝突判定&簡易クロスシムです。

ソフトボディ・エンジンですが、基本的にゲームで使いやすいような方向性で作ってまして、とりあえず汎用性のある衝突判定は必須だなとおもい、球体との衝突判定からはじめてみました。
次は円柱との衝突判定かな…?

今日から一月ロスに滞在します。

2008年5月1日木曜日

何とか…。


完成…!
数時間前に完成していたんだけど、アップロードできる場所がなかなか見つからなくて。
その辺のロダだとすぐ流れちゃうしね。
新し目のPC(DirectX9.0cの最新ランタイム必須)なら問題なく動くと思うので下のリンクからどぞー。
坐骨神経痛がひどいので午前中に病院行こうと思ってたんだけど徹夜してしまった。どうしよう…。

※v1、致命的なバグ(!)の報告がありました。
修正したバージョンにファイル差し替えましたので下のリンクから落としてみてください。
http://maglog.jp/showa-omnivorous/index.php?module=FileLoad&action=Load&mid=23819&cnd=0&fname=7000029814000uf.zip

2008年4月26日土曜日

牛歩戦術

ちょっと用法が違いますね、牛歩戦術の。
修理に出していたPCがようやく戻ってきたのでまずは仕事の環境と開発環境を整えなくては、とちまちま環境を構築中。
プログラミングは現在進行中のものがあまりにも時間をかけ過ぎてしまっている上、先月のHDトラブルで最新のコードがいくつか消失してしまいかなり涙目。
ま~、自分の不注意なのでどうしようもないですね。
上のスクショのパズルゲーム、ゲーム中に流れるBGMはネットで楽曲を公開されている方の物を使わせてもらっています。
公開されていたサンプルを2~3年前に試聴してすっかりほれ込んだ楽曲で、作者の方に問い合わせたところ、快く利用を許諾して頂いたものです。
今日の作業でオプション周りのコーディングやSE絡みのこまごまとしたバグ叩き、難易度調整を比較的簡単に行えるようなチューニングを行ったので、完成までのロードマップは9割がた走破したという状態です。
あとはスプラッシュスクリーン、クレジットなどを入れたらいよいよ完成!週末から一週間ほどびっちり仕事&用事が入ってしまっているので、公開まではあともうちょっとかかりそう。
誰が待っていると言う訳ではないんだけど、このゲームに使われている楽曲、本当にすばらしいので是非々々公開したい!というのが今の自分のモチベーション。
ある意味この楽曲演奏のためのガジェット程度に考えてもらえれば…。

2008年1月27日日曜日

タイトルロゴとか。

こ~んな感じで。
スプライトとポリゴン組み合わせると、結構簡単にそれなりの演出が出来るのが助かる。
個人でPCゲーム作ると一番の難関は技術的なことよりも単純に作業の量的な問題で、リソースをどれだけ作れるかなんですね、やはり。
そんな意味でやはり有りものの組み合わせでシーン毎に違った表現が出来る、というのは非常に楽をさせてもらえる部分でもあるうえ、全体のデザインに一定の統一感をもたらしてくれてくれるのが、特に専門的にそっちの勉強をしているわけでないモノからすると非常に助かる。
しかしパズルゲームでこの作業量って考えると、企画中のブツはどんな作業量になるんだろう…?

2008年1月26日土曜日

ようやく終盤

ちょっと本気出した。
ハイスコア画面とか、名前入力とか。
実際にやってみるとつくづく思うんだけど、商用ゲームってすげぇわ。
当たり前のようにタイトル画面だの、オプション画面だの、ハイスコアだの実装されてるけど、何一つとして誰かが作らないことには実装できないわけで。
単にテキストで読めればいい、と言うレベルだったら10分掛からないところも、すこしデザインやユーザビリティを考えると結構時間掛かってしまう。
でもこのメンドクサイが結局のところものづくりの楽しみの極みなんだよね。
月末はちょっと予定が入ってるので、今月中の完成は厳しいかなぁ。

2008年1月23日水曜日

ぼちぼち

進めているパズルゲーム、どんだけ時間かけてるんだよ~!と我ながら呆れ果てます。根詰めてやれば多分一週間で全て終わる程度の規模の物を、もはやほぼ1年掛けていると言う…。
デザインにこだわりが出てしまうと、永遠に終わらなそうなのでちょっとアイディアあったのですが、こだわりよりも作りやすさを選びました。
狙っているのは「居心地の悪さ」なんですが、そこそこ雰囲気は出てきているかな?と思います。
あとちょいで完成!ってとっとと放り出したい気分ですが、フリーで人前に出すとはいえ、形になるにはもうちょっと作業が残ってます…。

2008年1月22日火曜日

ソフトボディダイナミクス - Softbody Dynamics その6

ほぼ半年放置していたソフトボディ・ダイナミクス、久々にソース見てみた。か~なり訳がわからなかった。凄いね、半年前の俺。
じつは結構いい線行ってたのに、事故で最新のソース紛失してショックのあまり半年ほど放置してたんだけど、物理シム関係の環境から久々に刺激を受けてなんだかやる気がちょっとだけ出た、といったところ。
とりあえずDBP用にD3Dのコマンドを拡張してくれる素晴らしいdllを発見したので、それについてきたサンプルから関数をポンと移植して、法線を表示できるようにしてみた。
ダイナミクス、とか大層な看板掲げているけど実のところまじめにシムやろうとは全然考えていない。あくまでもゲーム用に、そこそこ簡単に弾性体が扱えるようになる関数群とそのためのエディタが作れればいいかな?程度で。
そのかわりそのぷるんぷるん感にはかなりこだわりたいとか思ってたんだけど、実際のところゲームに使う弾性体ってそれほどぷるんぷるんしていないものが結構あるかも、と言うことに気づいていまさらながらデータ構造から見直さないと、と言う悲惨なことに。ゲームに使うとすると、ダイナミクスだけでなくキネマティクスで扱えないと駄目だよね。
まぁ、そのあたりは妄想レベルではほぼ解決しているのであとは手を動かせるかどうかなんだけど、現時点での最大の問題は法線の平均化のうまいアルゴリズムが思いつかないこと。リアルタイムで頂点を共有する面を算出しているとリソースの無駄遣いに思えるので、エディタで吐き出す前にマテリアルの設定のような形で連続する面をあらかじめテーブル化しておくべきなのかなぁ、、、。
な~んかもうちょっとスマートな方法がありそうな気がするんだけど、、、。
どなたかお知恵をお貸し下さい。

2007年12月15日土曜日

門前の小坊主、習わぬ経を・・・

いや、全然用法が違いますね。
パズルゲームを作っていたら、プログラムの開発の進捗よりも、パズルゲームそのものが上手になってしまっていたのですが。
こんな状態をばっちり表現できることわざがあったような気がするのですが、なにやら思い出せません。
ノート貸してやった友人がテストで満点取ってるのに俺は赤点みたいな気分です。いや、これもちょっと違いますね。
どうもすっきりしません。

2007年10月24日水曜日

案ずるより尋ねるが易し。

結果から言えばさくっと完成したんですよ。何がって、スプライトの上にテキストを上書きするサンプルなんですが。
某所でテキストをスプライトに上書きするにはテキストそのものをスプライト化するしか方法が無い、とあったのですが、いまどきのハードって別にスプライトを専用のハードで処理しているのでは無いので他にやりよう有るのでは?と思って色々試してみました。
一番簡単だと思って最初に試したのが、スプライトを描画した後の画面データを一度イメージとしてキャプチャしたあと(get image)それをペーストしてから(paste image)その上にテキスト書いてsyncすればよいのでは?と誰でも思いつきそうな方法。
で、実際やってみたらget imageでスプライトが取りこめねー!
そして痺れる位おせぇー!
そんなところまでスプライトをシミュレートしているのか、DirectX9、侮れねぇ。
むむむ、実は結構手ごわいのか?
で、リファレンスずらーっと眺めてみたら、draw sprite firstとdraw sprite lastなるコマンドが!
おお!これだ!スプライト描画時の優先順位を変えるコマンドがちゃんとあるでは無いか。
で、試してみたら今度はDBPのバグなのか、スプライトそのものが一切表示されなくなってしまった。
うーん、却下、次!
で、仕方が無いので本家のフォーラム除いてみたら、ふつーにありました、スプライトの描画優先順位に関するスレッドが幾つも。
なんだ、paste spriteなんてコマンドがあるんすね。なんだか普通にイメージをペーストしているのと変わらないような気もしますけれど...。
15分で出来るだろうと思ってはじめたら結局2時間近く嵌ってしまった。寝なくては。
とりあえずサンプル、アップローダーに上げましたので、興味あるかたは右のリンクからどうぞ。

2007年9月29日土曜日

アップローダ建てました

フリーのレンタルアップローダーだなんて、便利な世の中になったものですね。いやぁ、俺が高校生の頃にX68000に国産PCでは始めてHDが標準装備されて… あれ?激しく既視感が…
とりあえず某所で要望のあったSparky's Collision DLLのヘルプファイル、翻訳してアップしておきました。右にロダのリンクがあるので必要な方はそちらから飛んで落としてください。日本に5人といるのか疑問ですが。
そろそろカニカゴの季節ですね。イヒヒヒヒ

2007年9月2日日曜日

Multisyncサンプル

某所でリクエストがあったサンプルアップします。
http://gamdev.org/up/img/10070.zip
といっても、ソースと素材しか入ってないのでコンパイルできる環境が無いと落としても意味ないす。
DBP 5.8+&Multisyncが必要です。
スクショ見て分かるとおり、同期取っているのはオークのみです。羊歯は乱数で生やしているので…
このサンプルはサーバーに接続できるクライアントは1つだけという仕様なんですが、以前128クライアントくらい接続できるサンプルも作ったのですがどこに行ったのか見当たりません
Multisyncも当時よりバージョンアップしているようなのでもう一度つくらんといかんですね。
Thanks, Benjamin!

2007年8月23日木曜日

ソフトボディ ダイナミクス - Softbody Dynamics その5


ソフトボディ・デザイナー、進んでます。
ここ数日、風邪で身動きが取れないのを幸いにPCに張り付いてました。
今日、UV設定に必要な関数はほぼ書き終わったので、全体としては90%くらいは完成したかも。モデリング、テクスチャともに当初予定していた機能は全て実装済み、あとは現状ショートカットでしか関数にジャンプ出来ないので、既に仕込みは完了済みのボタンによる操作を実装すれば完成と言っても良いかも。
あ…、このエディタは右手座標系なので、DirectX標準の左手座標系に変換して出力するモードをつけなくては… 。
今のところポリゴンの裏表を確認するには、モデルをエンジン側に読み込む必要があるので、コンソール・エリア下の空いているスペースにプレビュー・ウインドウを入れるか迷ってます。ちょっと億劫だったり。
既に好きな形状のプルプル物体をモデリングして任意のテクスチャを張り込むことが可能になっているので、ついつい無意味なプルプルを作成してそのプルプルから沸きあがってくる多幸感に酔いしれてしまうのでなかなか作業が進みません。風邪ひいてますしね。

progress 90%

2007年8月10日金曜日

ソフトボディ ダイナミクス - Softbody Dynamics その4


精神的におっくうだったソフトボディ・エンジンのポリゴン化に取り組む。
頂点、UV、法線をデータから読み込み、自動でポリゴン設定>オブジェクト作成を行う関数を書いた。グローバル変数のスペルをミスって 小一時間(ホントは3時間くらい)はまった。
どうして30秒前に自分で書いたことすら覚えていられないの!? orz
エディタの方は細々と使い勝手の改善をしつつ、今日の作業でポリゴン化に必要なデータのフォーマットも脳内ではほぼ固まったので、今後はエディタ側のポリゴン&UV設定部分かな。
ただ、エンジン側の法線の平均化のアルゴリズム、いまひとつ良い方法が思いつきません、と言うか細かい部分で検証が必要なことが残っているので本当は先にエンジン側を固めるべきかもしれないけど、その細かい部分の検証をするにはエディタでデータが気楽に作れる状態でないと面倒なんだよね。
http://gamdev.org/up/img/9951.zip
スクショでは伝わらないこのプルプル感!PCにまともなグラボ積んでる人は是非上のリンクからファイル落としてお試しあれ。DirectX9.0c対応のグラボ必須だよ。「D3DホニャララのDLLが指定されたパス云々~」のエラーがでる人はマイクロソフトのHPで最新のDirectX9.0cのランタイム落としてインストールしてください。

2007年8月9日木曜日

ソフトボディ ダイナミクス - Softbody Dynamics その3


ソフトボディ・デザイナー、進んでます。
リアルタイムで扱える軟体モデルはAgeiaのPhysxPPUとかを導入しない限り、結構CPUリソースを喰ってしまうのでそんなに複雑なモデルを扱う事は出来ないと思うんだけど、だとすると今の俺のやってる事は何!?
軟体モデルのエディタと言う意味では完全にオーバースペックかもしれない。
現状のソフトボディ・エンジンのアルゴリズムは各頂点にかかる加速度は重力と、他の頂点と繋がっているスプリングモデルの張力のみを考慮するものなので、自立するオブジェクトを作成しようとした場合、かなりの本数のスプリングをうまく張り巡らせなければならない。それはそれで、吐き出されたモデルがかなり酔っ払ったような挙動をして面白いんだけど。
で、速度的なことや、物体の表現力を考慮して、頂点が原型からどの程度移動しているかと言う相対的な値を元に頂点に加速度を加えて、軟体モデルが原型に戻ろうとする作用を強化したアルゴリズムも組もうと思っちょる。そのときこそ、この現状オーバースペック気味なエディタがその真価を発揮してくれるはずだ。
モデリングに必要な機能は9割出来たので、あとはプリミティブの自動生成、クロスの生成程度を付け足したら、いよいよ鬼門のポリゴン生成、UV設定に手をつけなくては、、、。
ポリゴンとUVは別アプリにしたほうが簡単そうだなぁ。
しかしFPS 7!?とは、、、。誰か高速化してください。

2007年8月4日土曜日

ソフトボディ ダイナミクス - Softbody Dynamics その2

ここ数週間動植物ばかり褒め称えてきた俺だけど、一応こつこつプログラミングも進めてきていた、実は。
コレは7月10日にアップした日記にあったエディタの現在の姿。
頂点の選択のための関数にあったバグをこつこつと直し、押し出し、回転体なんかの作成も出来るようになった。
頂点削除の関数を拡張しないといけないのは分かっているんだけど、結構苦労した部分なのであんまり触りたくないんだよなぁ…。いやいや、近々叩きます。
現時点でも最低限のことは出来るんだけど、あとはコレにポリゴン作成&UVの設定の機能を付け足せば最低限の目標は達成できる。
エディタで吐き出した多頂点の軟体モデルがぶにょぶにょ揺れ動いているのを眺めていると何故か多幸感が湧き上がってくるのが面白いです。物理すげぇ!

2007年7月10日火曜日

ソフトボディ ダイナミクス - Softbody Dynamics


このところプログラミングから遠ざかっていた。
4月頃にソフトボディ・ダイナミクスに手をつけていたんだけど、プリミティブ以外の複雑な形状のソフトボディなオブジェクトを作成しようとすると、.xモデルからのコンバートなどではうまく行きそうも無く、結局エディタを自作することに…。
結構頑張ってこつこつ進めていたんだけど、5月末から6月頭までロスで仕事がキツキツでちょっとプログラム組んでる余裕がなかった。(毎日走ってマチャドの道場で二部錬してたのは内緒だ。)
ようやく気持ちに余裕が出来てきて、そして将来的な金銭的余裕がなくなってきたのでプログラミング再開。
子供の頃からプログラム組むときは一切仕様書とかフローチャート作らない人間でした。全部頭の中。子供の頃はそれでも良かった。アプリのサイズも小さかったし、処理も単純だったから。
自分で宣言したグローバル変数とかコンスタントとか、思い出すのに結構掛かりました。というか、やっぱりあんまり思い出せなかったので、やばそうなところと関係無さそうな処理をコーディングする。
柔らかプディングのみならず、突き抜けしないクロス・シムくらいなら作れそうな感じ。
さて、どうしたものか。