Tại sao nó là xấu cho nội dung mã cứng?


41

Tôi biết hầu hết các trò chơi lưu trữ văn bản đối thoại trong các tệp, nhưng tôi cũng đã thấy một số trò chơi dựa trên văn bản thực sự lập trình nội dung (bản đồ, lựa chọn, lệnh người chơi có thể, văn bản câu chuyện) vào mã trò chơi.

Tôi có thể nghĩ ra một vài lý do, nhưng lý do chính tại sao ngay cả các trò chơi văn bản giữ mọi thứ trong các tệp bên ngoài chương trình?

Các chi tiết triển khai khác nhau rất ít giữa việc giữ nội dung theo một định dạng như định dạng XML phổ biến, phân tích cú pháp, sau đó hiển thị bản đồ / hiển thị văn bản dựa trên các biến được tạo từ tệp XML và chỉ đơn giản là gửi toàn bộ tệp XML. Cả hai kết thúc với chuỗi xuất ra màn hình. Không phải là sự khác biệt chỉ là ký hiệu?

Một số trò chơi thậm chí còn giữ đồ họa (nghệ thuật ASCII?) Bên trong mã. Tôi biết điều này không đúng và tôi có thể đoán một vài lý do tại sao nó xấu, nhưng không biết lý do chính tại sao.

Nó là rất phổ biến để có hầu hết các nội dung bên ngoài chương trình. Ngay cả Pháo đài Lùn cũng không sử dụng các ký tự ASCII thực tế, nhưng hình ảnh của các ký tự ASCII được tải vào bộ nhớ.

Tôi chủ yếu yêu cầu bởi vì đó là một chút của PITA để tạo, phân tích cú pháp và làm việc với các tệp XML. Bạn biết đấy ... so với sự thay thế lười biếng chỉ làm cho mỗi dungeon độc đáo (nội dung) trở thành lớp học riêng của nó.


9
Các trò chơi dựa trên văn bản thực hiện mã cứng rất nhiều nội dung, nhưng tôi nghĩ đó chỉ là do thời gian chúng được phát triển và lựa chọn thiết kế kém. Điều tương tự có thể áp dụng cho Pháo đài Lùn. Cá nhân tôi đã lấy tất cả các trò chơi dựa trên văn bản của mình và chuyển nội dung bên ngoài nguồn và vào cơ sở dữ liệu. Nó làm cho cuộc sống của tôi dễ dàng hơn nhiều.
Glen Swan

7
i18n sẽ rất khó thực hiện với nội dung được nhúng trong nguồn.
vui mừng

5
Không chắc chắn đây là phát triển trò chơi cụ thể. Trong tương lai hãy xem xét yêu cầu các lập trình viên SE hoặc stackoverflow.
MichaelHouse

13
just making every unique dungeon (content) its own class.Điều đó chỉ khiến tôi rùng mình. Việc tách dữ liệu khỏi logic là một nguyên tắc cơ bản với tôi đến nỗi tôi ngạc nhiên khi vẫn có những nhà phát triển vi phạm nó.
Lilienthal

4
Dù bạn quyết định, hãy nhận ra rằng nội dung mã hóa cứng cho phép nhiều trường hợp đặc biệt hơn. Bạn muốn một ông chủ nào đó chỉ xuất hiện trong khoảng thời gian từ nửa đêm đến 7 giờ sáng (thời gian thực)? Việc mã hóa dễ dàng hơn rất nhiều so với việc tạo ra một cách chung cho quái vật chỉ xuất hiện vào những thời điểm nhất định.
dùng253751

Câu trả lời:


85

