Là phát triển trò chơi là cách tốt nhất để học lập trình? [đóng cửa]


21

Gần đây tôi đã nghe một người hướng dẫn nói rằng phát triển trò chơi là cách tốt nhất để học lập trình. Bên cạnh thực tế là mọi thứ phải được tạo bằng mã, ông nói rằng bạn thực sự có được trải nghiệm đầy đủ và triển khai OOP vào các chương trình của bạn. Nói cách khác, mọi thứ bạn làm trong một trò chơi là một đối tượng theo nghĩa đen cả về mặt kỹ thuật và khái niệm. Có an toàn để thực hiện giả định này? Hoặc luôn có ngoại lệ khi học lập trình?

lưu ý rằng nó đã hướng đến sự phát triển .net / xna / c #.


3
"Thực tế là mọi thứ phải được tạo ra trong mã". Còn các mô hình 3D, kết cấu, âm thanh và các tài nguyên khác thì sao? Bạn có thể tạo ra một công cụ trò chơi mà không có chúng, nhưng một trò chơi hoàn chỉnh với rất ít tài nguyên, thậm chí nếu không thể, sẽ khá khó khăn.
POSIX_ME_HARDER

@Cheshire: Chà, bạn có thể lập trình những thứ đó với những thứ như Chế biến. Tôi không nói rằng nó rất thực tế mặc dù.
Anto

2
@Cheshire: Có, một số người thực hiện thử thách này rất trực tiếp, bằng cách tạo mọi thứ theo thủ tục. Không quá phổ biến trong các trò chơi thương mại (theo như tôi biết), nhưng phổ biến chỉ để chứng minh rằng nó có thể được thực hiện và tôi đã thấy một số bản demo khá ấn tượng như thế.
Thất vọngWithFormsDesigner

6
Tôi cho rằng câu hỏi này có nghĩa là 'phát triển trò chơi' thay vì 'chơi trò chơi' khi hỏi về chơi game? Không thể từ bỏ bước nhảy vọt trí tuệ từ Call of Duty sang C ++ ...
HorusKol

1
Nếu bạn muốn trò chơi có thể chơi được thì bạn cũng có thể thấy rằng bạn cần phải thỏa hiệp thiết kế OO thuần túy để ủng hộ tốc độ.
Peter Taylor

Câu trả lời:


25

Phát triển trò chơi là một trong những phát triển thử thách nhất mà theo tôi, có. Chúng ta hãy xem tất cả các khái niệm mà một người tạo ra một game bắn súng góc nhìn thứ nhất cần biết:

  • Đồ họa
    • Tính toán 3d
    • Tối ưu hóa tốc độ
    • Giao diện với phần cứng đồ họa
  • Tro choi
    • Cấu trúc dữ liệu
    • Định dạng tệp để lưu
    • Thiết kế chung, nếu không, bạn sẽ tạo ra một mớ hỗn độn không thể thêm tính năng vào
    • Kiến thức mạng nếu trò chơi là nhiều người chơi
  • Thuật toán AI
    • Tìm đường
    • Trận chiến
  • Xuất bản
    • Kiến thức hệ điều hành như cách trình cài đặt hoạt động
    • Có thể phát triển web để có được từ

Bạn thấy đấy, một trò chơi có thể bao gồm rất nhiều lĩnh vực cùng một lúc. Điều này làm cho nó trở thành một công cụ học tập tuyệt vời nếu bạn sẵn sàng dành thời gian và làm cho nó tốt.

Đối với OOP, đó là một mô hình hoạt động tốt. Bạn có thể sử dụng một trò chơi như một công cụ học tập để thực hành các kỹ thuật thiết kế tốt.

Tuy nhiên, để trả lời câu hỏi của bạn, đó không phải là cách duy nhất để học lập trình. Khi bạn trở thành nhà phát triển trung gian, việc tạo trò chơi sẽ cho phép bạn chạm vào rất nhiều khái niệm và cấp độ lập trình. Bên cạnh đó, nó rất vui!


