0% found this document useful (0 votes)
25 views45 pages

NEHA RAWAT

The project report titled 'Simba: The Adventure Game' is submitted by Neha as part of her Master's in Computer Applications. It covers the development of a game using Python, detailing its features, history, and applications, along with a comprehensive system design and user interface. The report includes acknowledgments, a certificate of originality, and a structured table of contents outlining various chapters related to Python and game development.

Uploaded by

NARENDER
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
25 views45 pages

NEHA RAWAT

The project report titled 'Simba: The Adventure Game' is submitted by Neha as part of her Master's in Computer Applications. It covers the development of a game using Python, detailing its features, history, and applications, along with a comprehensive system design and user interface. The report includes acknowledgments, a certificate of originality, and a structured table of contents outlining various chapters related to Python and game development.

Uploaded by

NARENDER
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 45

PROJECT REPORT

ON
“Simba”
The Adventure Game

SUBMITTED IN PARTIAL FULFILLMENT OF THE


REQUIREMENT FOR THE AWARD OF THE
DEGREE IN
MASTERS OF COMPUTER APPLICATION (MCA)

M.K.M. COLLEGE OF MANAGEMENT & INFORMATION TECHNOLOGY


FOR GIRLS, HODAL
Session: 2024-2026

Submitted To: Submitted By:


Ms.Bhanu Tomar Name - Neha
Class: MCA 2nd Sem
Regn.No.-2111421080

Acknowledgement
I take this opportunity to thank our teachers and friends who helped me throughout the
project. First and foremost, I would like to thank my guide for the project Ms. Bhanu
Tomar for the valuable advice and time during development of project.

Neha
MCA 2nd SEM

CERTIFICATE
This is to certify that Neha , Class – MCA 2nd Sem. has carried out the project word title “Simba:
The Adventure Game” under the supervision of Ms.Bhanu Tomar.
This project work is originally work carried out by the student and has not been submitted to any
other college/institute to the best of knowledge.

Supervisor
Ms. Bhanu Tomar

 Table of Contents
Chapter 1-
1.1: Introduction of Python…………………………………………………………………………….6
1.2: History of Python…………………………………………………………………………………….7
1.2.1: Who invented Python?......................................................................7
1.2.2: Evolution of Python…………………………………………………………………………8
1.3: Features of Python…………………………………………………………………………………..10
1.4: Framework & Library……………………………………………………………………………….12
1.5: Python Application in Real World…………………………………………………………….14
1.6. Requirement ……………………………………………………………………………………………16
Chapter 2 –
Introduction…....................................................................................................22
2.1: Game Overview …………………………………………………………………………………….22
2.2: Synopsis …………………………………………………………………………………………………22
2.3: Target Audience …………………………………………………………………………………….22
2.4: Game Description ………………………………………………………………………………….23
2.5: Game Objectives ……………………………………………………………………………………23
2.6: Why game as a project? …………………………………………………………………………24
2.7: Methodology ………………………………………………………………………………………….24
Chapter 3 –
3.1: Feasibility Study ……………………………………………………………………………………..25
3.2: Financial Feasibility …………………………………………………………………………………25
3.3: Technical Feasibility ………………………………………………………………………………..25
3.4: Economic Feasibility ………………………………………………………………………………..26
3.5: Legal Feasibility………………………………………………………………………………………..26
Chapter 4 –
System Design …………………………………………………………………………………………………27
4.1: List of Classes and their Responsibilities: ………………………………………………….27
4.2: Player Weapon Class Diagram ……………………………………………………………………29
Chapter 5 –
Characters, Weapons & Other Objects …………………………………………………………….30
5.1: Main Character………………………………………………………………………………………….30
5.2: Enemy Character……………………………………………………………………………………….30
5.3: NPC Characters …………………………………………………………………………………………30
5.4: Player Weapons ………………………………………………………………………………………..30
5.5: Other Objects …………………………………………………………………………………………..30
Chapter 6 –
6.1: Level Design ……………………………………………………………………………………………..31
6.2: Menu Scene ……………………………………………………………………………………………..31
6.3: Dungeon_1 Scene …………………………………………………………………………………….31
6.4: Dungeon_2 Scene …………………………………………………………………………………….31
Chapter 7 –
7.1: Game Design ……………………………………………………………………………………………32
7.2: Game Rules ……………………………………………………………………………………………..32
7.4: Game Structure ……………………………………………………………………………………….33
7.5: Game Play ………………………………………………………………………………………………..34
7.6: Menu Camera ………………………………………………………………………………………….34
7.7: Game Camera…………………………………………………………………………………………..34
7.8: Animation States …………………………………………………………………………………….35
7.8.1 : Player ………………………………………………………………………………………………35
7.8.2 : Enemies ……………………………………………………………………………………………35
7.8.3 : Environment ……………………………………………………………………………………35
7.12 : UI ………………………………………………………………………………………………………….35
7.13: Audio………………………………………………………………………………………………………35
Attempts to make game more fun …………………………………………………………………36
Chapter 8 –
User Interface ………………………………………………………………………………………………….38
8.1: Select or Unlock Character Skin Menu in Main Menu……………………………….38
8.2: Character Menu in Game Scenes ………………………………………………………………39
8.2.1 : Pause Menu …………………………………………………………………………………………40
8.2.1 : Death Menu………………………………………………………………………………………….41
Chapter 9 –
Conclusion ………………………………………………………………………………………………………42
9.1: Future Plans …………………………………………………………………………………………...42
Chapter 1

