<?xml version="1.0" encoding="UTF-8" ?><rdf:RDF 
  xmlns="http://purl.org/rss/1.0/"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:atom="http://www.w3.org/2005/Atom"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xml:lang="ja">
  <channel rdf:about="http://w.atwiki.jp/c_rpg/">
    <title>c_rpg @ ウィキ</title>
    <link>http://w.atwiki.jp/c_rpg/</link>
    <atom:link href="https://w.atwiki.jp/c_rpg/rss10.xml" rel="self" type="application/rss+xml" />
    <atom:link rel="hub" href="https://pubsubhubbub.appspot.com" />
    <description>c_rpg @ ウィキ</description>

    <dc:language>ja</dc:language>
    <dc:date>2010-01-17T15:47:08+09:00</dc:date>
    <utime>1263710828</utime>

    <items>
      <rdf:Seq>
                <rdf:li rdf:resource="https://w.atwiki.jp/c_rpg/pages/17.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/c_rpg/pages/20.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/c_rpg/pages/2.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/c_rpg/pages/19.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/c_rpg/pages/16.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/c_rpg/pages/15.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/c_rpg/pages/18.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/c_rpg/pages/1.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/c_rpg/pages/14.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/c_rpg/pages/13.html" />
              </rdf:Seq>
    </items>
	
		
    
  </channel>
    <item rdf:about="https://w.atwiki.jp/c_rpg/pages/17.html">
    <title>ステップ３</title>
    <link>https://w.atwiki.jp/c_rpg/pages/17.html</link>
    <description>
      *ステップ３
**戦闘の実装
-戦闘のないＲＰＧはＲＰＧとは言わない。
-ＡＴＢシステム。旧スクエアの特許技術だが、非常に簡単に実現できる。
-一番の難題はアニメーション。これを統一的に扱えるような構造にできると今後の拡張がとても楽になる。

-現段階ではこんな感じ。まだまだ課題は多い。
#ref(battle0001.jpg);
-ようむの下にあるtopはデバッグ用の出力。

*戦闘に関する課題
-戦闘参加キャラは合計32名を予定。
-ただし、現在戦闘グラフィックが用意できているのは6名。
-行動入力順。現在はスタック方式にしているが、やはり出力制限型のデック辺りにしたほうが自然になりそうだ。
--キューにしたほうが自然。ということでキューに。
-戦闘アニメーションの統一的な実装。
--たとえば妖夢の固有コマンド「こんぱくけん」のレベル１「弦月斬」は、敵の懐に潜り込んで切り上げ、そして元いた隊列位置に戻る、というアニメーションが必要となる。
--元の隊列位置と敵位置から軌道を計算し、フレームごとに妖夢のグラフィックの描画位置を変更するという動作が必要になる。
--アニメーションの終了にかかるフレームは各コマンドごとによって異なるが、それを統一的に扱いたい。
--始点、終点、軌道の種類（直線or曲線）、速さ（フレーム数）などを渡して動作する関数でも作るか？
-戦闘アニメーションその２　敵に関するアニメーション
--ＳＦＣのＦＦでは行動する敵が白黒と点滅する。これに相当する行動者の目印を描画したい。
--現在の仕様ではＨＰが0になった瞬間に敵グラフィックが消滅するため、上に張り付けた画像でも弦月斬を受けためいりんが消えている。
--敵グラフィックの消滅（というよりは、敵を倒したという情報の確定）をＨＰが0になった瞬間ではなく、ＨＰが-1になった瞬間として、味方の行動の終了を待つか。    </description>
    <dc:date>2010-01-17T15:47:08+09:00</dc:date>
    <utime>1263710828</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/c_rpg/pages/20.html">
    <title>ステップ６</title>
    <link>https://w.atwiki.jp/c_rpg/pages/20.html</link>
    <description>
      *ステップ６
