You are on page 1of 26

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG

KHOA CÔNG NGHỆ THÔNG TIN I


-----🙞🙜🕮🙞🙜-----

Thực tập tốt nghiệp

Báo cáo thực tập tại Gameloft

Giảng viên đánh giá: ThS. Nguyễn Thị Trang


Sinh viên: Nguyễn Thanh Tùng
Mã số sinh viên: B17DCCN665
Lớp: D17CNPM2

HÀ NỘI, 2021
LỜI CẢM ƠN
- Em xin chân thành cảm ơn Công ty Gameloft, đặc biệt là ThS.Nguyễn Thị
Trang đã tận tình giúp đỡ em rất nhiều trong quá trình thực tập thời gian qua.
Em xin cảm ơn công ty Gameloft đã cung cấp cho em cơ sở vật chất và tài
liệu học tập để em tham khảo để thực hiện các bài tập trong quá trình thực tập.
Vì còn thiếu nhiều kinh nghiệm cho nên em còn nhiều sai sót trong quá trình
thực tập, em mong thầy có thể cho em lời khuyên để em hoàn thiện kỹ năng
của bản thân hơn.

- Một lần nữa, Em xin chân thành cảm ơn Công ty Gameloft và ThS.Nguyễn
Thị Trang

SVTH: NGUYỄN THANH TÙNG 1


NHẬN XÉT CỦA ĐƠN VỊ THỰC TẬP
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………

Hà Nội ngày 12 Tháng 9 năm 2021

SVTH: NGUYỄN THANH TÙNG 2


NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
Hà Nội, Ngày 12 Tháng 9 Năm 2021

\ Giảng viên hướng dẫn

SVTH: NGUYỄN THANH TÙNG 3


MỤC LỤC

LỜI CẢM ƠN 1
NHẬN XÉT CỦA ĐƠN VỊ THỰC TẬP 2
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN 3
CHƯƠNG 1: GIỚI THIỆU CHUNG ĐƠN VỊ THỰC TẬP 5
1.1 Thông tin về đơn vị thực tập: 5
1.2 Thông tin về công ty sinh viên tham gia thực tập: 5
1.2.1 Các khóa đào tạo 5
1.2.2 Đội ngũ nhân sự 6
1.2.3 Cơ sở vật chất 6
CHƯƠNG 2: NỘI DUNG CÔNG VIỆC THỰC TẬP TẠI CÔNG TY 7
2.1 Tiến độ và quá trinh công việc 7
2.2 Nội dung chính của khóa thực tập 8
2.2.1 Quản lý phiên bản (Version Control) và TortoiseSVN 8
2.2.2 Ứng dụng C/C++ và Framework có sẵn để làm bài tập Physic 11
2.2.3 Training OpenGL ES 14
2.2.3 Ứng dụng kiến thức trên vào dự án nhóm Game King of Thieves 18
CHƯƠNG 3 KẾT LUẬN QUÁ TRÌNH THỰC TẬP 23
3.1 Những kết quả đạt được 23
3.2 Bài học kinh nghiệm 24
3.3 Những điều chưa đạt được 24
KẾT LUẬN 25

SVTH: NGUYỄN THANH TÙNG 4


BÁO CÁO THỰC TẬP TỐT NGHIỆP

CHƯƠNG 1: GIỚI THIỆU CHUNG ĐƠN VỊ THỰC TẬP

1.1 Thông tin về đơn vị thực tập:


- Gameloft là công ty làm về lĩnh vực công nghệ thông tin, được thành lập
năm 1999 với trụ sở chính đặt ở Pháp. Gameloft hiện có 21 studio phát triển
trên toàn thế giới, trong đó Việt Nam có 2 studio đặt tại Hồ Chí Minh và Hà
Nội.

- Gameloft có khoản 3.600 nhân viên trong đó nhân viên ở Đông Nam Á
chiếm tới 1.400 người. Phần lớn các nhân viên đều rất trẻ và nhân viên được
làm việc trong môi trường chuyên nghiệp và rất thỏa mái.