12
Bạn đã quên một điều, một câu chuyện cho trò chơi đó, và đôi khi, câu chuyện mới là vấn đề.
Mahmoud Hossam

Điều này giả định rằng đó là một trò chơi 3D.
Adam Harte

1
@Adam: Có, nhưng 2d cũng có tính toán của nó. Bây giờ tôi cố tình loại trừ các game nhập vai dựa trên thử nghiệm;)
Michael K

1
@Mohmoud Câu chuyện KHÔNG BAO GIỜ "tất cả những gì quan trọng". Đây chỉ là một sai lầm lớn như có một câu chuyện xấu / mất tích. Có nhiều khía cạnh để làm nên một game hay. Tôi không muốn chơi một trò chơi nhàm chán, bất kể câu chuyện tuyệt vời như thế nào. Ngoài ra hầu hết các trò chơi giải đố thành công không có một câu chuyện.
Adam Harte

Lý thuyết trò chơi cũng tiện dụng.
VirtuosiMedia

46

Không phải là tautological, nhưng lập trình là cách tốt nhất để học lập trình. Nếu bạn quan tâm đến trò chơi máy tính, thì trò chơi lập trình có thể là một cách tuyệt vời để học lập trình.

Tôi không quan tâm đến các trò chơi, nhưng tôi yêu toán học, vì vậy, rất nhiều dự án học tập của tôi có bản chất toán học.

Điểm mấu chốt là, bạn cần tìm cách giải quyết vấn đề với mã và trò chơi hoạt động với nhiều người.


đây là những gì tôi nghĩ ban đầu Nhưng xem xét hoàn toàn mới của bạn để lập trình. Chơi game có vẻ như là một công cụ tuyệt vời để tìm hiểu nhiều khái niệm khác nhau. Michael liệt kê một số trong số đó. Thành thật mà nói, tôi ước rằng tôi đã học được OOP từ góc độ chơi game trước tiên. Nhưng điều đó có thể là do thực tế là nó được giải thích kém hoặc việc phát triển các ứng dụng kinh doanh làm cho việc nắm bắt khái niệm này trở nên khó khăn hơn một chút. Thật thú vị khi quan sát cả hai đối số.
Edward

@penguin theo cách nào thì chơi Call of Duty hoặc Halflife dạy bạn lập trình?
jwenting

13

Đó là một cách để học lập trình, trong số những cách khác. Khi bạn viết mã, bạn học được những điều. Bây giờ, nó cách tốt nhất? Không chắc lắm.

Ít nhất, hai lý do được đưa ra bởi giáo viên của bạn là không hợp lệ .

  • "Mọi thứ phải được tạo bằng mã" : khi bạn viết một ứng dụng kinh doanh, bạn thực sự đang viết mã. Nó sẽ không được viết bằng phép thuật. Có, có những người trợ giúp cho phép bạn sử dụng mã được tạo tự động. Không, không bắt buộc phải sử dụng chúng. Nhân tiện, các phần được tạo tự động thường gây khó chịu nhất cho lập trình (không phải bằng cách thêm các điều khiển vào điều khiển Windows Forms mà bạn sẽ học được điều gì đó thú vị và hữu ích).

  • "Bạn thực sự có được trải nghiệm đầy đủ và triển khai OOP vào các chương trình của mình" : ai đó phải giải thích cho tôi tại sao điều này chỉ hợp lệ cho các trò chơi, nhưng không hợp lệ cho bất kỳ điều gì khác. Nếu bạn hiểu OOP và muốn sử dụng nó, bạn cũng có thể sử dụng nó trong các ứng dụng kinh doanh. Nếu bạn không nhận được nó hoặc không muốn sử dụng nó (và thích sử dụng lập trình chức năng chẳng hạn), phát triển trò chơi sẽ không buộc bạn phải thay đổi.

Nhưng:

