Những cạm bẫy lớn nhất để xem xét khi phát triển một trò chơi mới là gì?


19

Tôi thực sự mới bắt đầu truy tìm (cảm ơn David Young vì đã sửa danh pháp) một vài trò chơi dựa trên web mới cho Facebook vài tuần trước và tôi vừa bị ngập trong các khối tinh thần và thời gian bị hút từ mã hóa lại. Tôi đang làm việc trên một cái gì đó tương tự như game nhập vai theo phong cách lần lượt (Vampire Wars). Tôi có kỹ năng viết mã một trò chơi nhưng tôi đang cố gắng thông qua việc cố gắng để có được các mẫu thiết kế phù hợp và làm cho sản phẩm khớp với những gì tôi thấy trong mắt tôi.

Thông thường khi xây dựng một trang web tôi thích 'nghĩ theo mã' và tôi thấy việc thay đổi mã / HTML để điều chỉnh nó nhanh hơn. Điều này có lẽ là do tôi RẤT thoải mái trong những gì tôi làm và tôi biết những gì tôi mong đợi như tôi đã làm đi làm lại nhiều lần. Tại thời điểm này với phát triển trò chơi, tôi thấy mình bắt đầu lại trên giấy (như tôi đã từng làm với các trang web) và tôi tự hỏi liệu đây chỉ là sự thiếu tập trung và trực giác của tôi với logic trò chơi hay liệu đây có phải là một cách thích hợp để đưa ra suy nghĩ của tôi tiến bộ của tiền mã hóa.

Tôi sẽ đánh giá cao một số lời khuyên về cách tấn công chính xác vấn đề này và tiếp tục làm việc. Tôi đang nhanh chóng tìm hiểu mức độ khác nhau của một công cụ trò chơi từ một trang web kinh doanh tiêu chuẩn! Mỗi khi tôi nhận được một cái gì đó tại chỗ, nó chỉ cảm thấy lờ mờ và không đầy đủ và nó trở nên bực bội.

Mở rộng

Ví dụ, công cụ chiến đấu gây ra cho tôi rất nhiều vấn đề gần đây cần một kỹ năng tấn công đơn giản và sau đó tạo ra một cuộn ngẫu nhiên trong khoảng từ -50% đến + 50% và sau đó nhân kỹ năng tấn công ban đầu với tỷ lệ phần trăm đó. Điều tương tự cũng được thực hiện với phòng thủ và sau đó tôi chia lưới chúng để xác định xem có bất kỳ thiệt hại nào được thực hiện đối với sức khỏe của kẻ thù không. Tôi đoán tôi nên nhận ra rằng tôi đang ở trong đầu khi tôi bắt đầu tự hỏi liệu đó có phải là cách đúng đắn để làm điều đó hay không, thậm chí nếu đó là cách "đúng". Một lỗi lớn mà tôi tìm thấy với điều này là hai nhân vật có cùng cấp độ có thể có vài 'cuộn' trong đó cuộc tấn công là -50% và phòng thủ là + 50% vì vậy tôi kết thúc với một chuỗi trận chiến dài TUYỆT VỜI mà không ai làm gì cả. THẤT ​​BẠI

Có lẽ bài viết của tôi nên đã yêu cầu các liên kết được đề xuất mô tả logic trò chơi đơn giản.

Gia hạn kết thúc

Trước tiên xin cảm ơn tất cả các bạn!


1
Đây là một bài đọc thú vị và có liên quan mà tôi thấy hữu ích: makegames.tumblr.com/post/1136623767/finishing-a-game
zfedoran

Câu trả lời:


22

thêm quá nhiều tính năng Tập trung vào cốt lõi của trò chơi, xây dựng nó, sau đó nếu mọi thứ hoạt động tốt thì hãy thêm các tính năng. Mọi người quá tập trung vào việc thêm những thứ hay ho và không bao giờ hoàn thành công việc.


4
Điều này gần như đã giết chết một trong những trò chơi FB của tôi. Nó được đóng gói với các tính năng, nhưng toàn bộ điều này cảm thấy một nửa tổng thể.
Tesserex

Nếu tôi nhớ chính xác thì hiện tượng này được gọi là "tính năng creep". Một cạm bẫy nguy hiểm, thực sự.
S. Tarık Çetin

14

Đây là một bài viết tuyệt vời về cách tạo nguyên mẫu một trò chơi. Từ câu hỏi của bạn có vẻ như bạn đang thiếu ý tưởng về nguyên mẫu được cho là gì.

Tạo mẫu: Bạn (Có lẽ) Làm sai

Blurb:

