Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 45

A PROJECT REPORT ON

Premier Race India: The Motorsports Championships


Submitted in partial fulfillment of the requirements for the awards of
degree of

BACHELOR OF ENGINEERING
IN
(COMPUTER SCIENCE & ENGINEERING)

By :
Ms. Vijaya Adamane
Ms. Anuja Panchariya
Mr. Manav Patil
Ms. Aastha Petkar
Mr. Aniket Tandekar

UNDER THE GUIDANCE OF

Prof. C. U. Chauhan

DEPARTMENT OF COMPUTER SCIENCE &ENGINEERING


GOVERNMENT COLLEGE OF ENGINEERING CHANDRAPUR
Year
2023-2024

1
CERTIFICATE OF APPROVAL

Certified that the project report entitled “Premier Race India: The Motorsport
Championship” has been successfully completed by Ms. Vijaya Adamane, Ms. Anuja
Panchariya, Ms. Aastha Petkar, Mr. Manav Patil, Mr. Aniket Tandekar under the

guidance of Prof. C. U. Chauhan from Department of Computer Science and


Engineering in recognition to the partial fulfillment for the award of the degree of Bachelor
of Engineering in Computer Science and Engineering, Government College of Engineering,
Chandrapur (An Institution Affiliated to Gondwana University, Gadchiroli).

Prof. C. U. Chauhan
Head Of Department
Department of Computer Science and
Engineering, GCOE Chandrapur

Prof. Shailendra W. Shende Prof. Chandrapal U. Chauhan


Asst. Prof. Head,
In-charge, Projects Department of Computer Science and
Department of Computer Science and Engineering, GCOE, Chandrapur
Engineering, GCOE, Chandrapur

Dr. P. V. Washimkar
Principal
Government College of Engineering Chandrapur

Signature of External Examiner:


Name:
Date of Examination

2
DECLARATION

We certify that

a. The work contained in this project has been done by me under the guidance of
my supervisor(s).
b. The work has not been submitted to any other Institute for any degree or
diploma.
c. We have followed the guidelines provided by the Institute in preparing the
project report.
d. We have conformed to the norms and guidelines given in the Ethical Code of
Conduct of the Institute.
e. Whenever we have used materials (data, theoretical analysis, figures, and text)
from other sources, we have given due credit to them by citing them in the text
of the report and giving their details in the references. Further, we have taken
permission from the copyright owners of the sources, whenever necessary.

Name Signature of the Students:


1. Ms. Vijaya Adamane
2. Ms. Anuja Panchariya
3. Mr. Manav Patil
4. Ms. Aastha Petkar
5. Mr. Aniket Tandekar

3
ACKNOWLEDGEMENT

We take this opportunity to express a deep sense of gratitude towards our


guide Prof. Chandrapal U. Chauhan for providing excellent guidance,
encouragement, and inspiration throughout the project work. Without
his/her valuable guidance, this work would never have been a successful
one. He/she is one of the best mentors, we will always be thankful to
him/her.

We would like to extend our special thanks to our Project Coordinator


Prof. Chandrapal U. Chauhan who has helped us directly or indirectly to
complete this project work.

We would like to thank Prof. Chandrapal U. Chauhan, Head of the


department of Computer Science and Engineering. He was very helpful
and encouraging while doing research work.

We would like to thank Dr. P. V. Washimkar, Principal (GCOEC) who has


provided all institutional facilities as and when needed.

We would also like to thank all our classmates for their valuable
suggestions and helpful discussions and our thanks goes to all the people
who have supported us to complete the research work directly or indirectly.

Finally, we are extremely grateful to our parents for their love, prayers,
care and sacrifices for educating us and preparing us for our future.

4
INDEX

Sr. No. Title Page


No.

1. INTRODUCTION 1

1.1 Overview 1

1.2 Objectives 2

1.3
Purpose And Scope 2

1.4 Technical Requirement 3

2 REVIEW OF LITERATURE 4

3. SURVEY OF TECHNOLOGIES 6

3.1 About unreal Engine 5 6

3.2 About Blueprints 7

4. 24
WORK DONE

5. CONCLUSION 45

5
REFERECES 46
7.

6
ABSTRACT
Game Development is the art of creating games and describes the design, development
and release of a game. It may involve concept generation, design, build, test and
release. While creating a game, it is important to think about the game mechanics,
rewards, player engagement and level design and for game development we will be
using the Unreal Engine 5 which provides a robust toolset that includes advanced
graphics, physics, and animation tools. The engine's tools are incredibly powerful and
enable developers to create high-quality games quickly and efficiently. We will be
making a arcade racing game using UE5s Blueprints. The Blueprint Visual Scripting
system in Unreal Engine is a complete gameplay scripting system based on the concept
of using a node-based interface to create gameplay elements from within Unreal Editor.
As with many common scripting languages, it is used to define object-oriented (OO)
classes or objects in the engine. According to case studies blueprint is a game element
introduced in Asphalt Street Storm Racing and brought over to Asphalt 8: Airborne,
Asphalt Xtreme, and Asphalt 9: Legends and we will be making a racing game with
different level maps and different racing modes.

Key Words:- Game Development, Unreal Engine 5, Blueprints Visual Scripting, Assets
system.

7
CHAPTER 1. INTRODUCTION
The aim of this project was to design and develop a Car racing game using Unreal
Engine 5. The project was undertaken as a final year project for the purpose of
demonstrating the team's ability to apply concepts and techniques learned throughout
their degree program. The game was designed to provide players with an immersive
and engaging experience through the use of realistic environments, challenging
mechanics, and smooth gameplay.

1.1 overview
The project utilized the latest technology and game development techniques, including
the use of Unreal Engine 5, blueprints and third-party assets to create an existing game
that would showcase the team's technical and creative abilities. Racing games are video
genre in which the players participate in the racing competition.

The final product was a fully functional Car Racing game that offered players an
engaging and challenging experience. We are going to cover some key aspects of car
racing game development. Car racing games are popular among gamers of all ages,
offering and thrilling experience of high-speed races and intense competition. To make
low poly simple arcade Indian themed car racing game using Unreal Engine 5,
blueprints and third-party assets with integrated user interface for players to easily
navigate menus, select game modes, and customizable settings.

