Create a Scene Based on a Known Gameplay Scenario in Unity 2021
In this series of articles, I’ll be recreating a community created scenario for Halo: Reach called “Duck Hunt Extreme”.
While I have played Halo, I can’t say that I’ve ever played this particular version of it.
Based on the youtube video linked above, a bunch of players spawn in a hallway with more hallways vertically above the starting hallway.
As the players run across the hallway, one player is given a snipe rifle and attempts to keep all of them from completing the entire run.
Various obstacles and/or cover are placed on the outer side of the hallway to block the player hunting from having a clean shot at all times.
In our recreation, this will be a single player game where the player is the hunter and we will use AI NPCs to run through the maze.
In this article, we’ll cover the initial scene setup for our recreation.
I honestly hadn’t looked at the provided files for this project from GameDevHQ when I wrote the intro to this article.
I had been looking forward to creatively greyboxing out the level and determining best placements for cover and obstacles.
Since this project is focused on AI, the boss doesn’t want me wasting time on all that fun stuff!
If you’re following along at home kids, you’ll need to greybox out a level with ramps (or portals if you are up to it on your own) to multiple levels with a floating room for the player to shoot down from.
With any project where someone else has done a considerable amount of work, it is probably best to look around a bit before you dive in.
There’s a reason they mark the shallow end at the pool!
The first thing I noticed was a door at the lowest level and one at the highest level that I’ve inferred are the intended start and end points for the AI.
It looks like whoever setup this scene, (probably Al Heck), was diligent enough to setup a legit spawn room with sliding door for us.
This will make spawning much better as the player won’t see the AI characters appearing out of thin air.
It never hurts to check your lighting settings on an unfamiliar project.
This one did not have the Lighting Settings Asset assigned in the Lighting > Scene window.
There is a provided lighting settings in the project folder provided, so I simply assigned them and moved on.
I’ve also noted the project includes a working FPS Controller, which running the game shows to be working as expected.
It doesn’t appear to have any firing code logic though as left-mouse button did nothing.
And yes, that is my really high general mouse sensitivity you are seeing.
I’ll make a mental note of that as I intend to implement the AI portion of the project before worrying about the Player mechanics.
I’ve checked the floors and they are already set as Navigation Static and Walkable so that is one less thing I need to worry about.
With that being the case, I’ve baked the NavMesh as shown above.
There is an area below the main pathways that is NavMesh enabled, but I’m hoping the railing will keep the AI from wandering over there.
Looking around the project, I also see there is an Animations folder for the AI running, walking, taking cover, and dying.
I however, do not see a 3D character model for the AI.
I’ll use the Robot 01 3D model from GameDevHQ for my AI NPCs in this project.
I’m using the Universal Render Pipeline, so I want to check that the newly imported materials are updated to this pipeline.
By default they are not, which is easy to tell by their color.
This is easy enough to fix, simply click Edit > Rendering > Materials > Convert Selected Bult-In Materials to URP.
And there we go, that’s much better!
I’ve dropped the Robot 1 prefab into the scene to check that the scale is correct.
Everything is shaping up pretty good.
At this point, I think I’ve got the basic scene setup covered more or less.
I’m sure I can handle anything that I’ve missed as it comes up.
In my next article, I’ll implement a movement system for the robots AI to travel across the level to the end point.