Bạn có thực sự sử dụng sơ đồ để mô hình trò chơi? [đóng cửa]


17

Ý tôi là chủ yếu là UML nhưng bất kỳ phương pháp nào hoạt động đều khả thi. Vậy - bạn có thực sự mô hình hóa các trò chơi của mình bằng UML / các sơ đồ khác hoặc các phương pháp khác không? Tôi đã có một chủ đề tại trường đại học của mình về mô hình hóa với UML và nó có vẻ như nỗ lực nhiều hơn lợi ích thực tế nhưng tôi nhận ra rằng đó chỉ là do tôi chưa bao giờ tạo ra một hệ thống CNTT phức tạp lớn. Vì vậy, nó có đáng để sử dụng không và loại sơ đồ / phương pháp nào thường là * tốt nhất?

* Tất nhiên, nhiều lần các công cụ cụ thể cần được chọn cho các vấn đề cụ thể nhưng có thể có một số mẫu.

Chỉnh sửa: Tôi quên một điều quan trọng - bạn có tạo sơ đồ trước hoặc sau khi triển khai công cụ không? Ý tôi là - khi một người thiết kế và thực hiện một thứ gì đó, người ta thường thay đổi ý định hoặc điều gì đó bất ngờ xuất hiện và người ta phải thay đổi, đôi khi là chính - và thực hiện chúng trong các sơ đồ vốn đã phức tạp dường như vô vọng như trong chính mã.


5
Đây là nhiều hơn một câu hỏi liên quan đến lập trình nói chung, vì vậy hãy xem câu hỏi này: lập trình
viên.stackexchange.com/questions/152997/ Kẻ

3
Thx cho liên kết nhưng tôi thực sự cố tình đặt câu hỏi này ở đây - tôi muốn xem liệu gamedev có tương tự ở khía cạnh này với các lĩnh vực CNTT khác không.
NPS

Câu trả lời:


21

Tôi muốn nghĩ rằng mọi thứ xung quanh chúng ta có thể được thể hiện, bằng cách này hay cách khác, thông qua một sơ đồ. Ngay cả khi nó chỉ là một sơ đồ tuyến tính thể hiện sự chuyển đổi giữa các trạng thái của một đối tượng cụ thể trong suốt thời gian (giống như một sinh vật sống, trải qua một số trạng thái từ khi sinh ra đến khi chết). Tôi sử dụng sơ đồ để đặt ra những suy nghĩ và ý tưởng của mình cho việc thực hiện thực tế. Tôi ứng biến khá nhiều.

Do đó, sơ đồ của tôi hầu hết thời gian ở mức rất cao, và cảm thấy giống như bản đồ tư duy .

Để đưa ra một số ví dụ, đây thực sự là một bản đồ kế thừa lớp (một bản đồ đã bị cắt) trong trò chơi của tôi trong đó Đối tượng tương tác là loại cơ sở.

Đối tượng tương tác là loại cơ sở

Đây là sơ đồ FSM ( Máy trạng thái hữu hạn ) cho một cái bẫy gai (những cái bẫy tuyệt vời mà bạn bước và gai woosh xuất hiện từ mặt đất).

Sơ đồ FSM cho một bẫy tăng đột biến đơn giản

Đây là một sơ đồ sổ tay (được đặt tên theo cách này vì nó dự định trở lại sơ đồ thường ) mà tôi đã vẽ gần đây. Nó phác thảo các thành phần của trò chơi và cũng giúp thu thập các tài sản cần thiết, vì bạn có thể thấy ngay những gì cần thiết và những gì không. Tôi đề xuất những điều này cho các dự án nhỏ, vì chúng trở nên khá lớn đối với các dự án lớn. Chúng có thể được mở rộng hơn nữa, do đó có thể sửa chữa mọi thứ.

Tổng quan trò chơi