Có nhiều lý do cho điều đó. Tôi sẽ chỉ chạm vào một vài:

  1. Nó làm cho mã nguồn của bạn trở nên lộn xộn. Nếu bạn có nhiều hộp thoại (cây), một phần lớn trong cơ sở mã của bạn chỉ là văn bản không liên quan gì đến mã trò chơi thực tế của bạn.
  2. Bạn sẽ cần biên dịch lại mỗi khi bạn thay đổi quá nhiều thành một ký tự.
  3. Bản thân hộp thoại khó điều hướng. Tôi tưởng tượng việc cố gắng thực hiện toàn bộ cây hộp thoại, huống chi là một vài, hoàn toàn bên trong nguồn của bạn sẽ dẫn đến một mớ hỗn độn của spaghetti và các ifs, switches, v.v. Mà sau đó dẫn đến mã dễ bị lỗi, khó đọc và khó gỡ lỗi hơn.
  4. Nếu bạn muốn cho phép mọi người sửa đổi hoặc mở rộng trò chơi của mình, điều đó sẽ dễ dàng hơn nhiều nếu họ không phải đối phó với mã nguồn để thay đổi điều gì đó.
  5. Điểm trên thậm chí còn quan trọng hơn nếu bạn làm việc trong một nhóm. Bạn không muốn nhà văn của bạn phải lộn xộn với mã chỉ để nhập một đoạn hộp thoại.
  6. Phân tích cú pháp XML hoặc các định dạng tệp tiêu chuẩn khác khá dễ thực hiện nếu bạn sử dụng các thư viện hiện có, do đó chi phí thực hiện theo cách đó rất thấp trong khi mang lại cho bạn nhiều lợi thế và tránh các vấn đề được đề cập ở trên và nhiều hơn nữa.
  7. Như @Miloprice chỉ ra bên dưới, việc bản địa hóa trò chơi cũng dễ dàng hơn nhiều nếu văn bản của bạn nằm trong các tệp bên ngoài. Bạn có thể thêm ngôn ngữ bằng cách thêm tệp, nhóm của bạn có thể đảm nhiệm việc dịch mà không cần phải chạm vào nguồn (điều này đặc biệt quan trọng nếu bạn cho phép mọi người dịch những người không được phép xem tất cả mã của bạn - nghĩ rằng những người làm việc tự do, những người từ cộng đồng không thuộc về nhóm của bạn, v.v.).

10
Tôi sẽ không nói rằng nó sẽ làm cho mã của bạn trở nên lộn xộn. Mặt khác, nội dung hay không, bất cứ điều gì có thể được coi là một mớ hỗn độn. Bạn có thể cấu trúc nội dung trong một cấu trúc tốt giống như mã. Nhưng, những điểm còn lại vẫn đứng vững.
Glen Swan

28
Dễ bản địa hóa / dịch thuật là một lợi ích lớn khác.
Milo P

2
@Christian: Bạn có thể có một chương trình điều khiển dữ liệu trong đó dữ liệu được nhúng vào chương trình theo định dạng có thể sử dụng trực tiếp tại chỗ (ví dụ: trong C hoặc C ++, lớn, hy vọng là constcác mảng có thời lượng lưu trữ tĩnh). Điều này giúp bạn tiết kiệm tất cả mã và chi phí bộ nhớ thời gian chạy, tải / chuyển đổi biểu diễn dữ liệu ngoài khi chạy. Tất nhiên tất cả các lý do khác của bạn để giữ dữ liệu bên ngoài vẫn được áp dụng.
R ..

2
Cá nhân tôi ủng hộ một cách tiếp cận thậm chí còn mạnh mẽ hơn vì những lý do tương tự được liệt kê ở đây: Di chuyển hầu hết mã của bạn bằng ngôn ngữ kịch bản. Xây dựng một lõi trong C / C ++, nhúng một ngôn ngữ như Python hoặc Lua và xuất API cho nó. Don't Starvetheo cách tiếp cận này và đó là một trong những trò chơi được viết hay nhất tôi từng thấy. Nhiều trò chơi khác trong quá khứ và hiện tại cũng làm điều này, cũng như các ứng dụng (và hiếm khi tiện ích). Tôi muốn nói rằng, nhìn chung, bên ngoài các dự án nhỏ và các tiện ích nhỏ, phân lớp nặngtách biệt luôn là bạn của bạn.
điện tử


