hinekure.net が http://hspdev-wiki.net/ から自動クローリングした結果を表示しています。画像やリソースなどのリンクが切れています。予めご了承ください。
アドベンチャーエンジン - HSP開発wiki
トップ    編集凍結 差分バックアップ添付複製名前変更リロード   新規一覧単語検索最終更新   最終更新のRSS

アドベンチャーエンジン

シナリオファイルを読み込み、それに対応する処理を結びつけることで、エンジンを実現します。
開発するエンジンは「アドベンチャーエンジン」で、以下の処理を最低限含みたいと考えています。

  • 構文解析モジュール   (テキストデータを処理に対応させる)
  • 文字解析モジュール   (日本語を表示する際に使用する)
  • 暗号化・複合化モジュール(外部ファイルを外部から遠ざける)

    開発と同時に、これらのことを学べたらヨイなぁ、とも考えています。

プロジェクト開発分室

ページ名内容
アドベンチャーエンジンこのページです。アドベンチャーエンジンの開発を行なっています。
アドベンチャーエンジン/シナリオスクリプトシナリオスクリプトの書式や仕様などについて。
アドベンチャーエンジン/モジュール開発室アドベンチャーエンジンで使用するモジュールの開発を行なっています。
命令の取得や小文字変換など。
アドベンチャーエンジン/変数・演算変数および演算処理について。
アドベンチャーエンジン/参考資料AVGエンジン開発にあたっての参考資料など。
アドベンチャーエンジン/進捗状況予定および完成した部分の履歴など


SmpScr1.pngSmpScr2.pngSmpScr3.png

  • HSP3.0 (拡張マクロ使用)
  • プラグイン等は一切使用せず、標準命令だけで実装する。
    (ユーザー定義系や、HSPがサポートする全てのWindows上で動作するAPIまたはCOMを含む。)

    ○ 「起動時にメインウィンドゥを非表示にする」
    × 「起動時のディレクトリ移動を無効にする」

プログラムの流れ

<メインルーチン>

main.hsp 内では、必要最小限のサイズに抑えるのがいいと思います。
基本的な処理や命令は、外部ファイルで定義するようにします☆

<シナリオ>

シナリオスクリプトを読み込み、変数 scenario に代入します。
scenario の内容を1バイト毎に読み込み、以下の3つの状態に振り分けます。

  1. コメント/ラベル
    無視してメインに戻る。
  2. 命令
    lbl_cmdprcs で命令郡に対応させる。マッチしない場合は、改行する。
    終了後はメインに戻る。
  3. 文字列
    上記2点に当てはまらなかった場合、文字列として表示し、メインに戻る。

HSPコーディングルール