Sai lầm # 4: Xây dựng một hệ thống, không phải là một trò chơi
Khi bạn đang tạo một nguyên mẫu, nếu bạn thấy mình đang làm việc với thứ gì đó không trực tiếp di chuyển về phía trước, hãy dừng lại ngay tại đó. Là lập trình viên, chúng tôi có xu hướng cố gắng khái quát hóa mã của mình và làm cho nó thanh lịch và có thể xử lý mọi tình huống. Chúng tôi thấy rằng một cơn ngứa cực kỳ khó không gãi, nhưng chúng tôi cần phải học cách. Phải mất nhiều năm tôi mới nhận ra rằng đó không phải là về mã, mà là về trò chơi mà bạn phát hành cuối cùng.

Đừng viết một hệ thống thành phần trò chơi tao nhã, bỏ qua trình chỉnh sửa hoàn toàn và cứng cáp trạng thái trong mã, tránh điều khiển dữ liệu, tự phân tích cú pháp, điên rồ XML và chỉ mã hóa thứ đáng nguyền rủa.

Chỉnh sửa:

Tôi đang thêm điều này chỉ để làm rõ sự khác biệt giữa Prototype và Tracer Code.

Luôn nhớ: Một nguyên mẫu được thiết kế để vứt đi! Mã Tracer thì không.

Cạm bẫy nguyên mẫu

... Cách tiếp cận mã theo dõi giải quyết một vấn đề khác. Bạn cần phải biết làm thế nào để toàn bộ ứng dụng kết nối với nhau. Bạn muốn cho người dùng của bạn thấy các tương tác sẽ hoạt động như thế nào trong thực tế và bạn muốn cung cấp cho các nhà phát triển của mình một bộ xương kiến ​​trúc để treo mã. Trong trường hợp này, bạn có thể xây dựng một bộ theo dõi bao gồm một triển khai tầm thường của thuật toán đóng gói container (có thể giống như lần đầu tiên đến trước được phục vụ trước) và giao diện người dùng đơn giản nhưng hoạt động. Khi bạn có tất cả các thành phần trong ứng dụng cùng nhau, bạn có một khung để hiển thị cho người dùng và nhà phát triển của bạn. Theo thời gian, bạn thêm vào khung này với chức năng mới, hoàn thành các thói quen còn sơ khai. Nhưng khung vẫn còn nguyên và bạn biết rằng hệ thống sẽ tiếp tục hoạt động theo cách nó đã làm khi mã theo dõi đầu tiên của bạn được hoàn thành.

Sự khác biệt là đủ quan trọng để đảm bảo lặp lại. Prototyping tạo mã dùng một lần. Mã Tracer là nạc nhưng đầy đủ và tạo thành một phần của bộ xương của hệ thống cuối cùng. Hãy nghĩ về nguyên mẫu khi cuộc tập hợp trinh sát và tình báo diễn ra trước khi một viên đạn đánh dấu duy nhất được bắn ra.

Thông tin thêm về thiết kế Mã Tracer, từ Lập trình viên thực dụng

Đạn Tracer và Nguyên mẫu


Đó là một điều tuyệt vời ... Tôi sẽ phải xem bài báo đó. Chỉ từ đoạn trích bạn đăng có vẻ như tôi có thể đang nhìn vào nguyên mẫu không chính xác, nhưng cũng có vẻ như đó có thể là một lỗi phổ biến.
tức giậnCodeMonkey

lỗi mà bạn trích dẫn đã gây khó chịu cho tôi khá lâu rồi.
jokoon

4

Cạm bẫy: Không tách logic của bạn khỏi dữ liệu của bạn. Không kiểm tra rằng dữ liệu của bạn tạo ra kết quả mong muốn.

Từ nhận xét của bạn về bài đăng của Joe:

Bạn muốn tôi viết mã cho một cỗ máy chiến đấu cho những cuộc chạm trán quái vật, BÙM! Tôi đã viết lại động cơ của mình ít nhất ba lần trong tuần này và tôi không bao giờ cảm thấy tốt về nó. Ý tôi là, toán học hoạt động, nhưng khi tôi thử nó, nó chỉ cảm thấy khó khăn. Điều đó có ý nghĩa?

Có vẻ như bạn đang kết hợp công cụ với dữ liệu ở đây. Công cụ gặp gỡ quái vật của bạn nên được điều khiển bởi dữ liệu. Nếu dữ liệu ảnh hưởng đến cân bằng / niềm vui trò chơi của bạn là sai, thì không cần phải viết lại hoàn toàn công cụ của bạn - chỉ cần điều chỉnh các biến số dư của bạn cho đến khi cảm thấy đúng.

Tuy nhiên, vì các biến số dư đôi khi phụ thuộc lẫn nhau, việc thay đổi một biến thành một kịch bản tốt hơn có thể có tác động lớn (tiêu cực) đối với các kịch bản khác.

