“First you learn how to do it right,
then you learn how to do it fast.” by AvE
The above wisdom is the main driver of this project, in the past months I studied lots of different UE4 parts like Niagara Particles, Post-Processing, VR, Animations, after that I had the urge to return to the basics, to build a complete (simple and classic) game, trying to apply what I learned as “UE4 Best Practices” and to try to solve some of my studies lingering questions:
– How to set my projec to an optimized pipeline for all supported platforms?
– How to avoid recompile shaders for each platform?
– How to get the best performance possible?
– How to get the minimum packaged build size possible?
– How to do Desktop, VR, mobile, mobile VR and HTML5 in a single project?
– How to do a game without Tick events?
– How to properly use AI BehaviourTree and AI Tasks?
– How to build a game without any external assets? (except for the nice font)
This questions occured after lots of study projects where I face problems with Defered Render VS Forward Render, VR settings that are either ON or OFF forcing different builds, Post-Processing materials that don’t work in Forward Render, AI failing to possess pawn after unpossess player controller, 200MB package builds, 30mins+ waiting for shaders recompile after small project changes…
As always with UE4 most of this problems are already solved in the engine, smarter devs already face this problems and solved them before, but sometimes the answers are somewhat hidden or not properly documented. Maybe you don’t believe me, so try this simple exercise: The engine tells you that PakBlacklist-Shipping.txt. This is deprecated in favor of DefaultPakFileRules.ini , then try to google search “DefaultPakFileRules.ini”. This project posted today (03/Nov/2020) on GitHub is already the 3rd result (of 5!).
I’m glad with the results of this project, I learned a lot and probably I’m going to use this project (structure, settings, configs) as template for all my next projects.
Open Source Project:
- No Tick events.
- Single common project settings to build all supported platforms (Desktop, Mobile, Web, VR).
- AI Behaviour Tree and AI Tasks.
- Minimum package build sizes using DefaultPakFileRules.ini . Ex: HTML5 20MB, Win64 34MB.
- Following current UE4 Best Practices.
- PackageBuilder.bat Tool to automate the building process.
- 1245 FPS, Game 0.70ms, Draw 0.74ms, GPU 0.84ms. (GPU 1080TI)
Download Releases v1.0:
Specifications – http://www-classes.usc.edu/engr/ee-s/477p/s00/pong.html .
Font – Classic Console – http://webdraft.hu/fonts/classic-console/ .
Audio Content from UE4 Engine Content: EjectFromPlayer_Cue, EndSimulate_Cue, PossessPlayer_Cue, VR_click1_Cue .
Unreal Engine by Epic Games – https://www.unrealengine.com/ .
I didn’t watch the video before but I remember this video (shared on Wildweb) from a few weeks ago gave me the idea of “I never build a Pong game in UE4, should be fun” and when I got the time to start something new Pong was fresh in my mind.
After I finished this project I went back and watched the video, is a completely different approach, process, coding and results. Is cool to see how the same problem can be solved in completely different ways.