TEngineで小さなゲヌムを䜜成する

ごく最近、私は私の小さなtengineプロゞェクトに぀いおの投皿を投皿したした。 私にずっおは、倚くの人が圌のアむデアや開発に興味を瀺したこずは予想倖でした。 そしお関心があるので、これは出版を続ける機䌚です。



この蚘事は、小さなゲヌムの䜜成に関するチュヌトリアルです。 むデオロギヌ的には、レベル゚ディタヌMapEditor3、以降me3なしでtengineで䜕かを䜜成するこずは事実䞊䞍可胜です。 それを利甚しお、リ゜ヌスがゲヌムのオブゞェクトにアタッチされ、識別子定数を持぀ファむルが生成され、シヌン、サりンドスキヌムなどが䜜成されたす。 そしお最も重芁なこずずしお、me3は、tengineロゞックが機胜するために必芁な既補のバむナリレベルファむルを生成したす。䞀般デヌタoファむル、各レベルのデヌタファむルl [0..n]ファむル、およびテキストデヌタ t [0..n]個のファむル







プロゞェクトのフォルダヌ構造




たず、space_invadersフォルダヌずその䞭のフォルダヌ構造を䜜成したす。





me3の䜿甚開始




me3を実行した埌、リ゜ヌスを操䜜するためのパスを構成する必芁がありたす「ファむル->パスの構成」および「rawres」フォルダヌぞのパスを蚭定したす。 次に、「ファむル->゚ディタヌ蚭定」に進み、グロヌバル蚭定を蚭定したすグラフィックリ゜ヌスのタむプ。 me3の珟圚のバヌゞョンでは、bmpたたはpng圢匏でのみ動䜜するこずが可胜です。 bpp <32の堎合、色0xff00ffは透明ず芋なされ、bpp == 32の堎合、アルファチャネルが透明性を担圓したす。 リ゜ヌスタむプをpngに蚭定したす。



グロヌバル蚭定を蚭定した埌、シヌンの䜜成を開始できたす「ファむル->新芏プロゞェクト」。 次に、最初のシヌンマップを䜜成したす "プロゞェクト->マップの䜜成"。 新しいカヌドの蚭定を瀺すりィンドりが衚瀺されたす。



レベル0が䜜成されたしたが、1぀の重芁な点に぀いお説明したす。 マップは空ですが、このような倧きな画面で、マップの小さなフラグメント8x8が必芁かどうかを考える必芁がありたす。 ほずんどありたせん。 したがっお、レンダリングの䜜業を簡玠化し、サむズを倧きくしお、その数を枛らしたす。 これを行うには、[ゲヌムの背景]-> [背景芁玠の蚭定]メニュヌに移動し、フラグメントの新しい幅ず高さを32ピクセルに蚭定し、[マップサむズを保存...]にチェックマヌクを付けお[適甚]をクリックしたす少し䞍快で盎感的ではありたせん。 マップ蚭定を芋るず、すべおが正垞かどうかをディメンションで確認できたす「プロゞェクト->マップ蚭定」。



マップシヌンに関するもう少しの情報tengineは、耇数のマップをロヌドしお、指定されたレンダヌプレヌンに同時に1枚ず぀描画できたす。 tengineにロヌドされたマップはレむダヌず呌ばれたす。 最倧4぀の独立したレンダリングプレヌンがアヌキテクチャ的にサポヌトされおいたす各プラットフォヌムにはレンダリングプレヌンの独自の実装がありたす。 理論的には無限の数の論理レむダヌを1぀のレンダリングプレヌンに接続できたすが、そのうちの1぀だけがプラむマリレむダヌになり、背景タむルを描画したり、アニメヌションがロヌドされたオブゞェクトを持ち、音楜回路を再生したりできたす非基本レむダヌで説明されおいる関数の呌び出しは無芖されるかアサヌト゚ラヌを䞎える。 これらの機胜に加えお、論理局は論理的に互いに亀差したせん。 耇数のレむダヌを䜿甚する䟋ゲヌムメニュヌのレむダヌ、ゲヌムむンタヌフェむスのレむダヌ、およびゲヌム自䜓のレむダヌにより、サブシステムを独立したモゞュヌルに分割するこずが物理的に䟿利になりたす。



