Các nguyên tắc cơ bản của phát triển trò chơi là gì? [đóng cửa]


12

Tôi hoàn toàn không hiểu làm thế nào một trò chơi video có thể được mã hóa.

Tôi là một lập trình viên mới bắt đầu và chỉ có kinh nghiệm viết các ứng dụng bảng điều khiển làm toán và những gì không. Tôi không hiểu làm thế nào các quy trình logic này có thể làm cho hình ảnh di chuyển trên màn hình (trò chơi video). Rõ ràng nếu tôi nhảy vào một cuốn sách phát triển trò chơi hoặc một cái gì đó tương tự tôi sẽ hiểu nhưng hiện tại tôi vẫn đang nắm bắt được các nguyên tắc cơ bản của lập trình nói chung. Bất cứ ai cũng có thể đưa ra một lời giải thích đơn giản, mã hóa khôn ngoan, trên bước nhảy giữa việc tạo ra một máy tính làm toán đơn giản để làm cho máy tính tạo ra các chương trình đồ họa tuyệt vời như trò chơi video? Có lẽ có một số video giới thiệu ai đó có thể chỉ cho tôi?

Câu trả lời:


14

Giả sử bạn là người mới bắt đầu lập trình tuyệt đối và để lấy ví dụ của tôi về một thứ bạn có thể biết, trong khi viết một ứng dụng bảng điều khiển có menu mà bạn muốn người dùng chọn trong số tùy chọn có sẵn, bạn sẽ làm gì trước tiên?

Nếu bạn nghĩ về việc tạo menu của mình, bạn đã có một điểm, nhưng nếu sau khi người dùng nhấn một phím không phải là một phần của tùy chọn có sẵn, thì

  1. ứng dụng của bạn sẽ thoát, hay
  2. Nó sẽ tiếp tục cho đến khi người dùng nhấn phím "Thoát"?

Đặt cược của tôi sẽ là # 2, ứng dụng sẽ tiếp tục cho đến khi người dùng nhấn phím rõ ràng để thoát khỏi ứng dụng bảng điều khiển.

Một trò chơi bằng cách nào đó là như thế! Khi nào bạn muốn trò chơi thoát ra? Khi người dùng chọn, phải không? Do đó, hành động hoặc menu trò chơi phải kéo dài cho đến khi người dùng muốn thoát. Sau đó, bạn sẽ phải tạo một vòng lặp để chương trình tiếp tục cho đến khi chính phím này để thoát đã được nhấn.

Bạn vừa được giới thiệu về Vòng lặp trò chơi. Trò chơi chỉ là một chương trình khác chạy cho đến khi người dùng thoát ra một cách rõ ràng.

Khi ở trong vòng lặp trò chơi, khi bạn đang chơi trò chơi, các bước di chuyển là hình ảnh được vẽ trên màn hình theo tọa độ cụ thể. Khi người dùng / người chơi nhấn một phím điều hướng, chẳng hạn như [Left]bạn sẽ làm cho hình ảnh của mình làm mới tọa độ của nó trong khi làm giảm tọa độ X của nó để bạn tạo ấn tượng cho chuyển động về hướng trái. Bạn phải có được những đầu vào này để có được hành động mà người chơi muốn nhân vật / con tàu của mình thực hiện tiếp theo. Sau đó, Vòng lặp trò chơi tiếp tục lặp cho đến khi bạn có thể nhận được một hành động mong muốn khác từ người chơi, cho đến khi trò chơi được thoát.

Chà, tôi sợ câu trả lời này bắt đầu khá dài, vì vậy hãy cho phép tôi chỉ cho bạn hai câu hỏi khác có thể khiến bạn quan tâm, tôi hy vọng.

  1. Nơi để bắt đầu viết trò chơi, bất kỳ hướng dẫn hoặc tương tự?
  2. Di chuyển sprite của tôi trong XNA bằng các lớp .

Liên kết thứ ba này không phải là về cách bắt đầu viết trò chơi, mà là về cách làm cho một sprite di chuyển trên màn hình. Vì bạn cũng hỏi về cách làm cho đồ họa di chuyển trên màn hình, tôi nghĩ điều này có thể khiến bạn quan tâm.

Tôi hi vọng cái này giúp được! =)


4

Trong khi bạn đang tạo các ứng dụng bảng điều khiển, rất có thể bạn sử dụng các hàm được gọi là print () hoặc read () hoặc write (). Thay vì những trò chơi này, các trò chơi đồ họa sử dụng các chức năng khác có thể ở mức thấp như set_pixel () để đặt màu của một pixel riêng lẻ trên màn hình, cho toàn bộ khung cho phép bạn vẽ các mô hình ba chiều với nhiều hiệu ứng.