1.1: Introduction of Python:-

Python is an easy to learn, powerful programming language. It has efficient high-level data structures and a
simple but effective approach to object-oriented programming. Python’s elegant syntax and dynamic typing,
together with its interpreted nature, make it an ideal language for scripting and rapid application
development in many areas on most platforms.

The Python interpreter is easily extended with new functions and data types implemented in C or C++ (or
other languages callable from C). Python is also suitable as an extension language for customizable
applications.

Why Python?
 Python works on different platforms (Windows, Mac, Linux, Raspberry Pi, etc).
 Python has a simple syntax similar to the English language.
 Python has syntax that allows developers to write programs with fewer lines than some other
programming languages.
 Python runs on an interpreter system, meaning that code can be executed as soon as it is written.
This means that prototyping can be very quick.
 Python can be treated in a procedural way, an object-oriented way or a functional way.

 Python Syntax compared to other programming languages


 Python was designed for readability, and has some similarities to the English language with
influence from mathematics.
 Python uses new lines to complete a command, as opposed to other programming languages
which often use semicolons or parentheses.
 Python relies on indentation, using whitespace, to define scope; such as the scope of loops,
functions and classes. Other programming languages often use curly-brackets for this purpose.

Example

print("Hello, World!")
1.2: History of Python:-
Python is a widely used general-purpose, high-level programming language. It was initially designed
by Guido van Rossum in 1991 and developed by Python Software Foundation.

It was mainly developed for emphasis on code readability, and its syntax allows programmers to express
concepts in fewer lines of code.

 Who invented Python?

In the late 1980s, history was about to be written. It was that time when working on Python started.
Soon after that, Guido Van Rossum began doing its application-based work in December of 1989
at Centrum Wiskunde & Informatica (CWI) which is situated in the Netherlands. It was started as a
hobby project because he was looking for an interesting project to keep him occupied during
Christmas.

The programming language in which Python is said to have succeeded is ABC Programming
Language, which had interfacing with Amoeba Operating System and had the feature of exception
handling.

He had already helped create ABC earlier in his career and had seen some issues with ABC but
liked most of the features. After that what he did was very clever.

He had taken the syntax of ABC, and some of its good features. It came with a lot of complaints
too, so he fixed those issues completely and created a good scripting language that had removed all
the flaws.

The inspiration for the name came from the BBC’s TV Show – ‘ Monty Python’s Flying Circus’,
as he was a big fan of the TV show and also he wanted a short, unique and slightly mysterious name
for his invention and hence he named it Python! He was the “Benevolent dictator for life” (BDFL)
until he stepped down from the position as the leader on 12th July 2018. For quite some time he
used to work for Google, but currently, he is working at Dropbox.

 Evolution of Python

The language was finally released in 1991. When it was released, it used a lot fewer codes to
express the concepts, when we compare it with Java, C++ & C.
Its design philosophy was quite good too. Its main objective is to provide code readability and
advanced developer productivity. When it was released, it had more than enough capability to
provide classes with inheritance, several core data types of exception handling and functions.
Following are the illustrations of different versions of Python along with the timeline.
1.3: Features of Python:-

1.3.1. Free and Open Source

Python language is freely available at the official website and you can download it from the given
download link below click on the Download Python keyword. Download Python Since it is open-
source, this means that source code is also available to the public. So you can download it, use it
as well as share it.

1.3.2. Easy to code

Python is a high-level programming language. Python is very easy to learn the language as
compared to other languages like C, C#, Javascript, Java, etc. It is very easy to code in the Python
language and anybody can learn Python basics in a few hours or days. It is also a developer-
friendly language.

1.3.3. Easy to Read

As you will see, learning Python is quite simple. As was already established, Python’s syntax is
really straightforward. The code block is defined by the indentations rather than by semicolons or
brackets.

1.3.4. Object-Oriented Language


One of the key features of Python is Object-Oriented programming. Python supports object-
oriented language and concepts of classes, object encapsulation, etc.

1.3.5. GUI Programming Support

