Bleed Game 2D Platformer
3 tháng | Dự án một người | Hoàn thành
Tự xây dựng hoàn chỉnh một engine game 2D thể loại nhập vai (RPG) bằng Java, bao gồm hệ thống chỉ số nhân vật, kho vật phẩm, nhiệm vụ, kỹ năng chiến đấu, AI cho kẻ địch, và thiết kế màn chơi linh hoạt — tất cả đều được phát triển từ đầu mà không sử dụng bất kỳ game engine bên ngoài nào.
Xem dự án Github Liên hệ để phát triển game tương tựTổng Quan Dự Án
Xây dựng một game 2D hoàn toàn không dùng engine, phát triển từ đầu bằng Java AWT, tập trung vào kiến trúc module dễ mở rộng.
Tự triển khai các hệ thống như game loop, AI, phát hiện va chạm, kho đồ, nhiệm vụ và giao diện người dùng dựa trên dữ liệu.
Ưu tiên cấu trúc logic và tổ chức code rõ ràng để đảm bảo khả năng mở rộng lâu dài.
Thiết kế hệ thống màn chơi hoàn toàn dựa trên dữ liệu, mọi yếu tố gameplay — bao gồm tilemap, kẻ địch, vật phẩm, NPC, vật thể, nhiệm vụ, bẫy, hội thoại và chuyển màn — đều được tải động từ file cấu hình ngoài.
Nhờ đó, màn chơi có thể tạo mới, chỉnh sửa hoặc mở rộng mà không cần thay đổi logic lõi, giúp thiết kế linh hoạt và dễ bảo trì.
Dự án thực hiện một mình, chỉ nhận hỗ trợ nhỏ về review code và tích hợp asset.
Tính Năng Nổi Bật
- Game loop theo khung hình (frame-based)
- Di chuyển thời gian thực, vật lý & xử lý va chạm theo tile
- Render 2D thủ công
- Hệ thống di chuyển nhân vật mượt mà, điều khiển chính xác
- Camera theo dõi mượt
- Màn chơi dựa trên dữ liệu ngoài
- AI kẻ địch module, có hành vi loot
- Kỹ năng & bình potion có cooldown
- Hiệu ứng hình ảnh cho kỹ năng, bẫy, chết, nhặt đồ
- Hệ thống hiệu ứng trạng thái (chảy máu, sát thương theo thời gian...)
- Kho đồ hỗ trợ kỹ năng, loot & shop
- Hệ thống kỹ năng module cho cả người chơi & kẻ địch
- Hệ thống XP, kẻ địch rớt đồ & tăng tiến cấp độ
- Người chơi có thể mua/bán potion qua shop NPC
- Bẫy với trigger theo tầm nhìn
- Rương & hệ thống loot tích hợp kho đồ
- Hệ thống hội thoại đa dòng
- Bản đồ nhỏ theo dõi vị trí người chơi thời gian thực
- Menu cài đặt trong game, chỉnh âm thanh trực tiếp
- Kiến trúc code sạch, module, dễ mở rộng
Thách Thức & Giải Pháp
Thách thức: Tạo game loop mượt mà
Tạo game loop theo khung hình mượt mà, xử lý cập nhật thời gian thực mà không bị tụt hiệu năng.
Giải pháp: Thiết kế game loop bằng Java, quản lý di chuyển, vật lý, hoạt ảnh, va chạm ổn định ở nhiều tốc độ khung hình khác nhau.
Thách thức: Xây dựng hệ thống va chạm
Tự xây dựng hệ thống phát hiện va chạm mà không dùng engine ngoài.
Giải pháp: Xây dựng hệ thống va chạm theo tile sử dụng bounding box, đảm bảo chính xác và hiệu năng.
Thách thức: Nhảy nhiều lần và trượt tường
Xử lý nhảy nhiều lần (double jump), quản lý trọng lực và tốc độ rơi.
Tạo cơ chế trượt tường mượt mà, phát hiện tiếp xúc tường và giảm tốc độ rơi.
Giải pháp: Thiết kế state machine cho nhảy, chuyển đổi giữa các trạng thái đất, nhảy, double jump.
Thêm phát hiện tiếp xúc tường bằng bounding box trên tile để trượt tường.
Thách thức: Hardcode màn chơi
Hardcode màn chơi gây khó mở rộng và linh hoạt.
Giải pháp: Xây dựng hệ thống tải dữ liệu màn chơi (tile, NPC, bẫy...) từ file ngoài, cho phép xây dựng thế giới module.
Thách thức: Hành vi kẻ địch đa dạng
Thiết kế hành vi kẻ địch đa dạng, hệ thống rớt đồ mà không làm rối code.
Giải pháp: Xây dựng hệ thống AI module, cấu hình loại kẻ địch, kiểu tấn công, bảng rớt đồ linh hoạt.
Thách thức: Ngăn spam kỹ năng/vật phẩm
Ngăn người chơi spam kỹ năng hoặc vật phẩm, tránh mất cân bằng combat.
Giải pháp: Thêm bộ đếm cooldown và kích hoạt bằng phím nóng để tăng tính chiến thuật.
Thách thức: Phản hồi combat qua hình ảnh
Truyền tải phản hồi combat và tương tác qua hình ảnh.
Giải pháp: Thêm hoạt ảnh sprite cho kỹ năng, chết, nhặt đồ để tăng cảm giác phản hồi.
Thách thức: Combat sinh động với hiệu ứng
Làm combat sinh động hơn, cân bằng hiệu ứng như sát thương theo thời gian.
Giải pháp: Thêm hiệu ứng như chảy máu từ bẫy/kẻ địch, tích hợp với hệ thống máu và bộ đếm thời gian.
Thách thức: Đồng bộ kho đồ và UI
Đồng bộ sử dụng vật phẩm, cập nhật kho đồ và phản hồi UI thời gian thực.
Giải pháp: Xây dựng kho đồ thời gian thực, hỗ trợ loot, cooldown, giao dịch mượt mà.
Thách thức: Mở rộng logic kỹ năng
Hardcode logic kỹ năng gây khó mở rộng, tái sử dụng giữa người chơi và kẻ địch.
Giải pháp: Xây dựng hệ thống kỹ năng tách biệt, cho phép cả người chơi và kẻ địch dùng chung logic cast, cooldown, hiệu ứng.
Thách thức: Dọn dẹp sau khi chết và XP
Quản lý dọn dẹp sau khi chết, tích hợp XP mà không làm rối logic combat.
Giải pháp: Xây dựng hệ thống XP và loot, kẻ địch rớt vật phẩm, kinh nghiệm và tự động biến mất khỏi màn chơi.
Thách thức: Mua potion không cần farm
Người chơi cần mua thêm potion mà không phải farm quái.
Giải pháp: Xây dựng shop NPC bán potion, hỗ trợ logic mua, trừ tiền, cập nhật kho đồ.
Thách thức: Thiết kế bẫy động
Thiết kế bẫy động, dễ đặt và cấu hình.
Giải pháp: Xây dựng logic bẫy cấu hình được, gây sát thương/hiệu ứng, tải từ file ngoài để thiết kế màn linh hoạt.
Thách thức: Loot hợp lý
Tạo loot hợp lý, theo ngữ cảnh mà không hardcode từng phần thưởng.
Giải pháp: Xây dựng hệ thống rương linh hoạt, lấy loot từ bảng rớt đồ theo cấu hình màn chơi/kẻ địch.
Thách thức: Hội thoại NPC tương tác
Tạo hội thoại NPC tương tác, có nhánh và tích hợp nhiệm vụ.
Giải pháp: Xây dựng hệ thống hội thoại trigger khi tương tác, đọc từ file ngoài, hỗ trợ đa dòng.
Thách thức: Định hướng trong màn chơi phức tạp
Người chơi dễ lạc hướng trong màn chơi phức tạp nếu không có bản đồ.
Giải pháp: Thêm bản đồ nhỏ động, theo dõi vị trí và vùng đã khám phá giúp định hướng dễ dàng.
Thách thức: Mở rộng tính năng mới
Mở rộng tính năng mới khó khăn do code rối và thiếu kiến trúc rõ ràng.
Giải pháp: Áp dụng kiến trúc sạch, OOP, tách logic, dùng kế thừa, module hóa để code dễ bảo trì và mở rộng.
Điểm Nhấn Dự Án
Xây dựng game engine lõi: Triển khai game loop theo khung hình bằng Java với delta time, hỗ trợ di chuyển, vật lý, va chạm, hoạt ảnh thời gian thực.
Vật lý & va chạm tự xây dựng: Phát triển hệ thống di chuyển, xử lý va chạm theo tile mà không dùng engine ngoài, dựa trên bounding box.
Hệ thống Camera Follow: Camera 2D tự động căn giữa người chơi, chuyển động mượt, giữ trải nghiệm tập trung và khung cảnh hợp lý.
Hệ thống di chuyển & điều khiển nhân vật: Điều khiển nhân vật mượt mà: đi bộ, nhảy, double jump, trượt tường, nhảy tường. Vận động vật lý, trọng lực, trạng thái hoạt ảnh động.
Hệ thống nhiệm vụ & chuyển màn: Mỗi màn có mục tiêu riêng (điểm đến, diệt boss, thu thập vật phẩm...), theo dõi và định nghĩa ngoài file. Tự động chuyển màn khi hoàn thành.
Hệ thống màn chơi dựa trên dữ liệu: Tải tilemap, kẻ địch, vật phẩm, vật thể, bẫy, NPC, nhiệm vụ, hội thoại, chuyển màn từ file ngoài. Thiết kế màn module, mở rộng dễ dàng.
Hệ thống AI & loot: Thiết kế AI module cho kẻ địch cận chiến, tầm xa, boss với hành vi, loot và màu sắc đa dạng.
Hệ thống cooldown kỹ năng & potion: Mỗi kỹ năng, bình potion đều có cooldown, chống spam, tăng chiều sâu combat. Hỗ trợ kích hoạt bằng phím nóng.
Hệ thống hiệu ứng hình ảnh: Tạo hiệu ứng động cho kỹ năng, bẫy, chết, nhặt đồ bằng hoạt ảnh sprite.
Hệ thống hiệu ứng trạng thái: Có hiệu ứng chảy máu và các hiệu ứng khác từ bẫy/kẻ địch, gây sát thương theo thời gian, tăng tính chiến thuật.
Tích hợp kho đồ: Hệ thống kho đồ tự xây dựng, hỗ trợ kỹ năng, loot, cooldown, giao dịch shop, cập nhật hiệu ứng vật phẩm thời gian thực.
Kỹ năng module cho người chơi & kẻ địch: Hệ thống cast kỹ năng tách biệt, dùng phím nóng, hoạt ảnh, cooldown, hiệu ứng độc lập với vật phẩm và AI.
Hệ thống despawn kẻ địch & XP: Kẻ địch tự động biến mất sau khi chết, rớt vật phẩm và XP, hỗ trợ hệ thống tăng cấp cho người chơi.
Giao diện shop potion: Người chơi mua potion bằng coin, cập nhật kho đồ thời gian thực, báo lỗi khi thiếu tiền.
Cơ chế bẫy: Có cả bẫy ẩn và hiện, gây sát thương/trạng thái, đặt qua file ngoài cho thiết kế màn động.
Hệ thống rương & loot động: Rương rớt phần thưởng theo cấu hình màn chơi, bảng loot kẻ địch, tích hợp kho đồ mượt mà.
Hệ thống hội thoại: NPC có thể hội thoại đa dòng, kích hoạt nhiệm vụ qua cây hội thoại định nghĩa ngoài file.
Bản đồ nhỏ mini map: Hiển thị vị trí người chơi, vùng đã khám phá, giúp định hướng mà không cần bản đồ toàn màn.
Menu cài đặt: Menu trong game cho phép chỉnh âm lượng nhạc, hiệu ứng với phản hồi âm thanh trực tiếp.
Codebase dễ mở rộng: Tổ chức theo kiến trúc sạch: kế thừa, module, đặt tên nhất quán, tách biệt logic rõ ràng.
Thông Tin Dự Án
Danh mục: Ứng dụng trò chơi 2D
Vai trò: Nhà phát triển
Thời gian: 3 tháng
Quy mô: Dự án cá nhân với sự giúp đỡ nhỏ
Công nghệ sử dụng: Java, Java AWT, Java Swing
Triển khai chính: Vòng lặp game, Tự xây dựng vật lý & va chạm, Hệ thống màn chơi dựa trên dữ liệu (Tilemap, Kẻ địch, Vật phẩm, NPC, Vật thể, Nhiệm vụ, Bẫy, Hội thoại, Điểm chuyển màn), Hoạt ảnh Sprite, Hệ thống bẫy (Trigger sát thương), Hiệu ứng kỹ năng, Hệ thống chỉ số (Người chơi & Kẻ địch), Kẻ địch biến thể ngẫu nhiên (màu sắc), Hệ thống cooldown (Kỹ năng & Potion), Hệ thống hiệu ứng trạng thái (ví dụ: Chảy máu), Camera theo dõi, Hệ thống vật thể nền (Có thể chạm & không chạm), AI kẻ địch (Cận chiến, Tầm xa, Boss), Kỹ năng kẻ địch, Hệ thống loot & XP kẻ địch, Despawn theo thời gian, rương & rớt vật phẩm, Loot riêng cho từng kẻ địch, Di chuyển người chơi (Đi bộ, Nhảy, Double Jump, Trượt tường, Nhảy tường), Kỹ năng người chơi, Kho đồ & hệ thống vật phẩm, Tích hợp potion, Shop trong game (Potion), Hệ thống trang bị (Buff chỉ số & đổi sprite), Hệ thống lên cấp (Tăng chỉ số), Hệ thống nhiệm vụ & lên cấp, Hội thoại & tương tác NPC, UI chat cơ bản, UI người chơi (Máu/Năng lượng/...), UI máu kẻ địch, Mini Map, Menu cài đặt
Kiến trúc & Thiết kế: Thiết kế module OOP, Tách biệt logic, Kiến trúc dựa trên dữ liệu, Hệ thống component tái sử dụng, Kế thừa & kết hợp, Logic combat mở rộng, Tự xây dựng loader cấu hình
Thống kê nhanh: Thời gian dev: 3 tháng, Thể loại: 2D Platformer Action-RPG, Số hệ thống: 40+, Người thực hiện: 99% cá nhân, Đồ họa: Tự vẽ bằng AWT, Engine: Không (Java thuần), Kiến trúc: Tự xây dựng, mở rộng, Codebase: Quy mô lớn, Âm thanh: Có