Professional Documents
Culture Documents
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
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
- 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
- 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.
- 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.
- 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.
- Đị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”.
- 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.
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.
- 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.
- 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://.
Chỉ trạng thái “modify”: khi bắt đầu chỉnh sửa một file.
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 đó.
- 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.
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
- 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,…
- 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.
- 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
- 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.
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.
• 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
- 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
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
- 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à.
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.