30

Đưa dữ liệu nội dung trò chơi vào mã có nghĩa là để thấy bất kỳ thay đổi hoặc lặp lại tiềm năng nào của dữ liệu nội dung trò chơi đó, bạn phải tự biên dịch lại trò chơi. Điều này là xấu vì hai lý do:

  • Nhiều ngôn ngữ mà các trò chơi được viết trong thời gian biên dịch dài. C ++ đặc biệt có thể rất tệ về mặt này và C ++ là ngôn ngữ rất phổ biến cho các trò chơi thương mại lớn. Nó không phải là vấn đề với các ngôn ngữ như C # và Java, nhưng vẫn không nhanh như khả năng lưu trữ dữ liệu trò chơi trong các tệp bên ngoài có thể được tải lại nóng trong khi trò chơi đang thực sự chạy để xem các thay đổi.

  • Nhiều trò chơi được phát triển bởi các đội thường bao gồm các nhà phát triển phi kỹ thuật (nhà thiết kế và nghệ sĩ) sản xuất nội dung. Những người không có kỹ thuật không muốn phải biên dịch lại trò chơi hoặc xử lý "công cụ lập trình rườm rà" để lặp lại nội dung của họ, có thể mong muốn giảm thiểu tiếp xúc với mã nguồn chỉ với các lập trình viên (vì càng ít người hơn có quyền truy cập vào mã nguồn, càng ít người có thể rò rỉ nó - vô tình hay không).

Tôi nghĩ rằng bạn đang đánh giá quá cao sự phức tạp của việc tải dữ liệu từ các tệp văn bản hoặc XML. Hầu hết thời gian bạn nên sử dụng một thư viện để làm điều này, điều này làm cho quá trình phân tích cú pháp XML / JSON / bất cứ điều gì dễ dàng hơn nhiều. Đúng, có một chút chi phí trả trước để viết một hệ thống tải mức được điều khiển theo dữ liệu nhưng nhìn chung sẽ giúp bạn tiết kiệm rất nhiều thời gian trong thời gian dài so với hàng tấn các lớp duy nhất để đại diện cho mỗi cấp.

Các trò chơi nhỏ hơn hoặc đơn giản hơn có thể không thu được nhiều từ khoản đầu tư dài hạn của phương pháp dựa trên dữ liệu, vì vậy trừ khi các nhà phát triển đang sử dụng các khung / công cụ hiện có hỗ trợ, việc mã hóa dữ liệu có thể hiệu quả hơn. mã trò chơi.

Tất nhiên có một loạt lý do tại sao bất kỳ trò chơi cụ thể nào cũng có thể chọn đưa dữ liệu của họ vào các tệp bên ngoài (hoặc không); không thể liệt kê tất cả Ở một mức độ nào đó, tất cả chúng thường sẽ sôi sục với tốc độ lặp lại bổ sung hoặc tính linh hoạt mà không cần phải xây dựng lại trò chơi có thể cung cấp.


Tôi không nghĩ thời gian biên dịch thực sự quan trọng nhưng với tư cách là nhà phát triển, chúng tôi luôn cố gắng "mã gọn gàng" ... đây là một lý do khá chính đáng để phân tách mọi thứ theo đúng nghĩa của nó ... nội dung không phải là mã!
Chiến tranh

4
@Wardy Thời gian biên dịch thực sự quan trọng trong C ++. Tôi đã làm việc với các giải pháp mất hơn 15 phút để xây dựng, vì quy mô của dự án, sử dụng mạnh mẽ các mẫu hoặc thậm chí là sự lười biếng của nhà phát triển (bao gồm các tiêu đề không cần thiết). Và tôi chắc chắn đây là trường hợp với các trò chơi thương mại khổng lồ.
Concept3d

1
@ concept3d: Tôi ước dự án của tôi là 15 phút. Một bản dựng sạch trên một máy chủ xây dựng chuyên dụng mất ~ 50 phút.
Vịt Mooing

