In a previous post I described the concept for The Bug Squad, a game I’m building in UE5 to experiment with new engine features. In this post I’ll take a brief look at the tools I anticipate to use and then proceed with some basic project setup.

Tools

Development

  • UE5. 😉
  • Rider: for C++ programming. By far the best IDE out there for UE development, saves tons of time.
  • Git, Azure DevOps, SourceTree: for version control I’m using Git + Git LFS for binary files. Azure DevOps is a bit of a pain to setup, but it offers unlimited Git LFS storage for free. I’m not a fan of the command line, so I’ll use SourceTree as a Git GUI as much as possible.

Art

I’m not planning to do a lot of 3D art for this project. However, it’s probably unrealistic to think I’ll be able to source everything I need from the various marketplaces.

  • Photoshop: mostly for UI work.
  • Blender or 3DS Max. I’m fairly proficient with the latter, but it comes with a hefty price tag attached. I’ll probably give Blender a try and see how much it takes to learn to use it at a basic level.
  • Substance Designer. Also a bit expensive for a side project, but I want to be able to iterate quickly and nothing beats procedural generation when you’re in a rush.

Initial setup

As a first step I created an empty C++ project from the UE5 launcher. Next I set up the git repository on Azure and locally:

> git init
> git lfs install
> git remote add origin https:/myuser@dev.azure.com/myrepo

Git LFS needs to be told which files it should track using the .gitattributes file:

# Text files
*.cpp text diff=cpp
*.h text diff=cpp
*.cs text diff=csharp
*.uplugin text
*.ini text
*.editorconfig text
*.git* text eol=lf

# Use Git LFS for binary files
*.umap filter=lfs diff=lfs merge=lfs -text
*.uasset filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.ico filter=lfs diff=lfs merge=lfs -text
*.icns filter=lfs diff=lfs merge=lfs -text
*.bmp filter=lfs diff=lfs merge=lfs -text
*.mp4 filter=lfs diff=lfs merge=lfs -text
*.locres filter=lfs diff=lfs merge=lfs -text
*.locmeta filter=lfs diff=lfs merge=lfs -text
*.archive filter=lfs diff=lfs merge=lfs -text

This is my .gitignore:

# UE4 project ignore file
# Designed to protect from commiting blobs without managing them with git-lfs
# Based on: https://github.com/MOZGIII/ue4-gitignore/blob/master/.gitignore

################################################
# Ignore all files by default, but scan all directories
*
!*/

# Allow git files and other utility files in the the repo root
!/.git*
!/*.editorconfig
!/readme.md
!/LICENSE

################################################
# Allow UE4 project files and folders
!/Config/**/*.ini
!/Source/**/*.cs
!/Source/**/*.cpp
!/Source/**/*.h
!/*.uproject

################################################
# Allow specific binary files tracked by git-lfs
# Don't forget to track other files in .gitattributes when adding them here!
!/Build/**/*.ico
!/Build/**/*.icns
!/Content/**/*.umap
!/Content/**/*.uasset
!/Content/**/*.mp4
!/Content/**/*.locres
!/Content/**/*.locmeta
!/Content/**/*.archive
!/Resources/*.png

The intent is to keep binary files out of Git, unless tracked by Git LFS. I find this approach to be flexible and safe and I tend to use it in all my UE projects that rely on Git for versioning.

Adding some base classes

With the project and repo initialized it was finally time to add some code. Nothing fancy here for now, mostly empty base classes that will come in handy in the future.

A screenshot of the list of C++ files in Rider

Next up: creating [a base camera, setting up input and the character]((/blog/2022/the-bug-squad-basic-camera-and-input-setup/).