背景を操䜜する




たず、背景を䜜成したす。 これを行うには、バックグラりンドモヌドに移動したす。F2たたは背景画像のあるパネルのアむコンを抌したす。 背景オブゞェクトのパレットが衚瀺されたす。 空のパレットセルをいく぀かの方法でグラフィックに関連付けるこずができたす芁玠ごず目的の芁玠の䞊にカヌ゜ルを移動しお[Enter]を抌すか、マりスをダブルクリックするたたは関数[完成した画像を切り取る]。 簡単な方法を䜿甚したすカットされた画像の最初の芁玠ずなるパレットの芁玠にカヌ゜ルを眮き、ミキサヌのレむダヌ0アクティブレむダヌを遞択し、はさみアむコンをクリックしたす。 衚瀺されるメニュヌで、目的の画像を遞択し、「適甚」をクリックしたす。 その結果、グラフィックリ゜ヌスに関連付けられたセルのグルヌプが衚瀺されたす。



ミキサヌのレむダヌに぀いお少し。 背景は倚くのレむダヌで構成できたす。このため、背景蚭定で目的のレむダヌ数を蚭定する必芁がありたす「ゲヌムの背景->背景芁玠の蚭定」。 レむダヌは昇順で描画されたす。぀たり、レむダヌ1はレむダヌ0に重なりたす。したがっお、より興味深いタむルマップの組み合わせを実珟できたす。 [アクティブレむダヌすべお]蚭定では、すべおのレむダヌが描画され、マップ䞊での描画方法が瀺されたす。



これで、背景オブゞェクトのパレットが準備できたした。 それらは非垞に簡単にマップに転送されたすマりスでオブゞェクトの目的の領域を遞択し、コピヌctrl + c、カヌ゜ルをマップ䞊の正しい堎所に眮いお貌り付けたすctrl + v。 さらに、コピヌず貌り付け操䜜はパレット自䜓でも機胜したす。パレットの任意の堎所にオブゞェクトをコピヌしお貌り付けるこずができ、マップ䞊の任意の堎所に背景タむルをコピヌしお貌り付けるこずができたす。 「乗算」たたは「ブリッゞ」には別の䟿利な機胜がありたす。背景オブゞェクトの特定の領域をコピヌし、マップの別の領域たたはマップ党䜓ctlr + aを遞択し、ctrl + alt + vを抌すず、遞択した領域党䜓が繰り返し塗り぀ぶされたすコピヌされた領域のフラグメント。



背景芁玠に関する远加情報パレットの背景オブゞェクトにいく぀かのプロパティを蚭定できたす。 これを行うには、背景プロパティマネヌゞャヌで背景プロパティの皮類を䜜成したすメニュヌ "ゲヌムの背景->背景プロパティの皮類"。 プロパティでは、芁玠の論理的な「通過性」を蚭定したり、ゲヌムロゞックで䜿甚できる特定の远加のデゞタルパラメヌタヌを割り圓おたりできたす。 プロパティタむプを䜜成した埌、背景オブゞェクトのパレットで、「Enter」を抌すか、遞択したオブゞェクトをダブルクリックしお、衚瀺されるりィンドり「フラグメントタむプ」ドロップダりンリストで目的のタむプを遞択するこずで、プロパティを割り圓おるこずができたす。 これ以降、このタむプのマップのすべおのタむルには、指定されたプロパティがありたすマりスカヌ゜ルの䞋で遞択されたタむルでctrl + pを抌すこずでチェックされたす。



これらすべおの操䜜の唯䞀の条件は、バックグラりンドモヌドがアクティブになっおいるこずですツヌルバヌの「抌された」状態の「バックグラりンドモヌド」アむコン。



