DxLibでリソース管理システムを作ってみた 前提:投稿者はふだん学校でDxLibを用いたゲーム開発を教えていて、そこで出くわしたトラブルや「こうしたらどうだろう」と言うのをQiitaにしてみようという考えで書いています。 このため、内容としては学生向けですし、DxLibというライブラリに関するお話し限定となります 動機 C++のshared_ptrやstd::vectorなどを使用することで、メモリのリークをかなり防げるようになったのですが、リソースの解放し忘れと言うトラブルからは逃れられていません。 これをどうにかして、shared_ptrのように自動でそれぞれのリソースを解放できるような仕組みにできないかと考えました。 もう一つの動機としては 「多重ロード防止」を実装したかった というのがあります。DxLibは同じものをロードしようとすると内部的にロード済みのリソースを別ハンドルで返
ジョブシステム (Job System) ゲームエンジンの勉強をしているとジョブシステムの話がよく出てくるので、実際にC++20で実装してみました。マルチスレッドに慣れていないため、正しいアプローチである確信はありません。重要なミスがあったら教えていただけると助かります。 コードは標準ライブラリにある機能は素直に使い、シンプルな実装を目指します。また、この記事の全てのコードはパブリックドメインとします。 これから、3つのステップでジョブシステムを実装していきます。 ジョブを並列実行する機能 ジョブ同士に依存関係を設定する機能 大きなジョブを分割して並列化する機能 この記事ではステップ1の最も基本的なジョブシステムを実装することを目標にします。 実装に入る前に、雰囲気を伝えるために、各ステップにおけるインターフェイスを示します。 // スレッド数4としてジョブシステムを作成 JobSyste
きっかけ Siv3Dを使って通信対戦ゲームを作りたい。 Siv3Dに実装されているTCPServerをサーバー上で稼働する必要がありました。 そこで、Linux版Siv3Dをインストールしたdocker imageを作成することにしました。 Linux版Siv3Dについて Linux版Siv3Dは@wynd2608さんが有志でLinuxに移植しているものです。 さっそく作ってみる! Linux版Siv3Dにはコンパイル済みバイナリの配布がありません。そのため、自前でビルドする必要があります。 今回はDockerfileを記述し、ビルドすることでdocker imageを作成します。 Siv3Dのホームページ(?)にLinux版のインストール手順が記載されてましたので参考にしました。 (Ubuntu で Siv3D プログラミングを始める) Dockerfileの記述 まずは任意のディレクト
「CG WORLD クリエイティブカンファレンス 2014 」にて、DeNAの講演です。「エフェクト、アニメーション、演出のデータ作るの大変じゃないですか? DeNAではこうしてます。」
Graphics Advanced 2D graphics Basic 3D graphics (Wavefront OBJ, primitive shapes) Custom vertex / pixel shaders (HLSL, GLSL) Text rendering (Bitmap, SDF, MSDF) PNG, JPEG, BMP, SVG, GIF, Animated GIF, TGA, PPM, WebP, TIFF Unicode 15.1 emojis and 7,000+ icons Image processing Video rendering Audio WAVE, MP3, AAC, OggVorbis, Opus, MIDI, WMA*, FLAC*, AIFF* Adjustable volume, pan, play speed and pitch
Table of Contents Game Programming Patterns Acknowledgements Introduction Architecture, Performance, and Games Design Patterns Revisited Command Flyweight Observer Prototype Singleton State Sequencing Patterns Double Buffer Game Loop Update Method Behavioral Patterns Bytecode Subclass Sandbox Type Object Decoupling Patterns Component Event Queue Service Locator Optimization Patterns Data Locality
先日、iOS用ゲームアプリ「センメツコースター」をリリースしました。このゲームの開発にはゲームエンジンは使っておらず、C++とOpenGLとOpenALなどで実装されています。最近はゲームエンジンを使うことが当たり前になっており、ゲームエンジンを使わないゲームの作り方があまり知られていない気がしたので「センメツコースター」を例にして、どうやってC++とOpenGLでゲームを作るのかを(大雑把に)紹介したいと思います。記事中で取り上げたツールやライブラリへのリンクは最後にまとめて掲載してます。 作業環境 最低限必要なもの ソフトウェアの生成 : C++コンパイラ 絵の表示 : OpenGL + GLFW 音の再生 : OpenAL + ALURE 入力の受付(マウス、キーボード、ゲームパッドなど) : GLFW ファイルの読み書き : C言語標準関数 メインループ : GLFW 現実的に必要
2018年3月30日に行われた「GAME CREATORS CONFERENCE '18」で登壇した際に使用した資料です。 http://www.gc-conf.com/ hash比較ですが現在のUE4ですと以下のようにコードを変更する必要があります。 /修正前 if (InstalledVersion != RemoteVersion && bInstallIsPatch == bRemoteIsPatch) { //修正後 bool isHashMatch = true; TSet<FString> Tags; auto DonwloadSize = (double)RemoteManifest->GetDeltaDownloadSize(Tags, InstalledManifest.ToSharedRef()); isHashMatch = DonwloadSize == 0; i
Altseed2とは Altseed2 は画面描画・音・入力・衝突判定などの機能をまとめたゲーム用ライブラリです。 オブジェクト指向を用いた開発に適したインタフェースにより、複雑になりがちな機能を少ないコード量で実装することができます。 かつての Altseed と異なり、ノードシステムを採用しており、オブジェクトやオブジェクトが持つ機能の管理を、より柔軟かつ統一的に行うことができます。 その他にも、Altseed2 には初代 Altseed にはなかった機能がいくつか実装されています。 Altseed2は初代Altseedとの互換性はなく、新しく作り直されたゲームエンジンです。初代Altseedの情報を見たい方はAltseedのページをご覧ください。 ページ チュートリアル : プログラミング初心者向けに、Altseed2 を使ってシューティングゲームを実装するコースを用意してあります。
CHAPTER-1 moveの活用 † moveの活用による恩恵は計り知れません。 とくに、速度とメモリ効率、そしてデバッグ効率を重視するゲームプログラミングにおいて、 moveセマンティクスの導入は大きな効果がありました。 なお、moveに関して十分な知識のある方ば、Chapter-1は読み飛ばしてください。 ↑ 1-1 moveのおさらい † moveを使う前に、右辺値参照について知っておく必要があります。 このプログラムを見てください。 string a = "1"; string b = "2"; string c = a + b; // ~~~~~ // 右辺値 この"a + b"の部分が右辺値です。 右辺値とは、名前のない一時的に生成されるオブジェクトのことです。 この場合、string型で値が"12"の一時オブジェクトが生成されます。 わかりやすくC++03の書式で置き換える
2014年12月03日12:00 カテゴリプログラム Eigen - C++で使える線形代数ライブラリ C++ Advent Calender 2014 絶賛協賛中!! みなさん、Eigenをご存知ですか?? EigenはC++のテンプレートで実装された線形代数ライブラリです。 私自身、配信中の2本のiPhoneアプリで使っており、「これはとても使いやすい!!」と感じています。 その経験から、「C++でベクトル・行列を扱うなら、Eigenオススメ!!」と推しまくってます!!!! 使うメリットライブラリのビルドが不要(使いたいソースでインクルードするだけ)高速(テンプレートが展開され、余計な変数が生成されない)直感的でシンプルなAPI(数式に近いコードが書ける)MPL2なライセンス(closed-source なソフトでも使える)そこで今回は、簡単ながら、ゲームアプリでよく使うであろうベクト
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く