Một trò chơi có nên tự dọn dẹp sau khi thoát ra không? [đóng cửa]


7

Một trò chơi / công cụ có nên tự dọn sạch (đóng cửa sổ, tắt trình kết xuất, đóng tệp, bộ nhớ trống) khi đóng không?

Hệ điều hành nên làm điều đó bằng mọi cách, và thường theo cách nhanh hơn.

Tôi đoán rằng hầu hết các nhà phát triển không thực sự quan tâm vì họ cần dọn dẹp đúng cách mọi thứ (Với tải tài sản động và thay đổi bản đồ, v.v.), nhưng sẽ không đảm bảo rằng mọi thứ sẽ được làm sạch hoàn hảo.

Nhưng có bất kỳ tích cực để làm sạch vs không làm sạch hoặc ngược lại?

Tôi đang sử dụng C ++.

Thế còn máy chơi game? Có phải tất cả họ đều tự dọn dẹp?


2
Điều này nghe có vẻ như một câu hỏi lập trình. Nó dường như đã được bảo hiểm trên StackOverflow .
Anko

1
@Anko Tài liệu tham khảo tuyệt vời, nhưng đối với các trò chơi thì điều này có thể khác, vì vậy tôi đoán điều này đã diễn ra ở đây.
akaltar

Tôi không hiểu tại sao điều này được giữ lại. Như bạn có thể thấy trong các câu trả lời có câu trả lời cụ thể của nhà phát triển trò chơi cho câu hỏi này. (ví dụ: Làm thế nào điều này hoạt động trên bảng điều khiển trò chơi, trải nghiệm người dùng)
akaltar

Chỉ vì có câu trả lời "cụ thể cho trò chơi" không có nghĩa là câu hỏi thuộc chủ đề. Bạn có nên dọn sạch lối thoát hay không là một câu hỏi lập trình chung (có hay không bạn thể chơi game console cụ thể hay không, nhưng sẽ lạc đề ở đây vì những lý do khác, chủ yếu là dựa trên câu đố, trừ khi nó được kèm theo với một vấn đề cụ thể thực tế người hỏi đang cố gắng giải quyết).

@JoshPetire Tôi không thể đặt câu hỏi cho lý do của bạn, nhưng tôi nghĩ câu trả lời cho "Nhà phát triển trò chơi có thể trả lời câu hỏi này tốt hơn không?" là đúng".
akaltar

Câu trả lời:


9

Có, một trò chơi / công cụ sẽ tự dọn sạch khi nó đóng. Có những lý do tốt cho việc đó:

  • Cho nhóm của bạn biết rằng bạn biết những gì đang diễn ra trong trò chơi của bạn
  • Biết khi nào quản lý của bạn ngừng hoạt động
  • Đảm bảo các tệp và tay cầm của bạn được đóng và dữ liệu của bạn được lưu
  • Giúp ngăn sự cố khi thoát vì bạn có ý tưởng tốt hơn về những gì đang xảy ra
  • Giúp tìm rò rỉ bộ nhớ: nếu bạn tự làm sạch mọi thứ, bạn không nên có bất kỳ rò rỉ bộ nhớ nào, vì vậy lần sau khi bạn sử dụng một công cụ để phát hiện chúng, nó sẽ cung cấp cho bạn 0 rò rỉ. Bạn sẽ có một thời gian khó khăn hơn để đạt được điều này nếu bạn không dọn dẹp.

Và nó có mùi tươi hơn khi công cụ sạch sẽ!


Có vẻ như lý do tuyệt vời để không gặp sự cố trong thực hành tốt và nói chung, tôi sẽ dành thời gian cho người khác trước khi chấp nhận.
akaltar

1
Tôi sẽ đề nghị rằng trong khi tất cả những điều này là lý do chính đáng, thì chúng nên trở thành thứ yếu đối với trải nghiệm người dùng. Nếu người chơi phải trải qua trải nghiệm thoát tệ thì "chính xác" hoàn toàn mang tính học thuật.
lzcd

3
PS3 yêu cầu tắt máy sạch, nhưng 360 thì không. Wii về cơ bản sẽ khởi động lại giữa các trò chơi nên sẽ không yêu cầu điều đó. Điểm là, không phải tất cả các nền tảng làm điều đó cho bạn nhưng nhiều người làm.
Alan Wolfe

0

nếu bạn đã sử dụng malloc()hoặc các hàm free()cấp phát bộ nhớ tương tự thì bạn phải sử dụng để phá hủy bộ nhớ được phân bổ khi hoàn thành và tương tự khi bạn sử dụng toán tử mới để tạo một thể hiện của một cái gì đó thì bạn phải sử dụng delete()để phá hủy nó khi hoàn thành, nếu không thì các tài nguyên đó và bộ nhớ vẫn có thể tồn tại hoặc bị khóa trong nền, do đó, cách tốt nhất là tự phân bổ bộ nhớ để an toàn.


5
Điều này không đúng khi thoát ứng dụng; tất cả bộ nhớ được sử dụng bởi một tiến trình sẽ tự động được giải phóng bởi tiến trình khi nó thoát. Tuy nhiên, đó không phải là trường hợp chung cho tất cả các loại đối tượng; một cuộc thảo luận tốt có sẵn ở đây gamedev.net/topic/
Mạnh
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.