- Studio ở Hà Nội có tên là HAN Studio, nằm ở tầng 3 và tầng 4 của tòa nhà
Lilama 10 địa chỉ 64 Tố Hữu - Thanh Xuân- Hà Nội, có khoản 150 nhân viên
trong đó có nhiều bạn là người nước ngoài. Không gian tại studio rất gọn
gàng, ngăn nắp, sạch sẽ mặc dù có hàng trăm người làm việc. Tại Studio nhân
viên làm việc chung với nhau theo các dự án.

- Văn hóa làm việc ở Gameloft rất thỏa mái, có thể mặc bất cứ trang phục nào
bạn thích. Thời gian làm việc từ 8h sáng đến 12h nghỉ trưa và 1h30 làm tiếp
tới 5h30.Tuy nhiên mỗi nhóm có thể linh hoạt thời gian, miễn đảm bảo tiến
độ công việc.

- Tại Gameloft nhân viên có cơ hội làm việc các dự án trong môi trường toàn
cầu với các đội ngũ khác nhau trên thế giới tại Mỹ, Nam Mỹ, Châu Âu, New
York, …

- Đặc biệt ở Gameloft Việt Nam sẽ có cơ hội làm việc với nhiều công nghệ
khác nhau (iOS, Android, WinPhone 8, …) và các thiết bị chạy nền tảng Java
đến những nền tảng phức tạp như tablet (Samsung galaxy Tab, Ipad,
Blackberry Playbook, …)

1.2 Thông tin về công ty sinh viên tham gia thực tập:
1.2.1 Các khóa đào tạo

Hình 1 Tổ chức bộ máy trong Fsoft

SVTH: NGUYỄN THANH TÙNG 5


BÁO CÁO THỰC TẬP TỐT NGHIỆP

- Các chương trình đào tạo cho fresher về các chuyên ngành như: lập trình viên
game, thiết kế viên game,…Trong đó khóa lập trinh viên có đào tạo về C,
C++, C#, Unity, Android,... Chương trình đào tạo gồm các chương trinh:
part-time, full-time, working-intern. Tùy vào chương trinh sẽ có thời gian 1
đến 6 tháng và được hỗ trợ tiền lương.

- Chương trình cho sinh viên thực tập kéo dài khoảng 1 hoặc 2 tháng tùy theo
sinh viên chọn part-time hoặc full-time, sinh viên được trải nhiệm thực tập
với các ngôn ngữ C++ và được thực hiện dự án game nhỏ để thể hiện sức
sáng tạo của minh.

1.2.2 Đội ngũ nhân sự

- Khi tham gia thực tập tại Gameloft, lớp học sẽ có 1 hoặc 2 nhân viên chịu
trách nhiệm quản lý lớp học, các nhận viên quản lý rất nhiệt tình và hỗ trợ
tận tình trả lời các thắc mắc cho sinh viên về công việc, nội quy,…tại công
ty.
- Đội ngũ giảng viên là các anh đang thực hiện các dự án và làm việc tại
Gameloft, sẵn sàng truyền tải kinh nghiệm và các kiến thức chuyên sâu, thực
tế cho học viên trong ngành công nghiệp game.

1.2.3 Cơ sở vật chất

- Thiết bị đầy đủ và hiện đại như: văn phòng, máy tính pc và các dụng cụ văn
phòng phục vụ cho công việc; căng-tin gồm máy bán hang tự động để phục
vụ thức ăn, thức uống khi cần sử dụng; phòng chơi game để giải trí có nhiều
thiết bị chơi game tiên tiến như PS5, Switch,.. để thỏa mãn đam mê chơi
game và nghiên cứu game.

SVTH: NGUYỄN THANH TÙNG 6


BÁO CÁO THỰC TẬP TỐT NGHIỆP

CHƯƠNG 2: NỘI DUNG CÔNG VIỆC THỰC TẬP TẠI CÔNG TY

2.1 Tiến độ và quá trinh công việc

SVTH: NGUYỄN THANH TÙNG 7


BÁO CÁO THỰC TẬP TỐT NGHIỆP

