PSP xvi

PSPプログラミングを教えるブログ(本気で頑張る人アクセス大歓迎サイト)

PSP-X.gif

記事の間違いを報告  新アップローダー
記事修正情報 PSPプログラミング資料 自作ゲーム PSP用エミュレータ リンク

公認リンク
公式PSP専科 公式PSVita専科 はじめるPSPSDK PSP EXEC GAME M@STER PSP 猫山のYouTubeチャンネル

TAG
全記事にタグをつけています  http://nekoyama2gillien.blog36.fc2.com/?tag=タグ
PSP PSPプログラミング DXライブラリPortable OSLib ショートプログラム ハローワールド
PSP自作ゲーム PSP自作ソフト エミュレータ ゲームアーカイブス PSP動画
動画 初音ミク ミクミクダンス MMDドラマ ゲーム 魔法少女まどか☆マギカ 侵略!イカ娘
アイドルマスター

このブログについて

このブログでは、非公式のPSPソフト、いわゆる自作ソフト( PSP Homebrew )を作る事を目的とします。

著作権などの こまかい利用規約については、こちらを開いてお読み下さい

このブログについて知りたい方、初めて来訪された方はこちらを開いてお読みください
お問い合わせは 猫山猫宗(nekomune@gmail.com)までどうぞ


当ブログはリンクフリーです。ブログ名は、アルファベットで「PSP xvi」と書いて『ピーエスピー・エクシビ』とお読みください。
相互リンクを希望されるブログ運営者様は、ココで申請して下さい。


このブログで全記事から探し物の方は、ここをクリックして下さい。
http://nekoyama2gillien.blog36.fc2.com/?all

スポンサーサイト 

--/--/--
--. --:--

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

[edit]

CM: --
TB: --

page top

PSPプログラミング RPGの雛形を作る前に お勉強 

2010/10/22
Fri. 21:31

はい、またお勉強です。

これはRPGに特化した内容です。興味ありましたら勉強してください。

無の状態ではヒントが掴めないので、ドラクエⅢ のプレイ動画(YOUTUBE)を貼り付けます。適当に選んでみた動画です、観て研究して下さい。



【 考察 】
・プレイヤー・キャラは大抵、勇者である
・登場キャラは絶えず足踏みしている
・ドラクエⅢの場合、ファミコンなので足踏みのモーションは2パターンの絵で構成されている

 一般に、立っている状態から 歩く行為へ移るには、と言うと、

  0.両足揃えて(立っている状態)
  1.右足を前に(1/4マス 進む)
  2.両足揃えて(2/4マス 進む)
  3.左足を前に(3/4マス 進む)
  4.両足揃えて( 1マス 進む)

 という様な4ステップのアニメーションで出来ます。
 キャラ絵を制作するなら、「立っている状態」と「両足揃えて」の絵は同じで良いので、上下左右の4方向×3枚の絵=12枚の絵を作るのが理想的です。

 ここで、「絵をどこかから調達したい」と思っている方へ朗報。
 RPGの絵の素材を作っている方がホームページで配布をやっていますので、それを利用すると良いのですよ。
 検索語は、「マップチップ」や「RPG 素材」などなど。

 猫山のお気に入りサイトをご紹介 ↓↓

 First Seed Material (キャラ素材)

 PSP xvi では、「再配布可能なマップチップ」を使いますが、PSP xvi の配布物から絵を抜き出して 別の配布物に使うのは控えてくださいね。実験とか個人利用とかなら許可ですが。
 利用規約に従ってください。

 あと、背景がスクロールする場合に、歩きのステップで 1/4マスずつスクロールさせます。その時に「歩きのステップ」が始まったら キャンセルできないとか、途中で他の方向へは移動できない、とかいう制限も導入します。「歩きのステップ中」は他の作業は出来ない事になります。


 最初なので、勇者の表示(足踏みあり・向き変更可能)とマップチップを使った背景の実装(芝生だけですが)をやってみようと思います。
 画面スクロールは、次回やる予定です。ちょっとずつやります。その方が解りやすいはずですからね。

 これにどんどん肉付けをしてRPGみたいにする計画発動!(完成する保障は今のところありません)


スポンサーサイト

[edit]

CM: 0
TB: 0

page top

PSPプログラミング RPG TEST v0.01 勇者が歩くよ 

2010/10/24
Sun. 05:55

2010/10/26
微妙にソースコード修正
READMEに著作権表記を追加


はい、今日の配布物では 勇者が足踏みするのと上下左右に向きを変える、というところまで出来ました
背景は芝生固定でスクロール無しです

ではスクショ


ソースコードは、やや難し目になりました。
めげずに解析してみて下さい。

今回からブログで配布する方式にします。

RPG_TEST_v0_01_zip.txt


ダウンロードする方は、ファイルの拡張子を ZIP にして保存・解凍して下さいね。

ソースコードの解説は次回やります。 質問も受け付けます。
興味ある方は、是非解析してみて下さい。


First Seed Materialさんの配布素材を使わせて貰っています。感謝です。

DXライブラリPortable も使用しています。憂煉さんありがとう。


[edit]

CM: 2
TB: 0

page top

はい、解説です

素材は 標準PSPで表示・再生できるフォルダに入れてますでしょうか。
このRPGはまだ開発中なので、素材は EBOOT.PBP と別フォルダが良いと判断してます。

