"Không tối ưu hóa sớm" không có nghĩa là "chọn cách tồi tệ nhất có thể để làm mọi việc". Bạn vẫn cần xem xét ý nghĩa hiệu suất (trừ khi bạn chỉ tạo mẫu). Vấn đề là không làm tê liệt những thứ khác, những thứ quan trọng hơn vào thời điểm phát triển - như tính linh hoạt, độ tin cậy, v.v. Chọn những tối ưu đơn giản, an toàn - chọn những thứ bạn giới hạn và những thứ bạn giữ miễn phí; theo dõi các chi phí. Bạn có nên sử dụng gõ mạnh? Hầu hết các trò chơi đã làm và hoạt động tốt; Bạn sẽ phải trả bao nhiêu tiền để loại bỏ điều đó nếu bạn tìm thấy cách sử dụng thú vị của tính linh hoạt cho trò chơi?
Khó hơn nhiều để sửa đổi mã được tối ưu hóa, đặc biệt là mã "thông minh". Đó luôn là một lựa chọn làm cho một số thứ tốt hơn và những thứ khác tồi tệ hơn (ví dụ: bạn có thể đang giao dịch thời gian CPU để sử dụng bộ nhớ). Khi đưa ra lựa chọn đó, bạn cần nhận thức được tất cả các hàm ý - chúng có thể là thảm họa, nhưng chúng cũng có thể hữu ích.
Ví dụ, Commander Keen, Wolfenstein và Doom đều được xây dựng trên đỉnh của một công cụ kết xuất được tối ưu hóa. Mỗi người đều có "mánh khóe" cho phép trò chơi tồn tại ngay từ đầu (mỗi người cũng có những tối ưu hóa hơn nữa được phát triển theo thời gian, nhưng điều đó không quan trọng ở đây). Đó là tốt . Bạn có thể tối ưu hóa rất nhiều cốt lõi của trò chơi, suy nghĩ đó giúp trò chơi trở nên khả thi; đặc biệt nếu bạn đang khám phá lãnh thổ mới nơi tính năng tối ưu hóa đặc biệt này cho phép bạn xem xét các thiết kế trò chơi chưa được khám phá nhiều. Những hạn chế mà tối ưu hóa giới thiệu cũng có thể mang đến cho bạn lối chơi thú vị (ví dụ: giới hạn số đơn vị trong các trò chơi RTS có thể đã bắt đầu như một cách để cải thiện hiệu suất, nhưng chúng cũng có hiệu ứng chơi trò chơi).
Nhưng hãy lưu ý rằng trong mỗi ví dụ này, trò chơi không thể tồn tại mà không tối ưu hóa. Họ đã không bắt đầu với một công cụ "được tối ưu hóa hoàn toàn" - họ bắt đầu với sự cần thiết hoàn toàn và làm việc theo cách của họ. Họ đã phát triển các công nghệ mới và sử dụng chúng để tạo ra các trò chơi vui nhộn. Và các thủ thuật động cơ được giới hạn ở một phần nhỏ của cơ sở mã càng tốt - tối ưu hóa nặng hơn chỉ được giới thiệu khi trò chơi được thực hiện hầu hết, hoặc khi nó cho phép một tính năng mới thú vị xuất hiện.
Bây giờ hãy xem xét một trò chơi mà bạn có thể muốn thực hiện. Có thực sự có một phép màu công nghệ làm hoặc phá vỡ trò chơi đó? Có lẽ bạn đang mường tượng ra một trò chơi thế giới mở trên một thế giới vô tận. Đó thực sự là phần trung tâm của trò chơi? Trò chơi sẽ không hoạt động mà không có nó? Có thể bạn đang nghĩ về một trò chơi trong đó địa hình có thể biến dạng không giới hạn, với địa chất thực tế và như vậy; bạn có thể làm cho nó hoạt động với một phạm vi nhỏ hơn? Nó sẽ hoạt động ở dạng 2D thay vì 3D? Có được thứ gì đó thú vị càng sớm càng tốt - ngay cả khi việc tối ưu hóa có thể yêu cầu bạn làm lại một khối lượng lớn mã hiện có, nó có thể có giá trị; và bạn thậm chí có thể nhận ra rằng làm cho mọi thứ lớn hơn không thực sự làm cho trò chơi tốt hơn.
Là một ví dụ về một trò chơi gần đây với rất nhiều sự tối ưu, tôi đã chỉ đến Factorio. Một phần quan trọng của trò chơi là những chiếc thắt lưng - có rất nhiều trong số chúng, và chúng mang theo nhiều vật liệu riêng lẻ xung quanh nhà máy của bạn. Trò chơi đã bắt đầu với một động cơ vành đai được tối ưu hóa mạnh mẽ? Không! Trên thực tế, thiết kế vành đai ban đầu gần như không thể tối ưu hóa - nó đã mô phỏng vật lý các vật phẩm trên thắt lưng, tạo ra một số điều thú vị mà bạn có thể làm (đây là cách bạn có được lối chơi "mới nổi" - trò chơi gây ngạc nhiên nhà thiết kế), nhưng có nghĩa là bạn phải mô phỏng từng vật phẩm trên thắt lưng. Với hàng ngàn đai, bạn có được hàng chục nghìn vật phẩm mô phỏng vật lý - thậm chí chỉ cần tháo nó ra và để dây đai hoạt động cho phép bạn giảm thời gian CPU liên quan đến 95-99%, thậm chí không xem xét những thứ như địa phương bộ nhớ. Nhưng nó chỉ hữu ích để làm điều đó khi bạn thực sự đạt đến những giới hạn đó.
Gần như mọi thứ liên quan đến thắt lưng đều phải được làm lại để cho phép dây đai được tối ưu hóa. Và các vành đai cần phải được tối ưu hóa, bởi vì bạn cần rất nhiều dây đai cho một nhà máy lớn, và các nhà máy lớn là một điểm thu hút của trò chơi. Rốt cuộc, nếu bạn không thể có những nhà máy lớn, tại sao lại có một thế giới vô tận? Bạn nên hỏi vui - các phiên bản đầu không :) Trò chơi đã được làm lại và định hình lại nhiều lần để có được vị trí hiện tại - bao gồm cả bản làm lại 100% khi họ nhận ra Java không phải là cách để đi trò chơi như thế này và chuyển sang C ++. Và nó hoạt động rất tốt cho Factorio (mặc dù nó vẫn là một điều tốt nhưng nó không được tối ưu hóa từ việc di chuyển - đặc biệt vì đây là một dự án sở thích, có thể đơn giản là đã thất bại vì không quan tâm).
Nhưng vấn đề là, có rấtrất nhiều điều bạn có thể làm với một nhà máy phạm vi giới hạn - và nhiều trò chơi đã chỉ ra điều đó. Giới hạn có thể thậm chí còn trao quyền cho niềm vui hơn là tự do; Spacechem sẽ vui hơn nếu "bản đồ" là vô hạn? Nếu bạn bắt đầu với "thắt lưng" được tối ưu hóa mạnh mẽ, bạn sẽ bị buộc phải đi theo hướng đó; và bạn không thể khám phá các hướng thiết kế khác (như xem những điều thú vị bạn có thể làm với băng tải mô phỏng vật lý). Bạn đang giới hạn không gian thiết kế tiềm năng của bạn. Có vẻ như không phải vì bạn không thấy nhiều trò chơi còn dang dở, nhưng phần khó là điều thú vị - với mỗi trò chơi thú vị mà bạn thấy, có lẽ hàng trăm người không thể đến đó và bị loại bỏ (hoặc tệ hơn, phát hành như những mớ hỗn độn khủng khiếp). Nếu tối ưu hóa giúp bạn làm điều đó - hãy tiếp tục. Nếu nó không ... nó có khả năng sớm. Nếu bạn nghĩ rằng một số cơ chế chơi trò chơi hoạt động tuyệt vời, nhưng cần tối ưu hóa để thực sự tỏa sáng - hãy tiếp tục. Nếu bạn không có cơ chế thú vị,đừng tối ưu hóa chúng . Trước tiên hãy tìm niềm vui - bạn sẽ thấy hầu hết sự tối ưu không giúp ích gì cho điều đó và thường gây bất lợi.
Cuối cùng, bạn có một trò chơi thú vị, tuyệt vời. Liệu nó có ý nghĩa để tối ưu hóa bây giờ ? Hà! Nó vẫn chưa rõ ràng như bạn nghĩ. Có gì vui khôngbạn có thể làm gì thay thế? Đừng quên thời gian của bạn vẫn còn hạn chế. Mọi thứ đều cần một nỗ lực và bạn muốn tập trung nỗ lực đó vào nơi quan trọng nhất. Có, ngay cả khi bạn đang tạo một "trò chơi miễn phí" hoặc một trò chơi "nguồn mở". Xem cách trò chơi được chơi; chú ý nơi hiệu suất trở thành nút cổ chai. Có phải tối ưu hóa những nơi đó làm cho nhiều niềm vui hơn (như xây dựng các nhà máy lớn hơn, rối hơn bao giờ hết)? Nó có cho phép bạn thu hút nhiều người chơi hơn (ví dụ với các máy tính yếu hơn hoặc trên các nền tảng khác nhau) không? Bạn luôn cần phải ưu tiên - tìm kiếm nỗ lực để đạt tỷ lệ. Bạn có thể sẽ tìm thấy rất nhiều trái cây treo thấp chỉ từ việc chơi trò chơi của bạn và xem những người khác chơi trò chơi. Nhưng lưu ý phần quan trọng - để đạt được điều đó, bạn cần một trò chơi . Tập trung vào đó.
Là một anh đào trên đỉnh, xem xét rằng tối ưu hóa không bao giờ kết thúc. Đây không phải là một nhiệm vụ với một dấu kiểm nhỏ mà bạn hoàn thành và chuyển sang các nhiệm vụ khác. Luôn có "một tối ưu hóa nữa" mà bạn có thể làm và một phần lớn của bất kỳ sự phát triển nào là hiểu được các ưu tiên. Bạn không thực hiện tối ưu hóa để tối ưu hóa - bạn làm điều đó để đạt được một mục tiêu cụ thể (ví dụ: "200 đơn vị trên màn hình cùng một lúc trên Pentium 333 MHz" là một mục tiêu tuyệt vời). Đừng để mất mục tiêu của thiết bị đầu cuối chỉ vì bạn tập trung quá nhiều vào các mục tiêu trung gian thậm chí có thể không còn là điều kiện tiên quyết cho mục tiêu cuối cùng nữa.