Nhưng ý tưởng chính giống như đối với một ứng dụng bảng điều khiển toán học đơn giản. Bạn nhận đầu vào từ người dùng, hành động theo nó để sửa đổi một số biến và sau đó in (hoặc vẽ) một số đầu ra. Các trò chơi và các chương trình tương tác khác thực hiện 30, 60 hoặc nhiều hơn các chu trình tính toán đầu vào-đầu ra này xảy ra mỗi giây. Tất nhiên, mọi phần có thể phức tạp như bạn muốn, nhưng tất cả thường đi vào đầu vào-tính toán-đầu ra. Vì vậy, đừng lo lắng, bạn đang đi đúng hướng.

Đối với các khuyến nghị, tôi muốn nói rằng bạn tiếp tục lập trình, càng nhiều càng tốt. Nếu bạn quan tâm đến việc tập trung vào lập trình trò chơi và bạn chỉ biết lập trình bảng điều khiển, hãy thử và thực hiện một cuộc phiêu lưu dựa trên văn bản nhỏ hoặc RPG. Bằng cách đó, bạn sẽ thực hành rất nhiều về cách quản lý các biến của mình, sử dụng các số ngẫu nhiên và sắp xếp mã của bạn.

Sau khi bạn có được một số kinh nghiệm với điều đó, hãy tiếp tục những điều cơ bản của một thư viện đồ họa. Nếu bạn đang lập trình theo thủ tục, tôi khuyên dùng OpenGL, trong khi nếu bạn đang lập trình hướng đối tượng, tôi khuyên dùng XNA.

Tuy nhiên, đừng mất quá nhiều thứ cùng một lúc. Rất dễ bị thất vọng khi học một công cụ phức tạp, trong khi bạn đang học cách quản lý cây nguồn, trong khi bạn đang học cách lặp qua một mảng, trong khi bạn đang học cách lấy đầu vào và âm thanh, trong khi bạn bạn đang thiết kế trò chơi của bạn.

Có một chặng đường dài phía trước, nhưng hãy nhớ rằng niềm vui đang thực sự đi qua nó.

Hãy tiếp tục phát huy!


4

Một trò chơi máy tính là một vòng lặp vô tận của:

  • Cập nhật: Nâng cao trạng thái trò chơi một lát thời gian nhỏ (như 1/80 giây).
  • Vẽ trạng thái trò chơi hiện tại.

Có những biến thể của những điều này. Một số trò chơi có nhiều cập nhật hơn giữa mỗi lần sơn hoặc có thể thay đổi chúng để trò chơi trôi chảy như nhau trên các máy khác nhau. Nhưng đó là chi tiết kỹ thuật.

Giai đoạn cập nhật xảy ra trong khoảng từ 50 đến 100 lần mỗi giây (vâng thường xuyên như vậy) thực hiện việc này:

  • Cập nhật vật lý trò chơi. Nói rằng một diễn viên có một vận tốc. Bản cập nhật sẽ di chuyển anh ta một chút nhỏ theo đúng hướng. Ngoài ra, nếu bạn sử dụng một động cơ vật lý, nó sẽ kiểm tra sự va chạm với các hành động hoặc chướng ngại vật khác.
  • Cập nhật các quy tắc trò chơi. Đây là những gì làm cho nó một trò chơi và không phải là một thí nghiệm vật lý. Nói rằng một viên đạn trúng diễn viên người chơi. Các quy tắc trò chơi yêu cầu người chơi trừ X điểm máu và viên đạn để biến mất.
  • Cập nhật AI. Đôi khi các diễn viên điều khiển máy tính nên bỏ qua những việc cần làm. Đi sang trái hay phải? Tìm một con đường đến một nơi tốt đẹp để được. Bắn vũ khí.
  • Điều khiển đầu vào. Cập nhật diễn viên người chơi theo các nút bấm trên bàn phím.
  • Cập nhật biểu đồ cảnh. Điều này có thể tiến một bước hoạt hình hoặc cập nhật GUI để cho thấy rằng trình phát bây giờ có ít hơn 10 điểm. Mục đích duy nhất của nó là làm cho trò chơi trông đẹp mắt hơn.

Bạn bắt đầu từ đâu

Yêu cầu cơ bản cho một trò chơi đồ họa là lập trình đồ họa. Hãy chắc chắn rằng bạn có thể mở một cửa sổ và vẽ một quả bóng trong đó.

Tôi giả sử bạn có thể thực hiện một số loại lớp học. Tạo một lớp bóng. Nó có các thành viên sau: x, y, deltaX, deltaY. Tất cả đều là số nguyên và theo tỷ lệ pixel. Bây giờ, viết vòng lặp này.

forever, do this {
  start measure time (in milliseconds)
  //physics part
  add deltaX to x
  add deltaY to y
  if x is bigger than the screen width, assign -deltaX to deltaX
  if y is bigger than the screen height, assign -deltaY to deltaY
  if x is less than 0, assign -deltaX to deltaX
  if y is less than 0, assign -deltaY to deltaY

  //paint
  paint the ball at x, y
  stop measuring time, assign this to workTime
  make the thread sleep for (25 - workTime) milliseconds
}