Graphical User interfaces can be made using a module such as PyQt5, PyQt4, wxPython, or Tk in
Python. PyQt5 is the most popular option for creating graphical apps with Python.

1.3.6. High-Level Language

Python is a high-level language. When we write programs in Python, we do not need to remember
the system architecture, nor do we need to manage the memory.

1.3.7. Large Community Support


Python has gained popularity over the years. Our questions are constantly answered by the
enormous StackOverflow community. These websites have already provided answers to many
questions about Python, so Python users can consult them as needed.

1.3.8. Easy to Debug

Excellent information for mistake tracing. You will be able to quickly identify and correct the
majority of your program’s issues once you understand how to interpret Python’s error traces.
Simply by glancing at the code, you can determine what it is designed to perform.

1.3.9. Python is a Portable language

Python language is also a portable language. For example, if we have Python code for Windows
and if we want to run this code on other platforms such as Linux, Unix, and Mac then we do not
need to change it, we can run this code on any platform.

1.3.10. Python is an Integrated language

Python is also an integrated language because we can easily integrate Python with other languages
like C, C++, etc.

1.3.11. Interpreted Language

Python is an Interpreted Language because Python code is executed line by line at a time. like
other languages C, C++, Java etc. there is no need to compile Python code this makes it easier to
debug our code. The source code of Python is converted into an immediate form called bytecode.

1.3.12. Large Standard Library

Python has a large standard library that provides a rich set of modules and functions so you do not
have to write your own code for every single thing. There are many libraries present in Python
such as regular expressions, unit-testing, web browsers, etc.

1.3.13. Dynamically Typed Language

Python is a dynamically-typed language. That means the type (for example- int, double, long, etc.)
for a variable is decided at run time not in advance because of this feature we don’t need to specify
the type of variable.
1.3.14. Frontend and backend development

With a new project py script, you can run and write Python codes in HTML with the help of some
simple tags <py-script>, <py-env>, etc. This will help you do frontend development work in
Python like javascript. Backend is the strong forte of Python it’s extensively used for this work
cause of its frameworks like Django and Flask.

1.3.15. Allocating Memory Dynamically

In Python, the variable data type does not need to be specified. The memory is automatically
allocated to a variable at runtime when it is given a value. Developers do not need to write int y =
18 if the integer value 15 is set to y. You may just type y = 18.

1.4: Framework & Library:-


Frameworks and Libraries are the backbones of Python. These are the ones that help in working
under different domains and make the work easier. There are amazing frameworks and libraries
which you can go through and build a wonderful career.

A framework is a pre-defined component that makes development easier. It is a set of tools


developed using Python to build reliable software. It may also include a library. Libraries are
predefined functions used to perform small operations when stuck in the development process.

Some Commonly Python Frameworks and Libraries Based on Categories –

 Frameworks Based on Web Development:

 Django
 CherryPy
 Flask
 Bottle

 Libraries Based on Data Science, Data Analyst & Machine Learning:

 NumPy
 Pandas
 Matplotlib
 BeautifulSoup4
 TensorFlow
 SciKit Learn
 Keras
 SciPy
 NLTK
 TextBlob

 Libraries Based on Automation Testing:

 Selenium
 PyTest
 Splinter
 Pywinauto
 Nose2

 Libraries Based on Game Development:

 PyGame
 Kivy
 Pyglet
 PyKyra
 Panda3D

 Libraries Based on Ethical Hacking:

 Python Hash
 Requests
 Scapy
 pylibnet
 Cryptography
 Python-Nmap

1.5. Python Application In Real World


Python has been at the forefront of Machine learning, Data Science, and Artificial
Intelligence innovation.

Python applications offers provides ease in building a plethora of apps, web development
processes, and a lot more.
1.5.1. Web Development:

It is one of the most astonishing applications of Python. This is because Python comes up with
a wide range of frameworks like Django, Flask, Bottle, and a lot more that provide ease to
developers. Furthermore, Python has inbuilt libraries and tools which make the web
development process completely effortless.
The use of Python for web development also offers:
 Amazing visualization
 Convenience in development

 Enhanced security
 Fast development process

1.5.2. Machine Learning and Artificial Intelligence

Machine Learning and Artificial Intelligence are the hottest subjects right now. Python along with
its inbuilt libraries and tools facilitate the development of AI and ML algorithms. Further, it offers
simple, concise, and readable code which makes it easier for developers to write complex
algorithms and provide a versatile flow.

Some of the inbuilt libraries and tools that enhance AI and ML processes are:
 Numpy for complex data analysis
 Keras for Machine learning
 SciPy for technical computing
 Seaborn for data visualization

1.5.3. Data Science