2.2 Nội dung chính của khóa thực tập

2.2.1 Quản lý phiên bản (Version Control) và TortoiseSVN


1. Quản lý phiên bản là gì

- Định nghĩa: Là sự quản lý nhiều bản chỉnh sửa của cùng một đơn vị thông tin,
giúp giữ lại nhiều phiên bản của đơn vị thông tin đó, từ đó dẽ dàng lấy lại những
phiên bản trước “roll back”.

2. Tại sao phải sử dụng?

- Giữ lại được nhiều phiên bản và dễ dàng quay lại các phiên bản mình muốn.

- Giảm thiểu khối lượng công việc bị chồng chéo, lặp lại.

- Dễ dàng quản lý việc chia sẻ tài liệu.

3. TortoiseSVN

a) TortoiseSVN là gì?

- Tortoise SVN là hệ thống quản lý phiên bản theo mô hình tập trung (Centralized).

- Hệ thống có khả năng cập nhật, so sánh và kết hợp tài nguyên mới với phần tài
nguyên cũ, được phát hành vào năm 2002 và cấp chứng chỉ bởi GNU General
Public License.

- SVN hoạt động theo phương thức Client/Server, mã nguồn của dự án được lưu
trữ trên Server (SVN hosting, GoogleCode, …). Thông thường Client và Server
kết nối thông qua mạng LAN hoặc mạng Internet.

b) Tại sao phải dùng?

- Hệ thống có khả năng cập nhật, so sánh và kết hợp tài nguyên mới với phần tài
nguyên cũ nên hỗ trợ làm việc vô cùng hiệu quả.

- Khi làm việc nhóm thì việc nhiều người cùng chỉnh sửa nội dung của cùng một
tài liệu là điều không thể tránh khỏi. TortoiseSVN cung cấp các chức năng để có
thể thực hiện công việc này một cách đơn giản và an toàn.

- TortoiseSVN giống như một hệ thống file server mà Client có thể Download và
Upload file một cách bình thường.

SVTH: NGUYỄN THANH TÙNG 8


BÁO CÁO THỰC TẬP TỐT NGHIỆP

- Hệ thống quản lý tập tin và thư mục theo thời gian. Vì thế nó sẽ lưu lại tất cả
những gì thay đổi trên hệ thống file: file nào đã bị thay đổi, thay đổi lúc nào,
thay đổi như thế nào, ai đã thay đổi nó.

- TortoiseSVN hỗ trợ khá nhiều giao thức để kết nối giữa Client Và Server như:
http/https, svn:// hoặc svn+ssh://; nếu Client và Server cái chung trên 1 máy thì
có thể dùng file://.

c) Các thuật ngữ và khái niệm liên quan


- Repository: Server lưu trữ SubVersion và đặt project.
- Working Copy: vùng làm việc của Client tại máy, là bản sao dữ liệu của
Repository.
- HEAD: phiên bản mới nhất trên Server.
- BASE: phiên bản gần đây nhất không chỉnh sửa trên Working Copy.
- Trạng thái của Icon:
Chỉ trạng thái “normal” - bình thường.

Chỉ trạng thái “modify”: khi bắt đầu chỉnh sửa một file.

Trạng thái “conflict”: khi update, nếu file bị xung đột

Trải thái “read-only”: khi file được cài đặt thuộc tính svn:need-lock.

Biểu tượng này cho bạn biết rằng một số tệp hoặc thư mục bên trong thư
mục hiện tại đã được lên lịch để xóa khỏi Version Control hoặc tệp đó
trong Version Control bị thiếu trong một thư mục..

Biểu tượng cho biết file/ folder đã được lên lịch để thêm vào Version
Control.

- Conflict: xung đột xảy ra khi nhiều người cùng thực hiện thay đổi trên ở cùng
một vị trí của tài liệu.
- Resolve: là hoạt động của người dùng để giải quyết vấn đề “conflict” giữa các
thay đổi khác nhau đối với cùng một tài liệu và quyết định xem thay đổi nào
được áp dụng trên tài liệu đó.