The project demonstrated the team ability to apply the concepts and techniques learned
during their degree program to create a high-quality game using Unreal Engine 5,
blueprint and third-party assets. The project provided the team with valuable experience
in game development, including planning, design, implementation, and testing, while
also demonstrating their ability to apply technology to create a high-quality game.

1.2 Objectives
The main objectives of this project is:
 To show how the project is developed.
 To show the details of graphics and design.
 To show how the user can interact with car racing games.
 To connect people with racing games.
 To relief stress of people who are too busy in their work.
 To increase the concentration and focus.

1.2 Purpose and Scope


2.1 Purpose
 The purpose of this game is to survive as long as possible and get to the
finish line in the shortest possible time while avoiding the obstacles on the
tracks. To demo what we finally want to accomplish.

8
 The purpose of this project was the creation of an easy to use, pick up and
play game that could be played by all ages as long as they have their PC. I
will also have to learn the fundamentals of game programming and stick to
the life cycle associated with developing games

 The purpose of this game is set up the requirements for the development of
Car Racing Game.

1.3 Scope
 Racing games are typically non-violent, and they can calm stress in a few
different ways. Choosing easy courses that you've raced before or solo test
laps without the pressure of competition brings low stress, and a good
performance is always rewarding. Taking a beautiful car you can't afford for
a scenic ride somewhere you've never been can melt away few worries after
a long day.

 Surprisingly, intense racing can also reduce stress (in the long run). High-
speed racing with close competition a few times each week can train your
brain to decrease signaling that causes increases in adrenaline, sweat and
heart rate. In turn, you will be better able to control yourself in other real
world stressful situations.

 For you dedicated drivers who practice driving lines and aggressive tactics
before facing your competition, mapping out a plan is essential before a
race.

1.4 Technical Requirements


The software requirements specification is produced at the culmination of the analysis
task. The function and performance allocated to software as part of system engineering
are refined by establishing a complete information description, a detailed functional
and behavioral description, an indication of performance requirements and design
constraints, appropriate validation criteria, and other data pertinent to requirements.

Hardware Requirements:

 Processor: Intel i5 10th generation.


 RAM: minimum 4GB (16GB recommended)
 Keyboard, Mouse
 Monitor

Software Requirements:

 Operating System: Windows 10


 Unreal Engine 5
 Gaea
 Blender

9
CHAPTER 2. REVIEW OF LITERATURE

Overview

2.1 R. Kothari, S. Nawar, S. Kothari3, Asst. Prof. J. Jeswani (April 2021), “Game
Development using Artificial Intelligence in Unreal Engine”. IRJET

Excerpt: To develop a sandbox environment where the player character


completes a specific set of objectives to proceed the main goal. The game will
simulate combat from a thirdperson perspective. The player will encounter
opponent waves they need to survive in order to progress. The opponents will be
predictable AI which the player can predict in order to overcome and defeat them.
The proposed work can be divided into ten modules.

2.2 Marvin T. Chan, Christine W. Chan, and Craig Gelowitz. (2015). Development of a
Car Racing Simulator Game Using Artificial Intelligence Techniques. International
Journal of Computer Games Technology

Excerpt: This paper presents a car racing simulator game called Racer, in which
the human player races a car against three game-controlled cars in a three-
dimensional environment. The objective of the game is not to defeat the human
player, but to provide the player with a challenging and enjoyable experience. To
ensure that this objective can be accomplished, the game incorporates artificial
intelligence (AI) techniques, which enable the cars to be controlled in a manner
that mimics natural driving. The paper provides a brief history of AI techniques in
games, presents the use of AI techniques in contemporary video games, and
discusses the AI techniques that were implemented in the development of Racer.
A comparison of the AI techniques implemented in the Unity platform with
traditional AI search techniques is also included in the discussion.

2.3 David Michalík, Miroslav Jirgl, Jakub Arm and Petr Fiedler. (2021).
Developing an Unreal Engine 4-Based Vehicle Driving Simulator Applicable in
Driver Behavior Analysis—A Technical Perspective. Safety.

Excerpt: Vehicle safety remains a topic of major interest, and diverse assistance
systems are implemented that focus primarily on analyzing the immediate vicinity of
the car and the driver’s control
inputs. In this paper, by contrast, we emphasize understanding the driver’s control
performance via obtaining valuable data and relevant characteristics. To acquire the
data, we employed an inhouse- designed, laboratory-built vehicle driving simulator.
This simulator exploits the Unreal Engine 4 framework to deliver a high level of
realism.

10
2.4Michael, Jeanny Pragantha, Darius Andana Haris. (2020). Android Arcade-
Style Racing Game “CarsTime” With Antigravitation Theme. IOP Conference
Series: Materials Science and Engineering.

Excerpt: CarsTime is an arcade-style racing game with antigravitation theme. This


game is made using Unity3D game engine with C# programming language. This game
is an Android game. In this game, player will race against bots on track that is not
bound by gravity so each car can move even on upside down track. There are three cars
that can be used by players, namely C.car, Sonic and Magnum. There are three stages
that player can choose to play, namely Map Aspal which doesn’t have any additional
difficulties, Map Pasir which makes player’s car move slower and Map Salju which
makes player’s car slippery. There are three items that player can collect or interact
while racing, namely coin which player can collect for buying car, boost can which
player can collect to fill boost meter which can be used when full to increase player’s
speed for a certain time, and boost pad which will increase player’s and bots speed for
certain time when touched. This game is tested by using three methods which are
blackbox testing, alpha testing and beta testing. Based on the testing result, it can be
concluded that “CarsTime” has an interesting racing gameplay with hard difficutly on
Map Salju and easy difficulty on Map Aspal and Map Pasir.

11
CHAPTER 3. PROPOSED SYSTEM

3.1 SURVEY OF TECHNOLOGIES

3.1.1 About Unreal Engine 5:

Unreal Engine 5 is a game engine developed by Epic Games, designed for creating
high-quality video games and other interactive applications. It is the latest version of
the popular Unreal Engine, which has been used to develop many successful games
and applications, including Fortnite, Gears of War, Car racing game and Robo Recall.