Phát triển trò chơi có thể là niềm vui . Hầu hết những người trẻ tuổi thích trò chơi, vì vậy họ sẽ thích phát triển một trò chơi hơn là viết một ứng dụng kinh doanh, điều này sẽ vô cùng nhàm chán đối với hầu hết trong số họ. Nhìn thấy điều này, giáo viên có thể bắt đầu tin rằng thực sự chơi game là cách tốt nhất để học lập trình, và sau đó họ sẽ cố gắng tìm lời giải thích hợp lý cho điều đó.

Điều này đang được nói, những giáo viên đó kết thúc bằng cách làm cho sự phát triển trò chơi trở nên nhàm chán đối với những người trẻ tuổi như sự phát triển của các ứng dụng kinh doanh. Nếu họ tin rằng chơi game phải được thực hiện để học OOP, v.v., thì họ sẽ yêu cầu sinh viên của họ thực hiện các loại dự án không thú vị chút nào. Đây là một trong những sai lầm lớn nhất của các giáo viên của tôi khi tôi học đại học. Họ đã cho chúng tôi rất thường xuyên các dự án trò chơi để viết bằng Ada trong chế độ bảng điều khiển. Không có đồ họa. Không vui. Chưa có trải nghiệm người dùng. Trong cả cuộc đời và sự nghiệp của tôi, tôi chưa bao giờ thấy các dự án nhàm chán như thế.


4
Trò chơi hoạt động tốt với OOP bởi vì nó rất dễ dàng để xem làm thế nào mỗi BadGuy, Weapon, PowerUp, và các mặt hàng khác trong một trò chơi có thể dễ dàng trở thành một đối tượng. Bạn có thể lập trình các tương tác giữa các đối tượng và nhìn thấy chúng trên màn hình. Tôi nghĩ rằng phần hình ảnh là những gì làm cho nó rất hấp dẫn. Các ứng dụng kinh doanh có kiểu phân cấp của ServerTaskScheduler, AbstractDataProcessor, UserQueryAgent, vv ... không phải là thú vị , mặc dù họ có thể dạy các khái niệm OOP giống như trong game.
Thất vọngWithFormsDesigner

4
@FrustratedWithFormsDesigner: có lẽ tôi chỉ không nhận được nó bởi vì tôi đã dành quá nhiều thời gian phát triển các ứng dụng kinh doanh, nhưng tôi không hiểu tại sao nó sẽ là khó khăn hơn để xem làm thế nào Customerhay Producthoặc Transactioncó thể các đối tượng. Nhưng tôi hiểu rằng sẽ thú vị hơn nhiều khi đối phó với BadGuys hơn là nhàm chán Transaction.
Arseni Mourzenko

Nó có nhiều hơn để làm về mức độ tư duy trừu tượng. Một số lập trình viên bị treo tên rất nhiều vì họ không biết phải liên quan gì. Ví dụ, tôi đã gặp một số nhà phát triển không có ý tưởng gì Transaction.
Spoike

7

Lập trình trò chơi là cách tốt nhất để học lập trình trò chơi. Nếu bạn muốn học phát triển web, hãy làm điều đó, nếu bạn muốn học lập trình hệ thống, hãy làm điều đó và cứ thế.

Lập trình trò chơi là một thử thách, và rất có thể nó sẽ dạy cho bạn rất nhiều điều (Michael lưu ý nhiều điều trong câu trả lời của anh ấy, và nhiều trong số chúng rất khó, và cũng có thể sử dụng các trò chơi bên ngoài). Tạo một game nhập vai hoặc ông trùm (hoặc trò chơi tương tự) sẽ dạy cho bạn rất nhiều về thiết kế OOP bởi vì họ cho vay rất tốt vào mô hình đó. Bạn cũng sẽ có thể tìm hiểu rất nhiều về các cân nhắc về hiệu suất, một số toán học khó cho các trò chơi, v.v., tùy thuộc vào độ phức tạp của đồ họa và vật lý của bạn.

Đó là một cách tốt, và cách tốt nhất để học một số thứ, nhưng nó không phải là một cách tốt hơn để học lập trình. Cho dù bạn đã lập trình bao nhiêu game, vẫn có khả năng bạn sẽ không biết gì về cách tạo ra một hệ điều hành. Tôi nghĩ rằng hầu hết các nhà phát triển vẫn có thể kiếm được một cái gì đó bằng cách phát triển một trò chơi, ngay cả khi họ không làm điều đó như là môn học lập trình chính của họ, miễn là họ có thời gian.