SVTH: NGUYỄN THANH TÙNG 9


BÁO CÁO THỰC TẬP TỐT NGHIỆP

- Check-out: chỉ hành động lấy một phiên bản copy của các tài liệu trên
Repository về máy của Client.

- Commit: là hành động đẩy các thay đổi trên các tập tin ở Client lên Server.

- Update: là hoạt động cập nhật ở Client, làm cho các tập tin ở Client đồng bộ
với những thay đổi trên Repository.

- Merge: Gom dữ liệu các phiên bản lại với nhau.


- Revert: là hành động khôi phục lại trạng thái của một hay nhiều tài liệu của
các phiên bản trước đo
4. Nguyên tắc của TortoiseSVN
- Nguyên tắc 1: Sử dụng các ký hiệu tiền tố trước các thông báo.
• - : Thay đổi tính năng
• +: Thêm tính năng
• * : Sửa lỗi
• ! : Ghi chú
- Nguyên tắc 2: Viết log rõ ràng, mô tả đầy đủ hoạt động
- Nguyên tắc 3: Tuân thủ các luật khi commit
• Commit sớm và thường xuyên
• Không đẩy các file rác lên Repository

SVTH: NGUYỄN THANH TÙNG 10


BÁO CÁO THỰC TẬP TỐT NGHIỆP

2.2.2 Ứng dụng C/C++ và Framework có sẵn để làm bài tập Physic
1. Mô tả

- Game sẽ có các đối tượng: hình vuông, tròn, chữ nhật có khối lượng, vận tốc.
Khi vào Game thì theo trọng lực các khối hình sẽ rơi xuống. Có thể dùng chuột
để di chuyển các đối tượng. Khi xảy ra va chạm giữa các đối tượng thì đối tượng
sẽ không di chuyển nữa.
- Yêu cầu: Sử dụng Framework có sẵn và các kiến thức về C/C++ đã được học
để thêm các tính năng cho game.

2. Tasks

Task 1: Vẽ lên màn hình

- Yêu cầu:
• Tạo lớp SceneManager để quản lý các đối tượng trong game. Lớp này
khởi tạo đối tượng từ việc đọc file.
• Tạo các lớp đối trượng trong game: Rectangle, Circle, Plane.
- Các kiến thức áp dụng:
• Kiến thức OOP của ngôn ngữ C++ để khởi tạo các lớp: Rectangle, Circle,
Plane, SceneManager, Object.
• Sử dụng tính chất kế thừa trong OOP: Object là lớp Cha; các lớp kế thừa
là: Rectangle, Circle, Plane.
• Cách đọc file có cấu trúc với hàm: fscanf
• Sử dụng con trỏ, biến, hàm, vector, overloading function (hàm Render ở
từng lớp con), tính đa hình của OOP,…

Task 2: Xử lý khi chuột chạm vào đối tượng


- Yêu cầu: Có thể di chuyển đối tượng xung quanh màn hình bằng việc kéo
chuột.
- Thuật toán, kiến thức áp dụng: Thuật toán kiếm tra đối tượng nào được chọn

SVTH: NGUYỄN THANH TÙNG 11


BÁO CÁO THỰC TẬP TỐT NGHIỆP

a) Thuật toán kiếm tra đối tượng nào được chọn


Input: Tạo độ chuột xMouse, yMouse. Vị trí của vật xObject, yObject.
Output: True/False tương ứng với đối tượng đó được chọn hay không.

Trường hợp 1: Đối tượng là hình tròn


- Ta có: xObject, yObject là vị trí tâm của hình tròn, r là bán kính của hình tròn.
Giải thuật:
• Tính khoảng cách từ tâm hình tròn đến vị trí của chuột, kết quả lưu vào biến
distance.
• So sánh: Nếu distance > r, trả về False. Ngược lại trả về True.

Trường hợp 2: Đối tượng là hình chữ nhật.