Unreal Engine 5 is built with the latest technology, including advanced rendering
capabilities, physics simulation, and dynamic lighting, which allow for highly
realistic and immersive experiences. It also includes powerful tools for game
development, such as visual scripting and a robust code editor with support for C++,
Python, and other programming languages.

One of the most notable features of Unreal Engine 5 is its Nanite technology. which
enables developers to create incredibly detailed and complex environments without
sacrificing performance. Nanite allows for real-time rendering of massive amounts of
geometry, making it possible to create highly realistic landscapes and other
environments.

Unreal Engine 5 also includes powerful tools for creating Al and game logic, as well as
tools for creating cinematics, audio, and other elements of the game experience.
Additionally, it includes support for a variety of platforms, including PC, console, and
mobile devices.

3.1.2 About Blueprints

The Blueprint Visual Scripting system in Unreal Engine is a complete gameplay


scripting system based on the concept of using a node-based interface to create
gameplay elements from within Unreal Editor. As with many common scripting
languages, it is used to define object-oriented (OO) classes or objects in the engine.

This system is extremely flexible and powerful as it provides the ability for designers
to use virtually the full range of concepts and tools generally only available to
programmers. In addition, Blueprint-specific markup available in Unreal Engine's C+
+ implementation enables programmers to create baseline systems that can be
extended by designers.

3. 1.3 Blueprints Visual Scripting

The Blueprint Visual Scripting system in Unreal Engine is a complete gameplay


scripting system based on the concept of using a node-based interface to create
gameplay elements from within Unreal Editor.
12
As with many common scripting languages, it is used to define object-oriented (OO)
classes or objects in the engine. As you use Unreal, you'll often find that objects defined
using Blueprint are colloquially referred to as just "Blueprints."

This system is extremely flexible and powerful as it provides the ability for designers to
use virtually the full range of concepts and tools generally only available to
programmers. In addition, Blueprint-specific markup available in Unreal Engine's C++
implementation enables programmers to create baseline systems that can be extended
by designers.

3.2 Gameplay Framework


Core systems, such as game rules, player input and controls, cameras, and user
interfaces
The Gameplay Framework in Unreal Engine provides multiple classes and components
to serve as building blocks for your projects.

 Actors are the base class for an Object that can be placed or spawned in a level.
Actors may contain a collection of Actor Components, which can be used to
control how actors move, and how they are rendered. Actors support the
replication of properties and function calls across the network during play.

 Cameras represent the player's point of view, such as how the player sees the
world. The PlayerController specifies a camera class and instantiates a Camera
Actor which is used to calculate the position and orientation the player views the
world from.

 The Pawn class is the base class of all Actors that can be controlled by players or
AI. A Pawn is the physical representation of a player or AI entity within the world.
A Character is a special type of Pawn that has the ability to walk around. By
default, there is a one-to-one relationship between Controllers and Pawns;
meaning, each Controller controls only one Pawn at any given time.

 Controllers are non-physical Actors that can possess a Pawn or Pawn-derived class
like a Character to control its actions. A Player Controller is used by human
players to control Pawns, while an AI Controller implements the artificial
intelligence for the Pawns they control. Controllers take control of a Pawn with
the Possess function and give up control of the Pawn with the UnPossess function.

 Gameplay Timers create asynchronous callbacks to specific function pointers that


trigger events to be performed after a delay, or over a period of time.

 User Interfaces (UIs) and Heads-up Displays (HUDs) are a way of providing
information about the game to the player and in some cases allowing the player to
interact with the game.

3.3 Framework Class Relationships


This flowchart illustrates how these core gameplay classes relate to each other. A game
is made up of a GameMode and GameState. Human players joining the game are
13
associated with PlayerControllers.

These PlayerControllers allow players to possess pawns in the game so they can have
physical representations in the level. PlayerControllers also give players input controls,
a heads-up display, or HUD, and a PlayerCameraManager for handling camera views.

FIG. 3.3 FRAMEWORK CLASS RELATIONSHIP

3.4 Camera & Components

3.4.1 Camera (CameraActor)

The Camera represents the player's point of view, such as how the player sees the
world. For this reason, cameras only have relevance to human-controlled players.
The PlayerController specifies a camera class and instantiates a Camera Actor
(ACameraActor) which is used to calculate the position and orientation the player
views the world from.

For basic examples on how to work with Cameras, refer to Using Cameras. For an
example of how to layer animations onto cameras, refer to the CameraAnim
feature documentation.

All of the camera's behavior and properties are set up in the CameraComponent.
The CameraActor class primarily acts as a wrapper for the CameraComponent, so that
the camera can be placed directly in the level rather than within another class. When
using a CameraComponent in the Editor, You can navigate to Details > Camera
Settings to set whether the camera is in Perspective or Orthographic mode.

14
FIG. 3.3 CAMERA ACTOR

The vertical field of view (FOV) can be set for perspective mode, and the width in
world units can be set for orthographic mode. For both modes, the aspect ratio can be
designated and preset aspect ratios for common devices and display types are provided.
You can add Post process effects to the camera, and it is possible to scale the strength
of the post process effects.

3.4.2 Components (ActorComponenets)


Components are a special type of Object that Actors can attach to themselves as sub-
objects. Components are useful for sharing common behaviors, such as the ability to
display a visual representation, play sounds. They can also represent project-specific
concepts, such as the way a vehicle interprets input and changes its own velocity and
orientation. For example, a project with user-controllable cars, aircraft, and boats could
implement the differences in vehicle control and movement by changing which
Component a vehicle Actor uses.

UActorComponent is the base class for all Components. Since Components are the only
way to render meshes and images, implement collision, and play audio, everything the
player sees or interacts with in the world when playing the game is ultimately the work
of some type of Component.

Figure 1

15
There are a few major classes to understand when creating your own
Components: Actor Components, Scene Components, and Primitive Components.
Actor Components (class UActorComponent) are most useful for abstract behaviors
such as movement, inventory or attribute management, and other non-physical
concepts. Actor Components do not have a transform, meaning they do not have any
physical location or rotation in the world.