**スクリプト言語（続き）
-[[ステップ５]]の続き
**変数の実現
-イベントスクリプト内で使用可能な変数を実現する。
-まず、セーブデータに保持されるキャラ永続変数のうち、デフォルトで用意されているもの（スクリプト内で定義が不要なもの）を考える。
-シナリオの進行度を示す変数「scenario」を実装する。

**キャラ永続変数
-細かな仕様に関しては[[ステップ５]]で定義した通り。
-ただし、「scenario」などの一部の変数は初めからプログラム内に仕込んでおく。
-キャラ永続変数はセーブデータに保持されるが、数の規定が存在しないため、ハッシュテーブルにして扱う。    </description>
    <dc:date>2009-12-29T15:02:16+09:00</dc:date>
    <utime>1262066536</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/c_rpg/pages/2.html">
    <title>メニュー</title>
    <link>https://w.atwiki.jp/c_rpg/pages/2.html</link>
    <description>
      **メニュー
-[[トップページ]]
-[[メニュー]]
-[[準備]]
-[[ステップ１]]
-[[ステップ２]]
-[[マップクリエイター]]
-[[ステップ３]]
-[[ステップ４]]
-[[ステップ５]]
-[[ステップ６]]

----
-[[プラグイン紹介&gt;プラグイン]]
-[[まとめサイト作成支援ツール]]

