TƯ VẤN TỪ MỘT NGÀY
// Từ không đến nghiệp dư qua nhiều năm học tập
Tôi chắc chắn sẽ tránh xa các động cơ cấp cao như Unity hoặc Torque2D MIT. Chúng rất tuyệt cho các nguyên mẫu nhỏ, nhưng tôi sẽ không bao giờ coi chúng là nghiêm túc để phát triển trò chơi video của riêng mình. Tại sao tôi Điểm trừ khi nó không hơn gì một bản làm lại SideScroller hoặc Arcade đơn giản?
Hầu hết các công cụ trò chơi, thư viện hoặc khung công tác không làm gì khác hơn là các tác vụ đơn giản nhất với toàn bộ mã cồng kềnh với các chức năng và tính năng bạn sẽ không bao giờ sử dụng.
Khi tôi mới phát triển trò chơi nhiều năm trước, tôi đã bắt đầu từ đầu. Động cơ cấp rất cao. Không phải bất cứ thứ gì quá cao như RPG MAKER, nhưng chắc chắn cao ở đó như Unity và Torque. Sau đó, tôi đã hạ xuống, đến XNA và C #, vì nó có quá nhiều tài nguyên và hướng dẫn. Dự án chính của tôi cần hiệu năng, hoặc có lẽ tôi chỉ bị ám ảnh về việc muốn có hiệu suất đáng kinh ngạc trong phần mềm của mình, ngay cả khi đó không phải là một dự án lớn. XNA đơn giản là không cắt nó và tôi gặp nhiều vấn đề với động cơ mà tôi đọc yêu cầu phải đau đầu để khắc phục. Điểm nào của việc sử dụng một cái gì đó "mức cao hơn" như XNA / C # khi bạn đang làm công việc tương tự (sửa các lỗi & vấn đề XNA) như bạn sẽ sử dụng công cụ của riêng mình trong C ++?
Sau một thời gian tìm hiểu, cuối cùng tôi cũng đã biết về cách các công cụ trò chơi được thiết kế và bắt đầu xem xét mã của các công cụ đó. Đọc những gì hầu hết các chuyên gia nói và những lời phàn nàn của các nhà phê bình về công cụ trò chơi khiến tôi nhận ra, 'Tại sao thậm chí sử dụng một công cụ? "
Nhấn mạnh vào C ++ của tôi và thực sự say mê một số triết lý được sử dụng trong ngôn ngữ đó đã giúp tôi rất nhiều. Tuy nhiên, tôi đã dành rất nhiều thời gian để tìm hiểu về rất nhiều, tôi chỉ muốn bắt đầu làm một trò chơi.
Vì vậy, tôi đã kết thúc với một thứ với khá nhiều lời khen ngợi, là C ++ và mức độ rất thấp: SDL. Thật không may, đây là một vấn đề đau đầu. Nó là cấp độ quá thấp, tôi thấy bên cạnh không có lý do tại sao thậm chí sử dụng thư viện này. Tôi chỉ đơn giản là học OpenGL và tự làm từ đầu. Thành thật mà nói, chủ yếu là thực tế tôi cần phải thực thi mã của riêng mình để làm một cái gì đó cơ bản như lật một hình ảnh (và việc triển khai khác không hoạt động vì cách tôi xử lý các họa tiết) khiến tôi bỏ rác SDL vĩnh viễn. Thật tuyệt nếu bạn muốn có trình kết xuất phần mềm, nhưng IMO tôi muốn thay thế nó xuống thấp hơn với phần cứng (OpenGL) hoặc cao hơn (SFML).
Không muốn mua một cuốn sách khác trên amazon và tìm hiểu một API khác, tôi đã đi lên cao hơn. SFML đơn giản là tuyệt vời, chưa kể được đánh giá cao trên internet. Tôi đã đọc gần như vô số các đánh giá tích cực, bên cạnh không có tiêu cực. Tôi không thể nói tương tự cho SDL. Nó xử lý tất cả các điều cơ bản cực đoan, nhưng phần còn lại tùy thuộc vào tôi và các thư viện khác mà tôi chọn. Tôi đã bị mắc kẹt với nó kể từ đó.
IMO, một công cụ trò chơi chỉ là ngớ ngẩn. Thư viện cấp thấp là sự lựa chọn tốt hơn nhiều cho cả lập trình viên chuyên nghiệp và người mới bắt đầu.
Cũng cần lưu ý, tôi đã học được nhiều hơn về các khái niệm lập trình và đã mài giũa kỹ năng phát triển phần mềm của mình khi bị buộc phải xử lý mọi thứ ở mức độ thấp hơn tôi từng học với các công cụ trò chơi WYSIWYG cấp cao.
Điều gì như Unity mang lại cho bạn trên XNA? Chỉnh sửa trực quan và một cái nạng. Người mới cuối cùng sẽ học được rằng bạn vẫn sẽ phải viết mã gần như toàn bộ trò chơi giống như khi bạn có C ++ và các trình soạn thảo trực quan không hiệu quả với thứ bạn có thể tự tạo.
XNA mang đến cho bạn điều gì về SFML hoặc việc triển khai OpenGL của riêng bạn và các thư viện hữu ích khác? IMO, tuyệt đối không có gì tốt. Hiệu suất tệ hơn, C # thay vì C ++, rất nhiều hướng dẫn cho người mới nhưng kém chuyên nghiệp hơn và một số người tiết kiệm đau đầu rằng IMO một lần nữa chỉ là một cái nạng cho những gì bạn nên học với C ++. Ban đầu tôi rất sợ C ++ và yêu C #, chủ yếu là vì nghe nói và những tin đồn về ý kiến của những kẻ ngốc có cùng rắc rối mà tôi gặp phải ban đầu với C ++: Tôi chỉ muốn một lập trình viên đủ tốt. Tôi nhận ra rằng tôi cần phải học nhiều nguyên tắc cơ bản hơn và mài giũa những điểm yếu của mình để khắc phục những rắc rối tôi gặp phải với C ++, điều mà C # "làm cho dễ dàng". Tôi có bao giờ bỏ lỡ sự đơn giản của một số điều trong C # không? Thậm chí không! Tôi biết làm thế nào để làm điều đó trong C ++ mà không gặp rắc rối.
Nếu các thư viện cấp thấp hoặc học DirectX / OpenGL khiến bạn sợ hãi, thì hãy đợi cho đến khi bạn bắt đầu hiểu được sự phức tạp của việc tạo một trò chơi video đầy đủ.
Triết lý của tôi về các công cụ trò chơi có thể được tóm tắt trong hai ví dụ giải thích sự dư thừa và vô dụng của các công cụ, ngoại trừ trong các trường hợp bị cô lập.
Những người mới bị đe dọa với các thư viện cấp thấp, sẽ bị co giật khi họ phát hiện ra rằng ngay cả với một công cụ cấp cao như Unity, (bên cạnh kết xuất đồ họa, phát âm thanh, tải nội dung; công cụ cơ bản thực sự), nó sẽ gần giống với việc tạo trò chơi từ đầu. Sự phức tạp là trong kỹ thuật một trò chơi, không hiểu API hoặc phát triển các lớp để hiển thị lên màn hình.
Các chuyên gia không bị đe dọa bởi sự phức tạp của việc tạo ra một trò chơi đầy đủ trong một thứ như Unity, không sử dụng Unity vì thời gian để tự tin tìm hiểu API và các yêu cầu của một công cụ cụ thể có lẽ là vấn đề đau đầu hơn và mất nhiều thời gian hơn để viết mã cho một vài lớp cần thiết để làm những điều cơ bản.
Vì vậy, động cơ là vô dụng đối với người mới, bởi vì người mới không thể làm bất cứ điều gì với họ vì họ thiếu các kỹ năng kỹ thuật. Tương tự như vậy, động cơ là vô dụng đối với các cựu chiến binh, bởi vì họ đã có các kỹ năng kỹ thuật để làm điều đó mà không cần động cơ, và cũng có thể tạo ra 'động cơ' cụ thể, hiệu quả hơn của riêng họ hơn là phải trải qua việc học cả API của công cụ trò chơi, chức năng, và hiệu suất quirks. Chưa kể cơn ác mộng lớn khi làm việc với các công cụ mà đôi khi bạn không thể chạm vào vì chúng không phải là nguồn mở (hoặc ngay cả khi chúng là, đọc mã của người khác đôi khi có thể là cơn ác mộng).
Heck, thậm chí một số "khung trò chơi" "cấp thấp" không gì khác hơn là một vài lớp để tạo cửa sổ, kết xuất với màn hình và phát âm thanh. Đây là điều mà một chuyên gia có thể tự làm từ đầu bằng cách sử dụng các thư viện khác như SDL / SFML hoặc triển khai OpenGL / DirectX / OpenAL của riêng họ, trong một phần nhỏ thời gian để thực sự hoàn thành một trò chơi video đầy đủ.
TLDR;
Nếu bạn muốn lập trình, hãy học cách trở thành một lập trình viên .
Tránh sử dụng các công cụ , nhưng đừng dại dột và bỏ qua các thư viện cực kỳ hữu ích.
Nếu bạn muốn trở thành Nhà thiết kế trò chơi , hãy thử công cụ WYSIWYG và bơm những trò chơi đó ra!
Nếu bạn muốn trở thành một Lập trình viên trò chơi , hãy tránh các động cơ như cái nạng mà họ đang có.
Đối với tôi , việc sử dụng các công cụ trò chơi cấp cao hơn đã làm tê liệt khả năng trở thành lập trình viên của tôi. Thời điểm tôi bắt đầu sử dụng các thư viện cấp thấp hơn thay vào đó hoặc không sử dụng bất kỳ thư viện nào, tôi bắt đầu tìm hiểu rất nhiều đến nỗi tôi nhanh chóng chuyển từ một người mới đến một người mà bây giờ có thể tạo trò chơi video mà không cần bất kỳ tài liệu tham khảo, hướng dẫn hoặc sách nào bên cạnh tôi. Chỉ cần trình biên dịch của tôi và rất nhiều kỹ thuật và thực hành.
Lượng học tập tôi có được từ các thư viện cấp thấp trong một khoảng thời gian NGẮN LỚN lớn hơn nhiều so với lượng thời gian tôi đạt được trong một khoảng thời gian RẤT DÀI với các mức độ cao hơn. **