1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Thực tập tốt nghiệp báo cáo thực tập tại gameloft quản lý phiên bản (version control) và TortoiseSVN ứng dụng CC++ và framework có sẵn để làm bài tập physic

26 11 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Thực Tập Tốt Nghiệp Báo Cáo Thực Tập Tại Gameloft Quản Lý Phiên Bản (Version Control) Và TortoiseSVN Ứng Dụng C/C++ Và Framework Có Sẵn Để Làm Bài Tập Physic
Tác giả Nguyễn Thanh Tùng
Người hướng dẫn ThS. Nguyễn Thị Trang
Trường học Học viện Công Nghệ Bưu Chính Viễn Thông
Chuyên ngành Công Nghệ Thông Tin
Thể loại báo cáo thực tập
Năm xuất bản 2021
Thành phố Hà Nội
Định dạng
Số trang 26
Dung lượng 1,88 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

- 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 Na

Trang 1

-

-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

Mã số sinh viên: B17DCCN665

Lớp: D17CNPM2

HÀ NỘI, 2021

Trang 2

- 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

Trang 3

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

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

Trang 4

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

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

Trang 5

LỜI CẢM ƠN NHẬN XÉT CỦA ĐƠN VỊ THỰC TẬP NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN 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:

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 1.2.2 Đội ngũ nhân sự 1.2.3 Cơ sở vật chất

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

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 2.2.2 Ứng dụng C/C++ và Framework có sẵn để làm bài tập Physic 2.2.3 Training OpenGL ES

2.2.3 Ứng dụng kiến thức trên vào dự án nhóm Game King of Thieves

CHƯƠNG 3 KẾT LUẬN QUÁ TRÌNH THỰC TẬP 3.1 Những kết quả đạt được

3.2 Bài học kinh nghiệm 3.3 Những điều chưa đạt được KẾT LUẬN

Trang 6

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

Trang 7

- 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.

Trang 8

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

Trang 9

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ạinhiề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

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

3 TortoiseSVNa) 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ênServer (SVN hosting, GoogleCode, …) Thông thường Client và Server kết nối thông qua mạng LAN hoặcmạ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

Trang 10

- 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 độtTrả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 đó

Trang 11

- 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

- Nguyên tắc 1: Sử dụng các ký hiệu tiền tố trước các thông báo

- 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

Trang 12

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

- 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àoGame 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áctính năng cho game

• 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

Trang 13

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

• 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

• 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

• 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 đó

Trang 14

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

• Nếu x1 > x2 + w2 hoặc x2 > x1 + w1, return False

• Nếu y1 > y2 + h2 hoặc y2 > y1 + h1, return False

• 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:

Trang 15

• (xc, yc): vị trí tâm của 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))

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êntrình duyệt

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

Trang 16

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

Trang 17

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, …

Trang 18

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

- 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 vertexbuffer

- Cách làm: thêm thuộc tính color vào Vertex

- 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

- 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

- 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

- 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

Trang 19

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 gamekhá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 khobá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

Trang 20

• 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, )

- IDE: Microsoft Visual Studio 2019

Ngày đăng: 05/10/2022, 14:44

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w