3.5 Controllers
Controllers are non-physical Actors that can possess a Pawn (or Pawn-derived class like
Character) to control its actions. A PlayerController is used by human players to control
Pawns, while an AIController implements the artificial intelligence for the Pawns they
control. Controllers take control of a Pawn with the Possess function, and give up
control of the Pawn with the Unpossess function.

Figure 2

Controllers receive notifications for many of the events occurring for the Pawn they are
controlling. This gives the Controller the opportunity to implement the behavior in
response to this event, intercepting the event and superseding the Pawn's default
behavior. It is possible to make the Controller tick before a given Pawn, which
minimizes latency between input processing and Pawn movement.

By default, there is a one-to-one relationship between Controllers and Pawns; meaning,


each Controller controls only one Pawn at any given time. This is acceptable for most
types of games, but may need to be adjusted as certain types of games - real-time
strategy comes to mind - may require the ability to control multiple entities at once .

3.6 Pawn

The Pawn class is the base class of all Actors that can be controlled by players or AI. A
Pawn is the physical representation of a player or AI entity within the world. This not
only means that the Pawn determines what the player or AI entity looks like visually,
but also how it interacts with the world in terms of collisions and other physical
interactions. This can be confusing in certain circumstances as some types of games
may not have a visible player mesh or avatar within the game.

16
Regardless, the Pawn still represents the physical location, rotation, etc. of a player or
entity within the game. A Character is a special type of Pawn that has the ability to
walk around.

FIG.3.6 PAWN

By default, there is a one-to-one relationship between Controllers and Pawns; meaning,


each Controller controls only one Pawn at any given time. Also, Pawns spawned during
gameplay are not automatically possessed by a Controller.
3.7 User Interfaces and HUDs

Guides and information for artists and programmers creating user interfaces such as
menus and HUDs

The way in which the game communicates and interacts with the player is extremely
important. User Interfaces (UIs) and Heads-up Displays (HUDs) are the games' way of
providing information about the game to the player and in some cases allowing the
player to interact with the game.

Unreal Engine 4 provides multiple means of creating UIs and HUDs. The Canvas class
can be used to draw directly to the screen at a low level, overlaid onto the world.

The game's Interface is used to convey information to the player and provide a means
of prompting the user for directed input. A game interface generally consists of two
main elements: the heads-up display (HUD)

User Interfaces refer to menus and other interactive elements. These elements are
usually drawn overlaid on the screen much like the HUD, but in certain circumstances
they could be part of the game world itself rendered onto a surface in the world. The
most obvious examples of UIs are the main menu displayed when the game starts up or

17
the pause menu shown when the player has paused the game. However, other UIs may
be displayed during play. These could be used to show dialog between characters in the
game or in more complex situations, such as in an RTS or RPG, they may be integral to
the game play itself allowing the player to choose weapons, armor, units to build, etc.

The HUD is the base object for displaying elements overlaid on the screen. Every
human-controlled player in the game has their own instance of the AHUD class which
draws to their individual Viewport. In the case of splitscreen multiplayer games,
multiple Viewports share the same screen, but each HUD still draws to its own
Viewport. The type, or class, of HUD to use is specified by the gametype being used.

Figure 3

3.8 About Materials

If you look closely at the submarine, you’ll see it has a checkerboard on its surface
instead of a proper appearance. To give the submarine color and detail, you will create
a material.

What is a Material?
A material determines how the surface of something looks. Fundamentally, a material
defines four elements:

Below is an example of three materials. They have the same color but separate
attributes. Each material has a high value for its respective attribute. The other
attributes are set to zero.

 Base Color: The color or texture of a surface. Used to add detail and color
variations.

 Metallic: How “metal-like” a surface is. Generally, a pure metal will have the
maximum Metallic value whereas fabric will have a value of zero.

 Specular: Controls the shininess of nonmetallic surfaces. For example, ceramic


would have a high Specular value but clay would not.

 Roughness: A surface with maximum roughness will not have any shininess.
It’s used for surfaces such as rock and wood.

18
FIG. 3.7 MATERIAL

3.8.1 Creating a Material

Close the submarine blueprint and return to the Content Drawer, select the Materials
folder and click the green Add button. A menu will appear with a list of assets you can
create. Click Material.

FIG.3.7.1 MATERIAL

3.8.2 Material Editor

Name the material SubmarineMaterial and then double-click the file to open it in the
material editor.

19
FIG.3.7.2 The Material Editor

The material editor has several panels:


1. Viewport: Contains a preview mesh that will display your material. Rotate the
camera by holding left-click and moving your mouse. Zoom
by scrolling your mouse wheel.
2. Details: Any node that you select will have its properties displayed here. If a
node isn’t selected, the panel will show the material’s properties instead.
3. Material Graph: This panel will contain all your nodes and the Result node. Pan
by holding right-click and moving your mouse. Zoom by scrolling your mouse
wheel.
4. Palette: A list of all the nodes available to your material.

3.9 Rotating the Propeller

Open the Submarine Blueprint. To start scripting, switch to the Event Graph tab
.

20
Making an object rotate is so simple you only need to create one node. Right-click a
space on the graph to bring up a menu of available nodes. Search for
AddLocalRotation. Rotate the submarine_Motor component. Select AddLocalRotation
(submarine_Motor).

Note: If the node isn’t listed, uncheck Context Sensitive at the top right of the menu.

3.10 Detailed Implementation of Racer Game System

3.10.1. Player-Controlled Car Module

The player-controlled car module consists of four sub modules: (i) the body, (ii) the
wheels, (iii) the heads-up-display (HUD), and (iv) the player controller script. The body
of the car is the 3D model that the player sees in the game environment; this sub
module also contains the colliders, which enable the car to collide with objects in the
game environment. The wheels of the car contain wheel colliders, which enable the
wheels to make contact with the road and drive the car forward. The wheels sub module
also contains a script which animates the rotation of the wheels as the car moves. The
HUD component of the car is controlled by the HUD script, which handles displaying
the current speed, position, and lap of the car to the player. Lastly, the sub module of
the player-controller script, called PlayerCarController , handles the user input from the
keyboard and applies the appropriate steering, accelerating, and braking output levels of
the player-controlled car.

