1
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM
BÁO CÁO THỰC TẬP
LẬP TRÌNH GAME BẮN TRỨNG
Công ty thực tập
: Công ty Cổ phần SmartScale
Người phụ trách
: Anh Nguyễn Công Lý
Thực tập sinh
: Sinh viên Nguyễn Lương Kiên
TP. Hồ Chí Minh, tháng 6 năm 2022
Nguyễn Công Lý
Nguyễn Lương Kiên
2
LỜI MỞ ĐẦU
Hiện tại, ngành công nghiệp Game đang là mũi nhọn của nền kinh tế thế giới khi thị phần
của ngành này luôn đứng đầu. Năm 2021, thị phần ngành Game được định giá 198 tỉ đô được
dự đoán sẽ vượt mốc 349 tỉ đô trước năm 2027 (theo số liệu của mordorintelligence.com).
Ngành game phát triển đồng thời cũng kéo theo cuộc đua về phần mềm lẫn phần cứng vi tính
khi sự chân thật về mặt hình ảnh, sự phức tạp, đa dạng về lối chơi và nhu cầu kết nối luôn được
đòi hỏi ở mức cao nhất từ người chơi.
Không nằm ngoài xu thế của thế giới, Việt Nam nói chung và các nhà phát triển game ở
Việt Nam nói riêng luôn muốn được góp tiếng nói của mình trong cộng đồng game thế giới khi
họ luôn cố gắng đem đến những sản phẩm chất lượng ra thị trường. Do vẫn còn non trẻ, Việt
Nam cần thiết có một tiếng nói đi đầu để đem đến một cái viễn cảnh tươi sáng hơn cho những
những bạn trẻ đang mong ước được thực hiện một tựa game trong mơ của mình nhưng bị cản
trở vì hiện thực phũ phàng của ngành game Việt Nam.
Góp chung vào công cuộc xây dưng một nơi lý tưởng như vậy, bên cạnh các công ty lớn
hàng đầu ngành Game của Việt Nam khi lấy phát hành game làm chủ đạo thì ở những studio
nhỏ như studio CGK (Công ty Cổ phầnScaleMart) nơi số nhân viên không vượt quá con số 20
nhưng sự nhiệt huyết vượt xa trăm người, nơi những con người đặt ước mơ lên trên tham vọng
tiền bạc đã và đang đóng góp sức mình và mong một ngày tiếng gọi nhỏ nhoi của mình sẽ được
ai đó nghe thấy. Cảm phục sự cố gắng của họ, bản thân em đã quyết định sẽ tham gia, thử một
lần nhìn tận mắt cách những con người ấy quyết tâm từng ngày ra sao.
Nguyễn Công Lý
Nguyễn Lương Kiên
3
LỜI CẢM ƠN
Trân trọng gửi lời cảm ơn Công ty Cổ phần SmartScale đã cho em cơ hội để được thực
tập tại công ty.
Tuy chỉ trong thời gian ngắn và giai đoạn thực tập của em vẫn còn đang tiếp tục và
không có cơ hội được tiếp xúc với mọi người trong công ty nhưng em vẫn cảm thấy được sự
nhiệt huyết của mọi người trong công việc của mình.
Đặc biệt cảm ơn anh Nguyễn Công Lý đã hướng dẫn em tận tình mặc dù em còn thiếu rất
nhiều kinh nghiệm.
Cũng xin cảm ơn thầy cô trong khoa Công nghệ phần mềm đã nhiệt tình hỗ trợ, tạo điều
kiện em làm bài báo cáo này.
Nguyễn Lương Kiên
TpHCM, ngày 16 tháng 6 năm 2022
Nguyễn Công Lý
Nguyễn Lương Kiên
4
NHẬN XÉT CỦA KHOA
..........................................................................................................................................................
..........................................................................................................................................................
..........................................................................................................................................................
..........................................................................................................................................................
..........................................................................................................................................................
..........................................................................................................................................................
..........................................................................................................................................................
..........................................................................................................................................................
..........................................................................................................................................................
..........................................................................................................................................................
..........................................................................................................................................................
..........................................................................................................................................................
..........................................................................................................................................................
..........................................................................................................................................................
..........................................................................................................................................................
..........................................................................................................................................................
Nguyễn Công Lý
Nguyễn Lương Kiên
5
..........................................................................................................................................................
..........................................................................................................................................................
Nguyễn Công Lý
Nguyễn Lương Kiên
6
MỤC LỤC
LỜI MỞ ĐẦU ............................................................................................................................................ 2
LỜI CẢM ƠN ............................................................................................................................................ 3
NHẬN XÉT CỦA KHOA .......................................................................................................................... 4
Chương 1 Giới thiêu công ty thực tập ........................................................................................................ 8
1.1.
Công ty Cổ phần SmartScale ....................................................................................................... 8
1.2.
Sản phẩm của công ty .................................................................................................................. 8
Chương 2 Nội dung thực tập ...................................................................................................................... 9
2.1.
Tìm hiểu công ty .......................................................................................................................... 9
2.2.
Nghiên cứu kỹ thuật ................................................................................................................... 10
2.2.1.
Công cụ trao đổi thông tin .................................................................................................. 10
2.2.2
Tìm hiểu về Cocos Creator và Javascript. .......................................................................... 10
2.3.
Thực hiện bài kiểm tra kiến thức Cocos Creator và khả năng tư duy lập trình ......................... 11
2.4.
Dự án game bắn trứng ............................................................................................................... 12
Chương 3 Chi tiết dự án game bắn trứng ................................................................................................. 13
3.1.
Thông tin chung: ........................................................................................................................ 13
3.2
Tóm tắt luật chơi cơ bản: ........................................................................................................... 14
3.3.
Công thức tính điểm .................................................................................................................. 16
3.4.
Trứng đặc biệt ............................................................................................................................ 17
3.5.
Các hệ thống quản lý cốt lõi ...................................................................................................... 18
3.5.1.
Resource Manager: ............................................................................................................. 18
3.5.2.
Egg Manager: ..................................................................................................................... 19
3.5.3.
Board Manager: .................................................................................................................. 20
Nguyễn Công Lý
Nguyễn Lương Kiên
3.5.4.
7
Game Manager: .................................................................................................................. 20
3.6.
Thuật toán xác định trứng rơi. ................................................................................................... 21
3.7.
Một số hình ảnh hiện tại của game ............................................................................................ 23
3.8.
Kết quả ....................................................................................................................................... 26
TÀI LIỆU THAM KHẢO ........................................................................................................................ 27
TỔNG KẾT .............................................................................................................................................. 28
Nguyễn Công Lý
Nguyễn Lương Kiên
8
Chương 1 Giới thiêu công ty thực tập
1.1.
-
Công ty Cổ phần SmartScale
Công ty qui mô nhỏ với 17 thành viên được thành lập năm 2016 với đội ngũ phát triển
nòng cốt là những thành viên cốt lõi từ Studio CGK.
-
Công ty tọa lạc tại địa điểm: Lầu 12, Tòa nhà Hải Âu, 39B Trường Sơn, Phường 4, Quận
Tân Bình, Thành phố Hồ Chí Minh, Việt Nam.
1.2.
Sản phẩm của công ty
-
Công ty chủ yếu thực hiện các sản phẩm và out-source cho ty mẹ.
-
Các sản phẩm gồm có Cánh cụt vui vẻ, Đảo tặc và một số các game casual và stimulation
đang trong giai đoạn thực hiện và sắp được ra mắt trên thị trường.
Nguyễn Công Lý
Nguyễn Lương Kiên
9
Chương 2 Nội dung thực tập
-
Thực tập sinh được thực tập từ xa do sự cản trở của dịch Covid 19 hoành hành trong
khoảng thời gian thực tập.
-
Các nội dung thực tập và kết quả được trao đổi giữa thực tập sinh và người phụ trách là
anh Nguyễn Công Lý thông qua Telegrame hoặc Facebook Messenger.
-
Mỗi tuần sẽ có một ngày báo cáo lại quá trình tìm hiểu, học tập và thực hiện nội dung
được trao đổi.
-
Thực tập sinh được hỏi người phụ trách những khuất mắt, khó khăn cần giải đáp trong
quá trình học tập.
-
Trong quá trình thực tập tại nhà, thực tập sinh sẽ có những buổi gặp mặt trực tiếp cùng
người hướng dẫn để trao đổi những khúc mắc trong quá trình thực tập.
2.1.
Tìm hiểu công ty
Hình thức: Đối thoại trực tiếp
Nội dung : Giới thiệu về công ty, cách tổ chức của công ty
Được nghe người phụ trách và chủ công ty giới thiệu về công ty bao gồm các
thành viên, chỗ làm việc, tiểu sử quá trình thành lập, phát triển và những sản phẩm công
ty đã tham gia sản xuất.
Được nghe giới thiệu về mục đích hoạt động và các nội dung sẽ hướng tới trong
tương lai và cách tổ chức của công ty.
Kết quả: Hiểu rõ những khó khăn, trắc trở từ những ngày đầu thành lập từ một studio với
cái tên CGK nhưng đã được thành công do sự chăm chỉ và cần cù của đội ngũ phát triển.
Nhắm bắt được cách vận hành và cách thức trao đổi với người phụ trách hướng dẫn.
Nguyễn Công Lý
Nguyễn Lương Kiên
10
2.2.
Nghiên cứu kỹ thuật
2.2.1. Công cụ trao đổi thông tin
Nội dung : Tìm hiểu về Telegram: cách thức hoạt động, cài đặt và thực hiện một cuộc
gọi Telegram.
Kết quả : Thực hiện thành công cuộc gọi nhóm giữa thực tập sinh, người phụ trách và
chủ công ty.
2.2.2 Tìm hiểu về Cocos Creator và Javascript.
Nội dung : Tìm hiểu các khái niệm cơ bản trong Cocos Creator và viết một báo cáo về
những gì tìm hiểu được và học kiến thức về Javascript.
-
Node: là đơn vị cơ bản nhất được quản lý trong Cocos Creator. Các node tồn tại trong
một Scene sẽ được bố trí và biểu diễn theo dạng cây (quan hệ cha - con). Có thể theo
dõi các node trên panel Node Tree. Các Node cùng với các Component của chúng sẽ
được render và thực thi theo thứ tự trên - xuống, cha – con.
-
Components: Component tạo nên ý nghĩa cho Node.
▪ Render Component: Sprite, Light, Mask, MeshRenderer,… ➔ Thực hiện graphic
render.
▪ UI Component: Button, Label,… ➔ Hiện thị và thực hiện chức năng của một số
loại UI.
▪ Collider Component: BoxCollider, CircleCollider ➔ Xác định va chạm và phản
hồi bằng các callback onCollisionEnter, onCollisionStay, onCollisionExit cho
Script Component thuộc cùng một Node.
▪ Physics Component: Collider, Joint, Rigidbody ➔ Bản chất là Physic Engine
Box2D với 2D và cannon.js với 3D. Mô phỏng, cài đặt các object chịu tác động
của vật lý và phản hồi lại bằng các callback onBeginContact, onEndContact,
onPreSolve, onPostSolve cho Script Component thuộc cùng một Node.
Nguyễn Công Lý
Nguyễn Lương Kiên
11
▪ Và một số Component khác như: Animation, Camera, ParticleSystem,
AudioSource… ➔ với chức năng đúng với tên gọi của mình.
▪ Custom Component (Script): Cocos Creator 2.4.7 hỗ trợ ngôn ngữ viết Script là
Javascript và Typescript. Về cơ bản, ta sẽ định nghĩa một Javascript Object với
một số Properties định sẵn của Cocos Creator (có thể lược bỏ nếu không cần thiết)
và truyền vào phương thức cc.Class().
▪ Các Lifecycle Callbacks và thứ tự thực thi: onLoad ➔ onEnable ➔ start ➔
update ➔ lateUpdate ➔ onDisable ➔ onDestroy.
-
Event System: Liên lạc giữa các Node hoặc các Component bằng EventHandler
component (cc.Component.eventHandler) hoặc emit/launch một event (Event
Launcher).
Kết quả :
-
Thực hiện và tìm hiểu đầy đủ các nội dụng chính của Cocos Creator như trên và hoàn
thành được một bài báo cáo đã được người phụ trách hướng dẫn kiểm duyệt.
-
Thuần thục được ngôn ngữ lập trình Javascript khi viết Script cho Cocos Creator.
-
Nắm bắt được những nội dung cơ bản và tự áp dụng những demo nhỏ cho những nội
dung tìm hiểu được.
2.3.
Thực hiện bài kiểm tra kiến thức Cocos Creator và khả năng tư duy lập trình
Nội dung: Thực hiện bản demo game bắn trứng rồng cổ điển (Endless Mode) và đảm
bảo những mechanic chính của game gốc như: Bắn trứng màu ngẫu nhiên theo góc đã
được xác định; Nổ trứng khi bắn trứng vào cụm trứng cùng màu có số lượng từ 3 trở
lên; Trứng rớt khi xảy ra hiện tượng nổ. Chính sách ghi điểm khi nổ được trứng, rớt
trứng cũng như các Assets của trứng, particles và âm thanh thực tập sinh tự chuẩn bị và
sẽ không nằm trong đánh giá.
Đường dẫn demo thực hiện: https://github.com/AdrianNguyenUIT/DragonEggPopClone
Nhận xét, đánh giá:
Nguyễn Công Lý
Nguyễn Lương Kiên
12
-
Tổ chức các node trên editor vẫn còn lộn xộn khi không có cơ chế sinh trứng tự động
và sắp xếp các node không được tổ chức theo mong muốn của người đánh giá.
-
Gợi ý cách tổ chức các node sao cho dễ đọc và nhìn nhận.
-
Có các lỗi sau:
▪ Trứng được bắn ra khi giao tiếp với trứng trên bàn có hiện tượng đi xuyên.
▪ Thuật toán xác định trứng rơi vẫn chưa biểu hiện theo đúng yêu cầu.
Kết quả:
-
Đã có sự nhìn nhận và xem xét lại demo thực hiện và đã tiến hành debug và chỉnh
sửa thuật toán và tạo một cơ chế pooling và sinh trứng tự động.
-
Rút ra bài học, kinh nghiệm về việc tổ chức các node trong editor sao cho dễ nhìn và
tương tác.
2.4.
Dự án game bắn trứng
Nội dung:
Làm lại một tựa gam bắn trứng đã có mặt trên Google Play là Egg Shoot của Crab
Studio với mục đích tham khảo và sẽ chỉnh sửa, thêm thắt những tính năng, giao diện
với mục tiêu là sẽ trở thành một mini game trong dự án game lớn của công ty. Áp dụng
những gì đã làm trong bài kiểm tra trên để tham khảo, có thể chỉnh sửa thuật toán tùy ý.
Đường dẫn của game gốc:
https://play.google.com/store/apps/details?id=com.cua.egg.shoot&hl=en&gl=US
Hình ảnh của game gốc:
Nguyễn Công Lý
Nguyễn Lương Kiên
13
Chi tiết dự án thực hiện: Xem chương 3.
Chương 3 Chi tiết dự án game bắn trứng
3.1. Thông tin chung:
-
Là tựa game làm lại tựa game Egg Shoot của Crab Studio (Chương 2 – mục 2.4) với mục
đích sẽ sử dụng game bắn trứng (đã qua sửa đổi) thành một mini game trong một tựa
game đang phát triển của công ty.
-
Các Assets của trò chơi do công ty cung cấp.
-
Người thực hiện: Thực tập sinh Nguyễn Lương Kiên
Nguyễn Công Lý
Nguyễn Lương Kiên
14
3.2
-
Tóm tắt luật chơi cơ bản:
Khi tham gia màn chơi, người chơi điểu khiển trỏ chuột hoặc cảm ứng để điều
khiển mũi tên
chỉ thị hướng mà người chơi muốn bắn trứng.
- Trứng để bắn sẽ có một mầu ngẫu nhiên tùy vào các màu trứng được phép có trên
bàn.
- Khi trứng được bắn đi: Va chạm vào hai bên tường sẽ bật ngược, thay đổi hướng x
của vector di chuyển của trứng; Va chạm với trứng sẽ xác định điều kiện nổ là nếu
cụm trứng sau khi va chạm xảy ra là cúm trứng cùng màu với số lượng từ 3 trở lên
sẽ xảy ra sự kiển nổ trứng).
Nguyễn Công Lý
Nguyễn Lương Kiên
15
- Sự kiện nổ trứng sẽ giúp người chơi ghi điểm theo công thức tính điểm của trò chơi.
- Khi các trứng trên bàn gặp phải dây chắn ngang, người chơi sẽ có 6 giây để làm rớt
hoặc nổ hết những trứng đó
.
Nếu sau 6 giây mà vẫn có trứng nằm trên dây chắn ngang, game sẽ kết thúc màn
chơi và ghi nhận số điểm hiện tại.
Nguyễn Công Lý
Nguyễn Lương Kiên
16
-
Khi cát ở đồng hồ cát ở tường bên phải
hiện một quả trứng có cánh
chảy xuống hết bên dưới sẽ xuất
. Loại trứng này báo hiệu màu trứng
tiếp theo (vàng) sẽ xuất hiện trên bàn nêu như người chơi không làm nổ quả trứng
này. Để làm nổ quả trứng bay người chơi chỉ cần bắn trứng hiện tại vào trứng bay
thì sẽ nhận được 250 điểm. Tuy nhiên quả trứng (vàng) tiếp theo sẽ bay nhanh hơn
và khó bắn trúng hơn.
3.3. Công thức tính điểm
[Số trứng Nổ]: Số trứng trong cụm trứng cùng màu khi nổ.
[Điểm]: Điểm số cơ bản gắn cho mỗi quả trứng (mặc định là 10).
[Tích các số nhân]: Trong trường hợp người chơi làm nổ những quả trứng đặc biệt giúp
nhân số điểm đạt được với số biểu thị (X2, X3, X4) và được nhân dồn. Ví dụ người
chơi ăn được 1 quả trứng X2 và 1 quả trứng X3 thì điểm số sẽ được nhân 6.
[Số trứng Rơi]: Số quả trứng lại rơi khi sự kiện nổ xảy ra.
Nguyễn Công Lý
Nguyễn Lương Kiên
17
3.4. Trứng đặc biệt
- Trên bàn trứng sẽ có duy nhất một quả trứng tại một thời điểm trở thành trứng đặc
biệt với dấu hiệu nhận biết là trứng sẽ có animation nở ra vào.
,
.
- Khi làm nổ quả trứng này sẽ kích hoạt hiệu ứng ngẫu nhiên đặc biệt cho quả trứng
hàng chờ tiếp theo.
-
Các hiệu ứng đặc biệt:
▪ Trứng bonus điểm (nhân với giá trị điểm mặc định của mỗi quả trứng):
(5 * 10 điểm) ,
(10 * 10 điểm),
(15 * 10 điểm),
(20 * 10 điểm)
▪ Trứng nhân điểm:
(X2 số điểm),
(X3 số điểm),
(X4
số điểm).
▪ Trứng UP:
Nguyễn Công Lý
sẽ làm bàn trứng di chuyển lên một đoạn.
Nguyễn Lương Kiên
18
3.5. Các hệ thống quản lý cốt lõi
3.5.1.
Nguyễn Công Lý
Resource Manager:
Nguyễn Lương Kiên
19
3.5.2.
Nguyễn Công Lý
Egg Manager:
Nguyễn Lương Kiên
20
3.5.3.
Board Manager:
3.5.4.
Game Manager:
Nguyễn Công Lý
Nguyễn Lương Kiên
- Xem thêm -