サりンドスキヌムを䜜成する




ゲヌムにサりンドを衚瀺するには、サりンドスキヌムを䜜成する必芁がありたす。 サりンドスキヌムは、メむンレむダヌになるカヌドにのみ䜜成する必芁があるこずは既に説明したした。 たた、サりンドスキヌムはゲヌム党䜓ではなくカヌドに属しおいるこずに泚意しおくださいゲヌム党䜓で1セットのサりンドを蚈画する堎合、各レベルには独自のサりンドスキヌムが必芁です-ゲヌムレベルずなるすべおのカヌド間で1぀のサりンドスキヌムをコピヌしお貌り付けたす。



たず、オブゞェクトモヌドに切り替えたす。F1たたはオブゞェクトの画像が衚瀺されたパネル䞊のアむコンを抌したす。 オブゞェクトパレットの䞋郚りィンドりで、[システム]タブに切り替え、[サりンドスキヌム]オブゞェクトを取埗しお、マップ䞊の任意の堎所にドロップしたす。 次に、マップ䞊のオブゞェクトのプロパティに移動したすctrl + pたたはマりスの右ボタンを䜿甚しおオブゞェクトのコンテキストメニュヌを呌び出し、[プロパティ]を遞択したす。 衚瀺されるりィンドりで、サりンドファむルを远加し、識別子名を付けお、SFX゚フェクトたたはBGMBGMパラメヌタヌに蚭定したす。



ゲヌムオブゞェクトの䜜成




ゲヌムオブゞェクトを䜜成する前に、アニメヌションのタむプず状態のリストを䜜成する必芁がありたす。 開始するには、アニメヌションタむプマネヌゞャヌ「プロゞェクト->アニメヌションタむプ」を実行し、小さなゲヌムに十分な2぀のタむプ「ANIM_ACTIVE」ず「ANIM_DAMAGED」を远加したす。 次に、オブゞェクトの状態タむプを䜜成したす。 状態タむプマネヌゞャヌ「プロゞェクト->状態」を開始し、「STATE_ACTIVE」アニメヌション「ANIM_ACTIVE」を結び付けるず「STATE_DAMAGED」アニメヌション「ANIM_DAMAGED」を結び付けるの2぀の状態を远加したす。



状態に関する远加情報ゲヌムオブゞェクトのロゞック党䜓が状態にラップされたす。 特に、オブゞェクトがパスノヌドにアタッチされおいる堎合、オブゞェクトに論理方向「論理」、名前の「䞊」、「䞋」、「右」、「巊」は方向の4぀のオプションを間接参照するためにのみ導入されおいるため、および名前を蚭定する状態です今すぐ再生する必芁があるアニメヌション。



オブゞェクトの状態に続く2番目に重芁なパラメヌタヌはプロパティです。 これらは、プロパティマネヌゞャヌでテンプレヌトの圢匏で䜜成されたす "プロゞェクト->プロパティテンプレヌト"。 「PRP_ENABLE」ず「PRP_SPEED」ずいう2぀の重芁なプロパティを远加したす。 オブゞェクトのプロパティはいく぀でも䜜成できたすが、tengineのみが内郚ロゞックでこれら2぀に応答したす。 「PRP_ENABLE」が1に等しくない堎合、オブゞェクトは描画されず、ゲヌムプロセスのロゞックに参加したせん。 「PRP_SPEED」プロパティは、パスノヌドに沿っお移動する速床を蚭定したす。 これらのプロパティが䜜成されおいない堎合、 "PRP_ENABLE" == 1、 "PRP_SPEED" == 0ず芋なされたす。



たた、宇宙人の死のアニメヌションの終了を決定するために、シヌンからむベントを削陀できる瞬間を知るために、むベントを1぀䜜成したす。 これを行うには、むベントマネヌゞャヌ「プロゞェクト->むベントタむプ」を実行し、むベントタむプ「EVENT_END_ANIM_DAMAGE_INVADER」を䜜成したす。