Data science involves data collection, data sorting, data analysis, and data visualization. Python
provides amazing functionality to tackle statistics and complex mathematical calculations.
The presence of in-built libraries provides convenience to data science professionals. Some of the
popular libraries that provide ease in the data science process are Tensor Flow, Pandas, and Socket
Learning. These libraries provide an ecosystem for fine-tuning data models, data preprocessing,
and performing complex data analysis.

1.5.4. Game Development

With the rapidly growing gaming industry, Python has proved to be an exceptional option for
game development. Popular games like Pirates of the Caribbean, Bridge Commander, and
Battlefield 2 use Python programming for a wide range of functionalities and add-ons.

The presence of popular 2D and 3D gaming libraries like pygame, panda3D, and Cocos2D makes
the game development process completely effortless.
1.5.5. Audio and Visual Applications

Audio and video applications are undoubtedly the most amazing feature of Python. Python is
equipped with a lot of tools and libraries to accomplish your task flawlessly. Applications that are
coded in Python include popular ones like Netflix, Spotify, and YouTube. This can be handled by
libraries like
 Dejavu
 Pyo
 Mingus
 SciPy
 OpenCV

1.5.6. Software Development

Python is just the perfect option for software development. Popular applications like Google,
Netflix, and Reddit all use Python.

This language offers amazing features like:


 Platform independence
 Inbuilt libraries and frameworks to provide ease of development.
 Enhanced code reusability and readability
 High compatibility

Apart from these Python offers enhanced features to work with rapidly growing technologies like
Machine learning and Artificial intelligence. All these embedded features make it a popular choice
for software development.

1.5.7. CAD Applications

CAD refers to computer-aided design; it is the process of creating 3D and 2D models digitally.
This application has replaced manual drift and is used by architects, product designers, and
construction managers to design products with extremely high consistency.
Python is embedded with amazing applications like Blender, Free CAD, open cascade, and a lot
more to efficiently design products. These provide enhanced features like technical drawing,
dynamic system development, recordings, file export, and import.

1.5.8. Business Applications

Python offers excellent security and scalability features that make it perfect for delivering high-
performance business applications.

It has inbuilt libraries and tools like:


 Odoo is business management software that provides you with an automated solution for your
business process.
 Tryton is easy-to-use open-source business software. It has fully integrated features like
financial accounting, sales, CRM, purchasing, shipping, and the list goes on.

All these distinguishing features make it fit for creating business applications.

1.5.9. Desktop GUI

Python is an interactive programming language that helps developers to create GUIs easily and
efficiently. It has a huge list of inbuilt tools for Python usage are PyQT, kivy, wxWidgets, and
many other libraries like them to build a fully functional GUI in an extremely secure and efficient
manner.

1.5.9 Web Scraping Application


Web scraping is an automated process used to extract information from websites in an easier and
faster way. The information is used by researchers, organizations, and analysts for a wide variety of
tasks. Python has a wide range of features that make it suitable for web scraping some of them are:
 A concise syntax enhances readability and saves you time.
 A wide range of libraries and tools like pandas, matplotlib, and Selenium makes the web
scraping process easy and efficient.
 Easy to use and understand

1.6. Requirements

Hardware Requirements:-
 Desktop/laptop

 Operating System(WINDOW10/11, LINUX)

 8GBRAM

 SSD prefer than HDD for processing and output.

Software Requirements:-
 Idle(Python)

Installing:-
To install python, you have to download the latest version of python from the Python official
website. This gives the latest version of Python to download on your Windows operating system.
See the screen below giving you a button with text “Download Python 3.11.3“.Click this button to
download the latest version of Python on your Windows. 11

The version of Windows can be any including Windows 7, Windows 10 and all other versions of
Windows.

How to Install Python on Windows After Download


After you download the latest version of Python, you have to double click Python setup installer.
This gives the below-given image screen to start the process with the two options given below.

 Install Now

 Customize Installation
Let’s start with the “Install Now” process first:

Method1:-Install Python on Windows Using “Install Now”

This process installs the Python on windows automated location. You can check the installation
location in the image given below. The location automatic generated for fast process of installation.

The “Install Now” link is given as in the screen below. This gives you the automated installation
location as given in the link.
But before you click the link, you have to click the check box. The checkbox set the PATH for
Python on your windows on installation. To add the PATH, you just need to click the checkbox
given in the image. The checkbox contains the text “Add Python3.7 to PATH” above with of 12
Now, click the “InstallNow” link given in the above image. This starts the installation process of
Python
But before you click the link, you have to click the checkbox. The checkbox set the
PATH for Python on your windows on installation. To add the PATH, you just need to
click the checkbox given in the image. The check box contains the text “Add Python 3.7
to PATH” above with of
Now, click the “Install Now” link given in the above image. This starts the installation

process of Python.

You can check the installation progress as given in the screen above. This installs all the
libraries of Python on to your local system.