Khi tôi đi đến cấp thấp hơn, thường là vì tôi cần lập kế hoạch cho các khía cạnh phức tạp nhất trong kiến ​​trúc của mình và tôi thường xử lý UML ở đó. Mặc dù vậy, tôi không bao giờ tập trung vào việc xuất ra UML hoàn toàn sạch và chính xác. Tôi đã chấp nhận những gì tôi thích nhất về quy ước UML và biến nó thành một sơ đồ tư duy tuyệt vời - đó là UML. Nó đơn giản và thực hiện công việc cho tôi, nhưng tôi sẽ không làm việc đó trong một môi trường mà UML thực tế được mong đợi, vì những lý do rõ ràng.

Một tình huống khác khi tôi phải xuống cấp thấp hơn là khi tôi phải mô tả các thuật toán thực tế. Tôi sử dụng những gì tôi gọi là sơ đồ dòng chảy . Nó là một định dạng lấy cảm hứng từ các sơ đồ được sử dụng trong thử nghiệm hộp trắng .

Một mẫu cho cái bẫy tăng đột biến mà tôi đã vẽ ngay bây giờ sẽ trông như thế này: Lưu đồ chi tiết bẫy tăng đột biến

Đây thường là lớp cuối cùng giữa các sơ đồ và triển khai thuật toán thực tế. Nếu có nhu cầu, tôi sẽ trình bày chi tiết hơn về sơ đồ dòng (với các hướng dẫn được thực hiện thêm) và suy ra hoặc ước tính độ phức tạp và xây dựng các trường hợp kiểm tra chính xác. Tôi cũng thích sơ đồ hơn mã giả.

Không liên quan đến phát triển trò chơi, tôi cũng có một định dạng đẹp để mô tả các màn hình trong một ứng dụng đa màn hình, chức năng mà người dùng có thể kích hoạt trên mỗi màn hình và mối quan hệ giữa các màn hình. Tôi thường xây dựng những thứ này trước khi bắt đầu phát triển thực tế và chúng hoạt động như một bản đồ trong suốt quá trình phát triển. Nếu nó dành cho khách hàng, sơ đồ màn hình thậm chí còn hữu ích hơn! Nó giúp tôi đi qua tất cả các dự án, từ đầu đến đầu và xem xét tất cả các chức năng mà nó sẽ cần. Do đó, việc cung cấp một ước tính chi phí và thời gian chính xác là vô giá.

Vì vậy, yeah, tôi chắc chắn sơ đồ tất cả mọi thứ và bất cứ điều gì. Nếu tôi có một ý tưởng, tôi có thể và chắc chắn sẽ vẽ sơ đồ cho nó. Nếu tôi bằng cách nào đó bắt đầu một dự án mà không có ít nhất một sơ đồ rất rộng để sao lưu, tôi cảm thấy bị tê liệt.


4
Trên một sidenote, bạn đã sử dụng yEd cho các sơ đồ? Tôi thấy nó rất tiện dụng.
Kromster nói hỗ trợ Monica

4
Chính xác! Vui mừng khi thấy một người dùng yEd khác. Tôi đã sử dụng nó rất nhiều trong những năm qua, đó là sở thích hiện tại của tôi.

2
+1 cho yed. Nhược điểm duy nhất là, UML hoàn toàn không trực quan. Nhưng đối với mọi sơ đồ khác, nó tuyệt vời cho một ứng dụng miễn phí.
Sidar

2
Tôi đã sử dụng yEd để thiết kế cây hành vi của mình cho cuộc thi AI của AiGameDev.
Nick Caplinger

15

Tôi chắc chắn làm - cả về cấu trúc và hành vi - quy tắc của tôi là tôi tạo ra các sơ đồ khi chi phí tạo ra sơ đồ ít hơn là cố gắng nhớ những gì tôi đã nghĩ một tháng sau đó - hoặc khi tôi cần phải giải thích rõ ràng về bản thân mình một số nhà phát triển khác