càng ít người có quyền truy cập vào mã nguồn, càng ít người sẽ bị tổn thương não mà C ++ gây ra. : P
Sange Borsch

Tôi nghĩ rằng một số người có thể thiếu điểm tải lại nóng - không ai quan tâm nếu phải mất 30 giây để biên dịch lại trò chơi, các nghệ sĩ không muốn khởi động lại trò chơi, họ muốn có một phím tắt, vì vậy họ có thể thử nghiệm các hình động khác nhau và kết cấu trên bay. Trong thực tế đây là một trong những điều họ muốn nhất. Xem mọi thứ trông như thế nào bên ngoài trò chơi là một chuyện nhưng nhìn thấy chúng trong trò chơi mới là điều đáng quan tâm.
sói

7

Như mọi khi, như mọi khi, nó phụ thuộc. Nhưng trước tiên, tôi muốn lập luận rằng mã hóa cứng không phải là xấu.

Tôi có nội dung được mã hóa cứng, cụ thể là văn bản hộp thoại, trong một số trò chơi đơn giản và thế giới không kết thúc. Chúng tôi lập trình viên thích những thứ trừu tượng, nhưng hãy nhớ rằng mỗi lớp trừu tượng bạn thực hiện sẽ làm cho chương trình của bạn phức tạp hơn và khó hiểu hơn.

Nếu trò chơi của bạn đủ đơn giản để bạn có thể mã hóa một số nội dung trong đó, tôi chắc chắn sẽ xem xét nó vì mục đích đơn giản.

Điều này, tuy nhiên, không thực sự quy mô quá nhiều. Chắc chắn lý do phổ biến nhất để đưa nội dung vào các nguồn lực bên ngoài là để đơn giản hóa tinh thần đồng đội, vì một người hoặc nhóm có thể tập trung vào viết trò chơi, trong khi một người khác có thể tập trung vào việc tạo và đánh bóng nội dung.

Tuy nhiên, việc vẽ ranh giới giữa chương trình và nội dung không phải lúc nào cũng thực sự tầm thường. Người ta có thể nói rằng kết cấu là 100% nội dung; Nhưng những gì về kết cấu tạo thủ tục? Văn bản hộp thoại có thể được coi là 100% nội dung; Nhưng khi hộp thoại thay đổi tùy thuộc vào hành động trước của bạn thì sao? Các yếu tố khác mà người ta có thể coi là 100% của chương trình, như kịch bản hoặc trình đổ bóng, cũng có thể được coi là một phần của nội dung của trò chơi. Họ có nên được mã hóa cứng? chúng có nên được tải như một nguồn tài nguyên bên ngoài?

Mặc dù vậy, hãy nhớ rằng mỗi loại nội dung bạn hỗ trợ trong trò chơi của bạn phải có mã tải và diễn giải liên quan đến nó, vì vậy, nói chung, nếu nghi ngờ, tôi khuyên bạn nên giới thiệu nội dung mã hóa cứng và chỉ đưa nó ra tài nguyên bên ngoài khi bạn thực sự cần sự linh hoạt đó (không phải khi bạn nghĩ rằng bạn - tôi cần nó, mà là khi bạn thực sự làm)

Cuối cùng, một lợi thế của việc lưu trữ dữ liệu trong các tệp tài nguyên là bạn chỉ có thể tải chúng khi bạn cần (do đó có thể tăng tốc thời gian tải trò chơi) và hủy tải chúng khi bạn không cần chúng nữa (do đó cho phép bạn có thêm nội dung hơn có thể phù hợp với bộ nhớ). (Góc của Nitopperers: DLL tài nguyên có thể được coi là tài nguyên bên ngoài)


7
"nhưng hãy nhớ rằng mỗi lớp trừu tượng bạn thực hiện sẽ làm cho chương trình của bạn phức tạp hơn và khó hiểu hơn." Tôi phải không đồng ý, sự trừu tượng có thể làm cho một chương trình đơn giản hơn và chắc chắn sẽ làm cho nó dễ hiểu hơn.
NPSF3000