After the progress is completed, you will see a setup successful message. The
successful message screen is as given below.
Click the close button to complete the process and open Python.

Method2:-Install Python on Windows Using “Customize Installation”

To install the Python on a specified location of the computer system. Follow the steps given
below.
Step1: First click the checkbox with the text “Add Python3.7 to PATH“. This adds the
Path of Python on your computer system.

After that, You have to select the link option with the text “Customize Installation“. This starts
the installation process of Python on to a specified location.
Step2: In this step, the screen is as shown in the image below. You don’t need to click
any checkbox here. Just click the “Next” button here.
Step3:

In this step, you have to browse and select the location where you want Python.

The above image installs the Python software in Python folder of C drive. Click the
“Install” button to start the installation progress.
The installation progress shows the addition of all Python files and libraries.
After the progress is completed. You will get a successful message of Python installation.
Chapter 2

Introduction
This report describes the process involved in making 2D Top-Down Simba the adventure game,
Simba: The Adventurer with Unity3D.

This game is for both PC Standalone and Android devices. This chapter discusses the game
overview including the synopsis, target audience, description, then focuses on the game design,
describing how the game is implemented.

2.1. Game Overview


The primary objective of the player is to gain experience by killing the enemies, he can only
achieve that if the clears the entire dungeon that he has been assigned to. Throughout the
dungeon, there are various enemies, chests, obstacles.

Each area of the dungeon has different enemies with different health, and damage, he can
only go further if he clears the current area that he can enter and exit. This section elaborates
the synopsis, target audience, software used and finally game description.

2.2. Synopsis
Simba, a first grade adventurer, dreams to become the seventh (highest) grade adventurer. To
accomplish his dreams he needs to complete all of the seven levels, Will Riko be able to
accomplish his dreams?

2.3. Target Audience


2D RPG games are extremely popular . The RPG game called Soul Knight has over 10,000,000+
installs on google play.

This shows that a large base of players are actively interested in this genre and gives me a
good opportunity to tap into that market by following the traditions that have already set for
this genre. But I’m mainly targeting to casual gamers aged from 13-30.
2.4. Game Description
This game involves a single player entering a random dungeon with a sword as the weapon
after selecting a character from menu scene. The dungeon is inhabited by various creatures
that will attack the player if he goes into the area that the creatures inhabiting.

If the player successfully defeats the creatures the player gains experience points and if the
experience points are max as the current grade adventurer.
The player gets promoted and the process goes on until he is the max grade adventurer. But he
does not entirely become the max grade adventurer within a single dungeon; he has to defeat
creatures by teleporting to different levels. In this game, I have designed 4 dungeons for the
player to play and besides the creatures the dungeons have NPCs, obstacles like crates, health
restorations. Although there are 4 dungeons, the dungeons are not considerably big for the
player to take a lot time to clear the entire dungeon thus it will only take 5-10 minutes on
average without pausing the game.

2.5. Game Objectives


The major objectives of this game project are:

 To create a RPG game that will have all the functionality of traditional RPG games.
 To implement word attack as the ability.
 To implement multiple weapons with different bullets and power.

 To implement individual weapon upgrading system

 To implement various kinds of enemies that have the purpose to simply attack the
player until the death of the player.

 To add sound effects to player, enemies, weapons and other objects like doors.

 To design the game levels that will be simple yet beautiful.

 To make a User Friendly Interface that will be pleasant to look at.

 To add animations to all sorts of game objects like player, enemies, doors, water
including UI transitions.

2.6. Why game as a project?


Video games are not just any computer software which are made to benefit user’s daily life,
games are rather made for user’s entertainment purpose, so more than anything we need to pay
attention to what the user wants from the game, how to make it more entertaining, just making
any game will not do, that is why it’s more challenging because I always have to carefully
consider if I’m making developing it correctly to entertain users.

I also have to invest a lot of time on the proper game designing to make it visually accepted.
And to add that game requires a lot of scripts. The scripts are like pieces of a puzzle which
you need to put all of them together to make it work. Thus I think game is a perfect project to
prove myself as a MCA student.

2.7. Methodology

The software methodology I have used to develop this game is Agile methodology which is an
approach for developing products (in this case: games) using short iterations. The main idea
is not making the whole project from start to finish, but making small features for the current
project in small periods of time. In this way the results of each iteration are used to adjust
the project plan.
 Each iteration is like a short project in itself.

 Uses “inspect and adapt” practices to adjust the goals and measure progress.

Chapter-3
3.1. Feasibility Study
This chapter describes all the feasibilities that come as questions to both the developers
and other users during the development of software.
The chapter contains financial feasibility, technical feasibility, economic feasibility and
legal feasibility.

3.2. Financial Feasibility