Điều này sẽ làm cho bóng nảy của ranh giới cửa sổ. Nó không phải là một trò chơi , mà là một mô phỏng vật lý. Nếu bạn viết cập nhật vật lý bóng bên trong lớp bóng, thật dễ dàng để thêm một vài quả bóng. Lưu trữ chúng trong một danh sách và cập nhật và vẽ từng cái cho mỗi khung.

Bạn có thể thêm một mái chèo (mô phỏng vật lý cho nó và làm cho nó có thể điều khiển bằng chuột hoặc bàn phím) và một mục tiêu trò chơi như ngăn bóng bay đến bức tường bên trái. Nếu trò chơi thêm càng nhiều bóng theo thời gian, độ khó sẽ tăng lên. Bạn có một trò chơi.

Tại sao ngủ trong (25 - workTime) mili giây? Nếu bạn làm như vậy, mô phỏng sẽ chạy với tốc độ tương đương 40 cập nhật và sơn mỗi giây. Nó sẽ khá trơn tru. Nếu bạn bỏ qua phần ngủ, hình ảnh động sẽ bị giật và chiếm 100% CPU. Ngoài ra, tốc độ của quả bóng sẽ phụ thuộc vào tốc độ của máy chạy nó. Bây giờ, tốc độ dọc của quả bóng là 40 * deltaY pixel mỗi giây.


2

Hãy dùng chương trình điều khiển của bạn để làm toán, và sau đó khi bạn trả lời đúng sẽ khiến nó bắn ra một số confetti ... Nó đã trở thành một trò chơi (Có ai ngoài tôi chơi Math Blaster khi còn bé không? :)).

Đối với cách máy tính được tạo ra để tạo ra môi trường trò chơi, đôi khi có thể hơi khó khăn để quấn lấy đầu bạn nhưng điều đó dẫn đến một ứng dụng hiểu biết của con người về thế giới xung quanh. Các trò chơi sử dụng cùng một toán học, vật lý và khoa học để xác định chính chúng khi chúng ta áp dụng vào thế giới xung quanh để giải thích cách thức hoạt động của nó.

Các trò chơi Sim là một ví dụ điển hình từ thực đến ảo. Cách đây rất lâu, tôi đã đọc một cuộc phỏng vấn với anh chàng đứng sau các trò chơi Sim và hầu như tất cả trong số họ, ngoại trừ, được sinh ra từ việc đọc về một chủ đề cố gắng giải thích thế giới xung quanh chúng ta, sau đó khai thác bằng các công thức toán học và đưa vào một môi trường ảo để đại diện cho nó. SimCity chẳng hạn, xuất phát từ việc cố gắng mô phỏng những điều cơ bản của các nền kinh tế.

Đối với các chi tiết cụ thể về cách bạn tạo môi trường trò chơi 3D, hãy đặt vật lý vào đó, thêm một số âm thanh, để người dùng bắt đầu tương tác với nó .. Vâng, đó là những gì trang web này và nhiều người khác đang ở đây và không thể tổng hợp thành một câu trả lời cụ thể hơn.

Vào cuối ngày, tôi mô tả các trò chơi video là cơ sở dữ liệu được thiết lập dữ liệu hạn chế rất nhanh. Họ tập trung cao độ vào dữ liệu quan hệ và truy cập dữ liệu tốc độ cao .. Ý tôi là nếu bạn hiển thị một khung hình cứ sau 60 giây, bạn sẽ xử lý một lượng lớn dữ liệu rất nhanh dựa trên mối quan hệ của người chơi trong trò chơi cho tất cả các dữ liệu khác được theo dõi bởi trò chơi :)


Lol, "trò chơi video như cơ sở dữ liệu thiết lập dữ liệu hạn chế rất nhanh" có lẽ chỉ làm tăng thêm sự nhầm lẫn.
michael.bartnett

1

Điều bạn cần hiểu là ma trận. Họ làm cơ sở cho các trò chơi. Một khi bạn hiểu được sức mạnh của ma trận, bạn sẽ thấy các trò chơi giảm xuống như thế nào đối với toán học đơn giản.

Bạn có một vị trí đỉnh trong không gian trò chơi. Bạn chiếu nó bằng ma trận trên màn hình (tìm tọa độ màn hình của nó). Bạn nội suy một số pixel giữa nó và các đỉnh lân cận, và bạn đã hoàn thành. Đó rõ ràng là một sự đơn giản hóa cực kỳ lớn, nhưng các nguyên tắc cơ bản của quá trình raster hóa hoàn toàn không phức tạp một khi bạn mò mẫm ma trận.

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.