知っおおくこずが重芁です。プロゞェクト開発のどの段階でも、アニメヌション、状態、むベント、たたはプロパティの皮類をい぀でも远加たたは削陀できたす。

これで、最初のタむプのゲヌムオブゞェクトを䜜成できたす。 たず、オブゞェクトモヌドに切り替えたす。F1たたはオブゞェクトの画像が衚瀺されたパネル䞊のアむコンを抌したす。 オブゞェクトパレットの䞋郚りィンドりで、「党般」タブに切り替えたす名前を倉曎できたす。 りィンドりを右クリックしおコンテキストメニュヌを呌び出し、[オブゞェクトの远加]項目を遞択したす。 最初のオブゞェクトを宇宙人にしたしょう。



ゲヌムオブゞェクトを䜜成するためのりィンドりは、䞀般タブずアニメヌション゚ディタの2぀のメむンタブで構成されおいたす。

[党般]タブには次の蚭定が含たれたす。



オブゞェクトにSPACE_INVADERずいう名前を付け、そのデフォルト状態をSTATE_ACTIVEに蚭定しお、アニメヌションを䜜成できる2番目のタブに移動したす。



アニメヌション゚ディタヌタブ 最初に行うこずは、リストから目的のアニメヌション名を遞択し、最初のフレヌムを䜜成するこずです。 アニメヌション「ANIM_ACTIVE」を遞択し、アニメヌション遞択フィヌルドのすぐ䞋にあるフレヌムりィンドりに移動し、コンテキストメニュヌを右クリックしお「空のフレヌムを远加」を遞択したす。 アニメヌションの最初のフレヌムを䜜成したした。 次に、フレヌムのグラフィックコンポヌネントのグラフィック芁玠をカットする必芁がありたす。 空のフレヌムの右偎に、補助りィンドりが衚瀺されたす。 このりィンドりで、アクティブなタブ「グラフィックス」にアクティブなサブタブ「暙準」が含たれおいるこずを確認したす。 グラフィック芁玠のただ空のりィンドりパレットを右クリックし、コンテキストメニュヌを呌び出しお[線集]を遞択したす。 オブゞェクトのグラフィックむメヌゞを線集するためのりィンドりが衚瀺されたす。 ここでは、アニメヌション芁玠が䜜成されるグラフィック芁玠が䜜成切り取りされたす。 最初に、異星の芁玠を収集する新しいグルヌプを䜜成したす。 これを行うには、グラフィック芁玠のグルヌプのりィンドり「General」ずいう碑文が衚瀺された巊端のりィンドりを右クリックしお、コンテキストメニュヌを呌び出し、「グルヌプの䜜成」を遞択したす。 グルヌプを「むンベヌダヌ」ず呌びたす。 次に、このグルヌプをアクティブにしマりスの巊ボタン、グルヌプ内で右クリックしお、コンテキストメニュヌを呌び出し、「远加」を遞択したすたたは[挿入]ボタンを抌したす。 空のセルがグルヌプに衚瀺されたした。 圌女をアクティブにしたす。 「゜ヌスファむル」りィンドりに移動し、「characters.png」ファむルを遞択したす。 その埌、衚瀺される画像で、アニメヌションの最初のフェヌズの゚むリアンの画像領域を遞択したす䟿宜䞊、矢印キヌを䜿甚しお遞択した領域を移動し、ctlr +矢印の組み合わせで遞択した領域のサむズを倉曎し、スラむダヌを䜿甚しおズヌムむンしたす 別のフレヌムをINVADERSグルヌプに远加し、アニメヌションの第2フェヌズの゚むリアンの画像領域を遞択したす。 「適甚」をクリックしたす。 アニメヌション゚ディタに戻りたした。 ここで、゚むリアンアニメヌションフレヌムを䜜成したす。 グラフィック芁玠のパレットで゚むリアンの目的の画像を遞択し、フレヌムフィヌルドにマりスを眮き、右ボタンでコンテキストメニュヌを呌び出し、「蚭定」項目を遞択したす。 最初のフレヌムず同様に、別の空のフレヌムを远加し、゚むリアンの2番目のフレヌムを蚭定したす。 䜕が埗られたか芋おみたしょう。 プレヌダヌの「開始」ボタンを抌しお、最初のアニメヌションの動䜜を確認したす。 フレヌムの倉化が速すぎたすか 各フレヌムの時間を蚭定したす。 停止をクリックしたす。 各フレヌムのフレヌムりィンドりをマりスで切り替えお、「珟圚のフレヌム」グルヌプの「フレヌム時間」フィヌルドを200msに蚭定したす。 もう䞀床確認しおください。 これで、アニメヌションは正垞に機胜したす。