3.10.2. Game-Controlled Car Module


The game-controlled car (or the AI-controlled car) consists of four sub modules: (i) the
body, (ii) the wheels, (iii) the trigger area, and (iv) the AI controller script. The body
and wheels of the game-controlled car are identical to the body and wheel components
of the player-controlled car. The trigger area component of the car is controlled by the
CarSensor script and detects when a wall enters into the trigger area. When this
happens, the AI controller script is informed so that it would slightly adjust its control
of the car. The AI controller script, called AICarController, contains all the
implemented AI techniques and algorithms that handle the driving of the game-
controlled car so that it can effectively race against the player-controlled car.

3.10.3 Graphics

In accordance with the evolutionary software development model, we wanted to


postpone as much work related to graphics as possible, until we had come so far in the
development that it was time to put focus on graphics. The XNA framework provided
us with the major part of the basic functionality to render our game29. This allowed us
to render our game with minimal allocation of developer time before we got started on
the graphics of the game. Although, to give our game its own look, our usage of this
basic functionality later had to be exchanged for more advanced alternatives where we
had more control over how the game was being rendered.

21
3.10.4 Lights and Rendering

To capture the very complex behavior of light in the real world so that a computer may
simulate it, relatively simple models are needed. One extensively used idea is to break
up light into three components; ambient, diffuse and specular. The ambient component
is the colour of the light that has bounced on the surroundings numerous times before
reaching the destination point whose colour is currently being computed. The diffuse
component is the colour of the light that contributes to a surface’s base colour. Finally,
the specular component is the colour of the reflection of light on a surface33.

Figure 15: The different lightning components contributing to the final


image.

Since it makes little sense to have a light source with different colours for different
material properties, only one colour is normally used for all of light source’s
components. However, the material of a surface is modelled in part by these three
components as well. The diffuse component of a material is lit by the diffuse
component of a light. Similar reasoning holds for the specular and ambient
components33.

Another essential part of modelling the behaviour of real light is how it is affected
when it comes in contact with a surface. One can not assume that the light bounces off
with the same angle as the incident angle. More care needs to be taken when dealing
with computer graphics. Of course each individual photon cannot possibly be traced
through the entire scene in real- time with the computational power of a modern
computer, and actually no light is traced in any way by a regular rasterizing renderer22.
Instead, when a fragment of a surface is being rendered, all of the incident light is
assumed to come directly from the light source (except for the ambient light), and the
amount of outgoing light in all directions from the fragment is determined by a BRDF.

The BRDF is supposed to capture the surface’s way of scattering the incident light,
since this one point that is being rendered actually represents a small area that may not
be completely flat, which would be a requirement for the light to simply bounce off the
surface with the same angle as the incident angle 30 .

22
Figure: This BRDF lobe shows how incident light can scatter non-
uniformly in all directions

3.10.5 Shadows

Shadows are highly important for a good sense of realism. If objects that occlude the light
would not cast shadows onto other objects in a scene, an observer is likely to quickly pick
up on that something is wrong39. Variance Shadow Mapping40 was selected for computing
the shadows in our game.

Shadow Mapping is a technique commonly used in games to cast shadows. The basic idea
is to record how far the light from a specific source reaches, and then compare this to the
length between the light source and the actual fragment being rendered. More specifically,
one starts with rendering the scene from the view of the light source, but for each pixel, a
depth value is stored instead of a colour The texture produced is called a depth map, or
more commonly, shadow map. This means that for any point in the scene, a depth has been
recorded in the direction from the light source approximately to that point, and this depth
represents how far the light reaches towards the point before something stops it. For any
point that is closer or just as close to the light source as the recorded depth, the point must
be in light. If on the other hand, the point is further away from the light source than the
recorded depth, this must mean that some other object is occluding the light, and this point
must be in shadow.

Figure 19: Point P2 is being rendered, and the depth recorded in the
direction from the light source to P2 is looked up. The depth in this
case is the distance from the light source to the point P1, meaning that
the light stops there and doesn’t reach P2.

3.10.6 Player data

When the game has started, for each game update, the players send the position,
orientation (rotation) and velocity of their car to the server. When the server receives
this information from a client, it starts by updating its local re- presentation of the
client’s car, and then forwards the information to all the other clients. And likewise,
when the clients receive player data from the server, they update their local
representation of the player cars with this information.
23
One problem with multiplayer games on connections with high latency is that it can
result in jittering and jumpy/freezing behaviour on data shared over the network. In a
racing game, the car could appear to jump from different positions between frames,
because the position data of the car is taking to long to travel on the network. This
however, is solved by interpolating and taking qualified guesses of the position at each
frame, by taking into account the positions from previous frames.

This implementation worked out smoothly and very straight forward, and from what we
could tell, the interpolation via the physics engine worked surprisingly well.

3.10.7 Game round timer

Until late in the development, we did not have any specific type of game round. More
precisely, the game did not have an end. To solve this, we added a timer that when
reaching zero, ended the game and returned the gamer to the game lobby screen. We
accomplished this by letting each client/server have a timer each, but that was only
started when the server sent a special message.

The timers on the client side filled only a graphical purpose, while the timer on the
server was the only one that could end the game. This was done in such way to avoid
sending to much unnecessary information over the network to just synchronize the
clock.

Figure 5.2 Time remaining counter

3.10.8 Sound

The graphical aspect of the game definitely was one our top priorities, but even though
we focused much on blowing the players’ visual mind, music and sound effects in the
game were also features we wanted to include. We felt that visual effects lost some of
its context without corresponding audio effects, and that sound therefore was necessary
in the game to offer the player a complete experience.

3.10.9 Sound Effects

In order to find sound effects that matched the graphical dittos, we had to search through
several different sound banks. The largest sound bank, which provided us with sounds like the
electronic engine, was Digiffects58, a sound bank provided by many companies in different
countries, including Swedish “Ljudproduktion AB”. We also took great use of many public
sound banks on the Internet: FindSounds59, and PacDV60.

