Có phải là thông minh để sử dụng một số công cụ để bắt đầu phát triển trò chơi? [đóng cửa]


14

Tôi bắt đầu lập trình C #, để sau này phát triển trò chơi với XNA. Tôi đọc một cuốn sách phát triển trò chơi tốt cho C #. Vì tôi đã biết các ngôn ngữ khác, tôi có thể nhanh chóng tìm hiểu các tính năng và mã cú pháp của C #. Sau đó tôi bước vào XNA. Vì cuốn sách tôi đang đọc hơi cũ, tôi để nó sang một bên và bắt đầu xem hướng dẫn phát triển trò chơi về XNA qua Internet. Tôi có thể hoàn thành và hiểu hầu hết trong số họ, sử dụng đồ họa 2D. Tôi đã tạo ra các họa tiết hoạt hình, làm cho các nhân vật của tôi di chuyển theo bất kỳ hướng nào, cuộn nền của tôi cùng với chuyển động của nhân vật, v.v. Mọi thứ đã được thực hiện với XNA "thô".

Tôi đã tìm thấy một số điều khó hiểu và tôi thấy rằng một số điều đã được xây dựng trong khuôn khổ. Tôi đã tìm thấy các công cụ trò chơi khác, mà tôi có thể hiểu rõ ràng ít nhất là các mã dòng đơn giản, chẳng hạn như " FlatRedBall " , " Axiom "" Quick Start Engine " . Tôi đã biết về những người nổi tiếng, như "OGRE" , "Unreal""Unity" . Đồng thời, tôi đã cố gắng vứt bỏ tất cả, và bắt đầu học một số chương trình công cụ trò chơi nổi tiếng. Tôi muốn ở lại với XNA, vì tôi phải mất thời gian để tìm hiểu; thời gian tôi không muốn lãng phí nó

Lần này, tôi để nó cho những người có kinh nghiệm. Tôi có thể đi qua một số công cụ trò chơi và sử dụng những gì nó cung cấp, ngay cả khi tôi bắt đầu phát triển trò chơi không? Một số người có thể nghĩ rằng thật tốt khi sử dụng các thói quen nhàm chán của một khung trần trụi. Nếu vậy, những gì sẽ được đề nghị để bắt đầu với? Tôi nghe nói rằng nó thay đổi từ thị trường để thị trường. Có lẽ chúng tôi có thể xem xét rằng tôi muốn một game nhập vai dành riêng cho game nhập vai.


1
Tôi đã có một điều tương tự trong đầu ... Tôi đã sử dụng XNA được 4 năm. Tôi bắt đầu thực hiện một MMORPG ... Hãy nhìn xem nơi nào có tôi, không có nơi nào. Như mọi khi, hãy bắt đầu nhỏ, sử dụng thứ bạn thích trừ khi bạn có kế hoạch lớn hơn và chỉ cần hoàn thành công việc trước khi quá nhiều thời gian trôi qua.
Michael Coleman

@Omnion, sử dụng XNA trong 4 năm cố gắng tạo MMORPG không phải là vấn đề bạn đang sử dụng, mà là vấn đề quyết tâm, cống hiến, thời gian rảnh và ứng dụng thực tế. Bất cứ ai cũng có thể hoàn thành một MMORPG bằng XNA, miễn là họ giữ được động lực và sự cống hiến theo thời gian. Lượng thời gian sẽ thay đổi dựa trên lượng thời gian rảnh và tốc độ làm việc, nhưng bất kể quy mô hoặc phạm vi của dự án, nó vẫn có thể thực tế ngay cả khi bắt đầu lớn. Điều quan trọng là tổ chức quá trình kỹ thuật. Các bước bé, từng bước một, theo thời gian, nhất quán, hoàn thành một dự án bất kể quy mô.

1
Tôi chỉ đề cập đến điều này để khuyến khích mọi người không tin rằng dự án của họ quá lớn, mà thay vào đó chỉ đơn giản là hiểu thực tế của thực tế. Nếu một người hiểu rằng cần nhiều hơn những giấc mơ để hoàn thành một dự án, họ sẽ đi nhiều hơn "không ở đâu". Tôi luôn muốn khuyến khích mọi người thực hiện ước mơ của họ, và không thỏa hiệp với nó. Chỉ làm cho nó thực tế để nó có thể được thực hiện, bất kể kích thước. Trong thời gian, bất cứ điều gì là có thể.