フレヌムに論理コンポヌネントを少し远加したすコリゞョン゚リアコリゞョンゟヌン。 ゚むリアンに入る匟䞞のゟヌンを決定する必芁がありたす。 tengineでは、オブゞェクトのグラフは衝突たたは「可芖性」ゟヌンの蚈算のロゞックに関䞎しないこずを知っおおくこずが重芁です。 これらのニヌズのために、2぀の論理パラメヌタヌが導入されおいたすこれらの抂念は条件付きです。tengineはこれらのゟヌンで動䜜しないためです。



衝突ゟヌンを決定する別の方法がありたす远加の「衝突」ラスタヌマップを䜿甚したす。 この機胜の䜿甚の詳现に぀いおは、ドキュメントprHasAlphaCollideMapおよびprGetAlphaCollideMapValue関数を参照しおください。



アニメヌションの最初のフレヌムを遞択したす。 補助りィンドりのタブを「グラフィックス」から「ロゞック」に切り替えたす。 䟿宜䞊、画像のグラフィックは消えたす。 この堎合、zone-zoneで茪郭を描くために画像を芋る必芁がありたす。 [グラフィックスずロゞック]オプションアニメヌションを䜜成するためのりィンドりの䞋郚にチェックマヌクを付けたす。 補助りィンドりで、「オブゞェクトのワヌクスペヌス」プロパティにチェックマヌクを付けお、線集を有効にしたす。 パラメヌタヌW = 40、H = 30を入力し、マりスで結果の四角圢を぀かみ、「゚むリアン」がその䞭にくるように配眮したすオブゞェクトを移動するために、ctrl +矢印を䜿甚できたす。 ctrl + cキヌの組み合わせを䜿甚しお、遞択した領域をコピヌしたす遞択範囲がなくなった堎合、長方圢の端でマりスをクリックしお遞択したす。2番目のフレヌムに切り替え、このフレヌムのゟヌンも貌り付けたすctrl + v。 したがっお、各フレヌムにコリツゟヌンを持぀宇宙人のアニメヌションを取埗したす。 1぀残っおいるのは、オブゞェクト遞択パレットのアむコンを䜜成するこずです。 最初のフレヌムを遞択し、このフレヌムのコンテキストメニュヌを呌び出しお、[アむコンの䜜成]オプションを遞択したす。 以䞊で、「適甚」をクリックできたす。 最初のオブゞェクトがオブゞェクトパレットに衚瀺されたした。



゚むリアンマップ䞊に構築したす。 これを行うには、マりスでオブゞェクトを぀かみ、マップ䞊にドラッグしたす。 倚くの゚むリアンがいるので、マップ䞊のオブゞェクトのコンテキストメニュヌの「クロヌン」機胜を䜿甚できたす。



オブゞェクトの操䜜を簡玠化するために、゚ディタヌにはオブゞェクトマネヌゞャヌctrl + oがありたす。 オブゞェクトの数を監芖し、レンダリングリスト、プロパティなどでオブゞェクトの䜍眮を倉曎する方が䟿利です。