Biểu đồ lớp khi hệ thống phân cấp thừa kế trở nên đủ phức tạp

Biểu đồ đối tượng khi những thứ như khởi tạo vật thể trở thành thứ gì đó giáp với việc tạo ra quái vật Frankenstein từ các bộ phận khác nhau - đặc biệt hữu ích trong người sử dụng đỉnh bếp chìm và pixel shader, để đảm bảo tất cả các bit cần thiết được đẩy qua đường ống

Biểu đồ trình tự khi các tương tác chi tiết giữa một tập hợp các đối tượng trở nên phức tạp - điều này cực kỳ hữu ích trong việc mô hình hóa các luồng kết xuất phức tạp, nơi thông tin được tính toán trước đó là cần thiết tại các vị trí hạ lưu gần như không liên quan


Tôi quên một điều quan trọng - bạn có tạo sơ đồ trước hoặc sau khi thực hiện công cụ không? Ý tôi là - khi một người thiết kế và thực hiện một thứ gì đó, người ta thường thay đổi ý định hoặc điều gì đó bất ngờ xuất hiện và người ta phải thay đổi, đôi khi là chính - và thực hiện chúng trong các sơ đồ vốn đã phức tạp dường như vô vọng như trong chính mã.
NPS

6
ah ha - phụ thuộc - bất kỳ cách nào giải quyết vấn đề trong tay - đôi khi việc lấy mã dễ dàng hơn và sau đó lập sơ đồ, đôi khi việc lập sơ đồ dễ dàng hơn và sau đó xây dựng nó - Tôi không có quy tắc khó và nhanh cho việc đó một
Mark Mullin

@Mark: bit đó nên là một phần của câu trả lời;)
Kromster nói hỗ trợ Monica

8

Sơ đồ là một cách tuyệt vời để giao tiếp, tài liệu và hỗ trợ thiết kế của bạn , và thiết kế là phần quan trọng nhất trong phát triển phần mềm. UML có rất nhiều tính năng nhưng bạn không có nghĩa là sử dụng tất cả chúng cùng một lúc, chỉ những tính năng hữu ích.

Khi điều hướng trong một thành phố mới, bạn có thực sự dừng lại và nhìn vào bản đồ, thay vì chỉ tiếp tục và làm theo các dấu hiệu? Đó là những gì thiết kế so với mã hóa là về. Khi mọi thứ không quen thuộc, khi vấn đề phức tạp, khi bạn cảm thấy lạc lõng, đó là khi nghĩ về thiết kế là hữu ích nhất, và tốt hơn là làm điều đó sớm hơn sau này. Thay đổi thiết kế của bạn dễ dàng hơn nhiều trước khi bạn thực hiện bất cứ điều gì .

Sơ đồ là một cách tuyệt vời để trực quan hóa vấn đề và giúp thiết kế của bạn, đặc biệt là cho những người suy nghĩ trực quan (mà hầu hết chúng ta trên gamedev tôi tưởng tượng). Rất nhiều vấn đề trở nên tầm thường, khiếm khuyết trở nên rõ ràng, khi nó được ánh xạ rõ ràng trên sơ đồ. Một số vấn đề bạn có thể tìm thấy trong một sơ đồ:

  • Quá nhiều kết nối đến một thành phần? Bạn có thể có một đối tượng thần khó bảo trì
  • Quá nhiều kết nối? Có lẽ tính mô-đun có thể được cải thiện, để làm cho kiến ​​trúc bớt mỏng manh
  • Quá nhiều con đường giữa hai thành phần? Có lẽ bạn có khớp nối chặt chẽ
  • Đối với các ứng dụng hiệu năng cao như trò chơi, có quá nhiều thành phần liên quan đến đường dẫn nóng hoặc vòng lặp bên trong không? Điều này có thể ảnh hưởng đến hiệu suất của bạn
  • Tuy nhiên, hầu hết thời gian, sơ đồ sẽ hiển thị sự không nhất quán giữa thiết kế bạn đã hình dung và triển khai thực tế

