Advertisement

Resources on cross-platform/compiler toolkit development

Started by April 28, 2020 05:39 AM
3 comments, last by Acar 4 years, 6 months ago

I'm interested in writing my own toolkit for game development (C++). Mainly to gain experience and secondly to have a solid toolkit to work with in the future when creating games.

I was inspired while browsing UE4 source code but unfortunately I wasn't able to find any references that talked about that sort of low-level system. So now I'm looking for books and/or online tutorials on this topic.

As for the extent and purpose of this toolkit, ideally it should be something that I can pick up and start creating a game with. So that might include interacting with file system, threads, basic data-types and any other platform/compiler specific aspect.

So what do you want, create a compiler?

Create a game SDK?

Create a build tool?

Unreal Engine does not rely on a toolkit, they wrote there code from scratch as a game engine using only the C++ Standard Library and OS depdenant API wrapped into some kind of abstracted interface. This is how game engine swork usually, abstracting everything away for your convenience.

The closest you could come along with is grabbing some third party libraries and bundle them into a toolkit or start writing this on your own.

What they also did is writing their own build pipeline via Unreal Build Tool (UBT). It is a C# application that compiles C# code (*.build.cs files) describing every module in their engine and user modules in the project. The tool then executes a set of tasks depending on the configuration you set in the editor (passed as command line arguments) and configuration classes of your project. A task could for example be to call the C++ compiler (MSVC or clang) with the files of your game and certain build config or to create project files to be used in your favourite IDE.

Unfortunately, Unreal is the only game creation software I know doing this at the moment. Unity for example has a fixed build pipeline and handles modules using *.asmdev files so there won't be any books or resources for you to pickup other than our project on GitHub.

My approach is a bit different, I assume that a path is considered a project if it contains code files, otherwise every sub-folder is considered to be an own project. I then collect those files using different processor units (PUs) and depending on the PU (coding language) pass the collection of files per folder into the coresponding pipeline. This way I can have C# and C++ files stay along each other but be handled from different pipeline to for example create a C++ project file or push the directory to the C# compiler as a build task

Advertisement

Are you looking for an Integrated Game Development Environment (a single installable suite of tools with a built-in workflow used to develop graphics-oriented games with, the software you install on your computer and use to create a game), or are you looking for a Game Engine (software that can be used as the basis for a game by adding custom code and assets, the stuff you put into your game and redistribute as a part of what goes on a player's computer)?

I understand there are a few large vertically-integrated products that do it all. I'm just trying to understand what level of answer you're looking for. For example, I could answer “libSDL” or “Microsoft Visual Studio Code” and they'd both satisfy your stated requirements, but have no overlapping function.

Stephen M. Webb
Professional Free Software Developer

Bregma said:

Are you looking for an Integrated Game Development Environment (a single installable suite of tools with a built-in workflow used to develop graphics-oriented games with, the software you install on your computer and use to create a game), or are you looking for a Game Engine (software that can be used as the basis for a game by adding custom code and assets, the stuff you put into your game and redistribute as a part of what goes on a player's computer)?

I understand there are a few large vertically-integrated products that do it all. I'm just trying to understand what level of answer you're looking for. For example, I could answer “libSDL” or “Microsoft Visual Studio Code” and they'd both satisfy your stated requirements, but have no overlapping function.

Oh no, what I'm looking for isn't the finished product. Best example of what I'm trying to create would be “Runtime/Core” part of Unreal Engine 4. What I'm looking for is resources that explain how this is created.

This topic is closed to new replies.

Advertisement