Câu trả lời:


11

Nó phụ thuộc vào những gì bạn muốn học. Nếu bạn muốn "chỉ tạo một trò chơi", bạn có thể làm tốt với một công cụ. Cá nhân tôi không khuyên bạn điều này.

Nếu bạn muốn thực sự hiểu cách đồ họa máy tính hoạt động, bạn phải đi sâu hơn và tìm hiểu tất cả mọi thứ. Từ việc làm mới đại số tuyến tính của bạn (ít nhất là ma trận, vectơ và không gian tuyến tính) để hiểu cách thức hoạt động của các đường ống đồ họa. XNA là khuôn khổ tốt nhất để bắt đầu. Trò chơi đầu tiên của tôi là trong đó (ý tôi là trò chơi thực sự, ứng dụng 3D đầu tiên là xe tăng chiến đấu trong openGL). Nếu bạn muốn bắt đầu lập trình 3D, không có kế hoạch đầy tham vọng như vậy, bạn không thể thực hiện một game nhập vai ngay bây giờ. Bạn nên cố gắng thực hiện một số trò chơi trong đó bạn đang bay trong không gian đầy hình khối và cố gắng bắn những cái màu đỏ, để tìm hiểu những điều cơ bản. Nó có thể sẽ khiến bạn mất nhiều thời gian hơn bạn nghĩ :). Nhưng nó sẽ dạy bạn rất nhiều.

Và đi cho nó! Lập trình đồ họa 3D là điều tốt nhất bạn có thể làm để sống. Đó là khó khăn, vui vẻ và sáng tạo trong một gói.


3
Có thể đáng để kiểm tra MonoGame thay vì XNA. Microsoft đã ngừng phát triển XNA và nó thiếu hỗ trợ giao diện người dùng Windows 8 Metro. Theo một số bài đăng tôi đọc trên Reddit, đại diện của họ thực sự đang giới thiệu MonoGame. Và bạn sẽ có được nền tảng chéo (Linux, OSX, Android, iOS).
David C. Giám mục

17

Không có gì sai khi sử dụng một công cụ hiện có, tất cả đều phụ thuộc vào mục tiêu của bạn.

Nếu bạn quan tâm nhất đến việc chỉ xây dựng một số trò chơi hoặc thiết kế trò chơi, bạn càng nhanh chóng nhận được mã trò chơi càng tốt. Một cái gì đó như Unity rất tuyệt ở đây, vì bạn có thể sử dụng kiến ​​thức C # của mình và bắt đầu đính kèm tập lệnh vào các đối tượng và có thứ gì đó chạy ngay lập tức.

Nếu bạn muốn trở thành một lập trình viên trò chơi, thì bạn cần phải hiểu mọi thứ ở cấp độ thấp hơn. Một khung như XNA là một khởi đầu tốt. Bạn có thể dựa vào khung để khởi động mọi thứ và sau đó bắt đầu thay thế các phần của khung bằng mã của riêng bạn khi bạn tìm hiểu cách xây dựng từng thành phần của trò chơi.


1
Tôi thích câu trả lời của bạn hơn của tôi. +1 cho bạn.
Notabene

6
Điều này đặc biệt hữu ích nếu bạn muốn trở thành một lập trình viên trò chơi, bắt đầu với một công cụ và sau đó khi bạn tự nghiên cứu rằng bạn đã sử dụng một ví dụ tốt (giả sử bạn thích sử dụng nó) để tương phản với các tài nguyên khác mà bạn tìm thấy về kiến ​​trúc động cơ.
michael.bartnett

Nhưng bạn vẫn nên vững vàng trong những điều cơ bản về đồ họa máy tính, ngay cả khi bạn đang sử dụng công cụ.
Notabene

1

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;

  1. 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 .

  2. 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.

  3. 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!

  4. 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ó.

  5. Đố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. **


2
Disclaimer: Đây chỉ là câu chuyện của tôi, và phong cách học tập của tôi. Những người khác có thể khác. Chỉ có một thế giới khác biệt cho quá trình học tập đối với tôi khi tôi cố gắng trở thành một CHƯƠNG TRÌNH trò chơi (công cụ cấp thấp) thay vì Trình thiết kế trò chơi (phụ thuộc vào động cơ).
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.