7

Câu hỏi: Phương pháp tốt nhất để học lập trình là gì

Trả lời: Phương pháp bạn thực sự làm

Tức là, khi học hoặc làm một cái gì đó, không quan trọng lắm bạn chọn phương pháp nào lâu như vậy đó là phương pháp bạn thực sự trải qua.

Nếu chơi game là một cái gì đó có vẻ thực sự thú vị đối với bạn, hãy dùng nó. Nếu bạn thấy việc giải các bài toán thỏa mãn hơn, hãy bắt đầu với điều đó. Có nhiều loại lập trình khác nhau và mỗi loại yêu cầu các kỹ năng khác nhau, vì vậy, một sự lựa chọn tốt là bắt đầu với thứ bạn thấy thú vị nhất, đó có lẽ là thứ bạn sẽ làm việc cùng.

... Nhưng đúng vậy, chơi game là một cách tốt để học một mảng lập trình khá rộng vì nó kết hợp toán học, đồng thời, thuật toán, oop, đồ họa, v.v.


4

Nếu bạn thích chơi game thì viết game sẽ là một cách tốt để phát triển nhưng tôi không nói đó là cách tốt nhất. Tôi nghĩ cách tốt nhất là một khóa học về CS theo sau là một công việc với một nhà phần mềm sẽ đầu tư vào đào tạo và cố vấn cho nhân viên cơ sở.

Ngoài câu trả lời khá khoa trương, vâng, phát triển trò chơi sẽ dạy cho bạn rất nhiều kỹ năng tốt, và nếu bạn thích trò chơi trên máy tính, nó sẽ khiến bạn hứng thú với quá trình phát triển. Nó trở nên thú vị hơn rất nhiều ứng dụng đơn giản khác mà bạn thấy trong sách.


2

Tôi muốn nói rằng cách tốt nhất để học viết mã là làm cho nó vui với bạn. Nó không phải là một trò chơi thực sự, nhưng một số loại trò chơi với bạn. Đối với tôi, đây là một trò chơi để giải quyết một số vấn đề toán học phát triển thuật toán theo cách mà tôi có thể giải quyết một vấn đề phức tạp một cách nhanh nhất có thể. Hãy thử thách bản thân tôi Tôi trở thành một lập trình viên giỏi hơn trong mọi nỗ lực để giải quyết vấn đề. Vấn đề càng khó thì càng tốt.

Khi học về Code (cách thực hành tốt nhất), tôi muốn nói rằng bạn sẽ phải bước vào một thử thách lớn hơn. Thách thức đòi hỏi nhiều hơn một đầu ra / đầu ra duy nhất


2

Tôi chưa bao giờ nghe về những tuyên bố rằng chơi Halflife hoặc Call of Duty dạy cho bạn các kỹ năng lập trình.

Lập trình chúng có thể, nhưng lập trình một cái gì đó như thế không phải là bất cứ điều gì mà người mới bắt đầu thậm chí nên thử một chút. Và đặc biệt là những người mới bắt đầu thường có ấn tượng rằng họ có thể tạo ra bom tấn tiếp theo với kiến ​​thức lập trình không tồn tại của họ. Nói với họ hãy thử tạo một bản sao Pacman hoặc Tetris trước và họ hét lên rằng đó không phải là điều họ muốn làm và bạn nên 'cho tôi zuh koduz'.


1

Không hẳn là không. Không có một loại tốt nhất của dự án để học lập trình trên. Loại dự án tốt nhất là một dự án phù hợp với sở thích của bạn.

Ví dụ, tôi đã cố gắng học lập trình một vài cách khác nhau, bao gồm cả việc học lập trình trò chơi. Nó chỉ dường như không bao giờ dính.

