Thiết kế dựa trên dữ liệu là gì? [đóng cửa]


11

Tôi đã đọc rất nhiều bài viết về thiết kế hướng dữ liệu cho các trò chơi. Nó dường như đi xuống:

  • Không mã hóa cứng
  • Không có mã dành riêng cho trò chơi trong công cụ
  • Viết kịch bản cho AI, cutscenes, et cetera.
  • Tổng quát hóa mã cho tái sử dụng
  • Thiết kế thành phần
  • Tính mô đun
  • Khớp nối thấp
  • Trình chỉnh sửa (cho dữ liệu, bản đồ, tập lệnh)
  • Lấy dữ liệu ngoài
  • Các hằng số được giữ trong các tệp văn bản ( .inihoặc cách khác)
  • Đưa dữ liệu qua các trình soạn thảo để tạo kịch bản và thao tác bởi các nhà thiết kế

Bây giờ, câu hỏi của tôi là, sự hiểu biết này có đúng không?


3
Chào mừng đến với trang web. Bạn có hai câu hỏi ở đây (nói chung bạn chỉ nên hỏi một câu hỏi cho mỗi bài đăng) và câu hỏi thứ hai về "làm thế nào để bắt đầu" được coi là lạc đề, vì vậy tôi đã chỉnh sửa nó, cũng như giảm bớt câu hỏi. Nếu bạn muốn có các cuộc thảo luận về cách bắt đầu với một cái gì đó, hãy xem xét việc truy cập Trò chuyện Phát triển Trò chơi .

@JoshPetrie Nhưng đó là điều quan trọng nhất vì tôi đã đến nhiều trang web bây giờ và không có câu trả lời nào. Thậm chí không chọc vào một hướng. Phải có MỘT SỐ người hiểu biết sâu sắc về những chủ đề này.
OmniOwl


1
Có lẽ nó quan trọng nhất với bạn, nhưng nó lạc đề ở đây (xem faq ). Tôi cũng có thể vừa đóng câu hỏi. Truy cập Trò chuyện Phát triển Trò chơi hoặc diễn đàn thảo luận thực tế như GDNet nếu bạn muốn hỏi các câu hỏi bắt đầu như thế nào.

1
@Vipar Pop vào trò chuyện nếu bạn muốn trợ giúp với câu hỏi ngoài chủ đề. Không đảm bảo bạn sẽ nhận được sự giúp đỡ nhưng rất nhiều người thông minh quanh quẩn ở đó.
ClassicThunder

Câu trả lời:


10

Tôi nói điều này không đúng. Tôi tin rằng ý tưởng quan trọng nhất trong thiết kế hướng dữ liệu là tách dữ liệu của bạn khỏi những gì sửa đổi (hoặc cập nhật) dữ liệu .

Vì vậy, đi từ một hệ thống phân cấp sâu OO tiêu chuẩn như thế này:

class MyCreature{
     vector position;
     void update(){ position += 1; }
}

đến một trạng thái và hệ thống riêng biệt

class CreatureState{
    vector postion;
}

class MovementSystem{
    list<CreatureState> states;
    void update() {
        for each CreatureState state in states {
            state.position += 1;
        }
}

Một trong những mô hình DDD có ảnh hưởng nhất tại thời điểm này là Entity Systems. Một số tài nguyên tốt để tìm kiếm là:

http://gamedevrubberduck.wordpress.com/2012/12/26/a-hyoped-entity-system-component-arch architecture /

http://entity-systems.wikidot.com/

Tất nhiên, như với tất cả các mô hình / ý tưởng không có một định nghĩa chính xác và không phải ai cũng hiểu ý tưởng tương tự khi nói về DDD nhưng đây là điều tôi tin là điều quan trọng nhất.


Có tôi quên đề cập đến phần tách. Và đây chính xác là điều mà tôi muốn thấy. Tôi chỉ có thể đọc rất nhiều lý thuyết. Tôi cần xem một số ví dụ cụ thể. Cảm ơn bạn. Cũng sẽ có một cái nhìn vào các bài viết!
OmniOwl

Oh chờ đợi cuối cùng đã tìm thấy lời giải thích tốt nhất mà tôi đọc cách đây một thời gian. Hóa ra đó là một câu trả lời cho một câu hỏi tôi đã hỏi ở đây gamedev.stackexchange.com/questions/36171/ợi : D
Roy T.

4

Tôi nghĩ rằng bạn đang quá phức tạp định nghĩa. Chắc chắn, nhiều nguyên tắc trong danh sách các điểm nhấn của bạn là những điểm tốt từ góc độ công nghệ phần mềm, nhưng chúng không nhất thiết phải là một phần của định nghĩa "điều khiển dữ liệu". Nhiều trong số chúng có một số chồng chéo, hoặc được thực hiện tốt nhất bằng cách sử dụng phương pháp dựa trên dữ liệu, nhưng không cấu thành hành động điều khiển dữ liệu một cái gì đó.

Định nghĩa thực tế về phát triển phần mềm dựa trên dữ liệu nhìn chung khá đơn giản: một chương trình thực hiện các hành động chủ yếu dựa trên một số thông tin bên ngoài (một phần dữ liệu mức, dữ liệu tập lệnh, et cetera) thay vì có một loạt các bước được xác định trước và cố định trong mã. chính nó xác định dòng điều khiển.


Bạn rất có thể đúng rằng tôi quá phức tạp mọi thứ. Đó là điều tôi có xu hướng làm. Nhưng tôi không thể tập trung suy nghĩ về cách bắt đầu viết mã này.
OmniOwl

1
Tôi đã đăng câu trả lời cho câu hỏi của bạn trên GDNet . Mấu chốt của vấn đề là: ngừng cố gắng hết sức, chọn một khía cạnh đơn giản duy nhất của những gì bạn cuối cùng muốn và xây dựng một trò chơi nhỏ với nó.

Tôi đã thấy và tôi cũng trả lời lại. Cảm ơn bạn đã dành thời gian để nói chuyện với tôi về điều này.
OmniOwl
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.