書式を統一したほうが、みんなが読みやすいんじゃないでしょうか(^^?
というわけで、プログラムを書くときの簡単なルールです☆

  • インデント
    • インデントは半角空白'4'つ
    • ラベルや特別な場合はインデント無し。ネスト1つにつき1インデント。それ以外は、適当にお願いします。
  • 名前
    • 一時的な変数はエルとオー以外の一文字とする( 例:x , y , i )
    • ユーザー定義系やAPI/COMはキャメルケース*1とする( 例:LowerCase , CreateWindow )
    • マクロは大文字とする( 例:FILE_SIZE , WINX )
    • 標準命令は小文字とする( 例:gcopy , mes )
  • 空白
    • 2つめ以降の引数は頭に空白を設ける
        1
        2
      
       
       
      
      pos x, y ; OK
      pos x,y  ; NG
      
    • 代入時には=の前後に空白を設ける
        1
        2
      
       
       
      
      n = WINX ; OK
      n=WINX   ; NG
      
    • 関数名と括弧の間には空白を置かない
        1
        2
      
       
       
      
      n = strlen(string)  ; OK
      n = strlen (string) ; NG
      
  • 式と括弧
    • 単項式
        1
        2
      
       
       
      
      n = double(i)   ; 良
      n = double( i ) ; 優
      
    • 多項式
        1
        2
        3
      
       
       
       
      
      n = (a+b)*i       ; 可
      n = ( a+b )*i     ; 良
      n = ( a + b ) * i ; 優
      
  • モジュール
    • ファイル名は接頭辞mdl_のあとにモジュール名をくっつける
    • モジュール名を付ける時は接頭辞MDL_のあとにモジュール名をくっつける
  • ラベル
    • ラベル名は接頭辞*lbl_のあとにラベル名をくっつける

プロジェクトファイル一覧

エンジンの本体となるメインプログラムです。
各自スクリプトを更新したり追加したら、その都度、表を最新の内容に更新し、テストされる方が迷わないようお願いします。
更新内容は変更点記入欄のほうを見てください。
(開発の為、処理毎にファイル分けしてあります。ファイル数が多いですが、ご了承ください)

一括ダウンロード(Ver.2006.12.30.0)
必ず各自でウイルスチェックをして下さい。
ウィルス対策の為exeファイルは入れていません。もし入っていても絶対に実行しないで下さい。
fileavg_061230.zip
ファイル数が多いので、一括ダウンロードできるよう用意しました。バージョンは作成した日付となっています。
下記表よりファイルが更新された場合は、更新されたファイルのみを個別ダウンロードして上書きしてご利用ください。
(管理用お知らせ … 「一括ダウンロード」用ファイルはダウンロードの手間を軽減するためのものなので、各ファイル更新ごとに毎回作成する必要はありません。ダウンロードしなければいけないファイルがある程度増えてきたころが、作成のしごろです。)

ファイル名説明Ver.最終更新日
本体スクリプト( .hsp)filemain.hspメインルーチン482006-12-30
filelbl_command.hsp命令 解析・処理482006-12-30
filelbl_message.hsp文字 解析・処理482006-12-30
モジュールスクリプト( .as)filewin32api.as-Win32API
-WindowsMessage?
482006-12-30
filemdl_text.as文字 解析・処理
482006-12-30
filemdl_mm.as画像/音 操作482006-12-30
filemdl_formula.as式 解析・処理
482006-12-30
サンプルシナリオfilescenario.txtエンジン紹介用482006-12-30
fileback1.jpgサンプル背景画像.1---
fileback2.jpgサンプル背景画像.2---
fileback3.jpgサンプル背景画像.3---
fileframe1.jpgサンプルフレーム.1---
fileframe2.jpgサンプルフレーム.2---
filefore1.gifサンプル前景画像.1---
filefore2.gifサンプル前景画像.2---
filemusic1.midサンプル音楽---
filesound1.wavサンプル効果音---
エディターfileeditor.hspおもちゃのエディタ302006-11-03

エンジンとはどういうものかを試してもらうために、サンプルを用意しました。
全てのファイルを同じディレクトリに入れて、main.hspを実行してください。

(シナリオを差し替えるときは、main.hsp の一番最初に定義してある、ファイル名を変更してください(^^/)

サンプルシナリオの実行画面です。
SmpScr1a.pngSmpScr1b.pngSmpScr5a.jpgSmpScr5b.jpgSmpScr6a.pngSmpScr6b.png

  • osakana さん
  • GENKI? さん
  • naznyark? さん
  • kz3 さん
  • gon? さん


  • 七次元? さん
  • とほ? さん


  • グエスト? さん
  • guest? さん

エディター

+  miniEditor

コメント

+  過去ログ
  • このページを作成してから、半月が経ちました☆みなさんのおかげです●^^● エンジンはやっとシナリオ1が再生できるようになりました☆ -- りさ 2006-10-31 (火) 03:13:36
  • 作業ファイルが分裂したり融合したりと非常に分かり辛いかと思いますが、やっと整理できまシタ★当分はこんな感じで( ̄ε ̄v -- りさ 2006-11-01 (水) 00:29:21
  • やっと分岐が出来る「ボタン」を実装しました(笑)これでサンプルシナリオが一つで済みマスわ☆ -- りさ 2006-11-05 (日) 12:32:00
  • サンプルで、起動してから2回続けてループテストをクリックすると、システムエラーになるのですが、確認された方は教えて頂けると助かります☆ちなみに、MEでしか確認できず、XPではエラーがでません・・・(??) -- りさ 2006-11-08 (水) 00:32:58
  • 言い忘れましたが、システムエラーで formula関数内です(><; -- りさ 2006-11-08 (水) 00:34:02
  • ユーザー定義関数の呼び出し時に、ユーザー定義関数の戻り値が代入される変数をその関数内で型変換したときに動作が安定しないときがあるようです。
    (私の環境で確認。Windows9x 系限定?。2k 系では全く問題は出ないのかな?。) -- naznyark? 2006-11-09 (木) 01:48:25
     
    +  検証用スクリプト
  • 出来ましたっ!こんなことだったなんて、知りませんデシタ☆ありがとうございます(^^検証用のスクリを実行したところ、MEでもXPでもエラーになりました(涙)ちなみに、ループテストの際、MEでも3回目でエラーになったり、1回目でエラーになることがあったりと、マチマチでしたm(_ _)mようするに不安定なんデスね( -- りさ 2006-11-09 (木) 02:52:47
  • 実際のところ、XPでもサンプルは正常に動作していなかったみたいデス(エラーはでなかったですが)。指摘いただした箇所を修正しましたら、考えていた通りの動作が行われました☆ご迷惑おかけしましたm(_ _)m -- りさ 2006-11-09 (木) 04:47:58
  • HSPTVでは失礼しました。失礼のないよう心掛けますので、これからもどうぞ宜しくお願いします。 -- りさ 2006-11-13 (月) 03:46:32
  • 私は別に気になりませんでしたが・・・。まあ終わった事なので楽しく行きましょう。 -- osakana 2006-11-15 (水) 04:24:18
  • 現在やり残っている事や、実装したいと思っている機能などをどこかにまとめて置いた方がいいかもしれません、あと完成度とかも。 -- osakana 2006-11-15 (水) 04:30:39
  • 早速一部項目を移動してきました。更新履歴もかなり増えてきてたのでちょうどよかったです。 -- GENKI? 2006-11-15 (水) 22:48:11
  • 見やすいよ〜!有難うございます。後はりささん待ち?リボ〜ン!(ジュセジャポネ・・・?) -- osakana 2006-11-17 (金) 07:41:08
  • こんにちわ!更新止めちゃってごめんなさい(涙)身体が弱くてずっと病院で・・昨日退院してきましたm(_ _)m スクリを忘れてないか心配です(汗) -- りさ 2006-11-22 (水) 07:55:50 思い出すついでに残しておきます(^^ -- りさ
  • スクリは忘れても大事に至りませんがクスリの服用は忘れずに...お身体お大事に [smile2](自分はクスリ嫌いですが...) -- kz3 2006-11-22 (水) 08:52:18
  • 横から失礼いたします。自分もエンジンを作っていてこちらに誘導されてmain.hspを実行してみました。HSPは共同開発に向いていないと聞いていたのですがこれはすごい・・・。それで最初に起動した時、ファイル不足だったのでエラーが出たのですが[HSP]at line 0 【 Adventure Engine 】 を強制終了します。と表示されました。line0はどこ?・・・ あとファイルが見つからない場合はどのファイルが見つからないかというエラーが出たらわかりやすいかな? 独り言ですのでお気になさらず・・・ wiki汚しすみませぬ -- 七次元? 2006-11-22 (水) 16:38:17
  • wikiの書式わからない・・・ 汚し申し訳ありませんorz -- 七次元? 2006-11-22 (水) 16:39:58
  • りささん>そうだったんですか、なんか急かすような事を書いてすみませんでした。退院とは言えお大事になさって下さいね(私はやっと最近お薬が飲める様に・・・) -- osakana 2006-11-23 (木) 02:00:08
  • 七次元さん>勝手に書き込み修正しました;^^。私も最初は書式がよく分かりませんでした、今もですけどね(泣。どうやらsample1.jpgが無い時にそのエラーが出るようです。やはりシナリオに記された素材ファイルが存在しない場合には「ないよー!」って出てきた方が良いかも知れませんね。 -- osakana 2006-11-23 (木) 02:48:01
  • ほかにもmusic1.midが無いときにも同じエラーがでました。そのほかの素材ファイルが無い時ではファイル名は出ませんが「画像ファイルがありません」、「音ファイルがありません」と表示されました。 -- osakana 2006-11-23 (木) 02:54:59
  • osakanaさん修正どもです。修行(?)が足りないのか他人の書いたスクリプトは解読に時間がかかる・・・ -- 七次元? 2006-11-24 (金) 16:55:42
  • わたしも未だ解読中・・・(@_@;)(1日が50時間位あれば良いのに!とよく思う) -- osakana 2006-11-24 (金) 17:10:50
  • エラー処理周りは仕様が確定しきっていないうえに現在の仕様にあわせた書き換えさえも終わっていない状態のようなので・・・。
    気になるなら暫定的に main.hsp の一部をを次のように修正しておいてください。
    (ファイル名は出ませんが。) -- naznyark? 2006-11-25 (土) 00:42:13
    +  main.hsp 暫定エラー処理修正
  • こっちでいいのかな?とほさん御所望のフェードイン・アウト立ち絵表示モジュールを作ってみました。下のstand.lzhです。立ち絵の画像は添付しておりませんのでご用意ください。画像の形式はgmode 7の形式です。良かったら試してみてください。 -- gon? 2006-12-23 (土) 00:16:37
  • また退院して戻ってきました!薬とスクリ(笑…クスリッ)>kz3さん
  • お気遣いありがとうございますm(_ _)m > osakanaさん
  • こんにちわ、謎なとこはどんどん聞いてください、アタシも謎だったりするかもですが(笑)>七次元さん
  • 修正ありがとうございます。とっても助かります!>nyaznyarkさん
  • 今から拝見させて頂きますっ。ありがとうございますm(__)m>gonさん
  • なんだか浦島さんになった感じです(☆^^☆)-- りさ 2006-12-27 (水) 15:45:57
  • りささんお帰りなさいです。お体の具合が良くないようで、お大事にしてくださいませ。立ち絵表示モジュールを更新しました。表示位置調整機能とフェードイン・アウトの調整機能を追加しました。良かったら試してみてください。 -- gon? 2006-12-29 (金) 13:41:12
  • ただいまです!Xmasにはギリギリ間に合いませんでしたが、お正月は実家で過ごせそうですっ。立ち絵、試させて貰いました(^^/前景の命令も必要だったんでスゴク嬉しいです。ところで、アタシも文字バッファのことを考えたのですが、ある色を指定しなければならなくなってしましますよね?初めはこの指定色を変動させれば出来るかとも考えたのですが、事実上、やはり制限がでることは避けられないようです(><; なので、そこをどうにかできないか考え中ですっ。ただフェードさせるときでも、画像としてではなく文字として描画することで実装できるかもですよね。とりあえず、そっちの方向で考えているんですが、いい方法あったら教えてくださいm(__)m -- りさ 2006-12-30 (土) 18:11:59
  • GENKIさんのサンプルとにらめっこしたんですが、どうも禁則処理が試行錯誤の連続で前に進めません。アルゴリズムを完全に理解していないのもありますし、SHIFT-JISについてその他の見落としがあるんじゃないか不安なのもあります(^^;;もし時間ありましたら、lbl_message 内の禁則処理を見て頂けませんでしょうか??宜しくお願いします -- りさ 2006-12-30 (土) 18:15:27
  • 立ち絵はlbl_commandだけ整理しました。モジュールはもう少しエンジン用に書き換えたいので、少し待ってもらえますか??文字バッファの件もありますし・・・。あとサンプル前景画像を用意したのですが、これでいいですか? -- りさ 2006-12-30 (土) 18:38:39
  • ファイルをUPしました。背景画像は前回のと同じなので、ファイル名だけ違います(^^※あと、残ってるのを下に書き出します( ̄▽ ̄¥ -- りさ 2006-12-30 (土) 18:43:28
  • ENGINE
                  エラーメッセージの統合と処理
                  グローバル変数をより分かり易い分け方へ
    lbl_main
                  見つけたラベル名と行数を配列に保存(シナリオ行数のため)
    lbl_message
                  折り返し+禁則処理を行う([[GENKI]]さんの(最新バージョンの)サンプル参考)
                  InsertStrInStrを完成させる
    lbl_command
                  if - else - (endif) の実装
                  link (naznyarkさんのカスタムボタン参考)
                  input
                  load
                  save
                  fg_ (前景:gonさんのスクリ参考)
                  [ 式 ] に対応
    mdl_text
                  囲・影文字を行ってる tStr 命令を更新する([[osakana]]さんの(最新バージョンの)サンプル参考)
    mdl_formula
                  Formula 関数のエラーメッセージを設定する
                  関数の追加
    mdl_mm
                  前景用の関数登録(gonさんのスクリ参考)
    EXTERNAL
                  エディタの作成
    • 立ち絵関連についてですが、文字バッファを使用する場合はやはり透明色を1つ作らないと難しいでしょう。文字列として表示する場合は、初めに文字を表示させたときと同様の表示形式でフェードイン中も表示させるようにすれば出来そうですが、メンドくさそうですね。 -- 2006-12-31 (日) 02:29:04
    • 立ち絵モジュールですが、実は私の作りたいのはシミュレーションゲームでして、その中で使う立ち絵表示の機能としては現状レベルのもので十分だと思っております。ですので、とりあえず私の立ち絵モジュール開発自体は終了しておりますので、気にせず変更してください。 -- 2006-12-31 (日) 02:29:37
    • 前景画像というのは私の言っている立ち絵のことですよね?うーん、ちょっと違うかも(笑) -- 2006-12-31 (日) 02:29:54
    • 立ち絵のサンプルを下記に添付します(standpic_sample.lzh)。ノベル用素材として神在月Kさんが公開されているもので、私が作成したものではありません。モジュール開発もこの素材をつかって作成しておりました。やはり人様の作成したものですので、少し気を使いモジュール公開時も添付しておりませんでした。ですがマスク付き画像の説明しにくいので添付させてもらうことにします。 -- gon? 2006-12-31 (日) 02:32:03
    • お〜更新〜!私も本腰入れんとね(@x@)。まだ結構残っているのですね、私の袋文字のヤツもうちょっと参考にするの待って下さい おかしいトコあるんで(;n;) -- osakana 2007-01-05 (金) 06:44:08
    • 立ち絵と前景って同じものだと考えてました(^^;;半透明のみで考えていたので、ぜひ参考にさせて頂きますね☆頭悪いのでスクリ解読するのに時間かかっちゃってます(><; -- りさ 2007-01-05 (金) 16:02:17
    • 私も立ち絵と前景について曖昧だったので調べてたら、こんなの見つけました。h ttp://yun.cup.com/karuna11.html なんだか腑に落ちた感じ。 -- osakana 2007-01-05 (金) 17:44:22
    • という事はとりあえず必要なバッファーは、背景、後景、立ち絵、前景、フレーム、メッセージ の6つ? -- osakana 2007-01-05 (金) 17:50:39
    • 私もあまり深く考えていなかったんですが、吉里吉里だと立ち絵と前景は同じというか、前景の一種が立ち絵という感じみたいですね。 -- gon? 2007-01-05 (金) 23:37:40
    • 私のスクリプトですが、HSP初心者なので変なことをしてるかもしれません(deffunc後の引数から変数を毎回取り出しているのはわざとですが・・・変数宣言を強要するモードが欲しい・・・)。人の書いたコードはやはり解読に時間がかかりますから、分かりにくいところは聞いてくださってかまいませんよ。 -- gon? 2007-01-05 (金) 23:38:49
    • バッファについてですが、立ち絵部分は私のモジュールのままとしたらキャラごとに用意するので、左(Left)、真ん中(Center)、右(Right)の3枚必要です。あとメッセージ用のバッファを作るか作らないかは、りささん次第かな?後景、前景は今のところ使って無いと思いますが、メッセージ用のバッファ有りで、背景、後景、立ち絵(L,C,R)、前景、フレーム、メッセージの8つですね。 -- gon? 2007-01-05 (金) 23:40:47
    • また変なものを作ってと,りささんに怒れれるかも知れませんが、画像ボタンと選択肢表示を作ってみました。下の添付ファイルのimg_button_070121.lzhです。オリジナルコードのベースが最新のものとは異なるので、すべてのファイルを添付しておりますのでサイズが少々大きいです。ちょっと動作が不安定な部分もあるようで、たまに動作が重くなるときがあるみたいです。デバッグしてくださると助かります(笑)。 -- gon? 2007-01-21 (日) 23:20:52
    • 開発はとまってしまったのでしょうか。そろそろGUIでのスクリプト操作があるといいですね。 -- As 2008-03-13 (木) 00:57:50
    • 初めまして。ノベルスゲームに興味があるので、ここでコソコソと勉強させて頂きたいと思いますm(_ _)mもし開発へ協力できるレベルになったら、自分も手伝わせて頂きます。 -- uhouho? 2008-04-13 (日) 18:59:16

    URL B I U SIZE Black Maroon Green Olive Navy Purple Teal Gray Silver Red Lime Yellow Blue Fuchsia Aqua White

    *1 ラテン文字において、複合語をひと綴りとして、要素語の最初を大文字で書き表すことをいう。キャメルケースとは、大文字が「らくだのこぶ」のように見えることからの命名である。…WikiPedia?より引用
    トップ    編集凍結 差分バックアップ添付複製名前変更リロード   新規一覧単語検索最終更新   最終更新のRSS
    Last-modified: 2009-04-21 (火) 02:33:21 (1692d)