top of page

Rationale

In this project, I aim to enhance my knowledge of creating immersive game environments through non-player responsiveness, this would be crucial for my desired job role as a gameplay programmer. Despite my lack of experience in player immersion and NPC creation, I recognise its importance in my desired role as a game programmer. Due to the recent emergence of more advanced AI technologies, NPCs in games can begin to more accurately mimic human nature and therefore become more immersive. As these tools become more prevalent in games, it's important for me to stay relevant by building a solid foundation of  game AI knowledge, particularly in the context of NPC development - which this project allows. Whilst I won’t be placing an actual machine learning algorithm or other form of AI into an NPC, the scripted form of NPC AI within games will provide a good entry point should I expand this knowledge. 

 

Whilst I've primarily focused on the 2D perspective in the past, I've recently ventured into 3D experimentation. Given that this project will be conducted in the 3D perspective, I welcome the opportunity to further expand my knowledge in this area. It's worth noting that a study conducted in 2019 concluded that 84% of games created were done so in the 3D perspective, with estimated continuous growth. This further exemplifies the importance of learning in this perspective. 

 

Before I came to the conclusion of using Unity for my project, I conducted some research into the differences between this and Unreal. Whilst Unreal Engine provides many built-in tools which help with implementation, Unity can mimic many of these through scripting or 3rd party plugins. While I do believe practising with Unreal Engine would be beneficial for expanding my skills, I believe it's more prudent to focus on Unity for this project. Unity is a platform where I feel more comfortable, and honing my abilities here will allow me to make significant progress while leveraging my existing knowledge. A similar sentiment applies to my decision to use C# for this project. While C++ is a more widely-used programming language in the industry, I believe that learning it alongside this project would be too overwhelming. By focusing on C#, a language I'm more familiar with, I can ensure better progress and understanding. When it comes to expanding knowledge in both Unreal Engine and C++ the process will be a lot more streamlined and efficient due to building a foundation with this project.

Project Concept

My project will explore the creation and behaviour of hostile NPCs in video games, using the Unity game engine and C# - this will be done in the 3D perspective. To start this project I will require extensive research into existing NPCs present in other games, I will analyse their movements and look closely at how they react to their environment. Key areas I will explore are: how NPCs react to each other and the player, how they react to different environments (whether peaceful or hostile) and finally I will look into how I can diversify these NPCs - thus allowing them to react differently to given situations. Whilst a lot of this research will be primary, gathered from me going into these games and analysing them myself, I will also look at pre-existing secondary research and studies into the NPCs of games.

 

Once I have gathered the majority of my research I can begin putting it into practice. With the newfound knowledge of what makes AI believable; looking into different ways they can react to stimuli and what will work well for my implementation, I can start the creation of my NPCs. To save time on researching my chosen topic, I will source many of my assets from free asset stores and scripts from previous projects as well as free script repositories. 

 

The first step will be creating the scenes in which I can test many of the NPC behaviours, these will be very minimalistic, consisting of many different setup scenarios. As I haven’t conducted my research yet, ideas for these scenarios are lacking. However some starter ideas for these are rooms featuring many covers for NPCs to hide behind and a scene big enough to experiment with the complex pathfinding of AI. I don’t foresee any difficulties with creating an environment as this won’t be a focus and quality won’t be a concern as long as the asset is functional for the project.

 

In terms of the NPCs I want to create, I will explore a variety of hostile NPCs; trying to employ some degree of individuality to offer different reactions to variables. To develop my NPCs beyond simplicity I will implement numerous activities they can carry out depending on the situation. For non-combat related activities, they may patrol a given area (thus making use of pathfinding) or stand guard at a specific point and if there are multiple NPCs in a given area they can begin to communicate and socialise. Now if they’re placed into a combat situation, they may actively hunt the enemy based on previous sightings, or if directly in combat they could take cover behind specific objects they can detect. Using sourced assets and animations I should be able to convey these, if I am unable to source animations I may attempt a simple animation myself; or likely I will just use the debug console to convey these. Managing to mimic human behaviour will prove a challenge due to the possible limitations of software, however I am confident through research of successful lifelike NPCs that I’ll manage to effectively achieve my goals. Due to the complexity of humans, it is imperative that I employ complex decision making in my NPCs; however as long as my research is thorough and my time dedicated this shouldn’t be a problem. 

 