**リンク
-[[@wiki&gt;&gt;http://atwiki.jp]]
-[[@wikiご利用ガイド&gt;&gt;http://atwiki.jp/guide/]]

**他のサービス
-[[無料ホームページ作成&gt;&gt;http://atpages.jp]]
-[[無料ブログ作成&gt;&gt;http://atword.jp]]
-[[2ch型掲示板レンタル&gt;&gt;http://atchs.jp]]
-[[無料掲示板レンタル&gt;&gt;http://atbbs.jp]]
-[[お絵かきレンタル&gt;&gt;http://atpaint.jp/]]
-[[無料ソーシャルプロフ&gt;&gt;http://sns.atfb.jp/]]

// リンクを張るには &quot;[&quot; 2つで文字列を括ります。
// &quot;&gt;&quot; の左側に文字、右側にURLを記述するとリンクになります


//**更新履歴
//#recent(20)

&amp;link_editmenu(text=ここを編集)    </description>
    <dc:date>2009-12-29T14:56:04+09:00</dc:date>
    <utime>1262066164</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/c_rpg/pages/19.html">
    <title>ステップ５</title>
    <link>https://w.atwiki.jp/c_rpg/pages/19.html</link>
    <description>
      *ステップ５
**イベントスクリプトの実装
-[[ステップ２]]で言及したスクリプト言語の作成から入る。

**データ構造
-テキストファイルにしてマップごとに用意。
-マップに入るたびに、マップデータとともに読み込む。
-イベント用ハッシュテーブルを用意し、それで管理する。
-同じマス上に異なるイベントは配置できない。よって、１つのマップで扱えるイベントは1200個が上限。（マップスクロール可能にした場合はもっと増える）
-１つのマップにイベントを10個も20個もおかないと思うのでハッシュサイズは10くらいにしておく。

**実行
-オートイベントは一歩歩くごとに判定。調べるイベントは決定キーを押すごとに判定。実行条件を満たした場合にプレイヤーをイベントにアタッチする。
-マップデータ上に置かれたイベントハッシュテーブルからイベントを読み出し、イベントデータの構造体ポインタをプレイヤーデータ側に保持する。（プレイヤーをイベントにアタッチする）
-プレイヤーがイベントにアタッチされている時、イベント進行にかかわらないキー操作は許されない。
-イベント終了時、デタッチする。（プレイヤーデータ側に保持されたポインタをNULLで書き換える）
-マップ移動実行時のみ、実行中のイベントデータの構造体を丸ごとコピーして一時的に静的領域に保持する。（マップ移動時にマップデータごと再読み込みが行われ、イベントハッシュテーブルも解放するため）

**書式と仕様

&gt;event_num,x,y,xsize,ysize,moveflg,solidflg,look1,look2,event_type,name {
&gt;script;
&gt;}

-個々のイベントの初期設定っぽい何か
|名前|備考|
|event_num|イベント番号。0及び-1（負の値）は設定できない。（不要？）|
|x,y|イベントの座標。（正確にはイベントの左上座標）|
|xsize,ysize|イベントの大きさ。x,yを左上端として、横にxマス、縦にyマスの大きさになる。|
|moveflg|x,yを中心としたユニットの移動範囲の半径。&amp;br()0 : 移動しない。&amp;br()1 : 3 * 3マス内を移動。&amp;br()2 : 5 * 5マス内を移動。|
|solidflg|ユニットが固形として存在するか。&amp;br()0 : ユニットとプレイヤーキャラが重なることができる。&amp;br()1 : ユニットとプレイヤーが重ならない。ユニットのいるマスは壁として扱う。|
|look1|見た目の設定１。画像ファイルの名前を、&quot;&quot;で囲んで入力する。空白の場合、見た目はない。（透明ユニット）|
|look2|見た目の設定２。画像ファイル内の何番目の画像を使うか。（ツクールのキャラチップ対応）|
|event_type|イベントタイプ。&amp;br()0 : ノーイベント。&amp;br()1 : オートイベント１ ユニットの上に乗るとイベント発生。&amp;br()2 : オートイベント２ ユニットに隣接するマスに立つとイベント発生。&amp;br()3 : 調べるイベント１ ユニットの上に乗って決定キーでイベント発生。&amp;br()4 : 調べるイベント２ ユニットに隣接するマスでユニットのほうを向いて決定キーでイベント発生。|
|name|イベントを識別する名前。ハッシュのキー|

-script一覧
|script|動作|
|if(条件式){}|条件式が満たされたとき（0以外の時）{}内を実行します。|
|moveto &quot;mapname&quot;,x,y;|マップmapnameの座標x,yに移動します。|
|walkto x,y;|同一マップ内の座標x,yに歩いて移動します。|
|mes &quot;string&quot;;|しゃべります。|
|(変数) = (式);|(変数)に(式)の内容を代入します。|

-変数の使用方法
--int var,scope,first;
	符号付き整数型変数varを定義します。firstの値で初期化されます。
	イベント内で使う変数は、必ずイベントスクリプトの先頭でこの定義を行ってください。
	scopeの値によって、その変数が保持される期間が決定されます。

	scope
		0 : キャラ永続変数
		1 : イベント一時変数
		2 : イベント永続変数
　　str var,scope,&quot;first&quot;;
	文字列型変数varを定義します。&quot;first&quot;の値で初期化されます。
	基本的なことはintと変わりませんが、初期化値が文字列であることに注意してください。
	Ｃ言語のchar配列と異なり、=による代入や==による比較が可能ですが、１文字ずつ扱うのは面倒です。

　　イベント永続変数
	イベント変数はそのイベント内で保持され、一度イベントを終えても保存され続けます。
	セーブデータの肥大化につながるので乱用は避けてください。
　　イベント一時変数
	イベント一時変数evt_aにbを代入します。
	イベント一時変数はイベント実行中のみ保持され、一度イベントを終えると有効範囲から外れ、解放されます。
	セーブデータの量には全く影響を及ぼさないので、上記のイベント変数よりも気軽に使用できます。
　　キャラ永続変数
	キャラ変数ch_aにbを代入します。
	キャラ変数はキャラクターデータとともに保存され、半永久的に使用できます。
	セーブデータの肥大化につながるので、乱用は避けてください。    </description>
    <dc:date>2009-12-26T20:33:39+09:00</dc:date>
    <utime>1261827219</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/c_rpg/pages/16.html">
    <title>ステップ２</title>
    <link>https://w.atwiki.jp/c_rpg/pages/16.html</link>
    <description>
      *ステップ２
**フィールドの作成
-フィールドを歩き回れるようにする。
-広さに従ってスクロールするのは後回しにして、とりあえずは640×480の大きさでマップを作る。
-実際のマス数は40×30。
-ＲＰＧツクール用のマップチップが使いまわせるようにしている。
-マップ上のマスのデータは歩行可否フラグ、レイヤー１、レイヤー２の三つ。
-ツクール用のチップはアニメーションや構造によるなめらかな描画も実現可能なため、それも。

-そんな感じで欲張って作ったマップがこれ。
&amp;ref(field0001.jpg);

-溶岩のセルは通行不可であり、静止画では伝わらないがアニメーションする。

**フィールドに関する課題
-もっと広大なマップを、スクロールしながら移動できるようにする。
--そのためにはデータ構造を考慮する必要あり？　マップの構造体が大きくなると、スタック上に置くよりもヒープ領域に作らなければならないかもしれない。
-イベントフラグの実装。ＮＰＣの配置。
--最大の鬼門。2009年2月ごろに作っていたものはここの構造が汚かったために挫折。今頑張って作り直そうというところ。
--マップ移動もこれで実現する。あるセルの上に立つとマップ移動命令が呼び出され、それに従って移動するように。
--勉強も兼ねて、独自のスクリプト言語を作成して行う。
--言語の解析自体は楽だが、それをどういった構造で扱うかが問題。
--[[ステップ５]]
-エンカウントの実装。
--現在、戦闘はデバッグ用のボタンを押して開始するようになっているため、フィールドを歩き回ってもエンカウントしない。
--以前作っていたものはエンカウントが実装されており、さほど汚くない形なので少し手直しして移植するだけで済みそうだ。
-フィールド上で有効となる装備効果の実装。
--エンカウントが無くなる「あややのおまもり」、速く走れる「ダッシューズ」など。    </description>
    <dc:date>2009-12-23T11:57:10+09:00</dc:date>
    <utime>1261537030</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/c_rpg/pages/15.html">
    <title>ステップ１</title>
    <link>https://w.atwiki.jp/c_rpg/pages/15.html</link>
    <description>
      *ステップ１
-プログラム全体の構成を考える。
-まず、起動時に出てくる起点画面が欲しい。&amp;br()→index.cppとindex.hの作成。
-とりあえずフィールド上を移動したい。&amp;br()→field.cppとfield.hの作成。
-雑多な処理はひとまとめにしておきたい。&amp;br()→function.cppとfunction.hの作成。

-ファイルを複数組み合わせて作るので、分割コンパイルについても勉強しておく。

-例（function.h）
&gt;#ifndef _FUNC_H_
&gt;#define _FUNC_H_
&gt;
&gt;int GetHitKeyStateAll_2(int*);
&gt;
&gt;#endif

-ステップ１が終わったらこんな感じ。

&amp;ref(smrpg_0001.jpg);

-実はマップクリエイターとかすでに作り終わってて、マップを歩きまわったりはできます。
-……が、以前作ってた戦闘画面とかその辺が気に食わないので作り直し、&amp;s(){一段落ついたら動画か何かにして公開します。}&amp;br()一応動画はニコニコに上げましたが、画質死んでる上に音が入れられないというひどい状況なのでスクリーンショットを小出しにしていきます……。
-ていうかこのタイトル絶対誰かがやってるよね？
-……と思ってググったら「Super Marisa World」しかヒットしません。
-念のため、「SuperMarisaRPG」はタソフロさんとかとは一切関係のないミジンコがゆっくり頑張っています。

-指グラはＦＦシリーズのものを思い出して必死に打った自作物。
-歩行・敵グラフィックは無理なので、簡単な戦闘グラくらいはがんばってみようと思ったけれど撃沈中。
-ドット絵ってすごく難しいんだね！    </description>
    <dc:date>2009-11-29T15:09:07+09:00</dc:date>
    <utime>1259474947</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/c_rpg/pages/18.html">
    <title>ステップ４</title>
    <link>https://w.atwiki.jp/c_rpg/pages/18.html</link>
    <description>
      *ステップ４
**ステータス画面の実装
-ステータス画面を開くと右側にメニュー。
-アイテム、そうび、スペカ、個別ステータス確認、セーブなど。
-そのほか、図鑑やコンプ状況などのおまけ要素を詰め込んでも良いかもしれない。

-特定ボタンを押すことで隊列変更モードに。
-前列後列の区別はないが、左上に表示されている四人のメンバーと下側に表示されている待機メンバーを入れ替えることができる。

#ref(status0001.jpg);
-ドットは2009年2月ごろのものとほぼ変わらない。霊夢のみ大幅に直した。直してこの出来。

**ステータス画面の課題
-ドット絵直したい。
--直してもひどいけど、さくやさんとかゆゆこ様とか本当にひどい。
-スペカボーナス
--ＦＦ６の魔石ボーナスのようなもの。スペカを選んで装備し、それによってレベルアップ時にステータスボーナスが得られるように。
-そうびにおける機能「さいきょう」の実装。
--何を以って最強とするかを考える必要がある。
-コンフィグの実装
--コンフィグでウィンドウ色などを変更可能にする？    </description>
    <dc:date>2009-11-29T14:55:52+09:00</dc:date>
    <utime>1259474152</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/c_rpg/pages/1.html">
    <title>トップページ</title>
    <link>https://w.atwiki.jp/c_rpg/pages/1.html</link>
    <description>
      **Ｃ＋＋でＲＰＧを作ってみる。

ミジンコがミジンコなりに頑張る。そんなページ。

-概要
ゲームを作ってみたい。扱うデータ量は多いだろうけど、昔から好きだったＦＦシリーズ的なＲＰＧを。
しかし、ツクールに頼るのでは味がない。自分で色々組んでみたい。

そう思って手を出したＨＳＰ。確かに自由度は格段に上がった。けれど、インタープリターという性質上、どうしても処理速度に問題が出たり、ソースの管理が困難だった。

それから何年か経って、Ｃ言語と衝撃的な出会いを果たし、現在勉強中。
WindowsAPIなんてカオスなものは把握できないけど、ＤＸライブラリとか言う便利なものがあるらしいので、それを使ってＲＰＧを作ってみようじゃないの。という感じ。

肝心の題材だけど、ちょうど思い立った同時期にハマっていた東方シリーズということに。
永夜だけで半年は遊べたとかハマりすぎだと思うのだけど、それならシューティングにすればよかったのにね。
同じくらいＦＦも愛してるのでがんばります。

※ここで言うＦＦは、ＳＦＣ時代のものです。６と５が好きすぎるので、その辺りのシステムを参考にすることが多いと思います。    </description>
    <dc:date>2009-10-30T19:29:30+09:00</dc:date>
    <utime>1256898570</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/c_rpg/pages/14.html">
    <title>準備</title>
    <link>https://w.atwiki.jp/c_rpg/pages/14.html</link>
    <description>
      *環境を整える。
-Visual C++ 2008EEをインストール。
-ライブラリを用意。
有名な[[ＤＸライブラリ&gt;http://homepage2.nifty.com/natupaji/DxLib/index.html]]を使用。

-参考リンク
[[Ｃ言語～ゲームプログラミングの館～&gt;http://dixq.net/g/]]    </description>
    <dc:date>2009-10-18T18:19:57+09:00</dc:date>
    <utime>1255857597</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/c_rpg/pages/13.html">
    <title>マップクリエイター</title>
    <link>https://w.atwiki.jp/c_rpg/pages/13.html</link>
    <description>
      *マップクリエイター
ＲＰＧはマップを自由に歩き回らなければならない。
そんなわけで、マップを作りたい。

**マップデータの仕様
-event.txt
イベントデータ。
-layer1.txt
マップの見た目１
-layer2.txt
マップの見た目２
-walkable.txt
歩行可能マスであるかどうかの情報
-mapdata.txt
雑多なマップの情報    </description>
    <dc:date>2009-10-18T18:09:40+09:00</dc:date>
    <utime>1255856980</utime>
  </item>
  </rdf:RDF>
