Hồi xưa mình cũng từng nghĩ như bạn
Không có ai giải thích, nhưng qua quá trình học tập mình đã tự tìm ra câu trả lời.
Không chắc đúng 100%, nhưng mình cũng chia sẻ thử nhé.
Trước tiên thì nói về app, mỗi hệ điều hành, hoặc một nền tảng nào đó, đều cung cấp các API để tạo ra và sử dụng các component của nó.
Ví dụ trong Windows thì có: Button, Checkbox, ComboBox, Label, v.v.
Khi sử dụng các component có sẵn này, thì thiết bị xử lý rất nhẹ nhàng. (Vì cái hệ điều hành/nền tảng được sinh ra để sử dụng mấy component này)
Còn Game thì sao?
Bản chất của nó là một vòng lặp chạy liên tục.
Ở mỗi lần lặp, một hình ảnh sẽ được vẽ ra. (Một component đặc biệt sẽ cho phép nó lặp đi lặp lại việc vẽ vời đó, ví dụ trên HTML là canvas)
Bạn muốn xuất hiện 1 button? Bạn phải tự mình vẽ cái button đó ra.
Bạn muốn click được cái button đó? Bạn phải tự mình bắt các sự kiện click, tọa độ click trên màn hình.
(mình nói bản chất vậy thôi, chứ có lẽ các framework làm game đã hỗ trợ mấy cái này)
Túm lại là, bạn không thể đem các component được hỗ trợ bởi hệ điều hành vào cái game của bạn được. (Mình không nói đến việc tạo một lớp canvas để vẽ, rồi tạo ra các lớp layer chứa component khác cho nó nằm đè lên cái canvas nhé, cái đó không tính)
Do vậy khi chạy game sẽ tốn nhiều tài nguyên hơn là app thông thường.
FPS càng cao thì càng tốn.
Một cái máy xài app bình thường, 1 ngày mới cần sạc một lần.
Nếu đem nó đi chơi game, chỉ 3 4 tiếng là hết pin.
Cho dù là game nhẹ như Pikachu thì độ hao pin, nóng máy cũng gấp mấy lần app thông thường.
Mình không chuyên về game, cũng chẳng tìm hiểu nhiều.
Bạn nào có lời giải thích thỏa đáng hơn thì chia sẻ nhé.