SIMBA: The Adventurer is a single player offline game so there is no hosting cost, if it
developed to be a web game using WebGL, it will only consume internet data to load the ads
there.

For the mobile game players, it is completely a free to play game; the only potential reason that
it may consume internet data even though it is an offline game is the ads that this game may
have in the near future which is considered to be relatively low.

Additionally if we add some premium weapons or player skins in future the player may need to
pay to acquire them which is a choice for the players and is not must. The points mentioned
above indicate that the project is financially feasible.

3.3. Technical Feasibility


The tools and technology that were used in the making of the Riko: The Adventurer are:

Game Design: Tiled Image Editor & Animation:

Adobe Photoshop CC 2017 Code Editor: Visual Studio Code Programming Language:

Python Module : Pygame

Audio Editor: Audacity 2.1.3


These mentioned above technologies are completely free for students. There were no other
additional tools required to make this game. Most of my time to develop the game was
invested in the game Design and animation, tiled and the code editor, Visual Studio.

Tiled itself also has animation editor which can be used to make simple animations that is
related to moving objects, changing sprites, and sprite editor which can separate sprites which
is good enough for this game.

The simplicity of the project along with the facts mentioned above proves that this software is
also technically feasible.

3.4. Economic Feasibility


The resources that are required for this project are:
 Development machine. Any regular laptop/PC with a Minimum Ram of 4GB and a
decent GPU can be used for the development of this game.
 Technical tools and software. As mentioned previously, the toolsneeded to develop this
software are available to developers at no charge.
 Game Developers and Graphic Designers. Although for now I have used free assets to
design the game, if I want to release the game for monetizing purposes this project will
also require graphic designers for the game to get proper recognition. As these
resources are largely free of cost, the only expenses lie in the payment of the
programming individual(s), graphic designers and the machine. Neither of these is
scarce in availability nor are they extremely expensive.

3.5. Legal Feasibility


The game assets that were used to make this game are completely free with either CC0 or CC3
licenses so I can use them as long as I properly credit them which I already did by uploading
the project to github. And as mentioned in the previous sections this game uses freely available
software and tools which are intended for the use of game developers everywhere. There
cannot be any conflict regarding plagiarism of any other game, because I have already followed
the rules of the licenses to make this game.

Chapter 4
System Design
4.1. Number Class Name Responsibility

1) AudioController.py Responsible to play and shuffle background music, play various


sound effects.

2) Player.py Is one kind of Enemy, which has unique player attacking functionality than
the other enemies

3) Bullet.py Moves the player bullet, damage enemy, if it hits the wall then
explode.
4) CameraController.py Follow the player.
5) CameraShake.py Shake the camera when shooting
6) CharacterMenu.py Is part of UI, responsible to show player’s current stats, the in game
system.
7) CharacterSelectionCamera.py Is only part of the Main Menu scene that follows the
specific player which MenuController.py sends, showing zoom in, zoom out
animations.
8) Chest.py Grant the player either gold or weapons
9) Collectable.py Is child class of Collidable.py which is same as collidable.py objects but
only was created to manage trigger game Objects like chests.
10) Damage.py Is like struct only contains 3 variables (origin, damageAmount,
pushForce).
11) DataController.py It has the functions to load and save game.
12) Enemy.py Is a child class of Mover.py which is responsible to move the melee enemy,
change its animation state, manipulating its health bar, and controls receive damage
system and death flow.

13) EnemyHitBox.py Is part of melee enemies and responsible attack the


EnemyProjectile.py Moves the enemy bullet, damage player, if it hits the wall then
explode.

14) Paryicles.py Is a child class of Mover.py which is responsible to move the ranged
enemy, change its animation state, manipulating its health bar, and controls receive
damage system and death flow.

15) EnemyShoot.py Contains several types of enemy bullet movements that be used in
ranged enemies to attack the player.

Table:- 1
Number File name Responsibility
1. AudioController.py
2. Player.py
3. Settings.py
4. Bullet.py
5. Tiles.py
6. Ui.py
7. Particles.py
8. Level.py
9. GameData.py
10. Enemy.py
11. Decoration.py
12. EnemyProjectile.py
13. EnemyShoot.py
14. DataController.py
15. Overworld.py

GAME Structure:=
Level Selection Screen :
Chapter 5
Characters, Weapons & Other Objects
This is one of the interesting chapters that you may read with enthusiasm, because it
contains lots

5.1. Enemy Characters

Table 2: List of Enemies with States


5.2. NPC Characters
Chapter – 6

6.1. Dungeon_1 Scene

6.2. Dungeon_2 Scene

There are also animations involved in designing the level like water, lava flow animations but
that will be described in the Game Design Chapter
Chapter 7

7.1. Game Design


Game design is the study of how to make the game functional by setting game rules, game
mechanics, game play which I already briefly discussed in Chapter 1 but now I will go through
them thoroughly.