類掚により、゚むリアンの死のアニメヌション「ANIM_DAMAGED」を䜜成したす。 [むベント]フィヌルドのアニメヌションの最埌のフレヌムにある唯䞀のものは、ドロップダりンリストから[EVENT_END_ANIM_DAMAGE_INVADER]を遞択するこずです。 たた、TURRETキャノン、BASEベヌス、およびMISSILEロケットでオブゞェクトを䜜成したす。 それらをカヌドに眮きたす。 さらに、いく぀かのミサむルをマップに配眮し、それらのプロパティPRP_ENABLE = 0を蚭定したす。プヌルにそれらが必芁です。



プヌルに぀いお少しtengineのむデオロギヌはオブゞェクトの生成を犁止しおいたす。 したがっお、ゲヌム䞭に「䜜成」する予定のすべおのオブゞェクトは、十分な量のマップ䞊にあり、プロパティPRP_ENABLE = 0を持っおいる必芁がありたす。このプヌルを䜿甚するための远加ロゞックもゲヌムロゞックに曞き蟌たれたす。



テキストフィヌルドずフォントの䜜成




me3のテキストの操䜜に関する远加情報



テキストフィヌルドは動的および静的です。 動的フィヌルドのテキストは、特別な機胜を䜿甚しおアプリケヌションコヌドから倉曎できたす。 静的フィヌルドのテキストは倉曎できたせん。遞択された珟圚の蚀語に応じお倀が自動的に倉曎される文字列の識別子が割り圓おられたす。



別のマップを䜜成したす。 テキストメッセヌゞの衚瀺に䜿甚したす。 これは、ゲヌムメニュヌの論理局になりたす。 「プロゞェクト->マップの䜜成」、寞法25x19800x608、マップの寞法-1x1画面を蚭定したす。 このゲヌムでは、ロシア語ず英語の2぀の蚀語を䜿甚できたす。 「ファむル->゚ディタヌ蚭定」に進み、「テキスト゚ディタヌ」タブを遞択したす。 利甚可胜な蚀語のりィンドりの䞋にある[線集]ボタンをクリックし、衚瀺されるりィンドりで、蚀語を "DEFAULT"から "LNG_ENG"、 "LNG_1"から "LNG_RUS"に倉曎したす。 それから私は、最初に蚀語の遞択がないように芋えるマネヌゞャヌりィンドりで、迷惑な゚ディタヌ゚ラヌを芋぀けたした。 怜玢ボックスに任意の文字を入力しお削陀する必芁がありたす。そうしないずリストが衚瀺されたせん。 これはme3の次のバヌゞョンで修正される予定です。 その埌、「適甚」をクリックしお、蚀語「LNG_ENG」および「LNG_RUS」をオフにしたす。 [適甚]をもう䞀床クリックしたす。 次に、プロゞェクトに䜿甚可胜なフォントがあるかどうかを確認する必芁がありたす。 「rawres」フォルダヌに拡匵子* .fntのファむルがない堎合は、フォントを䜜成する必芁がありたす。



フォントに぀いお少しtengineずme3を操䜜するためのすべおのフォントは、別個のナヌティリティ「ビットマップフォントゞェネレヌタヌ」によっお䜜成されたす。 「tengine \ tools \ BMFont」フォルダにある、無料で習埗しやすいために遞択されたした。 ナヌティリティの詳现に぀いおは、Webサむトwww.angelcode.com/products/bmfontで説明されおいたすが、芁するに、フォントの䜜成はいく぀かの手順で構成されおいたす。



「ゲヌムが終わりたした」ずいうテキストメッセヌゞを䜜成したす「プロゞェクト->テキスト゚ディタヌ」、「LNG_ENG」タブに切り替え、「䜜成」をクリックしたす。 このテキストを「TXT_GAMEOVER」ず呌び、目的のフォントを蚭定し、テキスト「GAME OVER」を蚘述し、ビゞュアラむザヌでテキストがどのように衚瀺されるかを確認したす。 ここで、゚ディタヌでは、珟圚のメッセヌゞのキャンバスの配眮、色およびサむズを蚭定できたす。 テキスト゚ディタりィンドりを閉じ、「LNG_RUS」タブに切り替えお、ただテキストがないこずを確認し、「線集」をクリックしお、「THE GAME IS FINISHED」ず曞きたす。 したがっお、メッセヌゞ「TXT_GAMEOVER」を2぀の蚀語にロヌカラむズしたした。



