Lý do không dùng Unreal hay Unity để làm App cho cả IOS và Android?

Hi!

Các bác cho e hỏi xíu!

tại sao chúng ta không dùng Unreal engine dùng C++ hay Unity 3D dùng C#, để làm App cho cả Android và IOS nhỉ?

mình thấy nếu game đã làm được thì mấy ứng dụng nhỏ nhỏ kia, mấy engine làm dc hết, trong khi hiệu nắng quá mạnh hơn hẳn mấy cái React native hay flutter.

1 Like

Hồi xưa mình cũng từng nghĩ như bạn :smiley:
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é.

9 Likes

Flutter có 2D render engine như các game engine nhưng các component của nó được tối ưu cho viết ứng dụng.

3 Likes

Câu trả lời chẳng có gì phức tạp cả. Unreal Engine hay Unity đều là game engine và game engine được thiết kể để “tạo ra game” chứ không phải là các ứng dụng thông thường. Trong các game engine nói chung đều có nhiều công cụ, chức năng dành cho việc tạo ra game và chỉ dành cho việc “tạo ra game”, đối với các ứng dụng thông thường thì mấy cái này quá thừa thãi, đặc biệt là có nhiều công cụ cần khả năng phần cứng cao hơn so với làm ứng dụng thông thường, làm cho việc tạo ra những thứ “không phải là game” trở nên khó khăn hơn cũng như cần nhiều phần cứng hơn. Khi làm một cái gì đó thì người ta thường muốn làm nó một cách nhanh, gọn, nhẹ, tối ưu nhất và rõ ràng dùng game engine để tạo ra một thứ “không phải là game” là một cách không được nhanh, gọn, nhẹ, tối ưu cho lắm, hay nói thẳng ra thì chỉ có những người thích “try hard” mới dùng game engine để tạo ra một thứ “không phải là game”. Ngoài ra, còn nhiều lí do khác nữa mà có thể mình chưa biết.

Có là React Native, Flutter hay mấy game engine như Unity hay Unreal Engine đều sẽ phải cúi đầu sợ hãi trước Android Studio và Xcode (nếu xét về khả năng tối ưu, thích hợp) :rofl:. Lí do cũng đơn giản thôi, Android Studio và Xcode đều đã được phát triển để tối ưu nhất cho Android, iOS. Nó đã được định hướng, hỗ trợ ngay từ đầu bởi Google và Apple để trở thành phần mềm tối ưu nhất cho việc tạo ra các ứng dụng trên Android và iOS, chính Android Studio, Xcode là phần mềm đầu tiên có thể code các ứng dụng Android, iOS, là phần mềm “cây nhà lá vườn”, hỗ trợ duy nhất cho Android, iOS. Mà thực chất thì đối với những game nổi tiếng, cần sự ổn định cao như LoL, Free Fire, Call of Duty: Mobile,…đều lập trình Android, iOS riêng, ngay cả là dùng game engine.

4 Likes

Vì Unreal và Unity chỉ dùng để build AAA game thôi, còn mấy mobile game làm gì có cửa để dùng Unreal hay Unity, nên đừng lôi mấy mobile game ra nói chuyện với Unreal Developer. :relieved:

Câu trên là nói đùa đó, vẫn có mobile game viết bằng Unreal và Unity bình thường. Tuy nhiên tỉ lệ phần trăm thấp hơn so với các game engine được phát triển dành cho mobile thôi.

5 Likes

là sao bạn , game PUBG mobile làm bằng UNREAL nhé, chẳng nhẽ đi làm bằng Xcode, thì có mà tự viết lại hàm vật lý có mà sấp mặt

Hmmm…Thế tại sao khi có cập nhật thì Android ra trước, iOS ra sau hay ngược lại :rofl:.

như vậy cốt yếu là do vấn đề hao Pin , tốn tài nguyên cho dù ứng dụng nhẹ được làm bằng component không phải gốc của hệ điều hành phải ko ạ?

câu hỏi của bạn không liên quan đến cái chủ đề này

Có đấy, vui lòng bạn suy nghĩ kĩ và thử search Google. Ngoài ra, bạn có thể thử search một câu hỏi khác có liên quan như: Tại sao pin iPhone có dung lượng nhỏ hơn pin điện thoại Android ? (Không áp dụng đối với máy cũ).

Đúng vậy.
Đó là vấn đề về mặt vận hành ứng dụng.

Ngoài ra còn có vấn đề về mặt phát triển.
Như bạn trên đã nói, game engine được phát triển để chuyên làm game.
Khi dùng nó để làm app thì không dễ dàng.

Ví dụ ban tạo một app đơn giản trong windows, chỉ cần kéo thả vài component vô cái form, thêm vài dòng code xử lý logic là xong cái app.
Dùng game engine để làm thì không đơn giản như vậy được, tốn nhiều công sức hơn.

4 Likes

Chưa đọc hết mà đã comment rồi. :penguin:

3 Likes

Cái gì nó cũng chỉ mạnh và hiệu quả khi dùng đúng với mục đích, chức năng mà nó có. Bất kể cái gì cũng vậy và mấy cái kia thì mục đích của nó không phải tạo App.

Làm thì chậm, code phức tạp, chạy thì rùa.

4 Likes

và Pin thì uống như uống nước. Dùng 1 cái app nhẹ nhàng nhưng CPU lúc nào cũng hoạt động như thể đang chơi game.

4 Likes

Quả ông bà ta xưa giờ chưa nói sai điều gì, toàn là đúc kết kinh nghiệm mà ra:
“Giết gà xài dao mổ trâu”.
Tại sao ko ai cắt cổ gà bằng dao mổ trâu dài cả mét nhỉ? ông bà mình ko nói cho vui mà qua kinh nghiệm thực tế nhận thấy:
1/ Dao mổ trâu kích thước quá lớn so với cổ gà, nó có thể làm đứt hẳn đầu con gà.
2/ Vì kích thước quá lớn nên dùng rất khó khăn cho con vật nhỏ như con gà, cần rất nhiều effort để xài thuần thục.
3/ Mà vì cái số 2 nên tốn quá nhiều thời gian và công sức, trong khi đó người khác xài dao nhỏ họ cắt được cổ cả trăm con rồi.
Qua câu nói dân gian trên bạn tự suy ra nhé. À mà thêm câu nữa:“Uốn lưỡi 7 lần trước khi nói”, tìm hiểu thêm câu này nữa nhé.

6 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?