Hơn nữa, sơ đồ rất tốt cho việc giao tiếp và ghi lại thiết kế của bạn, cho cả những người không có kỹ thuật hoặc những người chưa quen với dự án của bạn - và hãy nhớ rằng, trong 6 tháng bạn cũng thực sự mới với dự án!

Cách bạn sử dụng UML nên được điều khiển từ những cân nhắc này. Vẽ sơ đồ vì lợi ích của riêng bạn? Sử dụng bất cứ ký hiệu nào bạn cảm thấy thoải mái nhất. Phối hợp với các nhà phát triển khác? Cố gắng bao gồm các chi tiết của các cuộc gọi API, loại tin nhắn, hướng phụ thuộc. Thảo luận về kiến ​​trúc? Hộp đen và các kết nối đơn giản sẽ đủ. Dù sao , không ai sử dụng bộ đầy đủ các tính năng UML , cộng với nó rất hữu ích vì một bộ ký hiệu được tiêu chuẩn hóa mà nhiều người hiểu - trong khi đó, những hình tượng trưng cho khăn ăn của tôi có thể không thể hiểu được đối với bạn và ngược lại.

Đối với bản thân tôi, tôi sử dụng sơ đồ mọi lúc - bản vẽ notepad đơn giản cho các dự án cá nhân, sơ đồ UML đơn giản tại nơi làm việc. Sơ đồ UML này là những gì tôi cho là quá phức tạp và là thứ tôi không bao giờ thực hiện được vì chi phí sản xuất và duy trì nó vượt xa lợi ích của nó, nhưng dĩ nhiên là YMMV.


Một câu hỏi lớn cho bạn - IIUC, bạn đang cố gắng gắn bó với các sơ đồ đơn giản (luôn luôn). Nhưng sơ đồ thường là cần thiết khi ứng dụng trở nên phức tạp. Làm thế nào để bạn giữ sơ đồ nhỏ và đơn giản khi mô hình hóa các hệ thống rộng lớn và phức tạp?
NPS

@NPS Nó phụ thuộc vào mục đích / đối tượng mục tiêu và theo kinh nghiệm của tôi, bạn vẫn có thể sử dụng các sơ đồ đơn giản để mô hình hóa các hệ thống phức tạp. Thông thường những gì bạn có là nhiều sơ đồ đơn giản khác nhau cho những người khác nhau hoặc hiển thị các khía cạnh khác nhau của hệ thống - đó là một phần lý do tại sao có các loại sơ đồ khác nhau trong UML. Các hệ thống phức tạp thường phức tạp theo nghĩa là chúng có nhiều khía cạnh hoặc các lớp, tất cả đều đơn giản trong sự cô lập. Các hệ thống thực sự phức tạp là rất hiếm, bởi vì chúng có xu hướng rất khó hiểu bởi các chuyên gia giỏi nhất.
congusbongus

8

Tôi muốn nói có hai loại sơ đồ. Sơ đồ chính thức và viết nguệch ngoạc.

Về sơ đồ chính thức, tôi thực hiện chúng khi tôi làm việc với các lập trình viên khác, nhưng tôi hiếm khi làm như vậy khi tôi lập trình một mình.

Tuy nhiên, điều đó không có nghĩa là tôi ngồi và viết mã bất cứ điều gì xuất hiện trong đầu. Theo tôi, điều quan trọng nhất khi lập trình (hoặc thực sự là bất cứ điều gì trong cuộc sống) là suy nghĩ trước và làm sau .