【 今回は、勇者の描画方法についてだけ解説 】
勇者は、上下左右の4方向に3パターンで合計12枚のキャラ絵を使用しています。
配布素材はDXライブラリPortable でも扱いやすい構成になっていましたので、勇者の絵は 背景を透過させただけで殆ど弄っていません。

勇者の絵は、308行目で読み込んでいます。
> LoadDivGraph( GRPH_HERO ,12,3,4,32,48,&HDL_Graph_Hero[0][0]);
↑これです。画像の分割格納読み込みをやっています。
これは、全部で画像を12個に分割し、横3列、縦4行、横幅32ピクセル、縦幅48ピクセルにして、その分割した画像のハンドルを、二次元配列HDL_Graph_Hero に順番に格納させる命令です。

&HDL_Graph_Hero[0][0] は配列の先頭のポインタですよ

注意:画像の分割数は最低でも1です。うっかり0にすると実行時に挙動がおかしくなります。コンパイルエラーにはならないので十分気を付けて下さい。

    

配布されているこの絵ですが、どう扱えば良いか?
縦は「向き」ですね。向きの定義はこれです。32行目からの部分。

#define MUKI_SHITA   0 // 下向き
#define MUKI_HIDARI  1 // 左向き
#define MUKI_MIGI   2 // 右向き
#define MUKI_UE    3 // 上向き


横は「パターン絵」とでも言いましょうか。どこで「モーション絵」になるように定義をしているかと言うと、59行目です。
> int PIC_Walk_Step[4] = { 1,0,1,2 };
↑この数値は、モーション絵のパターン番号の定義です。「Hero_Step」という変数を1ずつカウントして足踏みを実現しています。
「0,1,2,3,0,1,2,3,…」に対応させて「1,0,1,2,1,0,1,2,…」という数値を導けるようにしています。こういうのは変数に入れて定義しておけば簡単に処理できます。

勇者の表示(描画)は、198行目の
> DrawGraph( 224,104,HDL_Graph_Hero[Hero_MUKI][ PIC_Walk_Step[(Hero_Step>>4)] ],TRUE );
です。
PIC_Walk_Step[(Hero_Step>>4)] の (Hero_Step>>4) は何かと言うと Hero_Step÷16 の商を求める計算式の高速版です。2の4乗16ですから。
16で割っている理由は、足踏みのアニメーション絵の切り替え速度が そのままのHero_Stepの値 では早すぎたからです。
つまり、16/60秒(約 0.3秒)ごとに1枚ずつ、足踏みのアニメーション絵の切り替えをやっているのです。
1モーションに4枚の絵を使っていますので、16/60秒×4倍=64/60秒(約 1.1秒)かかる、という計算になります。

Hero_Step のカウントは 189行目の
> Hero_Step = (++Hero_Step)&(63);
↑これです。増加させたあとの&(63)は、カウンタの周期が1モーション=64フレーム(16フレーム×4パターン絵)だから0~63の範囲になるようにする計算式です。
63(10進数)は、0x3F(16進数)/ 00111111(2進数)です。
つまり、カウンタ値を 00111111(2進数)でマスクして値が63を越えない処理をする均一速度な高速版なのです。
解りやすく書いたら
++Hero_Step;
if(Hero_Step > 63) Hero_Step = 0;

↑こういうことです。if文は、コンパイルすると「条件分岐処理」に機械語翻訳される(アセンブル)ので真の場合と偽の場合とで処理速度が変化します。その為、スピード重視なゲームではif文の羅列はお薦め出来ません。

2進数で考える、左シフト演算や&演算は、ビット演算です。論理ビット演算と算術ビット演算があります。コンピュータが得意な技ですから覚えてくださいね。論理ビット演算は ふつう unsigned数値でやります。算術ビット演算は符号付き数値でやります。

シフト演算については過去記事をおさらいして下さい


背景の描画方法は、解説要らないと判断しましたので省略。

次回は、マップチップを使った背景の実装とスクロール実装をやります。


続きを読むに、RPG_TEST_v0.01 の全ソースコードを貼り付けてあります。以後、必要箇所だけソースコード掲載します。
閲覧推奨ブラウザは、FireFoxです(行番号も表示されるので)。


-- 続きを読む --

[edit]

CM: 0
TB: 0

page top

はい、「PSPプログラミング RPG TEST v0.01 勇者が歩くよ」の配布物をシステムソフトウェア6.XX以降に対応させる事からやってみました。なんかWARNINGでてたね、v0.01 のソースコード
自力で6.XX対応できた方、おめでとう!

勇者が足踏みするのと上下左右に向きを変える、というところは更新無し
背景は芝生固定でスクロール無しです

RPG_TEST_v001ss.png


ソースコード閲覧
http://blog-imgs-17.fc2.com/n/e/k/nekoyama2gillien/DXP_UTF8__RPG_TEST_v0_02.html

ソースコードDL
http://loda.jp/nekomune_/?id=98


First Seed Material
さんの配布素材を使わせて貰っています。感謝です。

DXライブラリPortable も使用しています。憂煉さんありがとう。

更新履歴
v0.02
・日本語ファイル名を半角英数文字に変更した
・ソースコードを改善した。命令行数の長かった関数を、関数分割化して行数を短くした
・音声ファイルが無い場合、音声ファイルが無いことを表示するようにした
・エラー表示の際のメッセージ表示位置(座標)を変更

[edit]

CM: 0
TB: 0

page top


h o m e |


 

2017-09