投稿者: uchukamen
あつまれ!ピニャータ2 ガーデンの大ピンチ
テイルズ オブ ヴェスペリア 最終局目
今日、子供と共に最後の局面を迎えましたが、状態によってセリフなどがかわる仕組みになっていて、凝ってますね・・・
結局80時間越えですが、子供ともども楽しめました。
今まで、FFとかロストオデッセイとかだけで、テイルズシリーズ初めてですが、違った面白さがありますね。やっぱり一番は、マルチプレーヤーで遊ぶのは初めてだったので、面白いですね~。おかげさまでコントローラーが4つに増えましたw。次は、バトルシステムで、ターン制ではなく、リアルタイムで戦うので、気が抜けないです。特にマルチプレーヤーで遊ぶ場合には、プレーヤー間の協力関係がうまくないと、あっさり全滅したりします。それぞれのキャラクターの特徴を生かして、仲間とどれだけ協力していくかがポイントになります。家族で遊んでみるのもいいと思いますよ~。
あとは、わりとセリフとかが面白いですね。FFシリーズは、わりと重めなのですが、テイルズはセリフも軽く楽しい感じがいいな。それから、スキットといわれるアニメーションとキャラクターボイスも、面白いですね。なんといっても音声合成じゃなくって、しゃべるのがいい。
それから、アイテム合成や武器など、これは奥が深いですね。レベルが上がるに従って、次々に新しいアイテムや合成できるものが増えていくのですが、とても覚えられる量じゃないけど、うまく使えば非常に効果があるので、試行錯誤しながらいろいろ試していくあたりも、果てしなくいきそうです。今回80時間ちょっとでエンディングまできましたが、もっとあちこち回れるし、エンディングだけでもいくつかのパターンを楽しめるし、このゲーム、半端じゃないですね。
XNAでゲームプログラミング
TechEd Yokohama 2008 で、 XNA Game Studioで始めるゲームプログラミング の本が当たりました。先日、通勤の往復で読んでみましたが、非常にわかりやすく書いてあって、数時間で読めました。2Dであれば、かなり簡単に組めるんですね。C# でかけるのと、Windows Forms とかなり似たスタイルで書けるので、Windows.Forms/C#経験者であれば、すぐに簡単なゲームが書けそうです。3Dは一応簡単な例が載っていましたが、それなりのことをやろうと思うと、もう一段深く調べないといけないようですが、XNA初心者にはとてもお勧めの本です。ちょっとさわってみようかな・・・
テイルズ オブ ヴェスペリア
テイルズシリーズは初めてだったのですが、面白いですね~。マルチプレーヤーで遊べるのがいいです。二人の娘がそれぞれラピード、リタがお気に入りのようです。エステルは回復系が使えるのに、なぜか嫌われてるようなので、どうして??って聞いてみたら、もともとお姫様という時点でウゼェのにシャラシャラするんじゃねえ。とのこと。シャラシャラってどういう意味?って聞いたら、しゃしゃり出てくることらしい。ということで、はっきりと好みが分かれて面白い。コントローラーは3台あるのだけれど、妻も巻き込むべくさらに1台追加で、4台に。おまけに少し着せ替えができる点が、コスプレ感覚で子供に受けていますね。
ラピード | リタ | エステル |
ストーリーも、だいぶ最後に近づいてきました。週末は、決戦か?
それにしても、よく作ってある。ストーリーもアイテムもキャラクターもたいしたもんだと思ってしまう。それでDVD1枚に収めているのだから大したもんだ。・・・逆に言うと、どうしてロストオデッセイは4枚組になったのか?ビデオ使いすぎなのかな。一方ヴェスペリアは、トゥーンレンダリングでかなりをカバーしているので、かなり効率的にビデオシーンをカバーしているのだろう。このテイルズシリーズがXBOX360で発売されたので、急にXBOXの売り上げが伸びたという話を聞いたが、わかる気がする。
Visual Studio 2008 で Visual Source Safe (2005)の利用
Visual Studo 2008 で Visual Source Safe (2005)を設定して使おうとしたら、プロジェクトが表示されない。あれ?とあせりましたが、Visual SourceSafe 2005 の更新プログラム を適用したら、無事表示できるようになりました。ちょっとあせった。
Visual Studio 2008 でのソース管理の設定は、
1. Visual Source Safe をインストール
2. Visual Studio 2008 の [メニュー] → [ツール] → [オプション]
ソース管理を選んでプラグインを設定
すると、次のようにプロジェクトを開く画面で Microsoft Visual SourceSafe が表示されるようになります。
テイルズ オブ ウ”ェスペリアの体験版で遊んでみた
XBOX360でテイルズ オブ ウ”ェスペリアの体験版がダウンロードできるという話を聞き、さっそく。
マーケットプレース→ゲームストア→ゲームのデモ→ジャンル→RPG→テイルズ オブ ウ”ェスペリア
でデモ版をダウンロードできるということで、さっそくダウンロードしてみた。数分でダウンロード完了。
ゲーム→ゲームライブラリー→マイ ゲーム→テイルズ オブ ウ”ェスペリア
から起動。そもそもテイルズ シリーズは全く知らないので、何の先入観もないまま、いきなり突入。体験版なのか、オープニングのデモ画面は、すごくあっさりしたもの。スタートを押すと、いきなり始まるが、しゃべる!今まで、RPGでしゃべるのは初めてなので、いきなりびっくり。いいじゃん。おまけに、キャラが、なんというか3次元だけど2次元のような、要はトゥーンレンダリングとでも言うのか、アニメのようなキャラも結構新鮮。
で、少しストーリーを進めると、壊れた結界魔導器のところで、イベントが・・・で、いきなり森に逃げ込む羽目に。森では、なんやら見慣れぬモンスターが・・・今までFFとかブルドラとかロストオデッセイなどわりと似たキャラや、バトルシステムばかりだったので、あれ???どうやって戦うんだ???どうやら、リアルタイムで戦う要素も入っているらしい。まったくよくわからない。
ふーーーーん、今までにないパターンとと思いつつ Wikipedia を見ると、
なるほど、PSシリーズで結構出てたのね。
戦闘システムは、シリーズ作品共通で「リニアモーションバトルシステム」(Linearmotion Battle System;LMBS)と呼ばれる方式を採用しているということらしい。リニアモーションバトルシステムとは、敵と味方を結ぶ同じライン上で、ボタン操作によってキャラクターを動かして攻撃・防御・呪文の詠唱を行うシステムということで、バトルのとき何をすればいいのか、????マークがいっぱいつく中、ボタンを適当に押していると、雑魚は問題なく倒せるので、装備も確認せず、技も覚えず、薬も覚えず、とにかくうろうろと、雑魚をかたずけて行く。
どうやって、攻撃中にキャラクターを切り替えるんだ????とさらに????????マークがあふれる中、突然ボスキャラ登場。うわっっと思いつつ、ボタンを適当に押しまくるが何度か倒されるがそのたびに復活してくれる優秀な魔法使い?がいるらしい。でも、さすがに何度目かのダウンで、あえなく全滅。
体験版ではゲームがセーブできないので、振り出しに orz
いかん、こういう、なにもできず、わけのわからないまま負けると・・・いつものくせが・・・
あと、こんなのもあるらしい。Xbox 360 テイルズオブヴェスペリアプレミアムパック
第28回codeseek勉強会
http://www.codeseek.net/event/index.html
「Windows Server 2008、Visual Studio 2008、SQL Server 2008コミュニティラウンチ」
(共催:tk-engineering、こみゅぷらす、eパウダ~、.Net/C# Group)
2008年5月27日(火) 19:00~21:00
場所:渋谷駅からすぐの貸し会議室 (ご登録後お知らせいたします)
募集締め切り:2008年5月25(日)23時59分59秒
24名まで
無料
第28回codeseek勉強会は、
Windows Server 2008、Visual Studio 2008、SQL Server 2008の発売に合わせた、
コミュニティラウンチとして開催します。
スピーカーは、宇宙仮面様、めさいあ様、ひろりん様、こた様の予定です。
内容については調整中です。
参加をご希望の方は以下の事項を記入しメールにてご登録ください。
送付先:codeseektatsugoro(アットマーク)yahoo.co.jp
メールタイトル:codeseek勉強会参加希望
名前(必須):
メールアドレス(必須):
住所(必須):
ハンドル:
連絡用電話番号:
懇親会に参加する:はい/いいえ/未定
いただいた情報はcodeseekの活動自身のためにしか使いません。
いただいた情報を会場にお知らせすることがあります。
登録なしでの参加はできません。
WPF Morphing してみる
眼を開いた状態と目を閉じた状態の MeshGeometry3Dを、スライダーで線形合成してみた
左から右へ、眼を開いた状態、目を閉じた状態、合成したもの
眼をあいている状態では、目の周りにアイシャドウを引いていたりして、合成した時に汚くなることがある。結構細かいところに気をつける必要あり。
それから、六角大王で dxf ファイルにエクスポートした際に、頂点数が変わってしまう。このため、単純にマッピングできず、TriangleIndices でマッピングを取っている。このため、処理的にはかなり重い。動かない場所は処理しないなどの高速化が必要かもしれない。
それから、六角大王から通常状態と目を閉じた状態でエクスポートした場合、わずかに座標がずれている。このため、単純に動かない場所は処理しないという処理ができない。結構厄介だ・・・・・
namespace Morphing_V1
{
public partial class Window1 : System.Windows.Window
{
・・・
GeometryModel3D gm1 = null;
MeshGeometry3D mg10 = null;
Point3DCollection p3dcol10 = null;
・・・
private void slider1_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
double v = this.slider1.Value / 10d;
for (int c = 0; c < this.NormalOR32.Children.Count; c++)
{
gm1 = (GeometryModel3D)(this.NormalOR32.Children[c]);
mg10 = (MeshGeometry3D)(gm1.Geometry);
p3dcol10 = mg10.Positions;
gm2 = (GeometryModel3D)(this.CloseEyesOR40.Children[c]);
mg20 = (MeshGeometry3D)(gm2.Geometry);
p3dcol20 = mg20.Positions; gmRes = (GeometryModel3D)(this.ResOR50.Children[c]);
mRes = (MeshGeometry3D)(gmRes.Geometry);
poRes = mRes.Positions; Point3DCollection resPoCol = poRes; for (int j = 0; j < mg10.TriangleIndices.Count; j++)
{
int inorm = mg10.TriangleIndices[j];
int ia = mg20.TriangleIndices[j];
resPoCol[ia] = new Point3D(
p3dcol10[inorm].X * v + p3dcol20[ia].X * (1.0 – v),
p3dcol10[inorm].Y * v + p3dcol20[ia].Y * (1.0 – v),
p3dcol10[inorm].Z * v + p3dcol20[ia].Z * (1.0 – v));
}
mRes.Positions = resPoCol; }
}
}
}
頂点座標を直接変更する
スライダーで、MeshGeometry3Dの BOX の頂点座標 Positions を直接変更してみる。このぐらいの頂点数なら問題なくスムーズに変形できるが・・・・・
using System;
using System.Windows;
using System.Windows.Media;
using System.Windows.Media.Media3D;namespace Morphing_V2
{
public partial class Window1 : System.Windows.Window
{
private void slider1_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
double v = slider1.Value / 10f;
GeometryModel3D gm3d = (GeometryModel3D)this.BoxOR9.Children[0];
MeshGeometry3D mesh3d = (MeshGeometry3D)gm3d.Geometry; for (int i = 0; i < mesh3d.Positions.Count; i++)
{
mesh3d.Positions[i] = new Point3D(
originalMeshGeometry3DPosition[i].X * v,
originalMeshGeometry3DPosition[i].Y * v,
originalMeshGeometry3DPosition[i].Z * v);
}
} Point3DCollection originalMeshGeometry3DPosition = null; private void Window_Loaded(object sender, RoutedEventArgs e)
{
GeometryModel3D gm3d = (GeometryModel3D)this.BoxOR9.Children[0];
MeshGeometry3D mesh3d = (MeshGeometry3D)gm3d.Geometry; originalMeshGeometry3DPosition = new Point3DCollection();
for (int i = 0; i < mesh3d.Positions.Count; i++)
originalMeshGeometry3DPosition.Add(mesh3d.Positions[i]);
}
}
}<Window x:Class=”Morphing_V2.Window1″ Title=”Morphing_V2″ Width=”497″ Height=”450″ xmlns=”http://schemas.microsoft.com/winfx/2006/xaml/presentation” xmlns:x=”http://schemas.microsoft.com/winfx/2006/xaml” xmlns:d=”http://schemas.microsoft.com/expression/interactivedesigner/2006″ xmlns:c=”http://schemas.openxmlformats.org/markup-compatibility/2006″ c:Ignorable=”d” Loaded=”Window_Loaded”>
<Grid>
<Viewport3D x:Name=”ZAM3DViewport3D” ClipToBounds=”true” Width=”400″ Height=”300″>
<Viewport3D.Resources>
<ResourceDictionary>
<MaterialGroup x:Key=”ER___Default_MaterialMR1″ >
<DiffuseMaterial>
<DiffuseMaterial.Brush>
<SolidColorBrush Color=”#D3C8AD” Opacity=”1.000000″/>
</DiffuseMaterial.Brush>
</DiffuseMaterial>
<SpecularMaterial SpecularPower=”93.8667″>
<SpecularMaterial.Brush>
<SolidColorBrush Color=”#333333″ Opacity=”1.000000″/>
</SpecularMaterial.Brush>
</SpecularMaterial>
</MaterialGroup>
<Transform3DGroup x:Key=”SceneTR7″ >
<TranslateTransform3D OffsetX=”0″ OffsetY=”0″ OffsetZ=”0″/>
<ScaleTransform3D ScaleX=”1″ ScaleY=”1″ ScaleZ=”1″/>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Angle=”0″ Axis=”0 1 0″/>
</RotateTransform3D.Rotation>
</RotateTransform3D>
<TranslateTransform3D OffsetX=”0″ OffsetY=”0″ OffsetZ=”0″/>
</Transform3DGroup>
<Transform3DGroup x:Key=”BoxOR9TR8″ >
<TranslateTransform3D OffsetX=”0″ OffsetY=”0″ OffsetZ=”0″/>
<ScaleTransform3D ScaleX=”1″ ScaleY=”1″ ScaleZ=”1″/>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Angle=”47.33348273″ Axis=”0.5325566653 -0.8245461129 -0.1910683281″/>
</RotateTransform3D.Rotation>
</RotateTransform3D>
<TranslateTransform3D OffsetX=”0″ OffsetY=”0″ OffsetZ=”0″/>
</Transform3DGroup>
<MeshGeometry3D x:Key=”BoxOR9GR10″
TriangleIndices=”0,1,2 2,3,0 4,5,6 6,7,4 8,9,10 10,11,8 12,13,14 14,15,12 16,17,18 18,19,16 20,21,22 22,23,20 ”
Normals=”0,0,-1 0,0,-1 0,0,-1 0,0,-1 0,0,1 0,0,1 0,0,1 0,0,1 0,-1,0 0,-1,0 0,-1,0 0,-1,0 1,0,0 1,0,0 1,0,0 1,0,0 0,1,0 0,1,0 0,1,0 0,1,0 -1,0,0 -1,0,0 -1,0,0 -1,0,0 ”
Positions=”-0.5,-0.5,-0.5 -0.5,0.5,-0.5 0.5,0.5,-0.5 0.5,-0.5,-0.5 -0.5,-0.5,0.5 0.5,-0.5,0.5 0.5,0.5,0.5 -0.5,0.5,0.5 -0.5,-0.5,-0.5 0.5,-0.5,-0.5 0.5,-0.5,0.5 -0.5,-0.5,0.5 0.5,-0.5,-0.5 0.5,0.5,-0.5 0.5,0.5,0.5 0.5,-0.5,0.5 0.5,0.5,-0.5 -0.5,0.5,-0.5 -0.5,0.5,0.5 0.5,0.5,0.5 -0.5,0.5,-0.5 -0.5,-0.5,-0.5 -0.5,-0.5,0.5 -0.5,0.5,0.5 ”
/>
</ResourceDictionary>
</Viewport3D.Resources> <Viewport3D.Camera>
<PerspectiveCamera x:Name=”FrontOR6″ FarPlaneDistance=”10″ LookDirection=”0,0,-1″ UpDirection=”0,1,0″ NearPlaneDistance=”1″ Position=”0,0,2.38423″ FieldOfView=”39.5978″ />
</Viewport3D.Camera> <ModelVisual3D>
<ModelVisual3D.Content>
<Model3DGroup x:Name=”Scene” Transform=”{DynamicResource SceneTR7}”> <!– Scene (XAML Path = ) –>
<AmbientLight Color=”#333333″ />
<DirectionalLight Color=”#FFFFFF” Direction=”-0.612372,-0.5,-0.612372″ />
<DirectionalLight Color=”#FFFFFF” Direction=”0.612372,-0.5,-0.612372″ />
<Model3DGroup x:Name=”BoxOR9″ Transform=”{DynamicResource BoxOR9TR8}”> <!– Box (XAML Path = (Viewport3D.Children)[0].(ModelVisual3D.Content).(Model3DGroup.Children)[3]) –>
<GeometryModel3D x:Name=”BoxOR9GR10″ Geometry=”{DynamicResource BoxOR9GR10}” Material=”{DynamicResource ER___Default_MaterialMR1}” BackMaterial=”{DynamicResource ER___Default_MaterialMR1}”/>
</Model3DGroup>
</Model3DGroup>
</ModelVisual3D.Content>
</ModelVisual3D>
</Viewport3D>
<Slider Height=”31″ HorizontalAlignment=”Left” Margin=”37.5,0,0,8″ Name=”slider1″ VerticalAlignment=”Bottom” Width=”100″ ValueChanged=”slider1_ValueChanged” />
</Grid>
</Window>