Để kiểm tra rằng dữ liệu mới được điều chỉnh của bạn không làm hỏng cả đống trường hợp khác, việc giữ một vài trường hợp kiểm tra xung quanh và đảm bảo rằng chúng không bị hỏng sau khi điều chỉnh. Đây là một ví dụ đáng ngưỡng mộ về cách bạn sẽ kiểm tra điều này.

TestResult TestPlayerKillsMonsterDuringAttack(PlayerStats, MonsterStats, seed)
{
   Player player(PlayerStats);
   Monster monster(MonsterStats);

EncounterEngine.SeedRNG(seed);
while(1) { result = EncounterEngine.Attack(player, monster); if (result == PLAYER_DEAD) return TEST_FAIL; if (result == MONSTER_DEAD) return TEST_PASS; // result == MONSTER_DAMAGED, PLAYER_DAMAGED is expected. } }

Ví dụ. Nếu bạn gọi nó bằng PlayerStats.Level == 5 và MonsterStats.Level == 3, cuối cùng bạn sẽ mong người chơi luôn đánh bại quái vật này.


Lời khuyên mà tôi nhận được ở đây là rất tốt, và tôi có thể thấy tôi đã tiếp cận sai với rất nhiều điều này. Lý do, mặc dù, tôi đã viết lại động cơ là vì tôi nghĩ rằng tôi đang làm cho nó quá phức tạp. Phiên bản mới nhất của tôi về cỗ máy chiến đấu là một lớp với (hiện tại) một chức năng công cộng duy nhất và một số hỗ trợ. Chức năng chính 'chiến đấu' không chỉ là tấn công cơ bản so với phòng thủ mà còn xác định đòn đánh đầu tiên, kiểm tra cuộn để xác định xem kỹ năng chiến thuật của bạn có cho bạn đòn thứ hai hay không, v.v., v.v. Tôi nghĩ rằng tôi vừa mới thực hiện nó khó khăn!
tức giậnCodeMonkey

Không tách logic của bạn khỏi dữ liệu của bạn. Đó là một điểm tuyệt vời, mà hầu như sẽ luôn gây ra sự cố, hoặc trong khi cập nhật!
Spooks

2

Điều đáng tiếc ở đây, theo như tôi có thể thấy, đó là bạn đang coi lập trình và thiết kế trò chơi là cùng một nhiệm vụ, khi thực sự chúng là các nhiệm vụ riêng biệt. Như bạn đề xuất, đây không phải là vấn đề về lập trình hay thuật toán (bạn có thể mã hóa hệ thống chiến đấu theo bất kỳ cách nào bạn muốn), đó là về những gì thú vị và thú vị với người chơi.

Câu trả lời là, tra cứu tài nguyên về thiết kế trò chơi và cân bằng trò chơi. Thực tế, có những trường đại học dành toàn bộ chương trình học bốn năm cho các chủ đề bạn đang nêu ra, vì vậy chỉ cần đưa ra câu trả lời nhanh chóng và bẩn thỉu là điều không thể xảy ra (giống như cách bạn có thể bị bối rối nếu ai đó nói " vâng, tôi đã có ý tưởng này cho một trò chơi nhưng tôi không biết cách lập trình nó, tôi nên đề phòng điều gì? "). Có sách, khóa học, và các bài viết trực tuyến về thiết kế trò chơi; tìm kiếm chúng ra


1

Cạm bẫy lớn nhất khi viết trò chơi là lo lắng về việc bạn có sử dụng đúng mẫu thiết kế hay không thay vì chỉ viết mã mà bạn cảm thấy tốt.


Vấn đề tôi đang gặp phải bây giờ là cảm thấy tốt về mã tôi đang viết. Bạn muốn có một phụ trợ kế toán cho doanh nghiệp của bạn, không có vấn đề gì ... Bạn muốn tôi viết mã cho một công cụ chiến đấu cho các cuộc chạm trán quái vật, BÙM! Tôi đã viết lại động cơ của mình ít nhất ba lần trong tuần này và tôi không bao giờ cảm thấy tốt về nó. Ý tôi là, toán học hoạt động, nhưng khi tôi thử nó, nó chỉ cảm thấy khó khăn. Điều đó có ý nghĩa?
tức giậnCodeMonkey

Tại sao phải viết lại động cơ? bạn có thể triển khai mã cụ thể của trò chơi bằng ngôn ngữ kịch bản như lua. Thay đổi các biến hoặc cách tính toán và không bao giờ cần biên dịch lại chỉ để kiểm tra mọi thứ. gamedev.net/reference/articles/article1932.asp
David Young

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.