Hajime Saito

のんびりウサギ

ゲームループ(2)

ゲームの進行はとても単純です。キャラクタを動かし、そしてキャラクタを描画します。1体動かして1体描画するのではなく、すべてのキャラクタを動かして、すべてのキャラクタを描画します。

たとえば、ダミーの関数を呼び出すとすれば、次のように書くことができます。

While(System::Update()){ MoveAllCharacters(); DrawAllCharacters()

もっとみる

ゲームループ(1)

ゲームループは、ゲームに特化したループ処理のことを指します。ゲームループには2つの役割があります。

(1) 1ループの処理時間を一定にする
(2) 描画のちらつきを抑える

前者は同期処理と呼ばれ、後者はティアリング防止処理と呼ばれます。

同期処理

1回のゲームループで掛かる時間というのは、処理しているキャラクタ数などによってまちまちです。処理するキャラクタ数が減ったり増えたりすると、それに

もっとみる

スプライトを描く(4)

SoftwareSpriteクラスをArrayコンテナに入れて、次のようにコーディングをしましたがArray::push_backメソッドを呼び出すとエラーになります。前回、自前のソフトウェアスプライト型を使わなかったのは、手直ししている時間がなかったからです。

void Main(){ Texture texPlayer(U"option.png"); Array<SoftwareSp

もっとみる

スプライトを描く(3)

さっそく作成したソフトウェアスプライトクラス、あるいはソフトウェアスプライト型を使って実際の描画をしてみましょう。

今回作るのは、うにょうにょが気持ちいいコレです。

スプライトデータは、うにょうにょ部分のみを切り出して作成しました。

タスク管理システムの導入

OpenSiv3Dのことですから、何かしらキャラクタ管理を簡単にするクラスが実装されているに違いない。そう思って調べてみるとOpen

もっとみる

スプライトを描く(2)

OpenSiv3Dで画像を描画する場合、ほぼs3d::Textureクラスを経由して実装を行います。たとえば、絵文字もアイコンもテクスチャとして描画されます。

スプライトデータの読み込み処理を作成する前にテクスチャについて少し理解しておきましょう。

次のソースコードは絵文字とアイコンをテクスチャとして読み込み、描画させるためのサンプルです。

#include <Siv3D.hpp>void

もっとみる

スプライトを描く(1)

ゲームのメインロジックを書く前にやっておきたいのは、キャラクタ表示ルーチンの整備です。何かしらの動作確認をしたい場合、何かを表示するのが最も手っ取り早いです。

OpenSiv3Dは文字や絵文字、アイコンなどを簡単に表示させることができますが、やはり自前のキャラクタを画面に描画したいというのが人情だと思います。そこでスプライトを表示させるクラスを先に作ってしまいます。

s3d::Sprite

もっとみる