9.1 Đánh giá
Mô hình tìm đường đi:do sử dụng hệ thống NavMesh được xây dựng sẵn trong Unity nên việc tìm đường đi của các NPC diễn ra rất chính xác và hiệu quả. Trong lúc di chuyển, không xuất hiện tình trạng các NPC va chạm hay chắn đường đi của nhau. Vì vậy, việc di chuyển của NPC trong màn chơi diễn ra rất tự nhiên và chân thật, không giống như những con robot. Nhưng trong thời gian đầu, do sử dụng thư viện có sẵn nên em cũng gặp không ít khó khăn trong việc làm quen cũng như sử dụng đúng các hàm, các utility có sẵn để giúp việc tìm đường diễn ra hiệu quả và chính xác nhất. Mặc dù vậy, em đã cố gắng xem các video hướng dẫn, cùng với việc lên các diễn đàn của Unity để tìm hiểu và do đó em đã khắc phục được khó khăn.
Mô hình thị giác:
• Mô hình thị giác đã giúp cho các NPC phát hiện được nhân vật và các đối tượng khác (Bait Bag, xác chết) một cách thành công trong trường hợp không có vật che chắn và không phát hiện khi các đối tượng khi bị che chắn hoặc nằm ngoài tầm nhìn. Lúc đầu, việc vẽ ra vùng tầm nhìn của các NPC có ảnh hưởng lớn đến tốc độ xử lý của game. Mặc dù, mỗi vùng tầm nhìn được vẽ ra không ảnh hưởng nhiều đến tốc độ xử lý của game nhưng vì trong màn chơi có khá nhiều NPC nên việc vẽ ra vùng tầm nhìn cho tất cả NPC mang lại ảnh hưởng không nhỏ. Vì vậy, sau đó em đã quyết định trong một thời điểm chỉ vẽ cho một NPC, người chơi có thể xem vùng tầm nhìn của NPC khác bằng cách nhấp chuột vào nó và vùng tầm nhìn củ NPC hiện tại sẽ không được vẽ. Các vùng tầm nhìn (vùng nhìn gần, xa, bị chắn không hoàn toàn, hoàn toàn) cũng hoạt động
đúng như trong thiết kế. Nhưng vùng tầm nhìn bị chắn không hoàn toàn có một lỗi em đã phát hiện được trong lúc chơi thử game mà lúc thiết kế em không để ý đến lỗi này. Lỗi này phát sinh do tính chất của tầm nhìn trong không gian 3D nhưng lúc thiết kế em chỉ chú ý đến tính chất 2D của vùng tầm nhìn khi vẽ chúng.
Hình 100: NPC vẫn có thể thấy người chơi ở khoảng cách xa kể cả khi người chơi ngồi sau vật cản thấp hơn tầmnhìn NPC. nhìn NPC.
Khi một NPC hướng về một vật có độ cao thấp hơn nó thì vùng tầm nhìn phía sau vật đó là vùng bị che không hoàn toàn nghĩa là nếu nhân vật ngồi ở vùng đó thì sẽ không phát hiện, còn đứng thì sẽ bị NPC phát hiện. Nhưng có một điều đáng chú ý là vùng nhìn phía sau vật này không phải chỉ là vùng nhìn bị che không hoàn toàn như mô hình thị giác hiện tại vẽ được mà sẽ có một vùng nhìn không bị che như trong hình trên mô tả. Có nghĩa là kể cả khi nhân vật ngồi ở phía sau vật cản đó thì nhân vật vẫn có thể bị phát hiện nếu khoảng cách giữa nhân vật và vật cản đủ lớn. Trong mô hình thị giác của em thì việc phát hiện nhân vật như mô tả ở trên vẫn cho ra kết quả đúng, nhưng việc vẽ vùng tầm nhìn thì lại không đồng nhất với việc phát hiện nhân vật. Tức là, kể cả khi nhân vật ngồi phía sau vật cản này thì cũng sẽ bị phát hiện nếu khoảng cách so với vật cản đủ lớn. Phát hiện được lỗi này và để đảm bảo sự đồng nhất giữa việc vẽ vùng tầm nhìn và việc phát hiện nhân vật, em đã chỉnh sửa việc phát hiện sao cho nếu nhân vật ngồi sau vật cản như trên thì sẽ không bị phát hiện dù cách vật cản bao nhiêu đi chăng nữa.
• Mô hình thị giác không tự phát hiện được vật nào có chiều cao cao hơn hay thấy hơn NPC để vẽ ra các vùng tầm nhìn hợp lý mà tất cả các đối tượng trong màn chơi đã được gắn nhãn (tag, layer) thủ công bởi em, do đó tốn không ít thời gian và công sức và vẫn có sai sót.
• Giác quan thứ sáu của các NPC (trừ Zombie) đã được mô phỏng thành công. Các NPC này đã phát hiện được nhân vật khi nhân vật ở phía sau và gần NPC, nếu nhân vật ở đó quá lâu. Nhưng hiện tại trong game chưa có cơ chế để báo cho người chơi biết anh/cô ta sắp bị phát hiện do giác quan thứ 6 của NPC. Vì vậy, có nhiều trường hợp người chơi bị phát hiện nhưng không rõ vì sao.
Mô hình thính giác:
• Nhờ vào mô hình thính giác các NPC đã có thể nghe các âm thanh trong màn chơi và phân biệt các âm thanh này dựa vào mô tả của chúng một cách thành công giống như mong đợi của em. Các tính chất vật lý của âm
thanh cũng được mô phỏng thành công (sự giảm độ lớn do khoảng cách, sự lan truyền của âm thanh trong không gian). Đồng thời, việc dự đoán nguồn âm của NPC cũng cho ra các kết quả như mong đợi. Ngoài ra, em cũng đã thành công trong việc mô phỏng sự ảnh hưởng của tiếng ồn cũng như độ tuổi của NPC đến việc nhận thức âm thanh của chúng.
• Mặc dù vậy, hiện tại việc mô phỏng sự lan truyền của âm thanh vẫn dựa vào mặt phẳng NavMesh 2D mà chưa xét đến các đường truyền trong không gian 3D, vì vậy nếu màn chơi có địa hình cao thấp khác nhau sẽ cho ra kết quả không như mong đợi.
Mô hình hành vi:
• Nhờ sử dụng công cụ Behaviour Designer, em đã thiết kế thành công cây hành vi cho các NPC dựa trên các hành vi mong muốn mà em đã định nghĩa trước. Các NPC cũng đưa ra các hành vi hợp lý khi có tín hiệu từ các mô hình khác (nhìn thấy nhân vật, nghe tiếng súng,...). Mặc dù trong màn chơi có nhiều NPC và mỗi NPC lại có cây hành vi cho riêng mình, nhưng ảnh hưởng của cây hành vi đến tốc độ xử lý của game không đáng kể vẫn đảm bảo không giật, lag.
• Mặc dù vậy, em vẫn tự nhận thức được mình chưa khai thác được hết những tính năng hữu ích của công cụ Behaviour Designer này để thiết kế một cây hành vi hiệu quả và gọn gàng nhất, các hành vi có sự modular nhất không phụ thuộc vào bất kỳ hành vi nào khác, dễ dàng thêm bớt khỏi cây hành vi. Lí do của hạn chế này xuất phát từ việc trong lúc nghiên cứu và tìm hiểu về công cụ này, các video hướng dẫn mà em đã tham khảo thì khá là đơn giản không đưa ra được các ví dụ chuyên sâu, cùng với các tài liệu đến từ nhà phát hành cũng hạn chế.
Game Dying Hope:
• Nhìn chung, game Dying Hope đã áp dụng thành công các mô hình đã thiết kế vào gameplay của mình, đúng theo những gì em đã mong đợi. Chạy được 30 khung hình trên giây (fps) đối với một pc có chip Intel(R) Core(TM) i7-7500U, CPU @ 2.70GHz 2.90 GHz, RAM 8GB, chạy trên hệ điều hành Windows 10 64-bit. Đến thời điểm viết đánh giá này thì các lỗi (bug) trong game mà em phát hiện được qua nhiều lần chơi thử đã được sửa chữa. Mặc dù vậy, vẫn không tránh khỏi việc còn tiềm tàng những lỗi khác mà em chưa phát hiện được. Vì bản chất của game là một complex system, có rất nhiều sự tương tác của các thành phần cùng một lúc nên việc tìm ẩn lỗi là không thể tránh khỏi.
• Một điểm hạn chế là game này vẫn chưa được chạy thử trên nhiều máy có độ phân giải màn hình, cũng như cấu hình máy khác nhau nên chưa biết được hiệu suất của game sẽ thay đổi như thế nào trên mỗi dòng máy.
9.2 Hướng phát triển
Từ các đánh giá trên, em có để xuất hướng phát triển cho các mô hình cũng như game Dying Hope như sau:
• Ở giai đoạn cuối của luận văn, em đã có tìm hiểu và phát hiện hãng game Mimimi đã sử dụng một phương pháp độc đáo để cung cấp khả năng nhìn và vẽ các vùng tầm nhìn cho các NPC mà họ đã ứng dụng vào game của mình bằng cách sử dụng "shadow mapping". Họ sử dụng một camera gắn ở vị trí đầu của NPC và từ đó sinh ra một depth texture và dùng dựa vào các thông tin có được từ depth texture này để tô màu cho các vùng tâm nhìn của NPC (vùng nhìn gần, xa, vùng bị che khuất,...). Và đó là tất cả những gì họ đã mô tả. Nếu sử dụng cách này người thiết kế không cần phải gắn nhãn cho các đối tượng một cách thủ công nữa và khắc phục được hạn chế đã đề cập trong phần đánh giá, đặc biệt hơn là cách này hoạt động kể cả khi địa hình của màn chơi có nhiều chỗ cao thấp khác nhau. Do hạn chế về kiến thức, thời gian cũng như hạn chế về công cụ (bản Unity Pro do các công ty game thường sử dụng cho phép họ có nhiều tính năng và access được những utility sâu bên trong của Unity Engine) nên em đã quyết định không thay đổi cách hiện thực mô hình thị giác của mình. Nhưng nhìn chung đây là một hướng phát triển rất có tiềm năng cho mô hình thị giác.
• Về mô hình thính giác, em sẽ tiếp tục nghiên cứu và tìm cách mô phỏng sự lan truyền của âm thanh trong không gian 3D chứ không đơn giản là 2D như hiện tại một cách hiệu quả, ít ảnh hưởng đến hiệu suất của game.
• Về cây hành vi, em sẽ tiếp tục tìm hiểu, học tập và xem các ứng dụng của công cụ Behaviour Designer trong các game trên thị trường để lấy đó làm ví dụ để có thể nâng cao hiệu suất của cây, cũng như khai thác triệt để các tiện ích mà công cụ đem lại để thiết kế ra các cây hành vi một cách hiệu quả nhất (optimal).
• Và cuối cùng, nếu đã thành công thực hiện các hướng phát triển trên, thì em có thể thiết kế thêm nhiều màn chơi có địa hình cao thấp khác nhau cũng như các nhân vật mới để có thể kiểm chứng tính hiệu quả của các mô hình mới so với các mô hình cũ.
Tài liệu
[1] Bevilacqua, F. (2013).Finite-State Machines: Theory and Implementation. Truy cập từ:
https://gamedevelopment.tutsplus.com/tutorials/finite-state-machines-theory-and- implementation--gamedev-11867, lần truy cập cuối: 7/12/2020.
[2] Bonagiri, S. (2018).Paper Review: Reciprocal Velocity Obstacles for Real-Time Multi-Agent Navigation. Truy cập từ:https://medium.com/@suraj2596/paper-review-reciprocal-velocity-obstacles- for-real-time-multi-agent-navigation-aaf6adbedefd, lần truy cập cuối: 23/12/2020.
[3] Buttice, C. (2019),Finite State Machine: How It Has Affected Your Gaming For Over 40 Years.Truy cập từ: https://www.techopedia.com/finite-state-machine-how-it-has-affected-your-gaming- for-over-40-years/2/33996, lần truy cập cuối: 14/12/2020.
[4] Chaudhari, K. (2018).AI for Unity game developers: How to emulate real-world senses in your NPC agent behavior. Truy cập từ:
https://hub.packtpub.com/ai-unity-game-developers-emulate-real-world-senses/, lần truy cập cuối: 3/12/2020.
[5] Cowan, B. (2020).A Graph-Based Real-Time Spatial Sound Framework(Doctoral thesis, Ontario Tech University)
[6] Davis, R. J., & Stephens, S. D. G. (1974). The effect of intensity on the localization of different acoustical stimuli in the vertical plane.Journal of Sound and Vibration, 35(2), trang 223-229.
[7] Doelle, L. L. (1972).Environmental acoustics. McGraw-Hill.
[8] Estrada, M. (2014).Finite State Machine vs Behaviour Tree, A True Story. Truy cập từ:
https://coffeebraingames.wordpress.com/2014/02/23/finite-state-machine-vs- behaviour-tree-a-true-story/, lần truy cập cuối: 8/12/2020.
[9] Fmod (2019).Audio API Documentation. Truy cập từ:https://www.fmod.com/resources/
documentationapi?version=1.10&page=content/generated/overview/3dsound.html, lần truy cập cuối: 13/12/2020.
[10] gamedev, (2018).Navigation Meshes and Pathfinding. Truy cập từ:
https://www.gamedev.net/tutorials/programming/artificial-intelligence/navigation- meshes-and-pathfinding-r4880/, lần truy cập cuối: 20/7/2021.
[11] gamepressure, (n.d).Controls in Desperados 3. Truy cập từ:
https://guides.gamepressure.com/desperados-iii/guide.asp?ID=53338, lần truy cập cuối: 20/12/2020.
[12] Garner, T. & Jordanous, A. (2016),Emergence perception and video games that listen: Applying sonic virtuality for creative and intelligent virtual agent behaviours. Trong workshop "Computational Creativity and Games" lần thứ 2, 27 tháng 6 năm 2016, Paris, Pháp
[13] Giguere, C., Abel, S.M. (1993). Sound localization: effects of reverberation time, speaker array, stimulus frequency, and stimulus rise/decay.Journal of the Acoustical Society of America, 94 (2) , trang 769-776. [14] Grimshaw, M. & Garner, T. (2015),Sonic virtuality: Sound as emergent perception. Oxford University Press [15] Guay, J. F. (2012). Real-time sound propagation in video games.Game Developers Conference(GDC),
GDC Vault trang 5-9.
[16] Khatib, Y., (2014).Examining the Essential Building Blocks of Stealth Play. Truy cập từ:
https://www.gamasutra.com/blogs/YoussefKhatib/20140619/218797/Examining_the_ Essential_Building_Blocks_of_Stealth_Play.php, lần truy cập cuối: 24/12/2020.
[17] MacPherson, E. A., & Middlebrooks, J. C. (2000). Localization of brief sounds: effects of level and background noise.The Journal of the Acoustical Society of America, 108(4), trang 1834-1849.
[18] Makous, J. C., & Middlebrooks, J. C. (1990). Two-dimensional sound localization by human listeners.The Journal of the Acoustical Society of America, 87(5), trang 2188-2200.
[19] McIntosh, T., 2014.The Last of Us: Human Enemy AI. Truy cập từ:
https://www.gdcvault.com/play/1020338/The-Last-of-Us-Human, lần truy cập cuối: 24/12/2020. [20] McIntosh, T., 2015. Human Enemy AI in The Last of Us.Game AI Pro 2: Collected Wisdom of Game AI
Professionals. Natick: A K Peters/CRC Press, trang 419-429.
[21] Middlebrooks, J. C., & Green, D. M. (1991). Sound localization by human listeners.Annual review of psychology, 42(1), trang 135-159.
[22] Millington, I. & Funge, J. (2016).Artificial intelligence for games. CRC Press. [23] Mount, D. & Eastman, R. (2018).Motion Planning: Basic Concepts. Truy cập từ:
https://www.cs.umd.edu/class/spring2018/cmsc425/Lects/lect16-motion-basics.pdf, lần truy cập cuối: 20/12/2020.
[24] Opsive, (n.d).Behavior Designer. Truy cập từ:
https://opsive.com/support/documentation/behavior-designer/overview/, lần truy cập cuối: 20/12/2020.
[25] Parfit, D. (2005).Interactive Sound, Environment, and Music Design for a 3D Immersive Video Game
(Doctoral dissertation, New York University).
[26] Plack, C. J. (2018).The Sense of Hearing (3rd edition), Routledge, London, UK.
[27] Pinterest (n.d).Diffraction of a sound wave. Truy cập từ:
https://www.pinterest.co.uk/pin/412642384579278979/, lần truy cập cuối: 23/12/2020.
[28] Rabin, S. & Delp, M., (2008). Designing a Realistic and Unified Agent-Sensing Model.Game Programming Gems 7. Clifton Park: Delmar, trang 217-228.
[29] Rayleigh, L. (1907). On our perception of sound direction.The London, Edinburgh, and Dublin Philosophical Magazine and Journal of Science), 13(74), trang 214-232.
[30] Savioja, L., & Svensson, U. P. (2015). Overview of geometrical room acoustic modeling techniques.The Journal of the Acoustical Society of America, 138(2), trang 708-730
[31] Simpson, C. (2014).Behavior trees for AI: How they work.Truy cập từ:https://www.gamasutra.com/ blogs/ChrisSimpson/20140717/221339/Behavio_trees_for_AI_How_they_work.php, lần truy cập cuối: 14/12/2020.
[32] Sutton, G. J. & Robinson, D. W. (1979). Age effect in hearing - a comparative analysis of published threshold data.Audiology, 18, trang 320-334.
[33] Thomas, K. (2017),Implementing Artificial Intelligence Perception and Decisions in a Stealth Game.. Truy xuất từ:http://www.kyle-thomas.com/files/Dissertation.pdf, lần truy cập cuối 15/12/2020.
[34] Tsingos, N., Dachsbacher, C., Lefebvre, S., & Dellepiane, M. (2007). Instant sound scattering. Trong
Proceedings of the 18th Eurographics conference on Rendering Techniques, trang 111-120. Eurographics Association.
[35] Unity Technologies (2018).Inner Workings of the Navigation System. Truy cập từ:
https://docs.unity3d.com/Manual/nav-InnerWorkings.html, lần truy cập cuối: 21/12/2020. [36] van den Berg, J. & Ming Lin & Manocha, D.(2008). Reciprocal Velocity Obstacles for Real-Time
Multi-agent Navigation.2008 IEEE International Conference on Robotics and Automation, Pasadena, CA, trang 1928-1935.
[37] Viện nghiên cứu âm thanh và rung động - Đại học SouthAmpton, (n.d).Point Sources, Inverse Square Law. Truy cập từ:
http://resource.isvr.soton.ac.uk/spcg/tutorial/tutorial/Tutorial_files/Web-basics- pointsources.htm, lần truy cập cuối: 22/12/2020.
[38] Walker, P. (2014).Levels of Common Quiet and Loud Noises. Truy cập từ:
https://residential-acoustics.com/common-noise-levels/, lần truy cập cuối: 09/07/2021. [39] WaveBehaviourRAFT (n.d). Truy cập từ:
https://sites.google.com/site/wavebehaviourraft/diffraction, lần truy cập cuối: 22/12/2020. [40] Welford, A. T. (1980). Choice reaction time: Basic concepts.Reaction times, trang 73-128.
[41] Wikipedia (2020).A* search algorithm.. Lần sửa cuối cùng vào: 14/12/2020. Truy cập từ: https://en.wikipedia.org/wiki/A*_search_algorithm, lần truy cập cuối: 21/12/2020.
[42] Zambetta, F. (2007), Simulating sensory perception in 3d game characters. TrongProceedings of the 4th conference Australasian on Interactive entertainment, trang 27. RMIT University.