[DOC, THESIS] Start thesis plan
This commit is contained in:
parent
09de216b0a
commit
26ece035a2
|
@ -1 +1,47 @@
|
|||
\chapter*{Asd}
|
||||
\chapter{Disclaimer}
|
||||
|
||||
This document only describes the ideas that I plan to explore in my thesis.
|
||||
This is not the final project description for the thesis.
|
||||
|
||||
\chapter{Overview}
|
||||
|
||||
The idea behind the project is to establish the base for a game engine.
|
||||
What this means is that the end product is not something that can compete with the likes of Unity and Unreal engine.
|
||||
The goal is to lay the foundation for something that could compete in the future.
|
||||
This means that the project will need to make crutial decisions on what frameworks libraries to use, and how the core of the engine should be architected.
|
||||
|
||||
The planned engine is the spiritual successor to my old engine called ShadowEngine.
|
||||
This means that some parts of the old codebase will be used but every line will have to be rigorously checked.
|
||||
This project is not a one person project, I'm planning on involving friends of mine. My responsibilities and the code that I write will constitute as the thesis.
|
||||
|
||||
\section{Technical information}
|
||||
The project will be mainly written in C++, but some higher level functionality might be implemented in C# For windowing and interacting with the OS it will use SDL2.
|
||||
The rendering API is going to be Vulkan.
|
||||
Our main focus initially is Windows both for development and for running, as that is what all planned participants have access to.
|
||||
|
||||
\chapter{Main tasks}
|
||||
\section{Build system}
|
||||
The first question that needs decision for the project is what build system to use.
|
||||
There are many different C++ build systems. The most common is Cmake and MSBuild. These are both quite capable.
|
||||
\subsection{Cmake}
|
||||
Cmake is an old powerful build system. it is capable of building almost anything. It is a generator for make files witch are even older.
|
||||
Make files and in turn Cmake is highly organized around the actual compilation commands that get run in the end.
|
||||
This makes them harder to configure.
|
||||
(Magical strings and bad docs)
|
||||
|
||||
\subsection{MSbuild}
|
||||
MSbuild is Microsoft's build system, it is quite powerful and has really good integration with Visual Studio.
|
||||
It is also capable of integrating C# projects to the same workspace.
|
||||
Sadly MSbuild can only build C++ on Windows witch means we can't support other platforms in the future.
|
||||
MSbuild is also not supported by other IDEs like Clion meaning it would be a total vendor lock in.
|
||||
|
||||
\subsection{Bazel}
|
||||
Bazel is a little known build system as it is mostly used by large projects.
|
||||
It was developed for Google's internal repository, as they keep all of their code in a single monolithic repository.
|
||||
This means the Bazel is capable of building basically any language (C/C++, Java C# JS/TS, etc.).
|
||||
Bazel is also capable of managing project dependencies without using Git Submodules.
|
||||
|
||||
\subsection{Decision}
|
||||
After trying both Msbuild and Bazel the decision was to use Bazel.
|
||||
Sadly the Clion Bazel plugin has problems on windows,
|
||||
but theses might be fixable with a few PRs or just shipping our own version of the plugin, as it is available on Github
|
Loading…
Reference in New Issue
Block a user