Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.76 MB, 75 trang )
<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">
<b>BỘ GIÁO DỤC VÀ ĐÀO TẠOTRƯỜNG ĐẠI HỌC PHENIKAA</b>
<b><small>Giảng viên hướng dẫn : PhD. Vũ Đức MinhNhóm sinh viên thực hiện : 02</small></b>
<b><small>2.</small></b>
</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3"><b>LỜI CẢM ƠN</b>
<i>Đầu tiên, xin được gửi lời cảm ơn chân thành tới các thầy, cô là giảng viênKhoa Công nghệ Thông tin Trường Đại học Phenikaa – những người đã đồnghành, hỗ trợ, cung cấp và trang bị cho chúng em những kiến thức chuyên môncùng với kĩ năng xử lý cần thiết trong suốt những năm học vừa qua – là nền tảngquan trọng để hoàn thành đề tài – đặc biệt là bản báo cáo đồ án này.</i>
<i>Chúng em xin được bày tỏ sự cảm ơn sâu sắc tới thầy Vũ Đức Minh – giảngviên - giám đốc Chương trình Đào tạo Công nghệ Thông tin Trường Đại họcPhenikaa – là người trực tiếp hướng dẫn, hỗ trợ nhóm trong suốt quá trình thựchiện dự án. Sự định hướng, kiến thức, kĩ năng và kinh nghiệm mà thầy đã chia sẻlà nền tảng cốt lõi cho những gì mà cơng trình nghiên cứu của nhóm đạt được</i>
<i>Trong q trình thực hiện xây dựng dự án, tất cả các thành viên nhóm đã cốgắng phối hợp, nỗ lực dưới sự chỉ đạo của trưởng nhóm, tuy nhiên thật khó đểtránh khỏi những sai sót. Vậy nên, nhóm chúng em mong muốn nhận được sự gópý tận tình của các thầy, cơ giảng viên, và tự hội đồng để đề tài nghiên cứu đượchồn thiện nhất có thể.</i>
<i>Chúng em xin chân thành cảm ơn!</i>
Hà Nội, tháng 11 năm 2023
</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4"><i>Nhóm xin cam đoan rằng mọi thơng tin và nội dung trong báo cáo này đềuđược trình bày một cách chân thực và trung thực nhất. Tất cả các nguồn thơng tintừ bên ngồi, cũng như các cơng trình nghiên cứu, ý kiến, và công nghệ sử dụng,đều được trích dẫn đúng cách theo quy tắc và tiêu chuẩn của ngành nghề. Chúngem cam kết tôn trọng quyền sở hữu trí tuệ và cơng lao của những người đóng gópvào lĩnh vực này.</i>
<i>Hà Nội, tháng 11 năm 2023</i>
Ký tên
</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5"><small>I.2. Mục tiêu đề tài...13</small>
<small>I.3. Giới hạn và phạm vi đề tài...13</small>
<small>I.4. Kết quả dự kiến đạt được...13</small>
<small>I.5. Phương pháp tiếp cận...14</small>
<small>CHƯƠNG II: PHÂN TÍCH YÊU CẦU...15</small>
<small>II.1. Yêu cầu về kiến thức...15</small>
<small>II.1.1. Quy trình xây dựng Game...15</small>
<small>II.1.2. Kiến thức về Godot...17</small>
<small>II.1.2.1 Đối tượng tham gia hệ thống...17</small>
<small>II.1.2.2 Vì sao là Godot ?...17</small>
<small>II.1.2.3 Tổng quan về các thành phần trong Godot ...22</small>
<small>II.2. Yêu cầu về kĩ thuật...34</small>
<small>II.3. Yêu cầu về tài nguyên...34</small>
<small>II.4. Yêu cầu về nhân sự...35</small>
<small>II.5. Yêu cầu về đồ họa, âm thanh...36</small>
<small>II.6. Yêu cầu về hiệu suất...36</small>
<small>II.6.1 Các nguyên tắc thiết kế game nhằm đảm bảo hiệu suất...36</small>
<small>CHƯƠNG III: THỰC HIỆN THIẾT KẾ...37</small>
<small>III.1. Phân tích đề tài...37</small>
</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7"><small>III.1.1 Khái niệm game Side Scroller...37</small>
<small>III.1.2 Cách chơi...38</small>
<small>III.2. Xác định yêu cầu trò chơi...39</small>
<small>III.2.1 Giao tiếp hệ thống...39</small>
<small>III.2.2 Giao tiếp về điều khiển...39</small>
<small>III.2.3 Giao tiếp về giao diện...39</small>
<small>III.3. Kịch bản trò chơi (cốt truyện)...40</small>
<small>III.4. Sơ đồ quan hệ giữa các lớp...41</small>
<small>III.5. Thiết kế đặc tả chức năng...42</small>
<small>III.5.1. Biểu đồ Use-case...42</small>
<small>III.5.1.1 Biểu đồ Use-case tổng quát...42</small>
<small>III.5.1.2 Đặc tả Use-case...42</small>
<small>III.5.1.2.a Đặc tả Use-case “Play Game”...42</small>
<small>III.5.1.2.b Đặc tả Use-case “Help”...43</small>
<small>III.5.1.2.c Đặc tả Use-case “Exit” ...44</small>
<small>III.6. Xây dựng Game...44</small>
<small>III.6.1. Thiết kế đồ họa...44</small>
<small>III.6.2. Thiết kế nhân vật, quái...45</small>
<small>III.6.3. Thiết kế gameplay mechanic...46</small>
<small>III.6.4. Thiết kế cấu trúc dữ liệu...49</small>
<small>III.6.5. Thiết kế mơ hình design pattern cho code flow...50</small>
<small>III.6.5.1. Mơ hình ECS...50</small>
<small>III.6.6. Thiết kế Procedural Dungeon Generator...51</small>
<small>III.6.6.1 Ý tưởng...51</small>
<small>III.6.6.2. Các bước tạo Dungeon...51</small>
<small>III.6.7. Thiết kế UI/UX...52</small>
<small>CHƯƠNG IV: PHÁT TRIỂN...56</small>
<small>IV.1. Xác Định Cơng Nghệ và Ngơn Ngữ Lập Trình...56</small>
<small>IV.2. Xây Dựng Cơ Sở Hạ Tầng của Game...56</small>
</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8"><small>IV.3. Phát Triển Gameplay và Tính Năng Tương Tác...56</small>
<small>IV.4. Tạo Đồ Họa và Âm Thanh...57</small>
<small>IV.5. Kiểm Thử và Tối Ưu Hóa...57</small>
<small>CHƯƠNG V: KIỂM THỬ VÀ SỬA CHỮA...57</small>
<small>V.1. Xác định các chức năng cần kiểm thử bao gồm:...57</small>
<small>V.1.1.Yêu cầu chức năng:...57</small>
<small>V.1.1.a Đối với người chơi...57</small>
<small>V.1.1.b.Đối với quái:...60</small>
<small>V.1.1.c.Đối với UI:...61</small>
<small>V.1.1.d.Kiểm thử đối với thuật toán...63</small>
<small>V.1.1.e.Kiểm thử đối với hiệu năng...63</small>
<small>CHƯƠNG VI: QUẢN LÝ DỰ ÁN...65</small>
<small>VI.1. Đưa ra lịch trình và quản lý tiến độ:...65</small>
<small>VI.2. Quản lý nguồn lực:...65</small>
<small>VI.3. Quản lý nhân lực:...66</small>
<small>VI.4. Quản lý rủi ro:...66</small>
<small>VI.5. Quản lý tài nguyên tài chính:...67</small>
<small>CHƯƠNG VII: KẾT LUẬN...68</small>
<small>TÀI LIỆU THAM KHẢO...69</small>
</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9"><small>Hình 6.a. Thành phần The Project Manager...26</small>
<small>Hình 6.b. Thành phần The Project Manager...26</small>
<small>Hình 6.c. Thành phần The Project Manager...26</small>
<small>Hình 7.a. Trình Soạn Thảo Của GoDot...27</small>
<small>Hình 7.b. Trình Soạn Thảo Của GoDot...27</small>
<small>Hình 7.c. Trình Soạn Thảo Của GoDot...28</small>
<small>Hình 7.d. Thanh cơng cụ Trình Soạn Thảo Của GoDot...28</small>
<small>Hình 7.e. Thanh cơng cụ Trình Soạn Thảo Của GoDot...28</small>
</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10"><i><small>Hình 11.c. Game SWAT Tank...38</small></i>
<i><small>Hình 12. Sơ đồ quan hệ giữa các lớp...41</small></i>
<i><small>Hình 13. Biểu đồ Use-case tổng quát...42</small></i>
<i><small>Hình 25. Các chỉ số máu, mana, phịng thủ của nhân vật chính...53</small></i>
<i><small>Hình 26. Menu cài đặt – âm thanh...54</small></i>
<i><small>Hình 27. Menu tùy chọn...54</small></i>
<i><small>Hình 28. Về trang chủ...55</small></i>
<i><small>Hình 29. Tiếp tục chơi...55</small></i>
<i><small>Hình 30. Mở cài đặt...56</small></i>
</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">Bỏ lại phía sau tất cả hình ảnh của màu lịch sử, của cuộc sống khó khăn nơi hang cùng, hốc cụt; loài người chúng ta đã phát triển vượt qua cả thời gian để tự xây dựng cuộc sống chất lượng cao cho riêng mình. Cùng với những bước tiến vượt bậc của khoa học, kĩ thuật và công nghệ, người ta đã đi từ nhu cầu ăn no, mặc đủ; vươn lên thành ăn ngon, mặc đẹp và hiện tại là vượt ra cả những nhu cầu thỏa mãn về thể chất, tinh thần của mỗi cá nhân. Trong đó, nhu cầu giải trí ln là yếu tố đi đầu.
Từ việc giải trí chỉ nhằm để thư giãn, đến giải trí nhắm vào chất lượng và biến cả thời gian giải trí trở thành thời gian để tạo ra nguồn thu nhập cho mỗi cá nhân, Game đang làm quá xuất sắc những yêu cầu đó – nó là top những mảng giải trí nhận được sự quan tâm lớn nhất với giá trị lợi nhuận cao nhất. Chỉ tính riêng ở Việt Nam năm 2021, giá trị mang lại từ Game được ước tính khoảng 136.000.000 USD – tương đương 3,1 nghìn tỷ đồng và những con số này chưa bao giờ cho thấy dấu hiệu chững lại sự tăng trưởng.
Game gần như miễn nhiễm ảnh hưởng bởi những yếu tố tác động từ thế giới và mơi trường bên ngồi. Bởi lẽ đơn cử như tình hình đại dịch Covid 19 hoành hành khắp thế giới thời gian vừa qua; số lượng người chơi game, đầu tư vào game, thậm chí “ăn ngủ cùng game” đã đẩy mức doanh thu ngành Game liên tục phá vỡ những kỉ lục do chính nó tạo ra về lợi nhuận. Tất cả những điều đó cho thấy sức mạnh ảnh hưởng và khả năng phát triển không giới hạn của Game là lớn đến như thế nào.
</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">Một số lớp tư tưởng cho rằng: “việc chơi game có hại đối với bản thân con người” với rất nhiều lí do khác nhau. Điều đó khơng hồn tồn là sai. Việc chơi game chỉ sai khi người chơi game mang tư tưởng và mục đích sai, dẫn đến hành động sai, để lại hậu quả không tốt đẹp mà thôi. Theo những nghiên cứu khoa học đã được xác thực, chơi game thực sự mang lại những lợi ích bất ngờ.
+ Rèn luyện khả năng quan sát tốt và phản xạ nhạy bén: các nhà khoa học đã làm một phép thử với những người bình thường và người chơi game lâu năm, đặc biệt là những thể loại game hành động. Kết quả chỉ ra người chơi game lâu năm dễ dàng hơn trong việc tránh né và phản xạ lại các chướng ngại vật bất ngờ, cần hành động nhanh, dứt khốt và chính xác. Họ dường như đã luyện được cho bản thân kĩ năng sử dụng linh hoạt tay, chân và mắt, sóng não bộ của họ cũng đưa ra phân tích và xử lý nhanh nhạy hơn những người bình thường.
+ Rèn luyện tính kiên trì và tăng khả năng làm việc nhóm: Việc thự hiện những thử thách khó trong game sẽ tạo cho bạn tính kiên trì, óc tư duy để giải quyết những rào cản từ thế giới ảo đến thế giới thực. Đồng thời những game chiến thuật đồng đội giúp bạn tăng khả năng làm việc nhóm, suy nghĩ tạo ra lối chơi hay, phối hợp ăn ý với đồng đội, xử lý tốt hơn nếu xảy ra những tình huống mâu thuẫn.
+ Tăng cường thị lực, cải thiện tầm nhìn và sự tập trung: Điều này sẽ khơng hề vơ lí nếu bạn khơng ngồi lì hàng giờ đồng hồ nhìn chằm chằm vào màn hình liên tục. Một số thể loại game buộc bạn duy trì sự tập trung, mở rộng cảm giác không gian và thị lực bao quát; luyện cho não bộ của bạn cách tích hợp ngay từ những chi tiết nhỏ...
Đó chỉ là một số ít trong rất nhiều lợi ích của Game – miễn là bạn khai thác đúng cách và đúng mục đích mà thơi.
Nhận thức được những giá trị to lớn ấy, nhóm chúng em đã chọn đề tài “Xây dựng game bắn súng 2D”. Bản báo cáo này là tồn bộ nội dung, q trình và những vấn đề liên quan để xây dựng sản phẩm. Tất cả được bao gồm trong 8 chương:
</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13"><b>Chương I: Giới thiệu đề tài</b>
Giới thiệu chung về đề tài: xác định mục tiêu và phạm vi dự án, đưa ra lý do lựa chọn đề tài, kết quả dự kiến đạt được của đề tài.
<b>Chương II: Phân tích yêu cầu</b>
Xác định rõ những yêu cầu dự án: yêu cầu về kiến thức, yêu cầu kĩ thuật, yêu cầu nhân sự, yêu cầu tài nguyên, yêu cầu về đồ họa, âm thanh, yêu cầu về hiệu suất.
<b>Chương III: Thực hiện thiết kế</b>
Hệ thống các phần thiết kế chính của sản phẩm: thiết kế giao diện, thiết kế nhân vật, thiết kế vũ khí, thiết kế kẻ địch, thiết kế map, thiết kế dữ liệu...
<b>Chương IV: Phát triển</b>
Xác định: lựa chọn cơng nghệ, ngơn ngữ lập trình, xây dựng cơ sở hạ tầng của game, phát triển gameplay và các tính năng tương tác, tạo đồ họa, âm thanh cho game...
<b>Chương V: Kiểm thử và sửa chữa</b>
Xác định, phân loại và chọn lọc quy trình kiểm thử: kiểm thử đơn vị, kiểm thử tích hợp, kiểm thử chất lượng, các bản ghi chú và báo cáo lỗi
<b> Chương VI: Quản lý dự án</b>
Đưa ra lịch trình và quản lý tiến độ: quản lý nguồn lực quản lý nhân lực, quản lý rủi ro, quản lý tài nguyên tài chính.
<b> Chương VII: Kết luận và báo cáo</b>
Tóm tắt dự án, kết quả đã đạt được thực tế, các phần đóng góp, sáng tạo của từng thành viên, đóng góp kinh nghiệm, sự học hỏi trong quá trình xây dựng dự án.
<b>Chương VIII: Tài liệu tham khảo</b>
Danh sách tài liệu, các nguồn tham khảo
- Phụ lục (Phần kèm theo, khơng được tính vào số lượng chương nội dung)
</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14"><b>Lý do khách quan:</b>
Như những gì đã tìm hiểu và nghiên cứu thơng tin cơ bản về Game trong “Lời Mở Đầu”, nhóm chúng tôi nhận thức rõ tầm quan trọng và tiềm lực phát triển vô hạn của Game trong cuộc sống và trong tương lai.
<b>Lý do chủ quan:</b>
Đối với nhóm những sinh viên thuộc ngành Công nghệ Thông tin, dù đã được học nhiều môn học chuyên ngành, cũng đã tham gia thực hiện một số sản phẩm công nghệ, tuy nhiên hầu hết đều là các app hoặc trang web mà chưa có bất kì một sản phẩm nào về Game.
Người làm IT cũng phải giống như công nghệ, phải bắt kịp được sự tăng trưởng của nó, phải thích nghi nhanh nhạy với sự biến thiên của nó, phải tiếp xúc với nhiều mảng của ngành IT nhất có thể để “tiến hóa” và ln ln làm chủ được những gì bản thân muốn làm.
Bên cạnh đó, chúng tơi cũng tìm hiểu và nhìn nhận một sự thật rằng, có thể trong tương lai, phần xây dựng Web hay App rất có thể sẽ bị thoái trào nhưng sức mạnh phát triển và tốc độ chuyển mình của Game như đã phân tích là vơ hạn. Việc chọn xây dựng game có thể chính là cách để tự tạo cho bản thân những sinh viên như chúng tôi một cơ hội bắt đầu đặt những viên gạch nền móng đầu tiên, tạo ra sự thích nghi tốt hơn, tiếp xúc sâu rộng hơn và rèn luyện tư duy logic hơn để bắt
</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">kịp xu hướng của thời đại, chuẩn bị tốt hơn cho những thay đổi trong tương lai. Chúng tơi sẽ có được một “mơi trường ngành” thêm hồn thiện và tồn diện hơn.
Một lí do nữa dẫn chúng tôi đến ý tưởng xây dựng Game cho học phần này chính bởi đặc điểm của việc xây dựng game mà quá trình xây dựng Web hay App khơng có được. Khơng phải là cấu trúc cứng nhắc: header – body – footer như khi xây dựng trang web; cũng chẳng phải những danh mục, cơng cụ, và tính năng chun sâu được u cầu như khi xây dựng các app; đối với việc xây dựng Game, chúng tôi được tự do và thỏa sức suy nghĩ, sáng tạo, vận dụng tư duy logic của bản thân mình để xây dựng những gì mình muốn. Bên cạnh đó, giao diện phần nhìn của game có sự tập trung mạnh mẽ vào thiết kế đồ họa và giao diện người dùng để tạo ra những trải nghiệm thú vị và hấp dẫn cho người chơi, khác biệt hoàn toàn với sự tập trung vào tính năng, trải nghiệm và buộc tương tác với những khối dữ liệu cứng nhắc. Dẫu biết game thường đòi hỏi nhiều thời gian và nguồn lực đầu tư hơn do yêu cầu cao về đồ họa và chi tiết từng tính năng phức tạp nhưng giống như mục đích ban đầu, đó thực sự sẽ là một trải nghiệm bắt đầu không thể bỏ lỡ.
Người ta thường nói game chỉ nhằm mục đích giải trí dành cho người chơi, nhưng đối với những người thiết kế và xây dựng nên nó, game còn là một phương tiện để thể hiện và truyền đạt những ý tưởng, tư tưởng, quan điểm với thế giới ảo của riêng mình, điều khiển các yếu tố tương tác và kể câu chuyện. Nó nâng cao khả năng tiếp cận các đối tượng mục tiêu cụ thể hoặc bao quát mà bạn muốn hướng đến. Việc giải quyết các thách thức công việc trong quá trình xây dựng game sẽ chứa nhiều thú vị và đầy thử thách bởi lẽ game đa phần là được xây dựng từ cơng thức tốn học và vật lý. Đây là một trong những cách tốt nhất để chúng tơi áp dụng tồn bộ kiến thức vào thực hành, tự rèn luyện sự kiên nhẫn, thúc đẩy não bộ linh hoạt và nhanh nhạy trong tư duy và giải quyết vấn đề.
<b>I.2. Mục tiêu đề tài</b>
Bản báo cáo này trình bày lại tồn bộ nội dung, q trình cũng như các vấn đề liên quan trong việc thực hiện dự án “Xây dựng game bắn súng 2D”. Nhóm chúng em sẽ đi sâu vào các khía cạnh thiết kế, kiến thức, kĩ thuật, quá trình phối kết hợp để cung cấp cho người đọc một cái nhìn từ tổng quan đến chi tiết về công việc xây dựng và phát triển, vận hành một Game.
</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16"><b>I.3. Giới hạn và phạm vi đề tài</b>
Sản phẩm của đề tài “Xây dựng game bắn súng 2D” sử dụng công cụ Godot để thiết kế và Công cụ lập trình Visual Studio Code để thực hiện lập trình tính năng.
Các tài liệu liên quan sử dụng các phần mềm thuộc Microsoft Office để tạo lập: báo cáo, sơ đồ usecase,...
Cơ sở dữ liệu sử dụng nền tảng PhpAdmin để tạo lập, thiết kế sơ đồ Database Relationship.
<b>I.4. Kết quả dự kiến đạt được</b>
Tìm hiểu chi tiết quy trình xây dưunjg và phát triển một Game. Tìm hiểu chi tiết về công cụ Godot.
Xây dựng và phát triển “game bắn súng 2D” đáp ứng các yêu cầu cơ bản
<b>I.5. Phương pháp tiếp cận</b>
Cách tiếp cận: trực tiếp tham gia sử dụng các ứng dụng game tương tự đã được xây dựng trước đó nhằm trải nghiệm và rút ra kinh nghiệm, từ đó vạch ra định hướng chi tiết để xây dựng game của nhóm tốt hơn, chế độ phục vụ ổn định hơn.
Sử dụng các phương pháp nghiên cứu: tìm hiểu, nghiên cứu tài liệu về quy trình thiết kế game, kiến thức về Godot, tài liệu thiết kế đồ họa trên Internet và sách.
</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17"><b>II.1.1. Quy trình xây dựng Game</b>
Đề tài dự án “Xây dựng game bắn súng 2D” là dự án thiết kế game đầu tiên mà nhóm chúng em tự thực hiện. Vậy nên, việc tìm hiểu, nghiên cứu chi tiết về quy trình để xây dựng và phát triển một game là vơ cùng quan trọng. Đó là khung kiến thức nền tảng giúp nhóm vạch rõ kế hoạch, thời gian, công đoạn và các phần cần thực hiện để tạo nên một sản phẩm hoàn chỉnh theo mong muốn; đảm bảo mọi cơng việc và vấn đề có liên quan logic, khơng bị thiếu sót hay bị dư thừa.
Vậy, về cơ bản, quy trình sản xuất game có thể được gói trong 3 giai đoạn chính như sau:
<i><b>>> Pre-Production (Tiền kỳ):</b></i>
</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18">Tiền kỳ là giai đoạn cực kỳ quan trọng, làm tiền đề cho cả quá trình, tiền để cho sự phát triển ý tưởng của Game. Các cơng việc trong giai đoạn này có thể bao gồm:
+ Bàn luận và thống nhất cốt truyện hoàn chỉnh. + Xây dựng tuyến nhân vật phù hợp với cốt truyện. + Tạo storyboard.
+ Thiết kế thử thách, vạch ra cách hoạt động của game. + Dự báo tài nguyên.
+ Dự báo rủi ro + ...
Ở giai đoạn tiền kỳ này, game designer là những người thực hiện và chịu trách nhiệm chính. Sau khi các cơng đoạn trên được hình thành và phát triển, game designer sẽ phải tổng hợp thành một tài liệu chi tiết, đầy đủ ý tưởng và cách thức thực hiện để các thành viên tham gia vào các công việc ở giai đoạn sau có thể hiện thực hóa ý tưởng, bám sát yêu cầu ban đầu, tránh xảy ra chệch hướng, giảm thiếu tối đa việc sửa chữa không cần thiết.
<i><b>>> Production (Sản xuất):</b></i>
Đây là giai đoạn chiếm nhiều thời gian và tài nguyên nhất trong quá trình tạo ra một game. Mọi cơng đoạn đều phải đảm bảo tính tối ưu hóa và hạn chế sai sót nhiều nhất có thể. Các nhiệm vụ ở mảng Art (thiết kế đồ họa) cần thực hiện trong khâu sản xuất bao gồm: Modeling, Animation, Texturing, Lighting, FX,… và mảng Development (Lập trình) sẽ bắt đầu thực hiện song song.
Ở giai đoạn này, vị trí “xương sườn” của tồn bộ game là những người lập trình game, hỗ trợ kỹ thuật (Tech Artist). Họ sẽ đi xuyên suốt quy trình làm game để đảm bảo được sự liên kết và xử lý những lỗi có thể xảy ra trong q trình làm game.
Vào cuối giai đoạn sản xuất, bộ phận Test game sẽ liên tục kiểm tra và phản hồi những vấn đề cần khắc phục. Một sản phẩm hoàn thiện là sản phẩm ổn định, đầy đủ các tính năng được u cầu và khơng có lỗi.
</div><span class="text_page_counter">Trang 19</span><div class="page_container" data-page="19"><i><b>>> Post-Production (Hậu kỳ):</b></i>
Thông thường giai đoạn hậu kỳ thuộc về bộ phận Marketing của nhà phát hành game. Từ giai đoạn sản xuất đã có thể dần hé lộ những chi tiết trong game với khán giả công chúng, nhưng hậu kỳ mới là lúc đội ngũ Truyền thông hoạt động mạnh mẽ nhất. Thời điểm này, các tựa game sẽ xuất hiện trên nhiều đầu báo, tạp chí, blog hay review của các youtuber, streamer, …
Đây cũng là giai đoạn mà nhà phát triển game (Game Developer) sẽ tiếp tục cải thiện trò chơi trong những trường hợp có lỗi mới. Thơng thường, nhà phát hành sẽ ra mắt trước các bản dùng thử để khán giả trải nghiệm và phản hồi những lỗi phát sinh. Sau đó các nhà lập trình game sẽ sửa chữa đồng thời ra mắt thêm các tính năng mới để giữ chân và thu hút thêm người chơi.
<b>II.1.2. Kiến thức về Godot</b>
<b>II.1.2.1 Đối tượng tham gia hệ thống</b>
Godot Engine là một nền tảng phát triển game mã nguồn mở được tạo ra để đáp ứng nhu cầu của các nhà phát triển game đa nền tảng. Với thiết kế dễ sử dụng và cung cấp nhiều tính năng hấp dẫn, Godot Engine đã thu hút sự quan tâm của đông đảo lập trình viên.
</div><span class="text_page_counter">Trang 20</span><div class="page_container" data-page="20"><i><b>Hình 10. Godot Engine</b></i>
<b>II.1.2.2 Vì sao là Godot ?</b>
<b>Hình 1. Godot</b>
Hiện tại, có khá nhiều Engine đã tạo được danh tiếng của mình trong việc hỗ trợ thiết kế và xây dựng game. Nó rút ngắn q trình, tiết kiệm thời gian và cơng sức cho người sản xuất. Hãy cùng điểm qua một số engine nổi tiếng mà nhóm chúng tơi tìm hiểu được.
a. Unity Engine
Unity Engine là một mơi trường phát triển trị chơi cực kì mạnh mẽ và đa dụng đã được sử dụng rộng rãi trong cả ngành công nghiệp thiết kế game, thậm chí cịn được mang vào giảng dạy lập trình. Unity có những điểm cộng to lớn làm nên sức hút mạnh mẽ của nó:
</div><span class="text_page_counter">Trang 21</span><div class="page_container" data-page="21">+ Đa nền tảng: Unity cho phép người sản xuất phát triển trị chơi của mình trên nhiều nền tảng khác nhau như PC, smartphone, tablet, các thiết bị kĩ thuật số thực tế ảo (VR) và nhiều hệ thống máy móc dành riêng cho việc chơi game khác nữa. Điều này giải quyết xuất sắc vấn đề xung đột hay khơng tương thích giữa game với thiết bị của người dùng. Khi game có chất lượng, ưu điểm này của Unity sẽ giúp nó được phủ sóng nhanh chóng và mạnh mẽ, tổng hợp được số lượng người chơi khủng.
+ Cộng đồng lớn: Nó như thể là một điều tất yếu! Sự nổi tiếng và tính năng hỗ trợ của Unity giúp nó xây dựng một cộng đồng lập trình viên, nhà thiết kế và game thủ rất lớn, ưu điểm này giúp những người mới tiếp cận dễ dàng tìm kiếm sự hỗ trợ, tài liệu và giải đáp những câu hỏi, thắc mắc trong quá trình sử dụng và vận hành
+ Asset Store: Asset Store của Unity cung cấp cho người xây dựng game một thư viện lớn các tài nguyên, script và plug-in giúp họ tăng tốc quá trình thiết kế và phát triển.
+ Dễ học: theo như đánh giá từ các lập trình viên, Unity có giao diện dễ sử dụng và hỗ trợ nhiều ngơn ngữ lập trình như C# và JavaScript, điều này hỗ trợ cho những người mới bắt đầu có thể nắm bắt nhanh chóng.
+ Render chất lượng cao: một game chất lượng phải thu hút game thủ ngay từ phần nhìn. Unity cung cấp hệ thống render mạnh mẽ giúp người thiết kế game dễ dàng hơn trong việc tạo ra hình ảnh chất lượng cao, cho dù họ đang xây dựng trò chơi 2D hay 3D.
b. Unreal Engine
</div><span class="text_page_counter">Trang 22</span><div class="page_container" data-page="22">Bên cạnh danh tiếng của Unity, Unreal Engine cũng là một trong những engine phát triển trò chơi và ứng dụng 3D thuộc top đầu trên thị trường. Khơng kém cạnh Unity, Unreal cũng có những ưu điểm lớn của nó.
+ Đồ họa và hiệu ứng chất lượng cao: một trong những điểm cộng đầu tiên tạo nên danh tiếng của Unreal Engine là khả năng tạo ra đồ họa và hiệu ứng 3D chất lượng cao, nổi tiếng là trong trò chơi AAA. Hệ thống render của Unreal cho phép người thiết kế tạo ra hình ảnh đẹp mặt với hiệu ứng ánh sáng sắc nét và đổ bóng phức tạp.
+ Cộng đồng lớn và tài liệu phong phú: cũng giống như Unnity, Unreal Engine xây dựng được một cộng đồng lập trình viên rất lớn, thư viện hướng dẫn với rất nhiều tài liệu và khóa học, nhóm hỗ trợ được xây dựng giúp những người mới sử dụng có thể dễ dàng tiếp cận để học và giải quyết vấn đề
+ Đa nền tảng: Unreal hỗ trợ xây dựng game tương thích với nhiều nền tảng bao gồm PC, console, điện thoại di động, VR và rất nhiều hệ thống khác.
+ Blueprint Visual Scripting: tính năng nổi bật này là một công cụ được Unreal cung cấp cho phép người xây dựng lập trình mà khơng cần phải viết mã, nó thích hợp cho người mới bắt đầu hoặc các nghệ sĩ đồ họa dễ dàng tạo nên kết quả tốt hơn và nhanh hơn mà khơng cần can thiệp q nhiều.
Có thể nói, những Engine được nêu ở trên hiện đang rất thịnh hành và được ưa chuộng sử dụng nhiều, hỗ trợ đắc lực trong việc thiết kế và xây dựng một trò chơi điện tử.
Nhưng đối với đề tài này, chúng tôi quyết định xây dựng “game bắn súng 2D” với sự hỗ trợ của Godot! Bởi lẽ:
</div><span class="text_page_counter">Trang 23</span><div class="page_container" data-page="23">+ Miễn phí và mã nguồn mở: Godot Engine là một dự án mã nguồn mở hồn tồn miễn phí, giúp tiết kiệm chi phí phát triển và phù hợp cho cả những dự án cá nhân lẫn doanh nghiệp. Với một nhóm các cá nhân là sinh viên Cơng nghệ Thơng tin – đặc điểm phù hợp này là điểm cộng đầu tiên.
+ Dễ học và dễ sử dụng: Theo những đánh giá từ các lập trình viên, giao diện của Godot Engine được thiết kế trực quan, ngôn ngữ lập trình GDScript tương tự như Python, dễ học và dễ sử dụng, nó rất phù hợp với những người mới bắt đầu làm quen với việc thiết kế và xây dựng game.
+ Hỗ trợ nhiều nền tảng: Gdot hỗ trợ nhiều nền tnagr như Windows, macOS, Linux, Android, iOS, HTML5 và khá nhiều nền tảng khác, giúp người sử dụng phát triển trị chơi dễ dàng mà khơng q lo ngại vấn đề xung đột.
+ Kích thước nhẹ và hiệu năng tốt: Godot có kích thước nhẹ, phù hợp cho q trình sử dụng, nó làm việc tốt trên nhiều loại máy tính và thiết bị di dộng. Đồng thời nó có khả năng tối ưu hóa hiệu suất để đảm bảo cho người chơi game một trải nghiệm mượt mà.
+ Cộng đồng tài liệu phong phú: dù chưa thể nói là có khơng giạn lớn bằng cộng đồng Unreal hay Unity, nhưng Godot cũng đã kịp tạo cho mình một cộng đồng sáng tạo và nhiệt tình, cùng với tài liệu ví dụ trực quan hỗ trợ tốt nhất cho người phát triển.
<i><b>So sánh với các Engine khác:</b></i>
Mặc dù là các bậc đàn anh trong số những engine hiện hành được ưu tiên nhất, nhưng để so sánh về độ phù hợp dành cho cá nhân – cụ thể là nhóm sinh viên chúng tơi, Godot lại là engine tạo được bước đà tốt nhất.
+ Kích thước ứng dụng: Unity – những ứng dụng hay game được phát triển từ engine này có kích thước lớn hơn so với với engine khác, đặc
</div><span class="text_page_counter">Trang 24</span><div class="page_container" data-page="24">biệt là khi bạn sử dụng nhiều tài nguyên và plug-in từ Asset Store. Unreal cũng đòi hỏi ở người phát triển một hệ thống máy tính đủ mạnh và hao tốn tài nguyên hệ thống cao để phát triển và chạy các trị chơi cũng như ứng dụng 3D. Trong khi đó, Godot lại giải quyết khá ổn vấn đề này. Với kích thước nhẹ, dung lượng thấp, phù hợp để làm việc tốt trên nhiều loại máy tính cũng như thiết bị di động mà chúng tơi có thể đầu tư được.
+ Hiệu năng: Hiện tại, mặc dù Unity có khả năng tối ưu hóa hiệu năng, tuy nhiên, việc thiết kế và phát triển trò chơi từ engine này đòi hỏi người phát triển có kiến thức và một trình độ tốt về tối ưu hóa để giảm thiểu tối đa hiện tượng giật lag cũng như tính tốn để tối thiểu mức tiêu tốn tài nguyên. Unreal Engine cũng không khác biệt hơn Unity về vấn đề này. Trong khi đó, Godot lại có thể đảm bảo trải nghiệm tốt và mượt mà hơn.
+ Cấu trúc dự án: đối với những người mới bắt đầu, cấu trúc dự án của Unity hay Unreal thực sự là một vấn đề khó khăn bởi nó khơng rõ ràng, đặc biệt là trong các dự án lớn, gây trở ngại trong việc quản lý mã nguồn.
Ngược lại, Godot với một giao diện trực quan và dễ sử dụng, dễ quản lý, sẽ là điểm cộng phù hợp để lựa chọn.
+ Giấp phép và kinh phí: Unity và Unreal đều là các engine có thể cung cấp phiên bản miễn phí, tuy nhiên, muốn khai thác tốt mọi chức năng để tạo ra một sản phẩm hồn chỉnh là có giới hạn. Để loại bỏ những hạn chế và sử dụng các tính năng mạnh mẽ hơn, người phát triển game cần phải trả chi phí cho các điều khoản này. Nhưng Godot lại là một engine miễn phí hồn tồn.
+ Hạn chế kiểm soát và giới hạn nền tảng: Trong một số trường hợp, Unity có thể sẽ hạn chế sự kiểm soát của bạn trong việc xử lý nhiều
</div><span class="text_page_counter">Trang 25</span><div class="page_container" data-page="25">khía cạnh của trị chơi, đặc biệt là trong việc xử lý sâu các đối tượng và sự tương tác phức tạp. Trong khi đó, Unreal lại giới hạn khi phát triển trò chơi cho một số thiết bị di dộng có cấu hình thấp. Với tình hình sử dụng thiết bị di dộng cực kỳ nhiều như hiện nay, giới hạn này là một bất lợi. Godot sẽ xử lý ổn thỏa vấn đề này mà khơng có sự hạn chế kiểm soát hay giới hạn nền tảng.
<b>II.1.2.3 Tổng quan về các thành phần trong Godot</b>
<b>Trong Godot, bạn chia nhỏ trị chơi của mình thành các Scenes có thể sử dụng lại.</b>
Cảnh có thể là một nhân vật, vũ khí, menu trong giao diện người dùng, một ngơi nhà, tồn bộ cấp độ hoặc bất cứ thứ gì bạn có thể nghĩ ra. Các cảnh của Godot rất linh hoạt; chúng đảm nhận vai trò của cả tiền chế và cảnh trong một số cơng cụ trị chơi khác.
<b>Hình 2.a. Thành phần Scenes</b>
<b>Bạn cũng có thể lồng các Scenes. Ví dụ: bạn có thể đặt nhân vật của mình vào mộtcấp độ và kéo và thả một Scenes như một phần tử con của Scenes đó.</b>
</div><span class="text_page_counter">Trang 26</span><div class="page_container" data-page="26"><b>Hình 2.b. Thành phần ScenesNodes</b>
<b>Một scene bao gồm một hoặc nhiều nodes. Nodes là các khối xây dựng nhỏ nhất</b>
của trò chơi mà bạn sắp xếp thành cây. Đây là một ví dụ về các nodes của một nhân vật.
<b>Hình 3.a. Thành phần Nodes</b>
Lưu ý cách các nodes và scene trơng giống nhau trong trình chỉnh sửa. Khi bạn lưu một cây nodes làm scene, nó sẽ hiển thị dưới dạng một nodes duy nhất, với cấu trúc bên trong của nó được ẩn trong trình chỉnh sửa. Godot cung cấp một thư viện phong phú về các loại nodes cơ sở mà bạn có thể kết hợp và mở rộng để xây dựng những loại nodes mạnh hơn. Giao diện 2D, 3D hoặc người dùng, bạn sẽ thực hiện
</div><span class="text_page_counter">Trang 27</span><div class="page_container" data-page="27"><b>Hình 3.b. Thành phần Nodes</b>
<b>The scene tree</b>
<b>Tất cả các scenes trong trò chơi của bạn đều tập hợp lại trong scene tree, nghĩa đen</b>
là một scene tree . Và vì scene là cây của nút, nên cây scene cũng là cây của nút. Nhưng sẽ dễ dàng hơn khi nghĩ về trò chơi của bạn dưới dạng các cảnh vì chúng có thể đại diện cho các nhân vật, vũ khí, cánh cửa hoặc giao diện người dùng của bạn.
</div><span class="text_page_counter">Trang 28</span><div class="page_container" data-page="28"><b>Hình 4. Thành phần The scene treeSignals</b>
Các node phát ra tín hiệu khi một số sự kiện xảy ra. Tính năng này cho phép bạn làm cho các node giao tiếp mà không cần nối cứng chúng bằng mã. Nó mang lại cho bạn rất nhiều sự linh hoạt trong cách bạn cấu trúc các cảnh của mình.
</div><span class="text_page_counter">Trang 29</span><div class="page_container" data-page="29"><b>Hình 5. Thành phần Signals</b>
<b>The Project Manager(Quản lý dự án)</b>
Khi bạn khởi chạy Godot, cửa sổ đầu tiên bạn nhìn thấy là Trình quản lý dự án. Trong tab mặc định Local Project, bạn có thể quản lý các dự án hiện có, nhập hoặc tạo dự án mới, v.v.
<b>Hình 6.a. Thành phần The Project Manager</b>
Ở đầu cửa sổ, có một tab khác có tên “Asset Library”. Bạn có thể tìm kiếm các dự án demo trong thư viện tài sản nguồn mở, bao gồm nhiều dự án do cộng đồng phát triển.
<b>Hình 6.b. Thành phần The Project Manager</b>
</div><span class="text_page_counter">Trang 30</span><div class="page_container" data-page="30">Bạn cũng có thể thay đổi ngơn ngữ của trình soạn thảo bằng cách sử dụng menu thả xuống ở bên phải phiên bản của cơng cụ ở góc trên bên phải của cửa sổ. Theo mặc định, nó bằng tiếng Anh (EN).
<b>Hình 6.c. Thành phần The Project Manager</b>
<b>Trình Soạn Thảo Của GoDot</b>
Khi bạn mở một dự án mới hoặc một dự án hiện có, giao diện của trình soạn thảo sẽ xuất hiện. Hãy nhìn vào các lĩnh vực chính của nó.
<b>Hình 7.a. Trình Soạn Thảo Của GoDot</b>
Theo mặc định, nó có các menu, main screens và các nút chơi thử dọc theo cạnh trên của cửa sổ.
</div><span class="text_page_counter">Trang 31</span><div class="page_container" data-page="31"><b>Hình 7.b. Trình Soạn Thảo Của GoDot</b>
Ở giữa là viewport với toolbar ở trên cùng, nơi bạn sẽ tìm thấy các cơng cụ để di chuyển, chia tỷ lệ hoặc khóa các nút của cảnh.
<b>Hình 7.c. Trình Soạn Thảo Của GoDot</b>
Ở hai bên của khung nhìn có các bến cảng. Và ở dưới cùng của cửa sổ là bảng điều khiển phía dưới.
Thanh cơng cụ thay đổi dựa trên ngữ cảnh và nút được chọn. Đây là thanh cơng cụ 2D.
<b>Hình 7.d. Thanh cơng cụ Trình Soạn Thảo Của GoDot</b>
Dưới đây là hình thanh cơng cụ 3D.
<b>Hình 7.e. Thanh cơng cụ Trình Soạn Thảo Của GoDot</b>
</div><span class="text_page_counter">Trang 32</span><div class="page_container" data-page="32">Tab FileSystem liệt kê các tệp dự án của bạn, bao gồm tập lệnh, hình ảnh, mẫu âm
</div><span class="text_page_counter">Trang 33</span><div class="page_container" data-page="33"><b>Hình 7.i. Tab Inspector</b>
Bảng điều khiển phía dưới, nằm bên dưới khung nhìn, là máy chủ dành cho bảng điều khiển gỡ lỗi, trình chỉnh sửa hoạt ảnh, bộ trộn âm thanh, v.v. Chúng có thể chiếm khơng gian q giá, đó là lý do tại sao chúng được gấp lại theo mặc định.
<b>Hình 7.k. Tab Control</b>
Khi bạn nhấp vào một cái, nó sẽ mở rộng theo chiều dọc. Dưới đây, bạn có thể thấy trình chỉnh sửa hoạt ảnh được mở.
</div><span class="text_page_counter">Trang 34</span><div class="page_container" data-page="34"><b>Hình 7.l. Tab Control</b>
<b>Màn Hình Chính</b>
Có bốn nút màn hình chính được đặt chính giữa ở đầu trình chỉnh sửa: 2D, 3D, Script và AssetLib.
Bạn sẽ sử dụng màn hình 2D cho tất cả các loại trị chơi. Ngồi các trị chơi 2D, màn hình 2D là nơi bạn sẽ xây dựng giao diện của mình.
<b>Hình 8.a. Màn hình chính</b>
</div><span class="text_page_counter">Trang 35</span><div class="page_container" data-page="35">Trong màn hình 3D , bạn có thể làm việc với các mắt lưới, ánh sáng và cấp độ thiết kế cho trị chơi 3D.
<b>Hình 8.b. Màn hình thiết kế</b>
Chú ý nút phối cảnh bên dưới thanh công cụ. Nhấp vào nó sẽ mở ra danh sách các tùy chọn liên quan đến chế độ xem 3D.
<b>Hình 8.c. Thanh cơng cụ phối cảnh</b>
Script screen là trình chỉnh sửa mã hồn chỉnh với trình gỡ lỗi, tính năng tự động hồn thành phong phú và tham chiếu mã tích hợp.
</div><span class="text_page_counter">Trang 36</span><div class="page_container" data-page="36"><b>Hình 8.d. Script Screen</b>
Cuối cùng, AssetLib là một thư viện gồm các tiện ích bổ sung, tập lệnh và tài sản nguồn mở và miễn phí để sử dụng trong các dự án của bạn.
<b>Hình 8.e. AssetLib</b>
</div><span class="text_page_counter">Trang 37</span><div class="page_container" data-page="37"><b>II.2. Yêu cầu về kĩ thuật</b>
Để thực hiện xây dựng và phát triển dự án “xây dựng game bắn súng 2D”, yêu cầu về kĩ thuật cần có đối với nhóm thực hiện bao gồm:
+ Kĩ thuật sử dụng Godot.
+ Kĩ thuật lập trình ngơn ngữ GDscript.
+ Kĩ thuật xử lý hình ảnh, thiết kế đồ họa cơ bản.
+ Kĩ thuật thiết kế mơ hình design pattern cho code flow sử dụng ESC. + Kĩ thuật design về procedural dungeon generator.
<b>II.3. Yêu cầu về tài nguyên</b>
Dưới đây là hệ thống phân cấp tệp tài nguyên của dự án “Xây dựng game bắn súng 2D”:
</div>