How to create a truly blank empty project

I’m trying to create a truly “blank” project. Specifically, a C++ project targeting GearVR. However, I’ve been reading thru the docs and trying things out in the editor and I have not yet figured out how to do this.

What I’m trying to achieve is a simple app with:

  • camera tracking the HMD.
  • no lighting computations (other than the obvious texture lookups implied in ‘unlit’ shading).
  • simple networking for retrieving images and other data via http(s).

My current best thinking is that the only thing I need is a single camera (with track hmd set to true). Maybe the default Pawn too. But other than that I should not need anything else. And I should be able to turn off things like global illumination and any lighting computations since I want unlit surfaces (mostly UMG widgets).

With this in mind, when starting Unreal, the option that resembles “blank” the closest is “basic code” under C++ templates. If I select that template however, the map that gets created already has a few objects in the outliner:

117001-ue1.png

If I remove these objects (or if once the project is loaded I create a new map – aka, all black), once I hit play, a bunch of objects get instantiated in the scene anyway:

Under Project Settings > Maps & Modes I cannot remove the HUD, Player, Game State, etc classes. And I don’t understand as of now where all these objects are being instantiated.

Additionally, neither do I yet understand if setting my materials to unlit and setting all meshes to not cast nor receive shadows is enough to avoid lighting computations or if there is another way of turning lighting off.

The reason for all this is to make sure I am only using the necessary resources, in order to tax the mobile device the least possible.

Hi mate,

did you figure out anything about that instantiation?

I’m trying to create a truly blank blueprint project and am getting confused by the same stuff you asked about,
that’s how I stumbled upon your post.
As a total beginner I prefer to get things done from scratch, without having “magic” in a “blank” application.

It’s been a while since I posted this and I now have a better understanding of the engine architecture.

Since no one gave an answer I’ll give my own:

The engine relies on a gameplay framework. So in general you’ll be building your game in the context of this framework.

The framework declares a bunch of classes that make up the structure of a typical UE game and provides default implementations of these. You can provide custom implementations too, but otherwise, at the very least your game will always use the framework’s defaults. So thats’ where the ‘magic’ comes from.

For example, when you start simulating or playing a level, you will always have:

  • 1 game instance per the whole game.
  • 1 game mode per level (unless you are client in multiplayer).

The game mode in turn instantiates:

  • 1 playercontroller per player, Replicated only to its owning client.
  • 1 pawn per player controller, replicated to all clients.
  • 1 game state, replicated to all clients.
  • 1 player state per player controller, replicated to all clients.

There’s more classes than these but these are some of the core ones. And there is no way to opt out of using them. You can however, use your own implementation of these classes. And to do so, you first need to create a subclass of AGameModeBase, which allows you to then replace any of the above classes with your subclasses (i.e. under Maps & Modes in Project Settings or per level, thru the World panel).

@Xorbert I posted an answer. Short version: there is no way to opt out of most of the classes that are added by default. Tha engines’ gameplay framework requires them. But once you get used to this and read up on the framework the “magic” becomes less so.

We can also mention the PlayerCameraManager inside the controller which sets the player camera default behavior.