ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM
BÁO CÁO ĐỒ ÁN 1
ĐỀ TÀI:
MEOW KNIGHT
Giảng viên:
Trần Thị Hồng Yến
Sinh viên thực hiện:
Nguyễn Tuấn Kiệt
Thành phố Hồ Chí Minh, năm 2022
1
VIETNAM NATIONAL UNIVERSITY - HO CHI MINH CITY
UNIVERSITY OF INFORMATION TECHNOLOGY
THE FACULTY OF SOFTWARE ENGINEERING
PROJECT 1 REPORT
PROJECT:
MEOW KNIGHT
Instructor:
Trần Thị Hồng Yến
Student:
Nguyễn Tuấn Kiệt
Hồ Chí Minh, year 2022
2
Document change record sheet
Date
Version Description
Authors
20/12/2022
1.0
Nguyễn Tuấn
Kiệt
Disclaimer:
All of the resources in game are free for commercial usages, or,
drawn by myself. Every credits have been listed in Credit
Section (this document), in Credit File (the game folder) and in
Credit Board (in game).
3
Table of Contents
Table of Contents ................................................................................................................ 4
Images Table of Content ..................................................................................................... 6
Acknowledgement .............................................................................................................. 7
Detailed Outline .................................................................................................................. 8
Chapter I: Introduction ..................................................................................................... 12
I. Basic Information ....................................................................................................... 12
1. Group Information ................................................................................................ 12
2. Project Information ............................................................................................... 12
3. Technology Used ................................................................................................... 12
II. Statement Of The Project ......................................................................................... 14
1. Story ...................................................................................................................... 14
2. Brief About Entities And Objects In Game ............................................................ 15
3. Functional Requirements ...................................................................................... 18
4. Non-functional Requirements .............................................................................. 19
Chapter II: Use Case .......................................................................................................... 20
I. User story ................................................................................................................... 20
II. Use Case Models ....................................................................................................... 21
Chapter III: Data Design .................................................................................................... 43
Chapter IV: Structural Design............................................................................................ 44
I. Core Game Loop: ....................................................................................................... 44
II. Progression ............................................................................................................... 44
Chapter V: Interface Design .............................................................................................. 45
I. Regulation .................................................................................................................. 45
II. List Of UIs: ................................................................................................................. 45
III. Details Description ................................................................................................... 46
Chapter VI: Installation ..................................................................................................... 52
Chapter VII: Conclusion..................................................................................................... 53
4
I. Result ......................................................................................................................... 53
II. Limitations................................................................................................................. 53
References ........................................................................................................................ 54
5
Images Table of Content
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
1: Godot ................................................................................................................ 12
2: GitHub .............................................................................................................. 14
3: Player Use Case Diagram ................................................................................. 21
4: Blue Slime Use Case Diagram ............................................................................ 22
5: Orange Slime Use Case Diagram ....................................................................... 22
6: Green Frog Use Case Diagram........................................................................... 23
7: Blue Frog Use Case Diagram ............................................................................. 23
8: One-Eye Bat Use Case Diagram......................................................................... 24
9: Slime Knight Use Case Diagram ........................................................................ 24
10: Frog Wizard Use Case Diagram ....................................................................... 25
11: Bad Bat Use Case Diagram .............................................................................. 25
12: The Meow Knight Use Case Diagram .............................................................. 26
13: Core Game Loop .............................................................................................. 44
14: Title Screen...................................................................................................... 46
15: Status UI - HP & MP......................................................................................... 47
16: Coins Counter .................................................................................................. 47
17: Main Menu ...................................................................................................... 48
18: Options ............................................................................................................ 49
19: Shop Window .................................................................................................. 50
20: Confirm Dialog Window .................................................................................. 51
21: Inventory ......................................................................................................... 51
6
Acknowledgement
Have been studying and training in University of Information
Technology – Hồ Chí Minh City as a Software Engineering
student, I now have the fundamental knowledge and practical
abilities needed to attend Project 1.
I would like to offer my sincere appreciation to those who made it
possible to complete this course:
To University of Information Technology. This is where I
created my base programming skills. Without taking part in our
university, I wouldn’t have a chance to pursue my passion.
To Mrs. Yến. Without your enthusiastic help and guidances,
the development would not process as I had planned.
To Juan Linietsky, Ariel Manzur and Godot Community.
Studying and using Godot is one of my best experience in my
“game dev” lifetime. Thanks you for creating a tool that can make
any imagination possible.
And finally, to my family, my love, all the teachers and staffs
in the university, my friends. You are my reasons to keep working.
In the process of doing Project 1, I will have unavoidable mistakes.
Therefore, it would be so grateful for me if I can receive guidances,
suggestions and advices from everyone. That will be my
inventories to improve and develop myself to take part in Project
2 as well as the Graduation Thesis.
I am sincerely appreciated. Wish the best of luck will always
accompany you all.
Hồ Chí Minh City 01/11/2022
Kiệt
Nguyễn Tuấn Kiệt
7
Detailed Outline
PROJECT NAME: 2D ROUGE-LITE GAME.
Instructor: M.S. Trần Thị Hồng Yến.
Implementation time: From 21/02/22 To 18/6/2022
Students:
Nguyễn Tuấn Kiệt – 20520906.
Project information:
1. Purpose of the project:
Before taking part in this course, I have studied about Object-Oriented
Progamming (OOP) and Object-Oriented Analysis & Design
(OOAD). I also have a chance to be aware of the design patterns like
singletone pattern. At that moment, I have known that developing is
not just limited at coding.
To put my knowledge into practice, I decide to make an application,
or more specifically, to make a game – my the most favorite hobby.
A game is a collection of different objects – which will help me
improve my idea about Object-Oriented. I would like to use Godot
Engine for this project, since it is designed to be friendly with
amateurs and Object-Oriented-like.
In conclusion, I do not only want to improve my skills after this course
but also want to create a fun game that has wide-range of players.
2. About game:
- The game’s main genre is Action with 2D Pixel Graphics and
gameplay of Rogue-Lite.
- As a Rouge-Lite game, we will have two main principles to follow:
Random Dungeon Generation (RDG) and Permadeath.
8
- Random Dungeon Generation is when players have various
experience each time they start a new game. The maps’ order will be
randomly placed, random enemies spawn at the areas, random
treasures,… However, to keep the game’s flow and balance in control, I
will use a technique that pre-creating a lot of maps instead of using
algorithm to draw the maps.
- Permadeath is the punishment to our players. If player gets defeated –
no matters how far they have gone, all of the process will be vanished.
- The main purpose of the game is to beat the Final Boss at the 13rd
floor. Therefore, the game will have 13 floors in total, gifts in 4th, 8th
and 12nd floors
3. Scoop
- Environmental Scope: Windows 7 or later/ On Web through Itch.io.
- Player Scope: Everyone. (Based on ESRB)
- Features Scope:
• Player can move left & right, attack, jump, roll and learn new
abilities during game flow.
• Abilities earned during a run will disappear when player was
defeated.
• Defeated causes player random negative effect.
• Player can collect golds by passing a floor or breaking boxes.
• Gold can be used to upgrade player, buy items or cure negative
effect.
• The maxium slots of inventory is 3. Start at 1 and can be expanded
through shop.
• Enter the tower (game) costs gold.
• The entrance fee increases proportional with numbers of defeats.
• Enemies have different behaviors.
• There are enemies floors and traps floors.
• Beat all enemies to pass enemies floors.
9
• Collect key to pass traps floors.
• Gifts (skills/abilities) can be learned (randomly) at floor 4 – 8 –
12.
• Random Bosses at 4 – 8 – 12.
• Final Boss at 13.
• Player turns into invincible state when taking damage.
• Can pause.
• Auto-save.
• Having some basic configurations.
4. Implementation
- Working online with instructor during the course.
- Learning GDScript and Godot for game developing.
- Researching about game design to understand in depth about how a
game functions.
- Version Control through Github.
- Using Google Docs and Microsoft Word/Excel for reports and
documents.
- Using Draw.io for diagrams.
5. Developing platforms and environments
- Platforms: Windows 10.
- Environments: Godot.
- Programming Language: GDScript.
- IDE: Null. (Writing scripts through Godot)
- VCS: Github.
- UML Tools: Draw.io.
6. Expected result
- The game runs without bugs.
10
- Beatable game. (Not impossible to finish the game)
- Collisions are well handled.
7. Work plan
Implementing time: 4 months.
Phases: 4.
Phase 1 – 1 month
- Design core game mechanics, basic gameplays, required traps and
enemies.
- Create/Find resources for game, including: graphics, audios.
- Building the base game (first prototype) containing all of the elements
that have been planned.
- Building HUDs.
- Implementing auto-save system.
Phase 2 – 1 month
- Randomizer design.
- Levels design: create various maps for the randomizer.
- Abilities, negative effects, items design.
Phase 3 – 1 month
- Bosses design.
- Game balanced.
Phase 4 – 1 month
- Debug.
- Re-balanced.
- Full realeased.
11
Chapter I: Introduction
I. Basic Information
1. Group Information
Student ID
Name
Email
20520906
Nguyễn Tuấn Kiệt
2. Project Information
•
•
•
•
Project name: Rogue-Lite Game.
Game name: Meow Knight.
Technology: Godot.
Game development environment: Windows 10.
3. Technology Used
3.1 Godot
Image 1: Godot
Godot is a cross-platform, free and open-source game engine released under
the MIT license. It was initially developed by Argentine software
12
developers Juan Linietsky and Ariel Manzur for several companies in Latin
America prior to its public release. The development environment runs on
multiple operating systems including Linux, BSDs, macOS, and Microsoft
Windows. It is designed to create both 2D and 3D games targeting PC,
mobile, and web platforms. It can also be used to create non game software,
including editors.
Godot aims to offer a fully integrated game development environment. It
allows developers to create a game, needing no other tools beyond those
used for content creation (visual assets, music, etc.). The engine's
architecture is built around the concept of a tree of "nodes". Nodes are
organized inside of "scenes", which are reusable, instanceable, inheritable,
and nestable groups of nodes. All game resources, including scripts and
graphical assets, are saved as part of the computer's file system (rather than
in a database). This storage solution is intended to facilitate collaboration
between game development teams using software version control systems.
3.2 GDScript
Godot has its own built-in scripting language, GDScript, a high-level,
dynamically typed programming language which is syntactically similar to
Python. Unlike Python, GDScript is optimized for Godot's scene-based
architecture and can specify strict typing of variables. Godot's developers
have stated that many alternative third-party scripting languages such as
Lua, Python, and Squirrel were tested before deciding that using a custom
language allowed for superior optimization and editor integration. In
version 4.0, a new feature called Typed array was implemented on
GDScript. This allows users to easily change a regular array to typed and
vice-versa without changing much code.
13
3.3 GitHub
Image 2: GitHub
GitHub is an Internet hosting service for software development and version
control using Git. It provides the distributed version control of Git plus
access control, bug tracking, software feature requests, task management,
continuous integration, and wikis for every project. Headquartered in
California, it has been a subsidiary of Microsoft since 2018.
It is commonly used to host open source software development projects. As
of June 2022, GitHub reported having over 83 million developers and more
than 200 million repositories, including at least 28 million public
repositories. It is the largest source code host as of November 2021.
II. Statement Of The Project
1. Story
Every hundred years, the Demon King will be revived once again. To
protect the peace of The Meows Kingdom, The Table of Kitty Cantty
Wizards annually hold the Knight Exam to find the chosen one that can
defeat the whole world threat.
You are a brave Meow that persueing a mighty dream. Enter the tower built
by Wizards, you need to defeat all illusions, conquer the final floor to be
the greatest knight in this chaos age.
14
2. Brief About Entities And Objects In Game
2.1 Entities
2.1.1 Player
- The Game Object that we control based on rules of the game.
- Player can do all of the things that were mentioned in the feature section
above.
2.1.2 Normal Slime (Blue Slime)
- Normal Slime is basically harmless. It doesn’t have detection range;
therefore, it won’t charge or attack Player.
- Normal Slime has basic stats, but still dangerous if they are in groups.
2.1.3 Orange Slime (Ground Slime)
- Orange Slime has really wide Range but low Health.
- It will jump into the ground and attack Player and your position.
- Player has a while to dodge the attack but it could be really annoyed when
you are surrouned by traps.
2.1.4 Green Frog (Ranged Attack Frog)
- Green Frog doesn’t move, it shoots bullets.
- It will roll back when getting hit.
- It is easy to dodge its bullet, but it is tough to dodge its bullets.
2.1.5 Blue Frog (Melee Attack Frog)
- Blue Frog is aggressive. It will seek and charge player whenever you enter
its detection area.
15
- Blue Frog jumps to move which is more difficult to predict its
movements.
- Blue Frog needs to rest a little bit between jumps.
2.1.6 One-Eye Bat (Fly Enemy)
- It flys towards Player whenever you enter its region.
- Low Health, low Attack but… it flys.
2.1.7 Slime Knight (Mini Boss)
- It has all abilities that every other slimes have.
- It has ridiculous Health.
- Can dash, can jump, can hide, can make you cry.
2.1.8 Frog Wizard (Mini Boss)
- If one bullet can make you feel difficult enough, Frog Wizard can spawn
tons of them from nowhere and throw it towards you.
- Frog Wizard can also teleport.
- And it has the ability to shield from your attacks.
2.1.9 Bad Bat (Mini Boss)
- Has huge size and high agility.
- Can duplicate itself.
- Can bounce upon the walls, ceils, floors.
- Can explode.
16
2.1.10 The Meow Knight (Final Boss)
- The Meow Knight is you but has all the skills that you can obtain during a
run.
- It has more Health, more Attack, can dodge your skills, can shield your
attacks.
- It can also spawn monsters to disturb you.
2.2 Objects
2.2.1 Wooden Box
Breakable object that can randomly gives Player items.
2.2.2 Chest
Breakable object that can randomly gives Player some golds.
2.2.3 Item
Stuffs that help Player to restore an amount of Health.
2.2.4 Spike
An object that causes damage when touching.
2.2.5 Spike Block
An block that change direction everytime it has collision which causes
damage if touching it.
2.2.6 Spike Ball
An ball that rotates which deals damage if has collision with it.
2.2.7 Bullet
The projective that some enemies have. It causes damage when hits the
Player and disappear when collide with platform or wall.
2.2.8 Rocket
17
Similar to bullet but has area damage.
2.2.9 Wooden Cannon
The base that shoots rocket. Cannot be destroyed.
2.2.10 Fallen Platform
Tile Sand that will disappear after an amount of time when you step on it.
2.2.11 Ice Floor
You will slide on this type of platform.
2.2.12 Sticky Floor
Your speed will be greatly reduced.
3. Functional Requirements
- The game needs tutorial.
- Can pause during playing game.
- The entrance fee needs to increase due to the fee rule.
- The player’s state switches to invincible when getting hit.
- When player dies, you can keep all the golds; however, all the process
will be terminated.
- Everything that has Health Point needs to have Death Animation.
- Random Abilities for Player after clearing Gift Floor.
- The random abilities will appear as pick one between three cards.
- Handle overlapping collision.
- The player will only have maxium 3 slots of inventory.
- Entity should have its own Audio Player.
- Game will have a Global Audio Player.
18
4. Non-functional Requirements
4.1 Interface Requirements
- Uniform and easy to read the texts and commands.
- Easy to understand what to do.
4.2 Game Balancing Requirements
- Has replay value.
- Player should feel that the game is hard enough to try but still feel it is
beatable.
- Gives Player the ability to complete the game without losing Health.
- Has variety of upgrades to help Player improve the winning chance.
4.3 Compatibility Requirements
- Should be able to run on Windows 7 or later.
- Can run smoothly on Itch.io.
4.4 Quality & Efficiency Requirements
- No drop in FPS.
- No glitching.
- Any game object/entity that has been destroyed need to be realeased from
memory.
- Graphics should have no blur.
19
Chapter II: Use Case
I. User story
User
User Stories
Player
As a player, I want to
pause when I am in
middle of the game.
As a player, I want to
personlize
my
experience.
As a player, I want to
move around.
As a player, I want to
jump on platforms.
As a player, I want to
roll to dodge from
enemies’ attacks or
traps.
As a player, I want to
know my own status
and resources.
As a player, I want to
save my progress.
As a player, I want to
attack enemies to
protect or prove
myself.
As a player, I want to
have invincible time
when taking damage.
As a player, I want to
be awarded for each
milestone.
As a player, I want to
use skills when I have
learn them.
Important
Nouns
Important
Verbs
Connections
player
systerm
pause
player
system
-
player
systerm
configure
player
system
-
move
player - map
jump
player - map
player
enemy
trap
roll
player
enemy
player - trap
player
HUD
get
information
player - HUD
player
save system
save
player - save
system
player
enemy
attack
player
enemy
-
player
enemy
take damage
turn
invincible
player
enemy
-
player
ability
reward
player
ability
-
player
ability
–
player
map
player
map
player
ability
use skills
20
II. Use Case Models
1. Use Case Diagrams
1.1 Player
Image 3: Player Use Case Diagram
21
1.2 Blue Slime
Image 4: Blue Slime Use Case Diagram
1.3 Orange Slime
Image 5: Orange Slime Use Case Diagram
22
1.4 Green Frog
Image 6: Green Frog Use Case Diagram
1.5 Blue Frog
Image 7: Blue Frog Use Case Diagram
23
1.6 One-Eye Bat
Image 8: One-Eye Bat Use Case Diagram
1.7 Slime Knight
Image 9: Slime Knight Use Case Diagram
24
1.8 Frog Wizard
Image 10: Frog Wizard Use Case Diagram
1.9 Bad Bat
Image 11: Bad Bat Use Case Diagram
25