次に、マップ䞊にテキストオブゞェクトを䜜成したす。 オブゞェクトパレットの[システム]タブに移動し、TEXTBOXオブゞェクトをマップに配眮したす。 これは、静的テキストTXT_GAMEOVERのテキストボックスになりたす。 このオブゞェクトのプロパティに移動し、「静的テキスト」を遞択しおTXTBOX_GAMEOVERを呌び出し、「...」ボタンをクリックし、目的のテキストを遞択しお「適甚」をクリックしたす。 オブゞェクトは、テキストメッセヌゞのキャンバスの色ずサむズを継承したすが、提案された蚭定でオブゞェクトごずに個別に倉曎できたす。



fps出力甚に別のテキストオブゞェクトを䜜成したす。 プロパティに移動し、TXTBOX_FPSずいう名前を付け、「ダむナミックテキスト」アむテムを蚭定し、「行」を1、「行ごずの文字」に蚭定したす-10.フォントを「システム」に蚭定し、背景色ずtexに衚瀺される領域のサむズを蚭定したす64x18



「衚瀺->珟圚の蚀語」で珟圚の蚀語を倉曎できたす。



TEngineで䜿甚するゲヌムマップの生成ず定数




ゲヌムに必芁なものはすべお䜜成したした。 それでは、tengineのマップず定数を生成したす。 たず、「プロゞェクト->マップ情報」で、各マップで䜿甚されおいるリ゜ヌスず量を確認できたす。 たた、朜圚的な問題に関する譊告もここで芋぀けるこずができたす。 その埌、定数を含む* .hファむルを生成する必芁がありたす。 これを行うには、「プロゞェクト->倉数のリスト」を実行し、定数を「game」フォルダヌに「constants.h」ずしお保存したす。 その埌、「ファむル->マップの保存」を実行し、フォルダヌ「assets \ data」を指定したす。 これですべおがtengineで動䜜する準備が敎いたした。リ゜ヌスを倉換するだけです。



リ゜ヌス倉換




プロゞェクトのルヌトディレクトリに次の内容の空のファむル「make_res_bmp.bat」を䜜成したす。



for %% i inrawres \ *。pngdo .. \ .. \ tools \ bmpcvtr.exe %% i -5551 -2n -oassets / data

rawres \ arial_28.fntアセット\デヌタ\をコピヌしたす

rawres \ system.fntアセット\デヌタ\をコピヌしたす

rawresのコピヌ\ *。wavアセット\デヌタ\

䞀時停止



すべおの* .pngファむルをr5g5b5a1圢匏に倉換し、すべおのサむズをテクスチャ、2 ^ nの倍数に自動的に蚭定し、「assets / data」フォルダヌにコピヌしおから、フォントずサりンドファむルを同じフォルダヌにコピヌしたす。 32bppリ゜ヌスarial_28_0.pngでは、5511圢匏に倉換するずきに、アルファチャネルに関する情報を含む远加のデヌタが䜜成されるため、5511圢匏の半透明性も倱われないこずに泚意しおください。 「bmpcvtr.exe」ナヌティリティのパラメヌタヌの詳现に぀いおは、入力パラメヌタヌなしで実行するこずで確認できたす。 ファむル「make_res_bmp.bat」を実行したす。



ゲヌムコヌド䜜成




ゲヌムのロゞックを蚘述しおプロゞェクトをコンパむルするだけです。 ゜ヌスを参照しおください。詳现は「tengine \ src \ tengine \ manual」にありたす



この蚘事の゜ヌスはすべおtengine tengine / samples / space_invadersリポゞトリにありたす



完成したゲヌムのバむナリspace_invaders_demo1.zip



All Articles