- Ta có: xObject, yObject là vị trí đỉnh trên cùng bên trái của hình chữ nhật. w,
h là chiều dài, chiều rộng của hình chữ nhật.
Giải thuật:
• Nếu xMouse nằm trong khoảng [xObject, xObject+w] và yMouse nằm trong
khoảng [yObject, yObject+h] thì trả về True. Ngược lại, trả về False.
• Thuật toán di chuyển vật theo chuột
Giải thuật:
• Tính khoảng cách deltaMouseMove giữa các lần di chuyển của chuột.
• Di chuyển vị trí tâm của vật theo khoảng cách deltaMouseMove đó.

b) Thuật toán di chuyển vật theo chuột


Giải thuật:
• Tính khoảng cách deltaMouseMove giữa các lần di chuyển của chuột.
• Di chuyển vị trí tâm của vật theo khoảng cách deltaMouseMove đó.

SVTH: NGUYỄN THANH TÙNG 12


BÁO CÁO THỰC TẬP TỐT NGHIỆP

Task 3: Kiểm tra va chạm


- Yêu cầu: Viết lớp CollisionManager để phát hiện va chạm giữa hai hình chữ
nhật với nhau, hai hình tròn với nhau và giữa hình tròn và hình chữ nhật.
- Kiến thức áp dụng: cách ép kiểu “dynamic” của C++, overloading function.

a) Thuật toán kiểm tra va chạm


Output: True/ False tương ứng với va chạm hoặc không va chạm.

Trường hợp 1: Va chạm giữa hai hình chữ nhật


Input:
• (x1, y1), (x2, y2) lần lượt là vị trí đỉnh trên cùng bên trái của hình chữ nhật
1 và 2.
• (w1, h1) và (w2, h2) là chiều dài, chiều rộng của hình chữ nhật 1 và 2.
Giải thuật:
• Nếu x1 > x2 + w2 hoặc x2 > x1 + w1, return False.
• Nếu y1 > y2 + h2 hoặc y2 > y1 + h1, return False.
• return True.

Trường hợp 2: Va chạm giữa hai hình tròn


Input:
• (x1, y1), (x2, y2) là vị trí tâm của hình tròn 1 và hình tròn 2.
• r1, r2: bán kính của hình tròn 1, hình tròn 2.
Giải thuật:
• Tính khoảng cách giữa hai tâm của hình tròn, lưu kết quả vào biến distance.
• Nếu distance > r1 + r2 trả về False, ngược lại trả về True.

Trường hợp 3: Va chạm giữa hình tròn và hình chữ nhật


Input:

SVTH: NGUYỄN THANH TÙNG 13


BÁO CÁO THỰC TẬP TỐT NGHIỆP

• (xc, yc): vị trí tâm của hình tròn.


• r: bán kính hình tròn.
• (xr, yr): vị trí đỉnh trên cùng bên trái của hình chữ nhật.
• w, h: chiều dài và chiều rộng của hình chữ nhật.
Giải thuật:
• Tính xn = max (xr, min (xc, xr + w))
yn = max (yr, min (yc, yr + h))
• Tính dx = xn – xc
dy = yn – yc
• Nếu dx2 + dy2 > r2 trả về False, ngược lại trả về True.
Task 4: Tính năng va chạm nâng cao
- Yêu cầu: thêm lực đẩy gây ra bởi chuột vào đối tượng, thêm trọng lực vào đối
tượng và làm cho đối tượng có bounds.
2.2.3 Training OpenGL ES
1. OpenGL ES là gì?

- OpenGL cho Hệ thống nhúng (OpenGL ES) là một giao diện lập trình ứng
dụng (API) cho đồ họa 3D nâng cao nhắm mục tiêu đến các thiết bị cầm tay và
các thiết bị nhúng, được phát triển bởi Khronos Group.

- OpenGL ES là API đồ họa thống trị trong điện thoại thông minh ngày nay và
thậm chí đã mở rộng phạm vi tiếp cận của nó trên máy tính để bàn. Danh sách
các nền tảng hỗ trợ OpenGL ES bao gồm iOS, Android, BlackBerry, bada,
Linux và Windows.

- OpenGL ES cũng làm nền tảng cho WebGL, một tiêu chuẩn web cho đồ họa
3D dựa trên trình duyệt.

