Xem mẫu
- TRƯỜNG ĐẠI HỌC CÔNG
NGHỆ THÔNG TIN VÀ
TRUYỀN THÔNG VIỆT - HÀN
KHOA KHOA HỌC MÁY TÍNH
TÊN ĐỀ TÀI
THIẾT KẾ VÀ LẬP TRÌNH GAME RUNNING MAN
TÓM TẮT ĐỒ ÁN TỐT NGHIỆP
NGÀNH LẬP TRÌNH MÁY TÍNH
HSSV thực hiện: Nguyễn Tuấn Anh
Mã HSSV: CCLT17A001
Cán bộ hướng dẫn: ThS. Nguyễn Văn Lợi
Khóa đào tạo: Khóa k11
Đà Nẵng - 12/2020
- Chương 1: Mở đầu
Lý do chọn đề tài:
Nhu cầu giải trí tăng cao cùng với sự phát triển của các
nền tảng công nghệ khiến cho phát triển game trở thành một
nghề cực kỳ có sức hút đối với giới trẻ. Loạt bài tìm hiểu
ngành nghề ngày hôm nay sẽ giới thiệu cho các bạn một nghề
sẽ khiến rất nhiều các bạn trẻ hứng thú: lập trình và phát triển
game.
Triển vọng lĩnh vực này rất cao:
Từ lĩnh vực phần mềm, game dần tách ra thành một
ngành riêng biệt bởi sự phát triển vượt bậc và khả năng mang
lại doanh thu khủng, chiếm tỉ lệ cao nhất trong ngành công
nghệ thông tin (doanh thu 91,7 tỉ USD trong năm 2015 trên
toàn thế giới). Không ai khác, chính thế hệ trẻ ngày nay đã ý
thức được sức ảnh hưởng, độ bao phủ của game đến cộng
đồng hiện nay như thế nào.
Tại Texas, Mỹ, theo thống kê của “The Texas Tribune”,
lương trong ngành Mô phỏng và Lập trình Game từ 1.000 đến
trên 40.000 USD/tháng. Game và nội dung thông tin số là
ngành công nghiệp tiềm năng không chỉ trên thế giới mà cả tại
Việt Nam. Lương lập trình viên game dao động từ 7 đến 15
triệu/tháng, đó là chưa kể nhiều công ty thưởng lương tháng
13, thưởng thành tích và doanh thu sản phẩm khá cao. Các
- công ty game Việt Nam liên tục tuyển người nhưng vẫn
thường xuyên rơi vào tình trạng “khát nhân lực” do nhu cầu
cao nhưng số lượng đáp ứng yêu cầu công việc lại thấp.
Môi trường làm việc hiện đại cũng là điểm cuốn hút
của ngành nghề này đối với giới trẻ. Dạo quanh các game
studio của các công ty như FPT online, Gameloft VN,
GlassEgg, Sáng Tạo, VNG…, các bạn trẻ có thể bị “choáng”
vì bàn làm việc của mỗi người có thể gồm 2 màn hình, hai, ba
chiếc di động và nhiều thiết bị hiện đại khác. Nhưng quan
trọng nhất là triển vọng nghề nghiệp của lập trình viên game
là rất cao.
Mục tiêu và nhiệm vụ nghiên cứu.
Hiểu và biết cách làm game 2D.
Đối tượng và phạm vi nghiên cứu.
Đối tượng nghiên cứu: Game Running Man
Phạm vi nghiên cứu: Game 2D
Dự kiến kết quả.
Hoàn thành được 01 game 2D
Ý nghĩa khoa học và thực tiễn.
Nhiều tựa game Việt tự tin “sải cánh” và được đón
nhận không chỉ ở Việt Nam mà trên thị trường quốc tế như:
Thời loạn, Cờ Tỷ Phú, Khu vườn trên mây. ZingPlay - cổng
game giải trí đa nền tảng tiên phong ở Việt Nam bước chân ra
- thế giới, cũng không ngừng thay đổi và phát triển để phù hợp
với nhu cầu đa dạng của người dùng toàn cầu.
“Game là sản phẩm công nghệ giải trí thậm chí có giá
trị truyền tải văn hóa hơn cả sách và phim ảnh, đòi hỏi người
làm game phải sáng tạo, đam mê hơn làm phần mềm bình
thường”, ông Nguyễn Vũ Tiến, Quản lý sản phẩm của VNG
Game Studio North, người đã gắn bó hơn 10 năm trong ngành
khẳng định.
Chương 1: Giới Thiệu Chung
1.1. Giới thiệu về unity
Unity là một game engine đa nền tảng được phát triển
bởi Unity Technologies. Unity nổi bật với khả năng xây dựng
trò chơi chạy trên nhiều nền tảng. Các nền tảng được hỗ trợ
hiện nay là Android, Android TV, Facebook Gameroom, Fire
OS, Gear VR, Google Cardboard, Google Daydream, HTC
Vive, iOS, Linux, macOS, Microsoft HoloLens, Nintendo
3DS family, Nintendo Switch, Oculus Rift, PlayStation
4, PlayStation Vita, PlayStation VR, Samsung Smart
TV, Tizen, tvOS, WebGL, Wii U, Windows, Windows
Phone, Windows Store, và Xbox One.
1.2. Giới thiệu về game running man
Cách chơi:
Di chuyển: dùng phím mũi tên trái phải để di chuyển
hoặc phím “a” để di chuyến sang trái và phím “d” để di
chuyển sang phải.
- Nhảy: nhấn phím “x” để nhảy. Giữ phím “x” để nhảy
cao hơn.
Chương 2: Thiết kế và lập trình game
2.1. Nhân vật chính
Đây là đối tượng để chúng ta điều khiển vượt qua thử
thách trong trò chơi này.
Thêm thuộc tính Box Collider 2D cho nhân vật để có
thể nhận ra sự va chạm vật lý khi tác động nhân vật với các
thành phần khác trong game.
Tiếp theo thêm vào thuộc tính rigidbody 2D làm cho
nhân vật có trọng lượng để có thể rơi xuống khi nhảy lên trên
không trung.
Tạo 4 animation tương ứng với 4 trạng thái của nhân
vật là đứng, chạy, nhảy và chuyển hướng.
Sau đó qua cửa sổ animator để liên kết 4 trạng thái này
với nhau giúp cho khi di chuyển nhân vật mượt mà hơn
Thêm các thuộc tính tốc độ (float), dưới đất (bool),
chuyển hướng (bool) vào các liên kết để kiểm tra xem nhân
vật đang ở trạng thái nào.
Code di chuyển:
void DiChuyen()
{
float PhimNhanPhaiTrai = Input.GetAxis("Horizontal");
r2d.velocity = new Vector2(VanToc *
PhimNhanPhaiTrai, r2d.velocity.y);
- TocDo = Mathf.Abs(VanToc * PhimNhanPhaiTrai);
if (PhimNhanPhaiTrai > 0 && !QuayPhai) HuongMat();
if (PhimNhanPhaiTrai < 0 && QuayPhai) HuongMat();
}
void HuongMat()
{
QuayPhai = !QuayPhai;
Vector2 HuongQuay = transform.localScale;
HuongQuay.x *= -1;
transform.localScale = HuongQuay;
}
void NhayLen()
{
if (Input.GetKeyDown(KeyCode.X) && DuoiDat ==
true)
{
r2d.AddForce((Vector2.up) * Nhay);
}
if (r2d.velocity.y < 0)
{
r2d.velocity += Vector2.up * Physics2D.gravity.y *
(RoiXuong - 1) * Time.deltaTime;
}
else if (r2d.velocity.y > 0 &&
!Input.GetKey(KeyCode.X))
{
r2d.velocity += Vector2.up * Physics2D.gravity.y *
(NhayThap - 1) * Time.deltaTime;
}
}
Trong phần Rigidbody tích vào Z ở Freeze Rotation
trong Constraints để nhân vật luôn đứng thẳng khi va chạm
với các thành phần khác của trò chơi.
- Trong phần void Update sẽ có lệnh khi nhân vật rơi
xuống vực khi đang chơi sẽ bị chết:
void Update()
{
if (gameObject.transform.position.y < -10f)
{
Destroy(gameObject);
}
}
Tạo âm thanh cho các hoạt động của nhân vật:
Thêm Component Audio Source vào để có thể thêm
âm thanh cho các hoạt động của nhân vật.
Khởi tạo âm thanh:
private AudioSource AmThanh;
void Start()
{
AmThanh = GetComponent();
}
public void TaoAmThanh(string FileAmThanh)
{
AmThanh.PlayOneShot(Sounds.Load("/" +
FileAmThanh));
}
- 2.2. Các thành phần khác trong trò chơi:
2.2.1. Tường gạch
Đây là phần khá quan trọng của trò chơi. Nó là nền
đất để nhân vật di chuyển, là các vật để nhân vật có thể di
chuyển dễ dàng hơn khi chơi, là tường giới hạn để nhân vật
không đi ra ngoài map được.
Tường gạch sẽ chỉ có thuộc tính Box Collider 2D để
nhân vật có thể đứng được trên nó.
Ở dòng Draw Mode chọn Tiled thay vì simple để có
thể kéo viện gạch dài ra và cao lên để tạo thành tường mà k
làm biến dạng viên gạch.
Ta phải thiết lập thuộc tính Size ở Box Collider 2D
đúng bằng với thuộc tính Size ở Sprite Renderer để trạng thái
vật lý được áp dụng trên toàn bộ chiều dài của tường gạch.
Sau khi thiết lập được 1 tường gạch ta kéo vào trong thư
mục prefabs để có thể sử dụng chúng liên tục mà không cần
thiết lập lại.
2.2.2. Ống khói
Đây là chướng ngại vật gây cản trở cho nhân vật khi di
chuyển.
Ống khói được tạo thành từ 2 thành phần đó là đầu trên
và thân ống khói.
- Cần thêm 2 thuộc tính cho ống khói là Box Collider 2D
và Platform Effector 2D
2.2.3. Thiết kế và lập trình cho kẻ địch
2.2.4. Tạo giới hạn cho map
Để cho nhân vật không chạy ra bên ngoài của màn chơi.
Tạo thêm các tường chắn ở bên ngoài rìa của màn chơi. Lấy
tường đã được định dạng sẵn để làm giới hạn cho màn chơi.
2.3. Xử lý va chạm
public class VaCham : MonoBehaviour
{
GameObject Man;
private void Awake()
{
Man = GameObject.FindGameObjectWithTag("Player");
}
private void OnCollisionEnter2D(Collision2D collision)
{
if (collision.collider.tag == "Player" &&
(collision.contacts[0].normal.x > 0 ||
collision.contacts[0].normal.x
- private Vector2 ViTriChet;
public void ManChet()
{
ViTriChet = transform.localPosition;
StartCoroutine(HManChet());
}
IEnumerator HManChet()
{
float TocDoNay = 2.5f;
float DoNayCao = 2.5f;
while(true)
{
transform.localPosition = new
Vector2(transform.localPosition.x, transform.localPosition.y
+ TocDoNay * Time.deltaTime);
if (transform.localPosition.y >= ViTriChet.y +
DoNayCao + 1)
break;
yield return null;
transform.localPosition = new
Vector2(transform.localPosition.x, transform.localPosition.y -
TocDoNay * Time.deltaTime);
if(transform.localPosition.y
- 2.4. Camera
Lập trình cho camera luôn đi theo nhân vật trong suốt quá
trình chơi là việc rất quan trọng. Nó ảnh hưởng trực tiếp đến
trải nghiệm của người chơi ngay từ lúc bắt đầu vào cho đến
khi kết thúc.
2.5. Chuyển đổi màn chơi
Sau khi lưu màn chơi hiện tại vào thư mục Scenes.
Tạo thêm Scenes mới tương ứng với mỗi màn chơi.
Vào Build Setting ở thẻ File để lưu các màn chơi vào.
Scenes nào cần hiển thị đầu tiên thì sẽ thêm vào Build
Setting đầu tiên.
Chương 3: Tổng kết và kết luận
3.1. Tổng kết
Covid-19 bùng nổ đã thay đổi hoàn toàn cách cả thế
giới vận hành. Từ chỗ tập trung đông người trong những sự
kiện offline hoành tráng, nhiều mô hình đã phải chuyển sang
hình thức online dẫn tới gia tăng chi phí cho nghiên cứu &
phát triển, vận hành.
Giữa lúc nhiều ngành nghề gặp khủng hoảng, thậm
chí một số thương hiệu khách sạn, hàng không còn phải tuyên
bố phá sản, ngành công nghiệp game trên toàn thế giới nhìn
chung vẫn tăng trưởng tốt.
Bởi game là ngành kinh doanh đặc thù xuyên biên
giới khi bất cứ thị trường nào cũng có thể là nơi vừa tiêu thụ
vừa là nơi sản xuất game. Cơ hội vì thế rộng mở cho bất cứ
- quốc gia khởi nghiệp nào chứ không chỉ riêng những nước có
ngành công nghiệp game phát triển mạnh như Mỹ, Nhật, Hàn
hay Trung Quốc.
Dự báo của Niko đến năm 2024, nhóm 10 nước châu
Á sẽ có 826 triệu người chơi game và tạo ra doanh thu 42 tỷ
USD. Khi đó, doanh thu toàn cầu của cả thị trường ước đạt
195 tỷ USD, theo Newzoo.
Đây có thể xem là cơ hội vàng cho các nhà phát triển
game Việt Nam. Tuy vậy, số lượng startup khởi nghiệp ở lĩnh
vực này trong những năm qua chỉ đếm trên đầu ngón tay, mà
phần nhiều là các studio độc lập (indie) làm game nhỏ phát
hành ra nước ngoài (go global). Cơ hội để cho người Việt „tái
định nghĩa‟ ngành game vì thế vẫn còn khá mơ hồ, dù người
chơi trên toàn cầu vẫn luôn rất cởi mở với các sản phẩm mới.
Vì thế, tập trung phát triển ngành làm game vẫn là ý
tưởng tốt trong nhiều năm tới. Đây là cơ hội tốt cho chúng ta
tiếp cận và phát triển ngành nghề này.
3.2. Kết luận
Em xin gởi lời cảm ơn chân thành và sự tri ân sâu sắc
đối với các thầy cô của trường Đại học Công Nghệ Thông Tin
và Truyền Thông Việt Hàn, đặc biệt là các thầy cô khoa Khoa
Học Máy Tính của trường đã tạo điều kiện cho em có nhiều
thời gian cho đồ án tốt nghiệp. Và em cũng xin chân thành
cám ơn thầy Nguyễn Văn Lợi đã nhiệt tình hướng dẫn hướng
dẫn em hoàn thành tốt khóa thực tập.
- Trong quá trình làm đồ án, khó tránh khỏi sai sót, rất
mong các Thầy, Cô bỏ qua. Đồng thời do trình độ lý luận
cũng như kinh nghiệm thực tiễn còn hạn chế nên bài báo cáo
không thể tránh khỏi những thiếu sót, em rất mong nhận được
ý kiến đóng góp Thầy, Cô để em học thêm được nhiều kinh
nghiệm.
Em xin chân thành cảm ơn!
- Tài liệu tham khảo
https://mfgg.net/index.php?act=user¶m=09&uid=14
300
https://themushroomkingdom.net/media/smb/wav
https://vi.wikipedia.org/wiki
nguon tai.lieu . vn