Sau đó, khi tôi cần học cách lập trình cho những gì tôi đang làm trong nghiên cứu của tôi? Ngay bây giờ tôi đủ thoải mái để nói rằng tôi biết 2 ngôn ngữ và đang làm việc trên một ngôn ngữ thứ ba. Tại sao? Bởi vì nó có liên quan đến lợi ích của tôi. Tôi có một lý do để gắn bó với nó, một lý do để tìm hiểu và nhiều vấn đề cần thử hơn là chỉ "Bài tập 8" trong cuốn sách.

Điều này, tình cờ, không có nghĩa là các mô hình dịch bệnh lập trình là cách tốt nhất để học lập trình. Nhưng đó là cách tốt nhất cho tôi. Tìm của bạn. Nó có thể là trò chơi, nhưng nó rất có thể không.


+1 cho "loại dự án tốt nhất là loại dự án phù hợp với sở thích của bạn". Amen.
Bryan Oakley

0

Theo kinh nghiệm của riêng tôi, bằng cách viết một trò chơi (giả sử bạn đang làm điều này trên nhóm nhà phát triển nhỏ / của riêng bạn), bạn không chỉ buộc phải nghĩ về phần thuật toán / phân tích của lập trình mà còn cả trải nghiệm và thiết kế của người dùng.

Ngoài ra, nếu đó là một trò chơi khá phức tạp, bạn sẽ làm việc này trong vài tháng và bạn sẽ nhận ra tầm quan trọng của việc ghi chép lại mọi thứ bạn làm - sau này sẽ giúp bạn trở thành một thành viên tốt hơn trong nhóm.


... Nhưng nếu bạn viết bất kỳ loại chương trình nào tương tác với người dùng, bạn có bị buộc phải suy nghĩ về trải nghiệm và thiết kế của người dùng không? Bạn có nói rằng với một ứng dụng khách truyền thống, bạn không thực sự phải suy nghĩ về những điều đó, nhưng chơi game buộc bạn phải như vậy? Và các ứng dụng máy tính để bàn lớn không thể kéo dài vài tháng và yêu cầu bạn làm một số tài liệu? Làm thế nào để bất kỳ điều này áp dụng cho chơi game nhưng không phải các loại lập trình khác?
Bryan Oakley


0

Tôi đồng ý ngoại trừ ...

Rất có thể đó là trải nghiệm lập trình đầu tiên mà nhiều người từng có là chế tạo và lập trình một robot Lego (Mindstorms).

Mặc dù thuật ngữ chung "trò chơi" có thể định nghĩa một danh mục rất lớn để bao gồm hầu hết tất cả các chương trình, nhưng khi được sử dụng trong bối cảnh của poster gốc, nó dường như luôn có nghĩa là "viết trò chơi theo phong cách Doom".

Như đã nói ở đây trước đây - cách tốt nhất để học lập trình là có một cái gì đó bạn thực sự muốn đòi hỏi phải có chương trình. Đó là - học lập trình bằng cách viết chương trình bạn muốn.

Một trong những chương trình Windows đầu tiên của tôi là chương trình điều khiển MIDI, vì tôi thực sự muốn có chương trình điều khiển MIDI và Windows có vẻ phù hợp hoàn hảo (thanh trượt, nút, hỗ trợ SDK cho MIDI, v.v.). Tôi đã học được rất nhiều về lập trình Windows (điều này đã trở lại trong Win 3.1 ngày) từ chương trình đó.

Tôi chưa bao giờ là một phần của lập trình trò chơi vì những lý do được đề cập ở đây - tôi không vẽ tốt như vậy, vì vậy bất kỳ trò chơi nào tôi làm sẽ có đồ họa kém hơn của một nghệ sĩ. Tôi muốn học lập trình chứ không phải quản lý một "nhóm xây dựng trò chơi" (bài tập đáng khen ngợi nhưng hoàn toàn khác biệt).

Cuối cùng, tôi khá không đồng ý với tuyên bố của giáo viên. Cách tốt nhất để học lập trình là viết chương trình bạn thực sự muốn.

-R

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.