2. Nội dung chính

a) Hệ trục tọa độ 3D của OpenGL

- Theo nguyên tắc bàn tay phải: dùng bàn tay phải, ngón cái chỉ sang bên phải là
trục Ox, ngón trỏ chỉ lên trên là trục Oy =>Ngón giữa hướng về phía trước là
trục Oz

SVTH: NGUYỄN THANH TÙNG 14


BÁO CÁO THỰC TẬP TỐT NGHIỆP

b) Vertex, fragment, pixel, texel

- Vertex (chấm xanh lá): là những điểm trong không gian cấu thành nên những
hình học cơ bản, và đồng thời có thêm các thuộc tính như màu, tọa độ texture,

- Fragment (màu xanh, đỏ): được tạo ra trong quá trình Rasterization. Mỗi một
Fragment ứng với một ví trí pixel và 1 tập các thuộc tính tương ứng với thuộc
tính của đỉnh.
- Pixel (màu xanh, đỏ, tím): là một điểm trên màn hình với một màu xác định,
được tạo ra bởi sự kết hợp giữa 3 màu Đỏ, Xanh lá, Xanh biển.
- Texel: là một điểm màu trên texturing.

c) Quá trình Render

SVTH: NGUYỄN THANH TÙNG 15


BÁO CÁO THỰC TẬP TỐT NGHIỆP

d) Vertex Buffer

- Dữ liệu của đỉnh được lưu trong bộ nhớ của ứng dụng. Để thực hiện việc
rendering thì dữ liệu này phải được chuyển từ RAM sang VRAM.

e) Index Buffer
- Mỗi một đối tượng được vẽ bằng nhiều hình tam giác.
- Vấn đề đặt ra: giảm số lượng đỉnh cần vẽ => giảm số lượng buffer cần sử
dụng, giảm số lần thực hiện vertex shader.
- Giải pháp: sử dụng chỉ số (indices) để đánh chỉ số duy nhất cho từng vertex
buffer và khi vẽ một đối tượng thì dùng chỉ số để tìm ra vertex buffer cần được
sử dụng.

f) Shaders Program và Shader Effect


- Cách viết shader: vertex shader và fragment shader.
- Các Shader Effect như: multitexturing, linear fog, height map terrains,
environment reflections, …

SVTH: NGUYỄN THANH TÙNG 16


BÁO CÁO THỰC TẬP TỐT NGHIỆP

3. Bài tập vận dụng

Task 1: Vẽ tam giác đỏ bằng VBO và IBO


- Cách làm: sử dụng hàm glDrawArrays của OpenGL ES
Task 2: Vẽ tam giác 3 màu
- Kiến thức áp dụng: thêm thuộc tính cho đỉnh, cách viết vertex shader, cách sử
dụng vertex buffer.
- Cách làm: thêm thuộc tính color vào Vertex
Task 3: Vẽ tam giác bằng texture
- Kiến thức áp dụng: cách load texture 2D, sử dụng các chế độ filtering, wrap của
texture, áp dụng tọa độ texture vào fragment shader.
Task 4: Vẽ cô gái
- Kiến thức áp dụng: cách đọc file có cấu trúc, cách sử dụng index buffer
- Task 5: Ma trận Model - View – Projection
- Kiến thức áp dụng: kiến thức toán học về ma trận, các hệ tọa độ trong không
gian 3D.
Task 6: Cài đặt camera
- Kiến thức áp dụng: cách tính tọa độ của vật khi tịnh tiến, quay, phóng to/thu nhỏ
camera bằng các ma trận Rotation, Translate, Scale.
Task 7: Cài đặt Engine Struct
- Kiến thức áp dụng: mẫu Singleton, đọc file có cấu trúc với hàm fscanf.
- Hiểu mô hình Engine Struct và cài đặt các lớp tương ứng.

SVTH: NGUYỄN THANH TÙNG 17


BÁO CÁO THỰC TẬP TỐT NGHIỆP

Task 8: Vẽ bầu trời