I will also discuss more about what I did to make the game more fun rather than visually
accepted with the existing resources I have and that is part of game design because even if we
make a fancy game with good graphical work if the game design is not well enough it will not
attract the user.

So I invested a lot of time on doing this section, since without it the game is incomplete.

7.2. Game Rules


The game starts with player entering the menu scene where player can select a character, he
can also unlock skin during selection if wish, in menu scene the player can move around
freely until he wishes to enter the dungeon. In the dungeons the player can also move freely
around, shoot bullets and switch weapons if he has more than one.

There are multiple enemies inhabiting with different damage points and health that will attack
the player if it enters in their inhabitant area. Initially player has no target so he can freely
shoot but when player goes near to any kind of enemies the weapon locks the target so player
can only shoot it when triggering the shooting event.

If player successfully kills the enemy it gains experience points, in the process if experience
is max to current grade of the player, the player gets promoted with gaining back the full
health and the level only completes if he killed all the enemies.

The levels are also filled with chests in random places which can grant the player gold or
new weapons. In games scenes there is also NPCS that player can communicate with.
7.3. Game Structure
 Character
 Selection
 Quit Screen
 Choose Character
 Screen
 Game play (in Random Dungeon)
 Door opened to teleport (if all enemies died)
 Loosing Screen (if died)
 Pause Screen
 Shop Screen

7.4. Game Structure Diagram

7.5. Game Play


The following figures illustrate the inputs to control the player. For PC we are using keyboard
keys to move the player and mouse to shoot and switch weapons. For mobile we are using
mobile joystick touch inputs and 2 separate buttons for shooting and switching weapon.

Game Controls (PC)


Figure 19: PC Keyboard Inputs Space
Move up and down
Left and right
Move Backward 6.3 Game Plays
The following figures illustrate the inputs to control the player. For PC we are using keyboard
keys to move the player and mouse to shoot and switch weapons. For mobile we are using
mobile joystick touch inputs and 2 separate buttons for shooting and switching weapons.

7.6. Animation States


7.6.1. Player
The player has a total of 5 running animation states: player_side, player_up, player_down,
player_sideUp, player_sideDown, this is 8 directional movements. According to the direction of
the player looking at the state changes. If the player has weapon, its position also changes
according to the player’s states. The following image illustrates the idea of 8 directional
movements:

7.6.2. Enemies
They have two animation states: idle state, attack state. Initially enemies’
animation state is idle, if player enters in their inhabitant area the enemies’ state
transition to attack state. This mechanism applies to all of the enemies.

7.6.3.NPCs
The NPCs only have one animation state, which is idle.

7.6.4.Environment

Few of the game objects that were used to design environment have animations
which only have a single state.
The following game objects have animations in them:

Hills: It has the river wave animation which can be seen in Dungeon_1 scene.
TREES: It has water flowing animation which can be seen in Dungeon_1 scene.
Lava: It has lava wave animation which can be seen in Dungeon_2, Dungeon_3
scene.

Water: It has water wave animation which can be seen in Dungeon_2 scene.
Fire Torch: It has fire movement animation which can be seen in all of the
dungeons.

Healing Fountain: It has water flowing animation which can be seen in


Dungeon_1 scene.

7.7. UI
There are animation transitions to show the different UI panels, and all of were animated in
Unity and have two animations states: “Hide” and “Show”.

Hide simply hides the panel by either fade in transition or moving the panel to out of the
screen space and show animation does the opposite of hide animation.

7.8. Audio
The following table shows the list of audio clips with description I have used to develop this
game, each of the audio clips may play in several objects like same audio clip is being played
in several enemies, but I have changed the pitch of the audio clip to distinguish sound effect for
enemies.

Name Category Description Auvic - Heal Me Background Music Plays during the game
Brainwave - Contingency Of Pink
Background Music Plays during the game
Glitch Hop Auvic ft. Pipo Fernandez - Indignation
Background Music
Background Music
Plays during the game
Orange Wolke - Stephen's Tiny Cafe Background
Music Plays during the game

 Attempts to make game more fun


Although common mechanics can make the game functional but that’s not enough for
entertainment purpose, to entertain the users we need to pay attention to other parts of the game.

With keeping that mind set I have included the following features in the game to make the more
fun.

 Screen Shake :

When player shoots the camera is slightly shaking that gives an impression that an event is
occurring.
 Environment Animations:
I have added river wave, lava, water wave, background animations to make the game
visually more beautiful.

 Background Music:

Instead of playing a single BG music I have added multiple BG music that we usually get to
hear in car racing with the order being totally randomized.

 Sound Effects:
