Basic Information for Project Development
This part of the documentation will contain basic information one needs to know in order to carry on with the project.
Purpose
The purpose of the Unreal Engine application is to do what it does best: displaying 3D models with interactive frame rates.
It consists of two main levels: Explorer Level and Quiz Level. In the Explorer Level, teachers and students can freely explore a fully loaded 3D model of the human body.
In the Quiz Level, teachers and students—primarily students—can complete quizzes that are created by the teachers.
Setting Up
To begin development of this application, you need Unreal Engine version 5.4, which can be found in the Epic Games Launcher.
Windows
For Windows, you also need Visual Studio with the following workload items added:
- Game Development with C++
- .NET SDK (can be installed by enabling .NET desktop development)
Once you have everything set up, you can launch the project by opening the ThreeDAnatomy.uproject
file with Unreal Engine.
To add the necessary files to open the project with Visual Studio, run Tools > Generate Visual Studio Project
. Then, open the project in Visual Studio by opening the generated ThreeDAnatomy.sln
file.
Mac OS
For Mac OS install Rider, and launch the project by opening the ThreeDAnatomy.uproject
with Rider.
Linux
For how to set up project up and running on Linux please reffer to this file
C++ code guide lines
For class members that have macro UPROPERTY
or UFUNCTION
defined above them we have used the PascalCase
For functions that are used inside classes we have also used PascalCase
For private member functions that are only accesible within the classes we have used m_
prefix and smallPacalCase
example
class FooBar{
public:
Foo(std::string name);
public:
UPROPERTY(BlueprintReadOnly)
AActor* actor
UFUNCTION(BlueprintCallable)
void DisplayFoo(bool& success);
private:
int m_countOfFoos;
}
Class names
Class names are specified with PascalCase
Forward declaration of headers
In C++
you can use #include
prepocessor to include external header files. This however is going to take long time to compile, therefore we have used forward declaration wherever possible inside the header files and only use #include
preprocessor inside the cpp
files.
Memory safety
We have designed the class strucutre around Ownership
priciple. To do that we have use smart pointers
that are defined by unreal engine. This assures that only given class can "own" the resource and others can only borrow it without additionaly coppies.