1
Các tóm tắt @ NPSF3000 sẽ thêm độ phức tạp, nhưng có thể loại bỏ sự phức tạp hơn so với chúng.
dùng253751

2
@immibis, do đó tổng số độ phức tạp của dự án sau khi thực hiện trừu tượng hóa nên thấp hơn trước.
NPSF3000

3
@ NPSF3000: Quan điểm của tôi là bạn không nên tạo ra sự trừu tượng chỉ vì bạn có thể. Đôi khi dữ liệu mã hóa đơn giản hơn, dễ hiểu hơn và dễ dàng hơn xung quanh. Thường xuyên hơn không, tôi đã thấy các trò chơi đi theo con đường đến mã hóa mềm , điều mà tôi thấy đáng tiếc. Ngoài ra, hãy nhớ rằng việc thêm trừu tượng luôn dễ dàng hơn việc xóa chúng, vì vậy tôi là người ủng hộ vững chắc chỉ thêm trừu tượng khi bạn cần chúng.
Panda Pyjama

@PandaPajama đang làm gì đó 'chỉ vì bạn có thể' có thể gây ra sự cố, bất kể đó là gì. Điều đó không có nghĩa là một cái gì đó vốn đã phức tạp, đó là điểm quan tâm của tôi. Ngoài ra, điều gì khiến bạn nghĩ việc thêm trừu tượng dễ dàng hơn việc xóa chúng? Ngoài đỉnh đầu tôi nghĩ khác - thêm một sự trừu tượng muộn có thể có nghĩa là tái cấu trúc đáng kể, nhưng tôi không thể nghĩ ngay đến một trường hợp loại bỏ một sự trừu tượng không cần thiết sẽ phức tạp. Việc thay đổi từ XML thành các chuỗi được mã hóa cứng là chuyện nhỏ.
NPSF3000

3

Một lý do lớn để lưu trữ trong các tập tin văn bản là tái sử dụng. Tạo khung trò chơi văn bản đọc bản đồ, hộp thoại và các tài nguyên khác từ tệp văn bản cho phép bạn sử dụng lại khung của mình cho các trò chơi khác. Vượt xa hơn các trò chơi văn bản, đây là cách các tựa game có ngân sách lớn như Call of Duty phát hành một trò chơi mới mỗi năm.

Một lý do khác là tính di động. Bạn có thể sử dụng cùng một tệp cho web, pc, Mac, Android, v.v. Tất cả những gì bạn cần làm là mô phỏng khung của bạn cho các nền tảng khác nhau này và phần lớn dữ liệu trò chơi không được xử lý.

Khi vượt ra ngoài các trò chơi dựa trên văn bản có tập lệnh và dữ liệu được lưu trữ trong các tệp sẽ giảm thời gian biên dịch lại và cho phép bạn tạo giao diện để thao tác dữ liệu dễ dàng hơn.


1
Tất nhiên, có hầu hết các công cụ có thể tái sử dụng có xu hướng buộc bạn tránh làm bất cứ điều gì "đặc biệt", ngoài các quy tắc bạn đã có. Tôi chắc chắn không ủng hộ việc mã hóa các trò chơi lớn, nhưng nó cực kỳ hữu ích khi bạn tạo mẫu hoặc viết các trò chơi thử nghiệm - nó mang lại cho bạn sự linh hoạt hơn nhiều. Tất nhiên, nó đi kèm với một mức giá, do đó, thường là một ý tưởng tốt để cấu trúc lại mọi thứ một khi trò chơi thực sự hoạt động. Trò chơi là phần khó - đảm bảo bạn có thể kiểm tra nó mà không cần lặn qua địa ngục kiến ​​trúc: D Thường dễ dàng tìm thấy hình thức chung sau khi bạn có bê tông hóa.
Luaan

3

Vì mục đích thực hiện các thay đổi nhanh hơn, nó tăng tốc độ phát triển trên các sản phẩm lớn hơn hàng tấn.

