7
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

DxLibAdvent Calendar 2018

Day 8

自作のノベルゲームエンジンを作ってみた

Last updated at Posted at 2018-12-07

はじめに

この記事は、DxLib Advent Calendar 2018 の8日目の記事です

僕が代表を務めているゲームリンクスで使用することを目的に制作したノベルゲームエンジン「LINKS」について書きます

つくったもの

これらをDxLibを使い作りましたー

Novel.Game.Engine.LINKS(C版)

Novel.Game.Engine.LINKS.for.CPP(C++版)

実際のデモは以下のような感じです

links.gif

C版LINKSに関してはyumetodoせんせーからのPull Requestなどを受けつつリファクタリングしてたり

C++版LINKSはそのあとにC++で実装しなおしてみたものになります。

実装のあれこれ

一応は、ノベルゲームのエンジンをうたっているので各種素材を読み込む処理を実装しています


#include "ConstantExpressionVariable.hpp"
#include <vector>
#include <string>
#include <array>
#include <fstream>
#include <sstream>
#include <iomanip>
#include <boost/filesystem.hpp>
#include <boost/range/iterator_range.hpp>

namespace fs = boost::filesystem;

namespace {

	//各素材ファイルパス取得
	const std::vector<std::string> AllFilePath(const std::string& Path) {

		std::vector<std::string> Container;

		const fs::path path(Path);

		for (const auto& p : boost::make_iterator_range(fs::recursive_directory_iterator(path), {})) {
			if (!fs::is_directory(p.path()))
				Container.emplace_back(std::move(Path + "/" + p.path().filename().string()));
		}

		return Container;
	}
}

//各種素材読込テンプレート関数
template <typename T, typename Func>
constexpr std::vector<T> MaterialLoad(std::vector<T> Material, const std::string& Path, Func&& Loader) noexcept {

	//サウンドデータの読み込み形式
	DxLib::SetCreateSoundDataType(DX_SOUNDDATATYPE_MEMPRESS);

	std::vector<std::string> Container = AllFilePath(Path);

	for (auto&& c : Container)
		Material.emplace_back(std::move(Loader(c.c_str())));

	return Material;
}

ちなみにこれはC++版LINKSでBoostを使って実装した部分になります

ファイルパスを渡し、その中にある全てのファイルへのパスを格納させています。
そのあとラムダ式:Loaderで受け取ったパスを使い、各種素材を読み込むようにしています

今後

今後としては、もうちょい機能拡充を図るか高速化を図るかといったところかなぁと

あとは、LINKS使ってのフリーゲーム制作とかどんどんやっていきたいなと思います

7
4
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?