Instead of playing same sound clip when player is shooting, I have added different sound
clips for each of them, which helps us to distinguish the weapons, and added other sounds
effects that have been playing as player hurt, enemy hurt, victory, game over clip.

 Character Color Change :


Just hurt sound clip being played does not entirely indicate the character got hurt because
you cannot tell who got hurt that is why changing the color comes in handy in minimal games
like this and I implemented that as well.
 Explosion effect:
Just destroying the bullets when come in contact seems static and looks bad that is
why adding a simple explosion effect makes a lot difference.

 Shooting effect:
Adding a weapon trigger effect also makes a lot difference.

 Enemy death effect :


A simple death effect instead of enemy vanishing suddenly outspokenly better.

 Enemy health bar:


Previously my demo version had no health bar and when my supervisor
was trying the demo version, he could not see the progress of hitting
enemies which is universal for all the gamers, if there are no health bar for
the enemies we cannot tell if we are really damaging the enemy, thus
added enemy health bar in my current version.
 Popup Text :
This is a must have feature for all the 2D RPG games, and thus added in my game.

 Toast Message :
Popup text can be used to in various places to inform the player but it is not a good
approach to use for the important things like when game ends a text pop up that level is
completed but that does not sound rewarded enough so I have added toast message for
the special events like level completion, character selection, new weapon reception.

#MAIN CODE
import pygame, sys from
settings import *
from level import Level from overworld
import Overworld from ui import UI class
Game:
def init (self):
# game attributes
self.max_level = 2
self.max_health = 100
self.cur_health = 100
self.coins = 0

# audio self.level_bg_music=pygame.mixer.Sound('../audio/level_music.wav')
self.overworld_bg_music=pygame.mixer.Sound('../audio/overworld_mu sic.wav')
# overworld creation
self.overworld = Overworld(0,self.max_level,screen,self.create_level) self.status
= 'overworld' self.overworld_bg_music.play(loops = -1)
# user interface
self.ui = UI(screen)
def create_level(self,current_level):
self.level = Level(current_level,screen,self.create_overworld,self.change_coins,self.
change_health)
self.status = 'level'
self.overworld_bg_music.stop()
self.level_bg_music.play(loops = -1)
def create_overworld(self,current_level,new_max_level): if
new_max_level > self.max_level:
self.max_level = new_max_level
self.overworld=Overworld(current_level,self.max_level,screen,self.creat e_level)
self.status = 'overworld'
self.overworld_bg_music.play(loops = -1)
self.level_bg_music.stop()

def change_coins(self,amount):
self.coins += amount

def change_health(self,amount):
self.cur_health += amount def
check_game_over(self):
if self.cur_health <= 0:
self.cur_health = 100
self.coins = 0
self.max_level = 0
self.overworld = Overworld(0,self.max_level,screen,self.create_level)
self.status = 'overworld'
self.level_bg_music.stop() self.overworld_bg_music.play(loops = -
1)
def run(self):
if self.status == 'overworld':
self.overworld.run()
else: self.level.run()
self.ui.show_health(self.cur_health,self.max_health)
self.ui.show_coins(self.coins) self.check_game_over()
# Pygame setup
pygame.init()
screen = pygame.display.set_mode((screen_width,screen_height))
clock = pygame.time.Clock()
game = Game()
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
screen.fill('grey')
game.run()
pygame.display.update()
clock.tick(60
Chapter 8
User Interface

8.1. Select or Unlock Character Skin Menu in Main Menu


In this menu player can unlock new skin, if not simply select the available player skin.
8.2. Character Menu in Game Scenes
In this menu player can separately upgrade weapons, unlock new skin with gold, also can see
his/her stats
8.2.1. Death Menu
From Death Menu the player can restart game or can go back to main menu.
8.2.2. NPC Dialogue Box
NPC Dialogue Box shows what’s the NPC wants to say to the player and
has continue button on it for the player to end the conversation.
Chapter 8

Conclusion
In this game, I have implemented character unlock and selection system, achievable weapons and
its individual weapon upgrade system, player experience gaining system, various types of AI
enemies with different behavior and activities with following the idea of OOP, player and enemy
receiving damage system, player reward system, added different effects to most of the player’s
intractable objects and also added animations to all of the possible game objects including the user
interface.
This game is solely made for the user’s entertainment purpose and its principle objective was to
make a game that is similar to old Pixel Art RPG games but yet to have modern vibe.

8.1. Future Plans


This game is made for PC and Android at the present. There are many scopes available for the
improvement of this game including the additions of other functionalities.
Some of the plans for the future of this application could possibly be:
 To make an IOS version.
 To change the game art entirely since for now I’m using free assets to design the
levels.
 To add more dungeons and increase player grade’s system.
 Add more different enemies in the game
 Adding mission giver NPCS.
 Adding pet that follows the player and help him/her in the combat.

You might also like