Bạn không cần dạy mọi người học cách đi vào và chỉnh sửa nguồn để thực hiện các thay đổi đơn giản. Bằng cách kéo nó ra khỏi mã thực tế, nhiều người có cơ hội đánh lừa hơn, việc tìm ra các tùy chọn bạn có thể chơi xung quanh sẽ dễ dàng hơn và toàn bộ quá trình hoàn thiện các phần khác nhau của trò chơi của bạn tốn ít thời gian hơn. Ngay cả Q & A cũng có thể giúp với điều đó.


3

Tôi không thể tin rằng chưa có ai đề cập đến vấn đề này, nhưng một lý do lớn là làm cho việc bản địa hóa RẤT NHIỀU dễ dàng hơn. Nếu bạn cần hỗ trợ tiếng Anh, tiếng Pháp, tiếng Đức, tiếng Tây Ban Nha, tiếng Bồ Đào Nha, tiếng Ý, tiếng Nga, tiếng Trung và bất kỳ ngôn ngữ nào khác mà bạn nhắm đến, mã hóa cứng đòi hỏi bạn phải có mã riêng biệt cho mỗi ngôn ngữ. Điều đó cũng có nghĩa là nếu bạn cần xóa một số nội dung nhất định (đọc: kiểm duyệt), bạn cần thay đổi mã của mình để tránh nó, thay vì nói "chỉ cần thay thế minigame thăm dò hậu môn này bằng biểu ngữ tích cực thụ động này giải thích bằng đồ họa những gì đang diễn ra ". Nó cũng không thân thiện với người tiêu dùng, vì có khả năng họ sẽ cần phải khởi động lại trò chơi để thay đổi ngôn ngữ, vì bạn cần tải các thư viện khác. Cuối cùng,

Mặt khác, nếu bạn đang sử dụng các tài nguyên bên ngoài, việc hỗ trợ các ngôn ngữ khác nhau chỉ có nghĩa là tải một tệp tài nguyên khác. Điều này có thể dễ dàng được thực hiện trong khi trò chơi đang chạy. điều đó có nghĩa là bạn có thể có một cơ sở mã duy nhất, đơn giản hóa sự phát triển. Và nó cũng có nghĩa là bạn có thể dễ dàng thêm hỗ trợ sau khi phát hành cho các ngôn ngữ khác. Cuối cùng, điều đó có nghĩa là bạn có thể cho phép người dùng từ chối cài đặt một số ngôn ngữ nhất định (một tính năng không xảy ra thường xuyên trong các trò chơi, nhưng một ngôn ngữ vẫn có thể) để tiết kiệm dung lượng đĩa và băng thông.


3

Tôi nghĩ rằng một cụm từ quan trọng là tách mối quan tâm .

Nếu mã của bạn không bao gồm văn bản thì mã sẽ ít phức tạp hơn. Lập trình viên viết mã không phải suy nghĩ về văn bản cụ thể và có thể tập trung vào mã.

Anh ta không phải suy nghĩ về nội địa hóa. Người thực hiện nội địa hóa không phải lo lắng về mã.


3

Tôi nghĩ thật quá dễ dàng để trở thành anh chàng 'khô héo' hơn và khuyên bạn nên sử dụng một tệp tài nguyên văn bản bên ngoài.

Tại sao? Bởi vì có một sự lựa chọn ở đây là về việc cân bằng chi phí / vấn đề / lợi thế của từng giải pháp.

Khi sử dụng một tập tin bên ngoài ... Chà, tôi đoán các câu trả lời khác giải thích đủ lợi ích. Nhưng những gì về chi phí? Bạn phải xác định một hình thức chính thức hợp lệ, xây dựng một trình thông dịch, đồng ý về định dạng tệp và tệ hơn là ... xây dựng một ứng dụng khác - một trình soạn thảo-. Đó là vấn đề 0,00% nếu bạn là thành viên của nhóm 50 lập trình viên xây dựng một dự án lớn. Nhưng nếu bạn cô đơn: bạn bị đình trệ.