- Kiến thức áp dụng: cách load texture cube.
Task 9: Vẽ Terrain
- Kiến thức áp dụng: cách viết shader program, cách sử dụng multi-texturing, …
2.2.3 Ứng dụng kiến thức trên vào dự án nhóm Game King of Thieves

1. Giới thiệu game King of Thieves


- King of Thieves là game thuộc thể loại 2D platformer giải đố được làm dựa trên
tựa game khác cùng tên. Mục tiêu của người chơi là đưa nhân vật của minh từ
vị trí xuất phát đến đích là hòm kho báu.
- Game được hoàn thanh ngày 6 tháng 9 năm 2021 trong thời gian thực tập tại
Gameloft, chạy trên hệ điều hành Windows 10 32bit và 64 bit.
- Tóm tắt các chức năng của game:
• Mục tiêu của người chơi là hoàn thành tất cả các level để phá đảo game.
• Người chơi sẽ bắt đầu từ màn 1. Mỗi khi hoàn thanh 1 level sẽ mở khóa màn
tiếp theo, cứ như vậy cho đến màn cuối cùng.
• Mỗi level sẽ có 3 star để thu thập, người chơi có quyền thu thập hoặc không
thu thập star để hoành thanh màn chơi.

SVTH: NGUYỄN THANH TÙNG 18


BÁO CÁO THỰC TẬP TỐT NGHIỆP

• Người chơi luôn có thể quay trở lại màn đã chơi để thu thập sao.
• Không có giới hạn thời gian chơi, người chơi được quyền chơi cho đến khi
qua cửa hoặc khong chơi nữa.
• Nhân vật sẽ tự động di chuyển, người chỉ có 1 thao tác duy nhất là click chuột
để nhảy
• Các tương tác của người chơi với môi trường sẽ quyết định trạng thái của
nhân vật (qua màn, chết, đổi hướng, ..)
2. Các công cụ sử dụng
- Thư viện của C/C++, SFML, Box2D
- OpenGL ES 4.0
- IDE: Microsoft Visual Studio 2019

3. Các trạng thái của game.

Menu State Map State Level State

SVTH: NGUYỄN THANH TÙNG 19


BÁO CÁO THỰC TẬP TỐT NGHIỆP

SVTH: NGUYỄN THANH TÙNG 20


BÁO CÁO THỰC TẬP TỐT NGHIỆP

4. Những đối tượng chính của game


- Player: là nhân vật mà người chơi sẽ điều khiển.
• Nhân vật sẽ tự động di chuyển về phía trước mặt.
• Người chơi chỉ có 1 thao tác với nhân vật là click
chuột trái để nhảy
• Nhân vật sẽ dừng lại nếu chạm phải tường
• Nhân vật sẽ trượt trên tường nếu đứng trước tường và khong chạm
đất
• Nhận vật sẽ chuyển hướng nếu click để nhảy trên tường
• Nhân vật sẽ chết nếu va chạm với chướng ngại
• Người chơi sẽ qua màn nếu nhân vật chạm hàm kho báu
- Các chướng ngại
• Saw: là lưỡi cưa sẽ đứng 1 chỗ hoặc di chuyển theo chiều dọc
• Guard: sẽ di chuyển qua lại trong 1 khu vực nhất định

SVTH: NGUYỄN THANH TÙNG 21


BÁO CÁO THỰC TẬP TỐT NGHIỆP

• Spinner: sẽ quay tròn trong 1 vòng bán kính đặt trước


• Chaser: sẽ đuổi theo người chơi
• Gun: sẽ liên tục bắn đạn ở hướng chỉ định

- Khác:
• Sao: sẽ có 3 vật thể này mỗi màn, biến mất khi va chạm với người
chơi, tính vào thanh tích mỗi màn
• Hòm kho báu: đích đến, màn chơi kết thúc khi được nhân vật chạm
vào

