過去を思い出す。 彼らが5年前にしたことについて

ウクライナでは、小さな科学アカデミーのような興味深いものがあります。 一般的に、これは学校の生徒を対象としたプロジェクトの競争です。 非常に興味深いプロジェクトに出くわしますが、その1つについてお話しします。







この投影は私のものであり、本棚の秩序を回復しているときに誤って自分自身に思い出させた。 それから、5年前のテーマは非常にクールに見え、「ゲームカードを生成する方法」のように聞こえました。 少し上が、私がやったことの例です。 あなたが見ることができるように、これらはそこにある種の存在しないゲームのレベルのベーグル様式化された例です。 しかし、まず最初に。





この作業はすべて、古いDev-C ++バージョン4.9で作成されました。 一般的に、その時点で私はもはや何かを使用する方法を知りませんでした。 Visual Studioは面倒で、いくつかのファイルを作成したため、Visual Studioを認識しませんでした。また、C ++ Builderは、開いているウィンドウがたくさんあるために異常でした。 グラフィックスを表示する魔法として、QuickCGが使用されました。 非常に単純なライブラリ-SDLレイヤー-非常に、おそらく、賢い人がピクセルごとの出力用に作成しました。 昔ながらの効果を作成するには:画面の床での火災、トンネル効果、レイキャスティングなど。 ところで、グラフィックスの操作方法を学ぶためのDev-C ++とQuickCQの最適な接続方法はまだわかりません。



このプログラムでは、ウィンドウのサイズによって制限されていましたが、ランドスケープとレベルを作成できました。 可能な限り大きくする必要があるプロジェクトの説明と、そこに注がれる海が信じられる場合、マップはグローバル、ローカル、および特別に分割されます。 そして当然、私の仕事はこれをすべて行うことができました。



グローバルマップを作成するすべての方法を、再帰、フラクタル、高さマップの3つのタイプに分けました。 3番目のグループには、ノイズまたはいくつかの2次元関数を使用するメソッドが含まれていたことがすぐに明らかになります。 再帰とは何であるかは理解していましたが、適切に使用する方法がわかりませんでした。フラクタルについても話すことができなかったため、ジェネレーターはパーリンノイズに基づいてカードのみを作成できました。 当然のことながら、式は理解できなかったため、実装はQuickCGサイトから行われました。QuickCGサイトでは、この方法でクラウドが作成されました。







アルゴリズムは単純で、ノイズが最初に生成されました。 それは退屈な灰色の絵でした。 退屈で灰色の場合-色付けする必要があります。 色が追加されます。 これを行うには、ノイズの明るさを高さとして宣言し、高さに応じてピクセルに色を付けます。 しばらくの間、砂を追加することを考えましたが、うまく機能しませんでした。 合計で、水、草、山、雪の4つのバイオームがありました。







次に、オブジェクト、つまり木、都市、川が追加されました。 すべては木で簡単です。芝生の上でランダムなポイントを取り、そこに木を植えます。 マップでは、それらは濃い緑色の点で示されます。 それから都市。 それらは木と同じ方法で作られましたが、水の近くに、時には草の上や山の上に置くこともできました。 それらは茶色の円で示されました。







川のすべてはそれほど複雑ではありませんでした。 地図上で海抜より高い地点を選択し、水に入るまで、または下降する場所がなくなるまで、サイクルを一巡します。 後者の場合、この点の周りに湖が描かれます。



これで、グローバルマップジェネレーターの機能が終了しました。 続けましょう。 エリアマップを3つのタイプに分けました:森林、池、都市。







デフォルトでは、森に葉が散らばっていた後、王冠、菱形、王冠を貫く茶色の棒で構成される木が配置され、プレイヤーが木を通過しないように追加されました。 写真の「@」に気づいたかもしれません-これがプレイヤーです。 そして、それは制御できました。







川を作成するために、マップの端に点が選択され、その左右に水が作成され、楽しいストリームがウィンドウの反対側への道を舗装し、常に右または左に移動するか、動かないようにしました。 外観には、家、2、3本の木、2、3人の住民が追加されました。 家はランダムなサイズの長方形で、2色で装飾されており、太陽に照らされているタイルと照らされていないタイルを模倣しています。







そして最後に、町。 まず、都市全体がタイルで覆われています。 それから彼らは天から家を投げます。 家が別の家を突破する場合、それは問題ではありません。そのような建築と呼びましょう。 住宅街ができた後、住民は街にやって来ます。 彼らは空いている場所になって待ちます。 そして彼らは、それなしでは都市が存在できない最も重要なこと、すなわち給水システムを待っています。 この場合、それはメインの広場と家で閉じられた場所の両方に現れる可能性のある井戸によって表されます。



そして最後に、ダンジョン、洞窟、迷宮などの特別なゾーンを割り当てた特別なマップがありました。







最も単純なものから始めましょう。 最初から洞窟は通行できない岩で満たされています。 中央にボイドを設定し、ある方向に移動します。 たとえば、右に。 次に上に移動します。 それから他のどこかに。 そして、一度100未満になると、センターになり、最初からやり直します。 20〜30回の反復により、洞窟ができます。







さらにダンジョンがあります。 彼らはまた、長方形の部屋がカットされている貫通できない岩で満たされています。 ランダムな場所の部屋の壁は崩壊します。 突然部屋が別の部屋の真ん中に表示された場合-それは重要ではありません-アーキテクチャ機能を削除します。







そして最後に、迷路。 迷路生成の多くのケースがあります: 再帰染色、一次ニューラルネットワーク 。 私の場合、インターネットの奥底から盗まれた再帰的な方法が使用されました。 ポイントを選択し、方向を選択します-移動し、方向を選択します-移動します、移動できません、戻ります。 簡単ですが、その仕組みを理解するのに長い時間がかかりました。



一般に、プロジェクションは他に何もできませんでした。 彼はマップを保存せず、bmpでレンダリングできませんでした。マップを生成してすぐに表示することしかできませんでした。 もちろんそれほどではありませんが、私にとっては、その時は何かでした。 それはしばらくの間そのような趣味でした。 そして、迷路をさまようDoomタイプのレイキャスティングが登場し、ジェネレーターが3Dやその他の次元で表示され始めました。 しかし、これについてはまた別の機会に。



それだけです ご清聴ありがとうございました。 ライブと繁栄。



PS Hello Lyceum!



All Articles