Một lần nữa, tôi không đánh giá thấp lợi ích linh hoạt to lớn của tài nguyên bên ngoài: lập trình dựa trên dữ liệu dường như là cách để tôi chơi trò chơi điện tử. Nhưng đừng quên chi phí.

Mặt khác, có văn bản bên trong mã cho phép tạo mẫu nhanh, vì vậy nó nên được ưu tiên trong lần đầu tiên. Sau đó, lời khuyên của tôi là, khi dự án trưởng thành, để phân tích loại dữ liệu cần thiết để mô hình hóa các hộp thoại (tâm trạng / lịch sử-trạng thái / ...). Sau đó, tại một số điểm, bạn quyết định một số lớp / quy tắc / định dạng tệp và đi đến thực tế, cho phép người khác chỉnh sửa / tách mã từ nội dung và vv. HOẶC cho một trò chơi với các hộp thoại đơn giản (Mario ...) bạn chỉ cần xem xét chi phí quá cao và bạn giữ cho một vài chuỗi / hành vi được mã hóa cứng.
Cuộc gọi của bạn.

(Lưu ý về nội địa hóa: nó chỉ là một bảng băm, vì vậy đây là một vấn đề độc lập và dễ giải quyết.)


Một số trong những điều này vẫn đúng nếu bạn đặt văn bản vào mã. Bạn vẫn cần một định dạng nhất định, một cách để điều hướng cây, v.v. Với ý nghĩ đó, mọi chi phí bổ sung để thực hiện nguồn nội dung bên ngoài có vẻ tương đối thấp, đặc biệt là khi các thư viện và trình soạn thảo trưởng thành tồn tại để phân tích cú pháp, viết, chỉnh sửa và tạo các tệp này. Tùy thuộc vào độ phức tạp của các hộp thoại của bạn, bạn thậm chí có thể thoát khỏi mà không cần một trình soạn thảo chuyên biệt và chỉ cần sử dụng một trình soạn thảo văn bản tiêu chuẩn.
Christian

1
Chắc chắn: có lẽ tôi đã không đủ rõ ràng, ý tôi là chỉ sau vài lần lặp bạn mới biết hình dạng của các hộp thoại của bạn là gì (từ một đường thẳng đơn giản đến một cây phức tạp hoặc máy trạng thái). Trong các bước đầu tiên, một vài if (dễ nhất) ifs + một số chuỗi mã hóa cứng là ok imho. Sau đó, khi bạn có thể thấy rõ nhu cầu của mình, hãy đưa ra lựa chọn, sau khi đánh giá chi phí / lợi ích của từng giải pháp.
GameAlchemist

Một nền tảng trung gian mà tôi đang sử dụng trong dự án trò chơi một người hiện tại của mình là có nội dung được mã hóa cứng được tạo từ các tệp được phân tích cú pháp trước thời gian biên dịch. Trong rất nhiều trường hợp đó sẽ là một giải pháp tồi tệ nhất của cả hai thế giới, nhưng với những gì tôi cần thì nó thực sự khá tốt.
glenatron

2

Tôi đoán việc cấp phép cũng có thể là một lý do không bao gồm nội dung trong mã.

Ví dụ,

  • mã của bạn có thể là FLOSS , nhưng bạn hoàn toàn không muốn cấp phép cho nội dung của mình (có thể bạn muốn xuất bản mã trò chơi của mình để người khác có thể sử dụng nó để tạo các trò chơi tương tự có nội dung khác nhau)
  • mã của bạn có thể là FLOSS, nhưng bạn muốn sử dụng giấy phép Creative Commons cho nội dung của mình (vì giấy phép phần mềm không hoạt động tốt cho nội dung và ngược lại)
  • mã của bạn có thể là độc quyền , nhưng bạn đang sử dụng lại nội dung miễn phí
  • mã của bạn có thể là độc quyền, nhưng bạn muốn xuất bản nội dung của riêng bạn theo giấy phép miễn phí / libre
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.