Even though we were satisfied with many of the sound effects we found from different
sound banks, we still had problems finding good sound effects for collisions. By
24
recording our own sound effects, we felt like we were adding a more personal touch to
the game, besides the fact that we needed collision sound effects.

3.10.10 Background Music


Just as sound effects, different types of music can also be found on the Internet. For
example, PacDV, provided not only sound effects, but a variety of different
instrumental music tracks as well. Even though some of the tracks were possible to
have in our game, we felt that we wanted more famous background music, which could
possibly give the user a nostalgic feeling. We choose to use background music from an
old game called Turtles, which was released on Super Nintendo Entertainment System.

25
CHAPTER 4: Work Flow & METHODOLOGY

4 SCRIPTING:

A scripting language or script language is a programming language that is used to


manipulate, customize, and automate the facilities of an existing system. It is usually
interpreted at runtime rather than complied. Scripting languages are also referred to as
very high-level programming languages, as they operate at a high level of abstraction,
or as control languages, particularly for job control languages on mainframes. In this
context, the term script refers to a small program in such a language; typically,
contained in a single file, and no larger than a few thousand lines of code.

4.1.1 Setting up a Controller and Pawn


The first step is setting up a controller and pawn. A pawn represents the player or AI-
controlled character in the game. To set up a pawn we created a Blueprint Class with a
base class Pawn. Inside its blueprint we added components to the pawn, such as a
Skeletal Mesh for the visual representation of the character, collision components for
interaction with the environment.

Then, added a CameraComponent to the Blueprint of actor that is playerPawn and


attached it to the actor to define the camera's position and orientation. It is fixed so if
player turns then camera will move accordingly.

Figure 4.2: Player Car Skeleton

A controller is responsible for controlling a pawn or group of pawns. To set up a


controller we created a new Blueprint Class: PlayerController. Inside the Blueprint
editor, we implemented input handling logic to control the pawn's movement, camera,
and other actions. It is used for input events like "Axis Move" or "Axis Turn" to handle
player inputs.

26
4.1.2 AI Car Model

It starts with creating a new Blueprint Class for the AI car. It includes setting up
acceleration, steering, braking, and handling for the AI cars, defining checkpoints and
paths for it to follow, and implementing logic for decision-making.

Figure 4.1.2: AI Cars with path prediction and self-learning

AI cars to act as competitors for the player by adjusting parameters such as speed,
aggression, and skill level to manage overtaking and precision. AI perception is used to
detect nearby obstacles, other vehicles, and track boundaries. These cars learn the path
with each lap and gets better than previous.

Figure 4.1.3: Path prediction script

27
4.2 UI/UX AND LEVEL DESIGNING:

User interface (UI) engineering is the design of user interfaces for the game, with the
focus on maximizing usability and the user experience. It is a paramount in ensuring
players are fully immersed in the thrilling and fast-paced gameplay. UX encompasses
every aspect of the player's interaction with the game, from the moment they launch it
to the exhilarating moments of crossing the finish line. The handling and
responsiveness of the car controls significantly impact the UX. Precise and intuitive
controls allow players to feel connected to their vehicles

4.2.1 In-Game Menus

We designed In-Game Menus to serve as accessible interfaces, enabling players to


adjust settings and manage gameplay seamlessly without interrupting the race. These
menus were crafted to include options such as pausing the game to fine-tune settings
such as graphics and controls, facilitating actions like restarting or quitting races, and
seamlessly resuming gameplay. Additionally, players were provided to fine-tune race
parameters, including adjusting difficulty levels and weather conditions, with the aim of
enhancing their overall racing experience.

Figure 4.2.1: PRI main menu

6.2.1 HUD and Score Progression System

The HUD (Heads-Up Display) are featured to a comprehensive array of essential


elements to provide players with real-time information during races. A speedometer
was prominently displayed, indicating the vehicle's current speed and lap counter
tracked progress throughout the race. The Score and Progression system was
implemented to track players' performance and advancement throughout the gameplay
experience. A scoreboard was created to display and time remaining.

28
Figure 4.2.2: Time remaining counter

Figure 4.2.3: Speed and gear

4.3 LEVEL ENGINEERING

Creating Indian-themed levels for a game is an exciting endeavor that allows for the
exploration of India's diverse culture, landscapes, and architecture. Let's elaborate on
the level maps you've created:

In our game we created following level maps:


1. Delhi Map
2. Rajasthan Map
3. Kashmir Map

Figure 4.3.1 : Delhi Map

29
1. Delhi Map:
Description: The Delhi Map transports players to the bustling capital city of India,
known for its rich history, vibrant culture, and architectural wonders. The level is
divided into various sections, each representing iconic landmarks and neighborhoods of
Delhi.
Key Features: Red Fort Section: Players navigate through the majestic Red Fort, a
UNESCO World Heritage Site, marveling at its imposing red sandstone walls,
intricately carved arches, and lush gardens.
Challenges: Players encounter obstacles such as navigating through crowded streets,
dodging traffic, and overcoming hurdles inspired by Delhi's unique urban landscape.
Visuals: The level features vivid and detailed graphics, showcasing the architectural
beauty, cultural diversity, and dynamic atmosphere of Delhi.

2. Rajasthan Map:
Description: The Rajasthan Map immerses players in the royal state of Rajasthan,
renowned for its majestic forts, opulent palaces, and colorful heritage. The level
captures the essence of Rajasthan's desert landscape, rich history, and vibrant traditions.
Key Features: The palace is a five-story structure, with four floors submerged
underwater when the lake is full. Only the top floor remains above the water level,
giving the palace its distinctive appearance of floating on the lake.
Challenges: Players face obstacles such as traversing rugged terrain, avoiding
sandstorms, and outmaneuvering opponents in camel races inspired by Rajasthan's
desert heritage. Visuals: The level showcases vibrant colors, intricate designs, and
ornate architecture, capturing the opulence, elegance, and grandeur of Rajasthan's royal
heritage.