Once research has begun and new ideas have been formed I may need to rethink my initial plans. Due to the influx of new ideas, previous plans may get replaced or simply rethought.

Evaluation

Proper evaluation and reflection is imperative to the success of my project. Due to games being experiences, external feedback is important to ensure it appeases the people it will be for. I will be taking constant feedback from both tutors and peers, from this feedback I can judge whether I am on the right track for successful immersion through NPCs. Criticisms especially will be taken note of and studied, it is from this feedback I can ensure I stay on track to answer my question. Just because criticism is what will make the most changes that doesn’t mean positive feedback won’t be taken and be of use. Positive feedback ensures I have the right idea and am on the right track with what I am creating. 

 

Reliability on outsider feedback won’t be as consistent as my ability to reflect and evaluate my work myself. Because of this, this will likely be my main source of feedback. Through comparing what I have created, with what I planned to create; I can effectively analyse the success of what was created. If something created doesn’t meet expectations I will look into why this is, and what can be done about this. This may include changing how the feature is implemented or scrapping it all together. Again, positive feedback will still be noted and used to mark the completion of mechanics before I move onto the next. 

 

And all of this will be documented on a production log effectively showcasing what happened during a set time, the problems that occurred and their possible solutions; it is here screenshots and videos of the product will be gathered to evidence work is being done. My final evaluation, looking over each entry as well as my final product, will be held here; comparing back to my planning as well as my initial question. As long as I stay true to these, my project will be successful. Whilst this covers my opinion on the project’s success, it is also important that I continue gathering outsider feedback - due to this being a product designed to be experienced. To gather this outsider feedback I will create a questionnaire featuring videos and images of my final product, accompanying these will be my initial question slightly reworded, “Are these NPCs believable, and do they respond appropriately? Explain”. I may also ask peers to test the NPCs directly from the game engine to gather more authentic feedback. Collectively, this feedback will allow me to judge this project’s success.

Proposed Research Sources and Bibliography

Laura Wood (2020). Global Game Engines Market Report 2020: 3D Segment Accounted for 84.19% of the Market in 2019 - Forecasts to 2027 - ResearchAndMarkets.com. [Internet]. First. businesswire. Available from :<https://www.businesswire.com/news/home/20201223005239/en/Global-Game-Engines-Market-Report-2020-3D-Segment-Accounted-for-84.19-of-the-Market-in-2019---Forecasts-to-2027---ResearchAndMarkets.com#:~:text=com%20%7C%20Business%20Wire-,Global%20Game%20Engines%20Market%20Report%202020%3A%203D%20Segment%20Accounted%20for,Forecasts%20to%202027%20%2D%20ResearchAndMarkets.com>. [Accessed 29 September 2023].

 

​

BMo (2022). Setup 3D Pathfinding Agents In Minutes Using Unity [Internet]. Available From: < https://youtu.be/mJu-zdZ9dyE?si=UaKUo7-n3Uo8taS9> [Accessed 26 February 2024].

 

​

DefendTheHouse (2018). Following NPCs in Red Dead Redemption 2 for a Whole Day. [Internet]. Available From: <https://youtu.be/MrUJJgppMn4?si=0fcgWfyk60JeRdPX> [Accessed 28 February 2024].

 

​

Charles Abou Ezzi (2024). The Dawn of New Realism: Advanced AI and NPC Interactions in GTA 6 [Internet]. First. GAMEBYTE. Available from:<https://www.gamebyte.com/the-dawn-of-new-realism-advanced-ai-and-npc-interactions-in-gta-6/>. [Accessed 28 February 2024].

 

​

This Is GameDev (2023). How to code SMARTER A.I. enemies | Unity Tutorial [Internet]. Available From: <https://www.youtube.com/watch?v=rs7xUi9BqjE> [Accessed 28 February 2024].

 


MarphitimusBlackimus (2012). Half-Life - Roach AI Demonstration [Internet]. Available From: <https://youtu.be/Elwb2lV88hM?si=kD7pMj2GRXPmc1J0> [Accessed 11 March 2024].

Project Action Plan and Timetable

bottom of page