[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
2週間掛かり当たり判定を実装。DXライブラリを参考に。
ちなみに14歳からできる~と言う本を見てやったのでこんなもんです。
背景は、背景資料館(http://hsiryokan.web.fc2.com/)ものをお借りしてます。
心から感謝します。これは、まだ土台なのでゲームでは、ありません。
スクリプト実装自体が、超不完全ですし。ドット絵も変更予定なのでだいぶ
変化させます。SDキャラみたい変更すると思いますし。このキャラを書くだけ
で疲れるので心が折れます。94X94+16コマ仕様だから。
ソースは、色んな方のものを参考してます。ONSとか物など。
CPPやh(ヘッダ)ファイルは、セットなので組み方を間違えるとすぐにエラー(涙)
しかしアクションゲームのソースが参考にするものがないので手探り状態。
TOP画像は、同人誌をネットで買おうしたらゲーム(えろげー)やアニメのコスした
女DVDが多く表示され、なかなか目的の同人誌に探せなかった。
「時空のデーモン めもらるクーク」ってどこで買えるだ~コミケグッズなのに~~
うんざりしたので怒りこめて変えてみました。(気分でまた変えるかも)
某通販サイト、同人誌と3Dものを同じするな。禁止してほしいW。
コスしたアダルトやAVを規制するべきような。あと大人おもちゃって2Dパクり
良いかと思う。某書店とかにある、よつのは(PC)ののや緋弾のアリアなどを
(この前なんかtoハート2の環姉似たヤツとかあったし。舞?タマキだろう!)
パクったキャラのパケとか見てて悪意を感じる。漫画やアニメを規制する前に
こっちを規制すべきだと思う。オタク商法もルールがいるような・・・。
*参考画像は、ナツユメナギサです。
あくまでも参考画像ですのでご了承ください。
(復帰選択肢 例 実験方式)
mov %20,0
*map_01
bg"選択肢マップ¥MAP_BASE00.jpg
bgm"bgm\24_niti_7_sizu.ogg"
lsp 11,":a;選択肢マップ/MAP_g11.jpg",150,180,255
lsp 12,":a;選択肢マップ/MAP_g19.jpg",40,-45,255
lsp 13,":a;選択肢マップ/MAP_g09.jpg",110,150,255
lsp 14,":a;選択肢マップ/MAP_g15.jpg",180,-30,255
lsp 15,":a;選択肢マップ/MAP_g07.jpg",300,50,255
++++Pは、表示、Cは、表示しないと言う意味
*L_btn_map_01(11などの数字は、lsp番号と同じもの)
exbtn 11,1,"P11C12C13C14C15C16"
exbtn 12,2,"C11P12C13C14C15C16"
exbtn 13,3,"C11C12P13C14C15C16"
exbtn 14,4,"C11C12C13P14C15C16"
exbtn 15,5,"C11C12C13C14P15C16"
exbtn_d,"C11C12C13C14C15C16"
print 2
textoff
btnwait %0
;;;;;;;;これから下記を記入しないとボタン画像が飛んだ先でも残る;;;;;;;;;;;;;;;;;;;
btndef ""
csp -1
;これ以降は必ず画面が切り替わるので、ボタン定義とスプライトを消しておく
bg black,10,300
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
if %0 == 0 goto *L_btn_map_01
if %0 == -1 systemcall rmenu
if %0 == 1 dwave 1,"se/_SE_OK.wav":wait 3000:goto *kyoukai01
if %0 == 2 dwave 1,"se/_SE_OK.wav":wait 3000:goto *kaigan01
if %0 == 3 dwave 1,"se/_SE_OK.wav":wait 3000:goto *apat01
if %0 == 4 dwave 1,"se/_SE_OK.wav":wait 3000:goto *mati01
if %0 == 5 dwave 1,"se/_SE_OK.wav":wait 3000:goto *genseirin01
goto *L_btn_map_01
print 1
ここ重要(この上の部分は、0txtに書く文)
これをしないと変な所へ飛ぶバグがでる。
add %20,4
goto *map_if01
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;設定計算
*map_if01
if %20=9 goto *map_01
if %20<9 goto *map_01
if %20=10 goto *hajme01
if %20>11 goto *hajme01
(こっちを1TXT シナリオ部分に追加する)
4箇所にそれぞれ1.2.3.4をそれぞれ足す
add命令文をmap選択肢分の変数に返す意味
に持ち込む。3の場所を2回行っても6なので
選択肢分に戻される。他もそうなるのでなので
回ってすべてみると行けるようになる。
それより良い方法は、
いた所のスクリプトボタンを消していけば良いだが
NSって以外にその言うことが難しいので研究中。
コレでマップ選択肢の簡単な説明終ります。
結構こう言う選択肢があるゲームは、楽しくなるので
実装を検討中。CG作成中。これは、趣味で劣化移植
していた時に見つけたもの。この理論って
C+にも同じような概要がある(タイトルボタン部分が)
NSスクから入るとCでのゲーム作成時に気づくことが多い。
80 | 50 | 96 | 60 | 112 | 70 | 128 | 80 | 144 | 90 | 160 |
81 | 51 | 97 | 61 | 113 | 71 | 129 | 81 | 145 | 91 | 161 |
82 | 52 | 98 | 62 | 114 | 72 | 130 | 82 | 146 | 92 | 162 |
83 | 53 | 99 | 63 | 115 | 73 | 131 | 83 | 147 | 93 | 163 |
84 | 54 | 100 | 64 | 116 | 74 | 132 | 84 | 148 | 94 | 164 |
85 | 55 | 101 | 65 | 117 | 75 | 133 | 85 | 149 | 95 | 165 |
86 | 56 | 102 | 66 | 118 | 76 | 134 | 86 | 150 | 96 | 166 |
87 | 57 | 103 | 67 | 119 | 77 | 135 | 87 | 151 | 97 | 167 |
88 | 58 | 104 | 68 | 120 | 78 | 136 | 88 | 152 | 98 | 168 |
89 | 59 | 105 | 69 | 121 | 79 | 137 | 89 | 153 | 99 | 169 |
90 | 5A | 106 | 6A | 122 | 7A | 138 | 8A | 154 | 9A | 170 |
91 | 5B | 107 | 6B | 123 | 7B | 139 | 8B | 155 | 9B | 171 |
92 | 5C | 108 | 6C | 124 | 7C | 140 | 8C | 156 | 9C | 172 |
93 | 5D | 109 | 6D | 125 | 7D | 141 | 8D | 157 | 9D | 173 |
94 | 5E | 110 | 6E | 126 | 7E | 142 | 8E | 158 | 9E | 174 |
95 | 5F | 111 | 6F | 127 | 7F | 143 | 8F | 159 | 9F | 175 |
例えば>画像や音楽鳴らすなど行動させるのに理解しないとならない。
VCだけじゃなく他のツールにも関係して来る。現実世界で1.2.3.などの整数は、
10進数に当たる。実際は、0から始まるが分かりやすく言えば、改造ツール
を使うことある人は、よく見る数字になる。
SpoilerAL.exeと言うツールをしていますか?最近では、
戦闘系エロゲー>神採りや大帝国など最近のものに使われている、
あれは、キャラLVなどや攻撃力を書き換えるものである。
ただしコレだけじゃ動作できないのでSSGファイルがいるので
ここからダウンロードしてください。
http://www.necocan.info/supb2/x/topics.cgi?mode=new&page=7
これは、ポインタの説明ですのでご了承ください。
例えばキャラLVを99にしたい場合は、キャラのアドレスに合わして
普通に99って打っては、ダメですよ。上記の表から線が入っている
所を見てください。99>63になってますネ。コレをこのまま打ってもNG
PCが理解できる数値>00000063を打って決定ボタンを押すと変化する。
他にアイテムを75個ほしいなら0000004Bと打つ。
これが関数ポインタである今、自作EXEためにエクセル
に纏めている。それぞれを管理する表を作成中。ついでシナリオ
テキストも書きやすいエクセルで台本ツールも考案中。
以外まとめたい時にエクセルは、役に立つ。
今年>騙されて25万取られ分が戻ってこないかなと思う。
突然、始まったVCでのゲーム開発は、二日目。
始めは、VC2010で作っていたがXPとは、愛称が悪いために
VC2008に落として開発して合間にゲームをプレイしていた。
FCロックマン4が話題に上がっていた。どうやらフジの衛星のTV
ゲームセンターCXと言う番組でプレイされていたようで気になった
みました。感想として有野部長(お笑い芸人)==;下手すぎるって
ほとんどがE缶でのゴリ押しで撃破って(オイオイ)
ファラオショットを打ちすぎ。
敵には、無敵時間ってあるだからと思いつつ見ました。
ちなみにFCロックマンの難易度は、4>5>6>3>1>2って感じ。
ロックマンは、2D世界では、神げーだと思う。個人的に好きなゲームは、
アクションならロックマンですが
RPGならアルトネリコ、ヴァルキリーP
ロボならバーチャローン、PCは、エロゲーですよ。
エロゲーも最近は、進化してるよな~と思います。特にエウが凄い躍進で
CGも良くなっている上にバトル要素が言い、北海道の生まれとして
嬉しいかぎり、PNは、初心を忘れないために生まれ故郷の連想する物
としています。そんなわけでゲーム好きな私個人が開発するために
DXライブラリーを勉強している。
DXライブラリー(略DXR)で成功した
ゲームRosenkreuzstiletteと言う同人ゲーの続編が出るようで応援
していきたいと思います。続編の体験版を少しやったが難しい特に火の面の
消えるブロックが鬼クラスで死にまくる。FCロックマンより辛い面。><
少し脱線しましたね。ゲーム開発に戻りますよ。
今回は、こんな感じです。キャラは、32X32 エッジで作成(透過は、黒なので
黒(0.0)は、使わないで作成する)パッドでも動作する。ビルドの失敗した挙句に
ようやく完成(まだまだですが。)
(ちなみにこんな感じでmain.cpp1に打ってます。しかしある程度C言語の知識が
入りますので勉強しまくりです。設定が重要なのでHPでよく読んで設定してください)
公式HPの設定が鍵なのでそこから入ってください。CPPってのは、
Nsで言うと
メモ帳やエディタと同じ細かい設定は、h(ヘッダファイル)で定義する感じになる。
これが勉強途中なので完成するにつれ変化していくと思います。始めなので
main.cppだけでできるようにしてます。画像は、必ずプロジェクトのあるフォルダに
リンクしてから入れてください。
#include "DxLib.h"
#define SCREEN_WIDTH (800) // 画面の横幅
#define SCREEN_HEIGHT (600) // 画面の縦幅
#define CHIP_SIZE (32) // 一つのチップのサイズ
#define MAP_WIDTH (SCREEN_WIDTH / CHIP_SIZE) // マップの横幅
#define MAP_HEIGHT (SCREEN_HEIGHT / CHIP_SIZE) // マップの縦幅
#define G (0.3F) // キャラに掛かる重力加速度
#define JUMP_POWER (9.0F) // キャラのジャンプ力
#define SPEED (5.0F) // キャラの移動スピード
#define CHAR_SIZE (30) // プレイヤーのサイズ
int PlayerX , PlayerY ;
int JumpPower ;
int PlayerGraph ;
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
int Key ;
SetGraphMode( 800,400,32 ) ;
if( DxLib_Init() == -1 ) // DXライブラリ初期化処理
{
return -1; // エラーが起きたら直ちに終了
}
// 描画先画面を裏画面にセット
SetDrawScreen( DX_SCREEN_BACK ) ;
// グラフィックのロード(画像名・ファイル形式)
PlayerGraph = LoadGraph( "noa1.bmp" ) ;
// キャラクターの初期データをセット
PlayerX = 0 ;
PlayerY = 0 ;
JumpPower = 0 ;
// ループ
while( ProcessMessage() == 0 && CheckHitKey( KEY_INPUT_ESCAPE ) == 0 )
{
// キー入力取得
Key = GetJoypadInputState( DX_INPUT_KEY_PAD1 ) ;
if( Key & PAD_INPUT_UP ) PlayerY -= 3 ; // 上を押していたら上に進む
if( Key & PAD_INPUT_DOWN ) PlayerY += 3 ; // 下を押していたら下に進む
if( Key & PAD_INPUT_RIGHT ) PlayerX += 3 ; // 右を押していたら右に進む
if( Key & PAD_INPUT_LEFT ) PlayerX -= 3 ; // 左を押していたら左に進む
// 落下処理
PlayerY -= JumpPower ;
// 落下加速度を加える
JumpPower -= 1 ;
// もし地面についていたら止まる
if( PlayerY > 300 )
{
PlayerY = 300 ;
JumpPower = 0 ;
}
// ジャンプボタンを押していて、地面についていたらジャンプ
if( ( Key & PAD_INPUT_A ) && PlayerY == 300 ) JumpPower = 20 ;
// 画面を初期化する
ClearDrawScreen() ;
// プレイヤーを描画する
DrawGraph( PlayerX , PlayerY , PlayerGraph , TRUE ) ;
// 裏画面の内容を表画面に反映させる
ScreenFlip() ;
}
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
800X400じゃなく800X600したいので研究中です。
*name
csp 4 ;表示用文字スプライトを消去
getparam $20 ;指定された文字列を取得
len %0,$20 ;数字変数%0に文字列$0の長さを返す
div %0,2 ;len命令で得られる文字数は半角文字数である為、全角分の2で割る
if %0 = 0 vsp 5,0:print 1:return ;文字数0の場合、以下文字数により処理
if %0 = 1 lsph 4,":s/26,28,0;#FFFFFF$20",114,391
if %0 = 2 lsph 4,":s/26,28,0;#FFFFFF$20",101,391
if %0 = 3 lsph 4,":s/26,28,0;#FFFFFF$20",88,391
if %0 = 4 lsph 4,":s/26,28,0;#FFFFFF$20",75,391
if %0 = 5 lsph 4,":s/26,28,0;#FFFFFF$20",62,391
if %0 = 6 lsph 4,":s/26,28,0;#FFFFFF$20",49,391
;スプライトを表示
vsp 4,1
vsp 5,1
print 1
return
この文は、名前ウインドウの定義です。
次に名前ウインドウを表示させる。
*game_start
*newgame
lsph 0,":l/3,60,2;img\cursor0.bmp",0,0 ;クリック待ちカーソル
lsph 1,":l/3,60,2;img\cursor1.bmp",0,0 ;改ページ待ちカーソル
lsph 5,"img\name_window.bmp",20,383 ;名前表示用ウィンドウ
erasetextwindow 0
setwindow 64,448,28,5,22,22,2,10,20,0,1,"img\text_window.bmp",20,430
bg #888888,1
(ストーリーへ)
それから戦闘をいれて終了の時に
goto *s_se03
*wincl
#000000
textoff ;攻撃コマンド出す命令
textclear
戦闘の部分は、長いので略します。(実際は、bar命令を使いますので)
シリアスに戻すためにバーをメモリから消去<<いったん
その命令では、名前ウインドウも消えるので再構築!!
lsph 5,"img\name_window.bmp",20,383
vsp 5,1
print 1
bg"BG\00han.jpg",1
name"??"←?一つだと表示がおかしくなるから
「まだ始まったばかりだし、これからね」
ような感じで表示。戦闘に利用してます。
このEXEは、他の吉里吉里など違いメモ(シナリオ部分に命令を打てる方なので)
開発者の人がTHE GOD OF DEATHなどで活躍したシナリオライターさん。
しかしNs型EXEの製作ものも少ないので懐かしい。
これで作っているのは、nsの良さを知ってもらうためかな?
何より自分ってR18ゲームが好きだなと感じてしまう今日この頃。