- Ngoài ra còn có những Object khác phục vụ các chức năng khac của game:
• Các màn hình game kế thừa từ StateBase bao gồm MenuState,
MapState, LevelState
• Lớp AudioManager để xử lý âm thanh trong game
• Lớp Render, Animation để xử lý hoạt ảnh trong game.
• Lớp EventManager để xử lý những sự kiện xảy ra trong game như:
người chơi chết, chiến thắng, mở khóa màn chơi hay nhặt được sao.
5. Sản phẩm
- Bản Release:
https://drive.google.com/file/d/1EIBMyAtBQme6iAnKBT3ikCZsHVbiGS
BI/view?usp=sharing
- Hướng dẫn chạy:
• Tải xuống bằng link bên trên.
• Giải nén
• Chạy bằng file TrainingFramework.exe
6. Thông tin các thành viên thực hiên

SVTH: NGUYỄN THANH TÙNG 22


BÁO CÁO THỰC TẬP TỐT NGHIỆP

Tên Nhiệm vụ
Nguyễn Xương Thìn Phát triển và cải thiện Game struct.
Trịnh Trung Kiên Xử lý vật lý và tương tác của các Object.
Trần Thế Lâm Xử lý hình ảnh, hoạt ảnh.
Nguyễn Thanh Tùng Cài đặt Game states, âm thanh và thông tin người
chơi

CHƯƠNG 3 KẾT LUẬN QUÁ TRÌNH THỰC TẬP

3.1 Những kết quả đạt được

- Học hỏi được nhiều kỷ năng làm việc như:


• Cách làm việc cá nhân.
• Cách làm việc nhóm.
• Cách lên kế hoạch, viết báo cáo công việc.
• Cách quản lý thời gian.
- Quy trình làm game:
• Lên ý tưởng cho game.
• Hoàn thiện game play.
• Chuẩn bị Resource hình ảnh, Sprite Sheet để làm Animation . . .
• Thiết kế OOP cho game.
• Coding.
- Kỹ thuật sử dụng trong làm game:
• Thiết kế màn chơi,
• Quản lý tài nguyên trong game.
• Cách tạo Sprite Sheet để làm Animation cho các nhân vật trong game.

SVTH: NGUYỄN THANH TÙNG 23


BÁO CÁO THỰC TẬP TỐT NGHIỆP

• Cách thiết lập âm thanh cho game.


• Lưu trữ thông tin bằng file để chỉnh sửa, nâng cấp (màn chơi đã mở và
chưa mở, map, …)
3.2 Bài học kinh nghiệm

- Hiểu được quy trình làm Game, cách kiếm lợi nhuận, kinh doanh từ game.
Từ đó có thể hiểu được phần nào ngành “Công nghiệp làm game”. Vận
dụng các tính năng ưu việt của các tính năng hỗ trợ trong các Engine khi
làm game để trở thành một nhà phát triển game tài năng.
3.3 Những điều chưa đạt được

- Trong quá trình thực tập, em vẫn chưa thực hiện được các 100% các task
Physic và OpenGL ES. Do thời gian ngắn và kiến thức được tiếp cận rất
mới và chuyên sâu nên em chưa hoàn thành được tất cả bài tập.
- Dự án game King of Thieves dù đã hoàn thiện những vẫn còn có thể được
cải tiến nhiều
- Do dịch Covid – 19 nên em chỉ được trải nghiệm môi trường của công ty
được hơn 1 tuần, còn lại mọi công việc đều làm tại nhà.

SVTH: NGUYỄN THANH TÙNG 24


BÁO CÁO THỰC TẬP TỐT NGHIỆP

KẾT LUẬN
- Trong quá trình thực tập, em đã có cơ hội làm quen một môi trường
làm việc mới. Em đã tính lũy những kinh nghiệm về kiến thức trong
công việc cũng như các kinh nghiệm về kỹ năng mềm.
- Em được rèn luyện kĩ năng giải quyết công việc theo từng giai đoạn,
cố gắng hoàn thành công việc trong thời gian cho phép, mạnh dạn
trao đổi và chia sẻ kiến thức. Đồng thời cũng bồi dưỡng thêm rất
nhiều kiến thức ngoài các kiến thức đã học trên trường.

SVTH: NGUYỄN THANH TÙNG 25

You might also like