Đồ án này tập trung vào việc nghiên cứu và thực hiện một ứng dụng game Endless Runner - một dạng game thú vị và phổ biến trong lĩnh vực giải trí điện tử, nhằm khám phá sự tương tác giữa
Trang 1TRƯỜNG ĐẠI HỌC KINH DOANH VÀ CÔNG NGHỆ HÀ NỘI
KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO ĐỒ ÁN TƯƠNG TÁC GIỮA CÁC ĐỐI TƯỢNG TRONG
MÔI TRƯỜNG ẢO
Đề tài: Game Endless Runner
Họ Và Tên: Nguyễn Ngọc Anh Dũng
Lớp: UD26.04
MSV:
Hà Nội – 2023
Trang 2MỤC LỤC
LỜI MỞ ĐẦU……… 2
CHƯƠNG 1: TỔNG QUAN VỀ UNITY……… 3
Unity là gì?……… 3
Mục đích sử dụng Unity………
CHƯƠNG 2: THIẾT KẾ CHƯƠNG TRÌNH GAME ENDLESS RUNNER ………
2.1: Lý do chọn đề tài………
2.2: Định hướng………
2.3: Lợi ích………
2.4: Chức năng………
CHƯƠNG 3: CHƯƠNG TRÌNH GAME ENDLESS RUNNER………
3.1: Giao diện và mô tả………
3.2: Hình minh họa………
3.3: Một số đoạn mã code cơ bản trong chương trình 3.4 Kế hoạch phát triển CHƯƠNG 4: KẾT LUẬN………
LỜI MỞ ĐẦU
Trang 3Trong thời đại công nghệ ngày nay, môi trường ảo không chỉ là một khái niệm mà đã trở thành một phần quan trọng không thể thiếu trong nhiều lĩnh vực Tích hợp các đối tượng và tương tác giữa chúng trong môi trường ảo đang mang lại những trải nghiệm mới mẻ và thú vị cho người dùng Đồ án này tập trung vào việc nghiên cứu và thực hiện một ứng dụng game Endless Runner - một dạng game thú vị và phổ biến trong lĩnh vực giải trí điện tử, nhằm khám phá sự tương tác giữa các đối tượng trong một môi trường ảo động
Tôi đã đặt mục tiêu xây dựng một trò chơi Endless Runner không chỉ mang tính giải trí cao mà còn thể hiện được cách các đối tượng trong trò chơi tương tác với nhau, từ đó tạo ra trải nghiệm tốt nhất cho người chơi Báo cáo này sẽ đưa ra quá trình nghiên cứu, thiết kế, và triển khai của trò chơi, cũng như các phương pháp và công nghệ được sử dụng để xây dựng môi trường ảo tương tác
Qua quá trình thực hiện đồ án, tôi hy vọng rằng báo cáo sẽ cung cấp cái nhìn tổng quan và chi tiết về quá trình tương tác giữa các đối tượng trong môi trường ảo thông qua việc phát triển trò chơi Endless Runner Ngoài ra, tôi cũng mong muốn báo cáo sẽ góp phần mở ra các hướng nghiên cứu và ứng dụng mới trong lĩnh vực này
CHƯƠNG 1
Trang 4TỔNG QUAN VỀ UNITY
Unity là một trong những nền tảng phát triển trò chơi và ứng dụng thịnh hành nhất trong ngành công nghiệp game và thực tế ảo Nó cung cấp một môi trường phát triển tích hợp mạnh mẽ, cho phép nhà phát triển tạo
ra các trò chơi, ứng dụng di động, trải nghiệm thực tế ảo và thậm chí cả các bộ phim hoạt hình
Một số điểm cần biết về Unity:
Đa nền tảng: Unity hỗ trợ phát triển trên nhiều nền tảng khác nhau như
PC, di động (iOS, Android), console game và thậm chí cả các thiết bị thực tế ảo như Oculus Rift, HTC Vive, và nền tảng VR/AR khác Sức mạnh này giúp nhà phát triển đạt được một lượng người chơi và người dùng đa dạng trên các nền tảng khác nhau
Ngôn ngữ lập trình: Unity hỗ trợ nhiều ngôn ngữ lập trình như C#,
JavaScript, và Boo Tuy nhiên, C# thường được coi là ngôn ngữ phổ biến và mạnh mẽ nhất trong việc phát triển trò chơi trên Unity
Cộng đồng lớn: Unity có một cộng đồng rộng lớn, nơi người dùng có thể tìm kiếm tài liệu, hướng dẫn, và hỗ trợ từ các nhà phát triển khác Cộng đồng này cũng cung cấp các tài liệu học tập, các nguồn tài nguyên và thậm chí là các bản demo, mẫu thử nghiệm cho việc học tập và phát triển Điều này giúp nhà phát triển dễ dàng tiếp cận thông tin và hỗ trợ khi cần thiết
Giao diện người dùng thân thiện: Giao diện người dùng của Unity được thiết kế với sự trực quan và dễ sử dụng, cung cấp các công cụ chỉnh sửa scene, animation, vật lý và nhiều công cụ khác Điều này giúp tối ưu hóa quá trình phát triển và tạo ra trải nghiệm tương tác thuận tiện cho người dùng
Hỗ trợ nền tảng thực tế ảo và thực tế ảo mở rộng: Unity đã trở thành một trong những công cụ hàng đầu trong việc phát triển các ứng dụng thực tế
Trang 5ảo và thực tế ảo mở rộng, hỗ trợ các thiết bị từ Oculus Rift đến các thiết
bị di động, mở ra cánh cửa cho việc sáng tạo và đổi mới không ngừng Asset Store: Unity cung cấp một cửa hàng tài nguyên (Asset Store) nơi người dùng có thể mua và bán các tài nguyên, từ mô hình 3D, texture, code scripts, đến các công cụ mở rộng và các gói cắm (plugins) hữu ích Unity đã trở thành một trong những công cụ phổ biến nhất cho việc phát triển trò chơi và ứng dụng thịnh hành Sự linh hoạt, tính toàn diện và cộng đồng mạnh mẽ của nó làm cho Unity trở thành lựa chọn hàng đầu cho nhiều nhà phát triển trên khắp thế giới
Trang 6CHƯƠNG 2 THIẾT KẾ GAME ENDLESS RUNNER 2.1 Lý do chọn đề tài
- Sự Thú vị và Phổ biến của Đề tài:
Trò chơi Endless Runner được lựa chọn vì tính thú vị và sức hút đối với người chơi Sự phổ biến của nó không chỉ nằm ở tính gây nghiện mà còn
ở tính đa dạng trong cách thức chơi và tính thách thức liên tục
- Đơn Giản và Dễ tiếp cận:
Endless Runner có cấu trúc đơn giản, điều này tạo điều kiện thuận lợi cho việc nghiên cứu và phát triển Sự dễ dàng trong việc thêm các tính năng mới, thử nghiệm cơ chế gameplay và tinh chỉnh cũng là một lý do quan trọng
- Tập Trung vào Tương Tác và Gameplay:
Lựa chọn đề tài này giúp tập trung nghiên cứu vào cơ chế chơi game và tương tác giữa người chơi và môi trường ảo Từ cách di chuyển, nhảy qua chướng ngại vật đến phản ứng trong tình huống khó khăn, đề tài này tạo ra cơ hội để tìm hiểu sâu hơn về cơ chế tương tác
- Tiềm năng Ứng dụng Đa dạng:
Nghiên cứu về tương tác trong Endless Runner không chỉ giới hạn trong lĩnh vực game mà còn có tiềm năng ứng dụng rộng rãi trong các lĩnh vực khác như giáo dục, công nghiệp, và tương tác người-máy
- Phù Hợp với Mục Tiêu Nghiên cứu:
Đề tài này cung cấp cơ hội tốt để nghiên cứu về tương tác, gameplay và cách người chơi tương tác với môi trường ảo, từ đó cải thiện trải nghiệm chơi game và ứng dụng vào các lĩnh vực thực tiễn
Trang 72.2 Định hướng xây dựng game endless runner:
- Đồ Họa: Tạo đồ họa sáng đơn giản, màu sắc hài hòa, để tạo ra trải nghiệm thị giác tốt cho người chơi
- Nhân Vật Chính: Tạo nhân vật hoặc lựa chọn các nhân vật sẵn có phù hợp với bối cảnh và truyền thống trò chơi
- Chế Độ Chơi: Xác định cách chơi cụ thể, bao gồm cơ chế di chuyển, nhảy, tránh vật cản, thu thập xu, hoặc các hoạt động khác
- Power-ups và Trở Ngại: Thêm các yếu tố đặc biệt như các vật phẩm thu thập, power-ups để tăng sức mạnh, và các trở ngại để tạo thêm thách thức cho người chơi
- Âm Thanh: Bổ sung hiệu ứng âm thanh để tăng cường trải nghiệm chơi game
2.3 Lợi ích game Endless Runner mang lại
Game Endless Runner có nhiều lợi ích và thu hút người chơi nhờ vào tính giải trí, sự thách thức và tính kích thích trí não Dưới đây là một
số lợi ích chính của trò chơi Endless Runner:
- Giải trí và thư giãn: Endless Runner mang đến trải nghiệm giải trí đơn giản nhưng gây nghiện Người chơi có thể thư giãn và giải trí mà không cần phải đầu tư quá nhiều thời gian để hiểu cốt truyện hay quy tắc chơi
- Tăng cường tập trung và phản xạ: Trò chơi yêu cầu người chơi phản xạ nhanh nhạy và tập trung để tránh các chướng ngại vật và vượt qua các thử thách đang gia tăng liên tục Điều này giúp cải thiện kỹ năng tập trung và phản xạ của người chơi
- Thách thức liên tục: Endless Runner thường có cấu trúc gameplay đơn giản nhưng cung cấp thách thức không ngừng Sự tăng độ khó theo thời gian hoặc khi người chơi tiến xa hơn trong game tạo ra một sự cạnh tranh với chính bản thân họ, thúc đẩy họ cố gắng hơn để đạt được điểm
số cao nhất
Trang 8- Tính kích thích trí não: Việc phải nhanh chóng đưa ra quyết định, đoán trước và phản ứng nhanh trong khi chơi Endless Runner giúp kích thích trí não Người chơi cần phải có chiến lược tốt để tồn tại lâu hơn và đạt được điểm số cao
- Thú vị với tính tái chơi cao: Với cấu trúc "không có điểm dừng" và tính chất không giới hạn, người chơi có thể chơi lại nhiều lần mà không bao giờ cảm thấy nhàm chán Họ luôn có cơ hội để cải thiện kỹ năng và vượt qua điểm số của họ
=> Tóm lại, Endless Runner không chỉ là trò chơi giải trí đơn giản mà còn là một công cụ hữu ích để cải thiện kỹ năng tập trung, phản xạ và tư duy chiến lược của người chơi Sự kết hợp giữa tính thách thức và tính giải trí đã làm cho thể loại này trở thành một trong những lựa chọn phổ biến trong cộng đồng game thủ
2.4 Chức năng
- Chức năng Di chuyển liên tục: Đây là chức năng cơ bản của Endless Runner - nhân vật chạy liên tục mà không cần ngừng lại Người chơi có thể điều khiển nhân vật di chuyển sang trái, phải, nhảy vượt qua các chướng ngại vật để tránh va chạm
- Hệ thống Chướng ngại vật và Đối tượng tương tác: Thiết kế chướng ngại vật di động và các vật phẩm thu thập giúp tạo ra sự đa dạng và thách thức trong gameplay
- Hệ thống Điểm số và Thành tích: Tích hợp một hệ thống điểm số để đánh giá thành tích của người chơi Điều này có thể bao gồm ghi nhận khoảng cách đi được, số lượng vật phẩm thu thập
- Đồng tiền thu thập: Bổ sung vật phẩm hỗ trợ đồng tiền trong game để người chơi có động lực để chơi lại
- Hệ thống Level và Cấu trúc khó khăn gia tăng: Tạo ra độ nhanh tăng dần theo thời gian hoặc theo khoảng cách người chơi đã đi được Điều
Trang 9này giúp tạo ra sự thách thức và cung cấp một cảm giác tiến triển cho người chơi
- Giao diện người dùng (UI) thân thiện: Thiết kế giao diện người dùng (UI) dễ sử dụng và thân thiện, bao gồm hiển thị điểm số đồng tiền
Trang 10CHƯƠNG 3 CHƯƠNG TRÌNH GAME ENDLESS RUNNER
3.1 Giao diện vào mô tả
- Hiển thị đồng xu: Hiển thị khi bắt đầu trò chơi và nằm rải rác trên đường nhân vật di chuyển
- Hiển thị nhân vật chính: Hiển thị hình ảnh nhân vật giữa trung tâm màn hình
- Giao diện tối giản: Tạo một giao diện đơn giản và sạch sẽ, tập trung vào việc hiển thị thông tin cần thiết mà không gây quá nhiều xao lãng cho người chơi Sử dụng các màu sắc nhẹ nhàng, phù hợp với phong cách chơi game và không gian trò chơi
- Hiển thị điểm số: Một phần quan trọng của giao diện là hiển thị điểm
số hiện tại của người chơi Được hiển thị ở góc trên bên trái của màn hình Khi người chơi thu thập đồng xu, vượt qua trở ngại hoặc hoàn thành các mục tiêu, điểm số sẽ tăng lên một cách liên tục và rõ ràng
- Hiệu ứng âm thanh khi thu phập đồng xu: Tiếng "bling" khi thu thập đồng xu Điều này giúp tạo cảm giác thích thú và động lực khi người chơi thu thập điểm
Hướng dẫn:
sang trái:
sang phải:
nhảy:
ssss
Space
Trang 113.2 Hình ảnh minh họa
Trang 123.3 Một số đoạn mã code cơ bản trong chương trình
Code điều chỉnh camera chạy theo đối tượng
using UnityEngine;
public class CameraFollow : MonoBehaviour
{
[SerializeField] Transform player;
Vector3 offset;
private void Start()
{
offset = transform.position - player.position;
}
private void Update()
{
Vector3 targetPos = player.position + offset;
targetPos.x = 0;
transform.position = targetPos;
}
}
Code chuyển động của đối tượng
using UnityEngine;
using UnityEngine.SceneManagement;
public class PlayerMovement : MonoBehaviour
{
bool alive = true ;
public float speed = 5;
[SerializeField] Rigidbody rb;
float horizontalInput;
[SerializeField] float horizontalMultiplier = 2;
public float speedIncreasePerPoint = 0.1f;
bool isJumping = false ;
public float jumpForce = 5f;
private void FixedUpdate()
{
if (!alive) return ;
Vector3 forwardMove = transform.forward * speed * Time.fixedDeltaTime;
Vector3 horizontalMove = transform.right * horizontalInput * speed * Time.fixedDeltaTime * horizontalMultiplier;
rb.MovePosition(rb.position + forwardMove + horizontalMove);
}
Trang 13private void Update()
{
horizontalInput = Input.GetAxis( "Horizontal" );
if (Input.GetButtonDown( "Jump" ))
{
Jump();
}
if (transform.position.y < -5)
{
Die();
}
}
public void Die()
{
alive = false ;
Invoke( "Restart" , 2);
}
void Restart()
{
SceneManager.LoadScene(SceneManager.GetActiveScene().name); }
void Jump()
{
if (!isJumping)
{
isJumping = true ;
rb.AddForce(Vector3.up * jumpForce, ForceMode.Impulse);
}
}
private void OnCollisionEnter(Collision collision)
{
if (collision.gameObject.layer == LayerMask.NameToLayer( "Ground" )) {
isJumping = false ;
}
}
}
Trang 14Code giúp sản sinh ra các đối tượng
using UnityEngine;
public class GroundSpawner : MonoBehaviour
{
[SerializeField] GameObject groundTile;
Vector3 nextSpawnPoint;
public void SpawnTile( bool spawnItems)
{
GameObject temp = Instantiate(groundTile, nextSpawnPoint, Quaternion.identity); nextSpawnPoint = temp.transform.GetChild(1).transform.position;
if (spawnItems)
{
temp.GetComponent<GroundTile>().SpawnObstacle();
temp.GetComponent<GroundTile>().SpawnCoins();
}
}
private void Start()
{
for ( int i = 0; i < 15; i++)
{
if (i < 3)
{
SpawnTile( false );
}
else
{
SpawnTile( true );
}
}
}
}
4 Kế Hoạch Phát Triển Tiếp Theo
Trang 15- Mở Rộng Nội Dung Game
Thêm Đa Dạng Bản Đồ: Tạo ra nhiều bản đồ hoặc môi trường khác nhau, từ đô thị đến môi trường tự nhiên, để mang lại sự đa dạng cho trải nghiệm chơi
- Tối Ưu Hóa Trải Nghiệm Người Chơi
Điều Chỉnh Gameplay: Cải thiện và điều chỉnh gameplay, bao gồm cân bằng khó khăn và tăng tính thú vị, đồng thời loại bỏ các lỗi và bug có thể xuất hiện
Tính Năng Đặc Biệt Tùy Chỉnh: Thêm tính năng tùy chỉnh cho người chơi, như chế độ chơi khó, chế độ ngẫu nhiên, hoặc tính năng xây dựng màn chơi
- Tích Hợp Đa Nền Tảng hoặc Tính Năng Mạng
Hỗ Trợ Đa Nền Tảng: Mở rộng để hỗ trợ nhiều nền tảng chơi game khác nhau như PC, điện thoại di động, console, vv
Chế Độ Chơi Mạng: Thêm tính năng chơi mạng đa người chơi hoặc chế
độ chơi đồng đội để tăng tính cạnh tranh và tương tác xã hội
- Tương Tác và Phản Hồi từ Người Chơi
Thu Thập Phản Hồi: Tích hợp tính năng để người chơi có thể gửi phản hồi hoặc ý kiến đóng góp trực tiếp
Cập Nhật Định Kỳ và Sự Kiện: Tạo sự kiện định kỳ hoặc cập nhật thêm nội dung mới để giữ người chơi quan tâm và tham gia
CHƯƠNG 4: KẾT LUẬN
Trang 16Trải qua quá trình nghiên cứu và thực hiện đề tài về tương tác giữa các đối tượng trong môi trường ảo qua trò chơi Endless Runner, tôi nhận thấy sự quan trọng của việc xác định và thiết kế các cơ chế tương tác linh hoạt và hấp dẫn để tạo ra trải nghiệm tốt nhất cho người chơi Việc cân nhắc về việc lập trình các đối tượng, xử lý va chạm và tương tác giữa chúng đóng vai trò quan trọng trong việc tạo ra một môi trường ảo sống động và thú vị
Tôi đã gặp phải một số thách thức trong quá trình triển khai, đặc biệt là trong việc tối ưu hóa hiệu suất của trò chơi để đảm bảo trải nghiệm mượt
mà và không gây phiền hà cho người chơi Tuy nhiên, nhờ vào quá trình thử nghiệm, đánh giá và điều chỉnh liên tục, tôi đã có thể cải thiện và hoàn thiện sản phẩm của mình
Đồ án này cũng đã giúp tôi hiểu rõ hơn về mức độ phức tạp của việc phát triển một ứng dụng tương tác trong môi trường ảo Sự kết hợp giữa kiến thức về lập trình, đồ họa và thiết kế trò chơi đã đóng vai trò quan trọng trong việc đạt được mục tiêu của đề tài
Tôi hy vọng rằng báo cáo này không chỉ đề cập đến quá trình thực hiện
mà còn là nguồn tài liệu hữu ích cho những người quan tâm đến việc nghiên cứu và phát triển các ứng dụng tương tác trong môi trường ảo Cùng với đó, tôi mong rằng công trình này sẽ khơi nguồn cho nhiều ý tưởng và hướng đi mới trong lĩnh vực này
Đồ án của tôi còn nhiều thiếu sót và chưa hoàn hảo, rất mong nhận được
sự đánh giá của thầy cô để có thể cải thiện bài làm được tốt hơn