Mã hóa là một nhiệm vụ rất cơ học. Bạn gõ và từ xuất hiện trên màn hình. Ý tưởng là vào thời điểm bạn bắt đầu viết mã, bạn đã có thể giải quyết vấn đề trong tay. Viết nguệch ngoạc là một cách tuyệt vời để sắp xếp suy nghĩ của bạn, và thậm chí buộc bản thân phải thực hiện suy nghĩ rằng bạn cần thực hiện phần mã hóa một cách chính xác. Những nét vẽ nguệch ngoạc không có nghĩa là được lưu lại để tham khảo trong tương lai, để bạn có thể hiểu quá trình suy nghĩ của mình một cách dễ dàng.

Đừng lo lắng nếu bạn mất quá nhiều thời gian suy nghĩ. Tôi nghĩ rằng một sự cân bằng tốt xảy ra khi bạn dành 90% thời gian suy nghĩ và 10% mã hóa. Tôi đã gặp một số lập trình viên "cao cấp" sống bằng "chúng ta không có thời gian để suy nghĩ, chỉ để làm". Nhưng ngay cả khi họ gọi mã của họ là "xong" sớm hơn những người dành thời gian để suy nghĩ về những gì họ đang làm, họ (hoặc những linh hồn xui xẻo còn lại sau đó) sau đó dành vô số thời gian để sửa chữa và vá một thứ đáng lẽ phải được xây dựng chính xác từ đầu.

Điều tốt nhất là suy nghĩ là miễn phí! bạn không cần phải ngồi trên máy tính để suy nghĩ. Bạn có thể nghĩ về mã trong khi bạn đang ăn, đi lại, tập thể dục ... Trên thực tế, những ý tưởng tốt nhất xuất hiện khi bạn ít mong đợi chúng nhất, vì vậy hãy luôn để tâm trí luôn mở và chỉ bắt đầu viết mã khi bạn thực sự biết bạn là gì Sẽ đi mã.

Đây là một bài viết liên quan mà tôi tình cờ đồng ý.

Chỉnh sửa : Về định dạng thực tế và loại sơ đồ, tôi khuyên bạn nên sử dụng tự do và thực sự viết tay thay vì sử dụng các công cụ đóng gói sẵn. Hãy nhớ rằng vấn đề là giúp bạn trong quá trình suy nghĩ của bạn, vì vậy hãy thoải mái vẽ bất cứ điều gì bạn thích. Ngữ nghĩa là bất cứ điều gì bạn thích, và chúng có thể khác nhau giữa các sơ đồ và thậm chí giữa các phần khác nhau của sơ đồ.

Có ba lợi ích chính với sơ đồ tự do / viết tay so với các công cụ đóng gói sẵn:

  1. Bạn không bị buộc phải tuân theo loại sơ đồ được hỗ trợ bởi bất kỳ công cụ nào bạn chọn. Đôi khi các mapmind sẽ hoạt động, đôi khi một cái gì đó giống như UML sẽ ổn hơn, trong khi những lần khác, một sơ đồ logic sẽ làm. Mặt khác, một sơ đồ hoàn toàn tùy chỉnh là những gì hoạt động và không có công cụ nào có thể cung cấp cho bạn tất cả sự linh hoạt của các sơ đồ tự do (thử bấm một lỗ qua tờ giấy và tiếp tục ở mặt trái của tờ giấy, trong gói yêu thích của bạn và xem điều gì sẽ xảy ra)

  2. Bạn sẽ dành nhiều thời gian hơn cho việc lập sơ đồ thực sự thay vì sử dụng công cụ. Bất kể công cụ nào, bút và giấy luôn nhanh hơn trong việc lập sơ đồ so với bàn phím và di chuyển qua các menu để tìm các yếu tố cụ thể mà bạn đang tìm kiếm.

  3. Bạn không cần một máy tính để viết tay. Hầu hết thời gian tôi đang thực hiện các thiết kế phức tạp, tôi làm chúng trong thư viện, quán cà phê hoặc thậm chí bên trong máy bay. Ngoài ra, những ý tưởng hay luôn xuất hiện trong thời điểm thích hợp nhất, vì vậy hãy chắc chắn luôn mang theo một cái gì đó để viết và một cái gì đó để viết.