3. Kashmir Map:
Description: The Kashmir Map transports players to the picturesque paradise of
Kashmir, renowned for its breathtaking natural beauty, serene lakes, and snow-capped
mountains. The level offers a serene and tranquil experience amidst lush valleys and
pristine landscapes
Key Features: Dal Lake Tranquility: Players glide across the serene waters of Dal
Lake, surrounded by majestic mountains and floating gardens, as they soak in the
tranquility and beauty of Kashmir's iconic lake.
Challenges: Players encounter challenges such as navigating treacherous mountain
paths, overcoming obstacles in snow-covered landscapes, and competing in high-speed
ski races, inspired by the adventurous spirit of Kashmir's outdoor activities.
Visuals: The level features stunning vistas, serene landscapes, and vibrant colors,
capturing the pristine beauty and ethereal charm of Kashmir's natural wonders.

These Indian-themed level maps offer players a captivating journey through India's
diverse landscapes, rich heritage, and cultural landmarks, providing an immersive and
unforgettable gaming experience.

30
Figure 4.3.2: Rajasthan Map

Figure 4.3.3: Kashmir Map

4.2.2 3D Model Creating


Created 3D model of Indian architecture reminiscent of the iconic Red Fort (for Delhi
Map) using Blender and Unreal Engine 5. Initially, we gathered reference images of the
Red Fort from various angles to understand its intricate details using Google Earth.
Then we set the scenes in Blender, we ensured proper scales and units. Starting with a
simple cube, we sculpted the basic shapes of the Red Fort, employing Blender's
versatile modeling tools such as extrusion, scaling, and rotation. Adding architectural
elements like arches, domes, and windows, we focused on maintaining accurate
proportions and intricate details to enhance realism. Other 3D models were also created
like Road, Traffic Maintenance Models, Barriers, etc.

31
Figure 4.2.2 Original Red Fort -Source Google Maps

Figure 4.2.2: Our created 3D model of Red Fort

4.2.3 Creating the Level

By navigating through the menu, selecting "File," then "New Level," and then configured
the various parameters of level like map size, type, spline type, etc. Utilizing the landscape
tool, sculpted the terrain, ensuring it harmonized with our design concept by adjusting its
size and shape accordingly. We also used Gaea for creating height-maps of the desired
level.

Figure 4.2.3: Creating new level

32
Figure 4.2.3: Level Landscaping

4.2.4 Creating Lighting And Atmosphere

Illuminated lighting and atmosphere manipulating light sources to evoke specific


moods and atmospheres. Various lighting techniques such as directional lights, point
lights, skyLight, atmospheric fog, clouds were created to balanced brightness and
shadows to accentuate architectural details and enhance visual interest.

Figure 4.2.4: Atmospheric Lighting and Fog

4.2.5 Creating Game Environment

Through the integration of static meshes, including rocks, trees, buildings, and various
props sourced from both the Unreal Engine Marketplace and custom-made assets from
external modeling software like Blender and Maya, we enriched the environment,
infusing it with vitality. Foliage and vegetation were placed using the foliage tool,
embellishing the terrain with trees, bushes, grass, and other flora to enhance realism in
respective of their atmosphere.

33
Figure 4.2.5: Plant foliage material

4.2.6 Creating Material Layers


Using Quixel Bridge material and Gaea layered the different materials for various
objects and ground. The material is layered so that it will show sedimentation of
various soil layers with height map. The materials of Trees and their barks were set to
give the Indian look to environment.

The changes in texture and smoothness of ground are tempered to give the soil realistic
look so that it will have more quality in players sight and will blur as the distance
increases.

Figure 4.2.6 Material Instance of a simple brick

Figure 4.2.6: Level materials and textures

4.4 THIRD-PARTY ASSETS:


Third-party assets, which are sourced from outside developers or companies and
integrated into the game to enhance its visual appeal, include 3D models, textures, car
models and race tracks, immersive sound effects and music tracks, or sophisticated
code snippets for gameplay mechanics. We expedite the development process to
34
provide players with a polished and captivating gaming experience by utilizing these
third-party assets. We used 3D models of trees, rocks, cliffs, billboards, and street
maintenance objects like traffic cones and street lights imported using Quixel-Bridge a
Ureal Engine plugin.

From Unreal Engine Marketplace used following assets:


1. Vehicle Variety Pack
2. City Sample Vehicle
3. Modular Building Set
4. City Sample Crowds
5. Quixel Bridge 3D Models

Figure 4.4.2 3D Rocks from Quixel Bridge

Figure 4.2.3 3D Plants and Trees from Quixel-Bridge

4.5 LOGIC AND FUNCTIONALITY:

In game development, logic and functionality are the backbone of creating immersive
and engaging interactive experiences. Logic encompasses the intricate set of rules and
algorithms governing the behaviour of the game, dictating everything from player input
responses to win/loss conditions. Developers meticulously design gameplay logic to
ensure a seamless and enjoyable experience, scripting events, defining mechanics, and
implementing artificial intelligence for lifelike character behaviours. On the other hand,
functionality refers to the interactive features that bring the game to life, encompassing
35
user interfaces, physics engines for realistic movement, sound and music integration,
and networking capabilities for multiplayer experiences. Achieving a delicate balance
between sophisticated logic and smooth functionality is essential to crafting a
successful game, where players are not only challenged by the intricacies of the game
world but also seamlessly immersed in its interactive elements.

Whether handling collision detection, character animations, or multiplayer networking,


the synergy between logic and functionality defines the essence of a well-crafted and
enjoyable gaming experience.

Figure 4.5.1: Checkpoint logic on car movement

Figure 4.5.2: Time-race level logic

4.6 INTEGRATING MODEL:

Integrating models in game development involves the seamless incorporation of 3D or


2D assets, such as characters, environments, and objects, into the game engine. Models
36
serve as the visual representation of the game's elements, contributing to the overall
aesthetic and immersive quality of the virtual environment. Game developers utilize
modeling software, like Blender or Maya, to create these assets, considering factors such
as polygon count, texture quality, and animation rigging. Once the models are crafted,
they are integrated into the game engine, where their functionalities and interactions are
defined through scripts and logic.

