Introducing the FPS Sample
The project is for you to use as a source of inspiration. You can also use it to learn from how we applied some of the latest features in Unity. It demonstrates one of the many approaches to using Unity to develop shooter-based game mechanics.
Yours to use as you please
The project includes everything from source code and artwork assets to sounds effects. However, none of these are Asset Store packages. This enables you to extract, pick apart and use the specific parts you need.
You are, of course, also welcome to use the full project as a framework or starting point for your own game and, as all the assets are available under the Unity Companion License, you can even use it for Unity-based commercial projects as well. We hope the game becomes a platform that can help you bootstrap your project.
This first release is available for PC, and the plan is to expand the support for Mac and both PS4 and Xbox One later.
The project runs on the latest beta version of Unity (at the time of writing 2018.3b6). It’s been a core principle for the team to run on what is often referred to as vanilla Unity, in other words, it doesn’t require custom builds. Similarly, the project requires no Asset Store packages.
A unique position to improve Unity as a whole
The plan is to continuously update the project to the most recent versions and to adopt the latest features. However, we are also taking advantage of the fact that the very nature of the project puts us in a good position to gather feedback. First, we are an internal team sitting in the heart of the R&D department and using the latest bleeding-edge features. Next, we are simulating your real working conditions by building a full working project.
The big picture
These favorable conditions will help us improve both the new features and Unity as a whole. While we look at and review every single bug report we receive, working on a pre-release release version also offers an opportunity to improve Unity from a more holistic perspective. As projects get larger and more complex, maintaining scalability is key to maintaining an efficient workflow. In order to address this issue, supporting the team’s productivity is another focus area.
Details and efficiency
The result is that we’re solving a lot of pain points related to working with content. We have optimized performance and refined technical solutions in order to achieve the desired game mechanics. One of our other goals has been to help bring new features — such as the HDRP, which is in preview until sometime in 2019 — to a production-ready state faster. But our focus is also on the small things and helping to keep our R&D teams well-informed regarding future development.
Inherent benefits to quality
Having a simulated real-world production makes the sample team act as a kind of extension of QA, driving quality and stability. There are already numerous examples of how features have been optimized and improved due to sample-team involvement.
Creating highly stylized graphics using HDRP
The new HDRP is a modern, physically-based rendering pipeline, which has already contributed to amazing demos like Adam and Book of the Dead. But a physically-based renderer can also be used to create a stylized look. In the FPS Sample, we show how that can be done.
For example, you will be able to explore how subsurface scattering has been implemented in the project. In the plants in the main level, you can see how we have simulated how light penetrates a translucent surface like a leaf.
Other examples include decals and some of the new lighting features of HDRP, including the rectangular lights that allow you to define rectilinear geometry, which emits light. Other examples include the new line light feature, which allows emission from a line shape.
The lightmapping in FPS Sample is achieved through Unity’s Progressive Lightmapper, our fast path-tracing-based light mapper system that provides baked Lightmaps and Light Probes with progressive updates in the Unity Editor.
Building performant netcode for multiplayer shooters
Creating performant netcode for smooth and fair shooter gameplay that feels just right can be daunting. For example, it can be challenging to properly manage the world-state, or in other words, the positions each character populates in the game world. The solution is — rather than using the actual positions you get from the server — to interpolate between them. Similarly, the problem of sluggish movement is addressed by a technique called client-prediction, which allows the player/character to move without approval from the server.
You also want to have a solution for lag-compensation and authorization, while at the same time hosting the game with effective compression and servers with a small memory footprint in terms of being cost-efficient.
In the FPS Sample, you can find inspiration for solving problems by looking at how we approached the issues above. The netcode in FPS Sample offers a good starting point for tackling these problems. The netcode is using Unity’s new transport layer, which was just released in preview.
What to expect in 2019
We will continue to maintain and further develop the FPS Sample in the upcoming Unity versions.
That also means that you can expect the project to adopt new features, such as the VFX Graph, in future updates. You can also look forward to a tutorial and a making-of blog series in 2019.
How do I get started?
To get the project, make sure you are running the latest beta version of Unity. You can also download it from the Unity Hub. Next download the project from our Github repository. Find instructions on how to get started in our forum and in the readme file in the project. We would also love to hear from you in our forum if you have suggestions on how to improve the project in general, or if you are experiencing problems.