3
và những "nét vẽ nguệch ngoạc" đó chỉ có thể tồn tại trong tâm trí của bạn, hoặc không tuân theo quy ước sơ đồ chính thức nào. Và đừng ngại điều chỉnh thiết kế khi bạn đi cùng và đạt được những hiểu biết mới. Tất nhiên, nếu bạn đang làm việc cho người khác và họ tự chịu trách nhiệm về thiết kế, bạn không thể làm điều đó (mặc dù bạn có thể đưa ra đề xuất và yêu cầu), nhưng nếu bạn tự mình tiếp tục và thử nghiệm. Tôi thường ngồi xuống và bắt đầu làm mọi thứ, tìm một thiết kế phát triển từ những gì tôi đang làm cho đến khi tôi có đủ ý tưởng để chính thức hóa nó trong một sơ đồ hoặc tài liệu.
jwenting

0

Có thể đáng để chỉ ra một vài cuộc thảo luận sơ đồ thiết kế từ Hội nghị các nhà phát triển trò chơi 2013. Đây là một số ví dụ rất thực tế và được thử nghiệm trên đường - và có vẻ như chúng đã được trình bày tại nhiều hội nghị trong nhiều năm qua.

. cho bất cứ ai ghé thăm câu hỏi.)

Joris Dormans và Ernest Adams đã thảo luận về hệ thống biểu đồ cân bằng / thiết kế trò chơi Machination . (Đây là video GDC Vault được trả tiền từ GDC EU 2012; các mẫu từ GDC 2013 trên wiki của Dormans.) Thay vì cố gắng diễn giải, đây là cách wiki mô tả hệ thống:

Machination là một khung lý thuyết và một biểu diễn đồ họa tương tác, năng động, mô tả các trò chơi như các hệ thống động và tập trung vào các vòng phản hồi đóng trong chúng. Mục đích là tìm cách thể hiện và điều tra (định kỳ) các cấu trúc trò chơi theo phương pháp. Machination cung cấp một lăng kính mới về thực hành trực quan và tinh tế trong thiết kế và cân bằng trò chơi.

Noah Falstein đã có một bài nói chuyện gọi là "Nghệ thuật biểu đồ phụ thuộc câu đố Arcane" (video GDC Vault được trả tiền ). Tôi không thể tìm thấy bất kỳ liên kết không phải trả tiền nào ở đây, nhưng nhiều người đã thảo luận hoặc đăng các ghi chú của họ trên mạng.

Cả hai cuộc thảo luận đã thảo luận khi họ tạo ra và cách họ duy trì các sơ đồ này, ở mức độ này hay mức độ khác.


0

Có lẽ bạn nên kiểm tra bài viết này về việc sử dụng một ngữ pháp trừu tượng đơn giản để mô tả vòng lặp chơi trò chơi của bạn, cách nó có thể giúp bạn xác định các vấn đề thiết kế và việc lặp lại ở cấp độ đó dễ dàng như thế nào.

http://www.gamasutra.com/bloss/JoshuaStarner/20130205/186060/Appending_Abauge_Models_to_Game_Design.php

Tôi cũng có thể hướng bạn đến công việc của riêng tôi về chủ đề này, dựa trên tính kinh tế của vòng lặp trò chơi, sử dụng các tài nguyên trừu tượng để theo dõi những thứ như cơ hội, may mắn hoặc chuẩn bị:

http://www.stephanebura.com/diagrams/

Nếu bạn thấy cách tiếp cận này hữu ích, bạn nên xem qua Machination của Joris Dormans, một công cụ để tạo sơ đồ như vậy và chạy mô phỏng của chúng:

http://www.jorilitiesormans.nl/machinating/

Toàn bộ quá trình của ông được giải thích trong cuốn sách của mình:

http://www.amazon.com/Game-Mechanics-Avised-Design-Voices/dp/0321820274/

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.