The integration process also involves optimizing models for performance, balancing
visual fidelity with the game's technical requirements. Successful model integration is
essential for delivering a visually captivating and coherent gaming experience, where the
artistry and functionality of these digital assets converge to create a compelling and
interactive virtual world for players to explore.

Fig. 4.6 Integration Model

4.7 TESTING, DEBUGGING AND DEPLOYMENT:

In game development, the phases of testing, debugging, and deployment are integral to
ensuring a polished and stable gaming experience. Testing involves systematically
evaluating various aspects of the game, including gameplay mechanics, graphics, and
user interfaces, to identify and rectify potential issues. This process encompasses unit
testing for individual components, integration testing to assess the collaboration of
different elements, and user acceptance testing to gauge player experience. Debugging
follows testing, addressing identified issues through the identification and correction of
errors in the source code. Game developers employ debugging tools and techniques to
enhance performance, fix glitches, and refine the overall functionality of the game.
Once testing and debugging are satisfactorily completed, the game is ready for
deployment. Deployment involves packaging the finalized game for distribution across
platforms, ensuring compatibility and adherence to platform-specific guidelines. This
phase also includes considerations for marketing, release strategies, and ongoing
37
support, marking the culmination of the development cycle and the transition to
delivering the gaming experience to a wider audience. A thorough and well-executed
testing, debugging, and deployment process is crucial for releasing a high- quality and
enjoyable game to players worldwide. We used the V-model of software engineering to
develop the PRI.

Figure 4.7 Game logic testing

38
CHAPTER 5. RESULTS & DISCUSION
The development methodology employed for PRI: Premier Race India has yielded
exceptional results, culminating in a polished and immersive gaming experience that
celebrates Indian culture while captivating players with engaging gameplay, stunning
visuals, and seamless functionality across platforms.

By meticulously setting up controllers, pawns, and AI behaviors, the game achieves a


smooth and responsive gameplay experience, allowing players to seamlessly navigate
through the vibrant Indian-themed levels. The integration of third-party assets for
enhanced visuals and sound effects further enriches the gaming experience,
immersing players in the sights and sounds of India's diverse landscapes and
architectural wonders.

The design of intuitive UI/UX elements, including in-game menus and HUDs,
enhances accessibility and ease of navigation, ensuring that players can quickly and
intuitively interact with the game interface. This attention to detail in UI/UX design
contributes to a seamless and immersive gaming experience, keeping players engaged
and immersed in the game world.

The crafting of Indian-themed levels with meticulous attention to detail showcases


the rich cultural heritage and diversity of India, transporting players to iconic
destinations such as Delhi, Rajasthan, and Kashmir. Each level is carefully designed
to capture the distinct allure and splendor of India's landscapes, architecture, and
cultural landmarks, providing players with a visually stunning and culturally
immersive experience.

The implementation of logic for gameplay mechanics and functionality ensures that
the game offers a compelling and rewarding experience for players. Whether racing
through the bustling streets of Delhi, navigating the desert terrain of Rajasthan, or
skiing down the snow-capped slopes of Kashmir, players are challenged and
entertained by a variety of gameplay scenarios and challenges.

39
CHAPTER 6. CONCLUSION
In the development journey of PRI: Premier Race India, our methodology was
meticulously crafted to ensure a seamless fusion of captivating gameplay, stunning
visuals, and an immersive celebration of Indian culture. By meticulously setting up
controllers, pawns, and AI behaviors, we crafted a gameplay experience that is not only
smooth and responsive but also deeply engaging for players. The integration of third-
party assets for enhanced visuals and sound effects further elevated the game's
presentation, allowing players to immerse themselves in the vibrant landscapes and
architectural wonders of India. Additionally, our focus on designing intuitive UI/UX
elements ensured that players could effortlessly navigate through in-game menus and
HUDs, enhancing accessibility and overall enjoyment. This meticulous attention to
detail extended to the crafting of Indian-themed levels, where each location—from the
bustling streets of Delhi to the serene valleys of Kashmir—was brought to life with
meticulous attention to detail, providing players with a visually stunning and culturally
immersive experience.

Through the implementation of logic for gameplay mechanics and functionality, we


delivered a compelling and rewarding experience for players, whether racing through
the bustling city streets or navigating treacherous mountain terrain. Our rigorous testing
and debugging phases ensured that the final product met the highest standards of
quality and performance, delivering a polished and stable gaming experience that
exceeded player expectations. In conclusion, PRI: Premier Race India stands as a
testament to the success of our methodology, delivering a polished and immersive
gaming experience that not only celebrates Indian culture but also captivates players
with engaging gameplay, stunning visuals, and seamless functionality across platforms.

40
CHAPTER 7. REFERENCES

 R. Kothari, S. Nawar, S. Kothari, Asst. Prof. J. Jeswani (April 2021), “Game


Development using Artificial Intelligence in Unreal Engine”. IRJET

 Marvin T. Chan, Christine W. Chan, and Craig Gelowitz. (2015).


Development of a Car Racing Simulator Game Using Artificial Intelligence
Techniques. International Journal of Computer Games Technology

 David Michalík, Miroslav Jirgl, Jakub Arm and Petr Fiedler. (2021).
Developing an Unreal Engine 4-Based Vehicle Driving Simulator Applicable
in Driver Behavior Analysis—A Technical Perspective. Safety.

 Michael, Jeanny Pragantha, Darius Andana Haris. (2020). Android Arcade-


Style Racing Game “CarsTime” With Antigravitation Theme. IOP Conference
Series: Materials Science and Engineering.

 https://dev.epicgames.com/documentation/en-us/unreal-engine/unreal-engine-
5-3- documentation

 https://docs.quadspinner.com/

 https://docs.blender.org/manual/en/latest/

41
CHAPTER 7. APPENDIX

7.1 Approval of Paper

7.2 Published Journal

42
7.1 Certificates of Publication

Certificate 1. Prof. C. U. Chauhan

Certificate 2. Mr. Aniket Tandekar

43
Certificate 3. Mr. Manav Patil

Certificate 4. Ms. Vijaya Adamane

44
Certificate 5. Ms. Aastha Petkar

Certificate 6. Ms. Anuja Panchariya

45

You might also like