Câu trả lời:
Đột phá
Trò chơi dễ dàng vì bạn không có nhiều trạng thái phải lo lắng (đó là một mảng các giá trị gạch - nếu bạn chỉ có một màu gạch, đó là một mảng cờ), không có AI và bạn phải thực hiện một chút vật lý để có được quả bóng nảy chính xác.
Solitaire
Các quy tắc phức tạp hơn một chút so với Breakout và giao diện với nó rất khác nhau. Nó buộc bạn phải suy nghĩ về các phương pháp khác nhau để thực hiện một trò chơi. tức là, những gì hoạt động trong một trò chơi không nhất thiết là những gì bạn sẽ sử dụng trong một trò chơi khác.
Pac-Man
Điều này là tốt bởi vì bạn có thể làm việc trên một chút AI. Có những con ma theo dõi người chơi (nhưng không quá tốt - bạn muốn người chơi có cơ hội) có thể nhanh chóng thực hiện và bạn sẽ có một trò chơi nhỏ thú vị mà bạn có thể điều chỉnh và khoe với bạn bè và gia đình (luôn có phản hồi tích cực một điều tốt khi bạn đang bắt đầu).
Tôi thấy rằng nếu bạn tìm kiếm cảm hứng trong các trò chơi video đầu tiên, bạn có thể tìm thấy vô số ý tưởng tương đối đơn giản để thực hiện. Ngoài ra, bạn có thể thoát khỏi những tác phẩm nghệ thuật và âm thanh siêu đơn giản vì dù sao bạn cũng đang sao chép một thứ gì đó quá đơn giản. Điều này cho phép bạn tập trung vào những điều cơ bản trước - khởi động và chạy trò chơi của bạn, tìm ra cách đưa pixel của bạn lên màn hình, phát âm thanh, giữ điểm, đưa đầu vào của người chơi vào trò chơi.
Gần như thực sự không quan trọng bạn chọn trò chơi nào trước tiên - chỉ cần đảm bảo bạn chọn một thứ đơn giản mà bạn có thể nhận được kết quả nhanh chóng, theo cách đó bạn có thể di chuyển vào ngày hôm sau và thực hiện một trò chơi khác. Và một cái khác. Và một điều nữa - bạn càng tạo ra nhiều, bạn sẽ càng thúc đẩy bản thân mình, và cuối cùng bạn sẽ tạo ra những trò chơi phức tạp trước khi bạn biết điều đó.
Tôi thực sự khuyên các lập trình viên mới làm quen nên bắt đầu với trò chơi đơn giản nhất mà họ thực sự muốn viết . Như Matt Rix đã đề cập, một phần rất lớn trong việc viết một trò chơi so với bản demo đang đẩy thứ hoàn hảo đến mức hoàn thành - tín dụng, menu, kiểm tra chơi, điểm cao, tạm dừng, kiểm tra chơi, mức độ khó, chuyển trạng thái trò chơi sạch, chơi thử nghiệm, v.v. Những thứ đó mất ít nhất một nửa thời gian bạn sẽ đặt vào và nó không vui chút nào. Không phải vậy. Vì vậy, trừ khi bạn yêu thích khái niệm này và thực sự có động lực, bạn sẽ từ bỏ và tiếp tục trước khi trò chơi là một trò chơi .
Nếu bạn muốn viết một game nhập vai, hãy tìm ra khái niệm RPG đơn giản nhất, dễ quản lý nhất mà bạn có thể nghĩ ra mà bạn muốn làm và thực hiện nó. Tương tự nếu bạn muốn làm một game bắn súng khoa học viễn tưởng, hoặc một platformer có chủ đề kinh dị, hoặc bất cứ điều gì. Chọn một cái gì đó bạn sẽ hoàn thành, rằng bạn vẫn sẽ muốn hoàn thành sau khi mọi thứ vui vẻ được thực hiện nhưng bạn vẫn đang xem xét hàng chục giờ làm việc trước khi bạn thực sự hoàn thành.
Trò chơi hay nhất để "kiếm cánh" với? Một trong những bạn đã hoàn thành. Tôi không quan tâm có bao nhiêu bản demo PONG / Breakout / Galaga / Tetris mà bạn đã viết, bạn không phải là nhà phát triển trò chơi cho đến khi bạn phát hành một trò chơi hoàn thành thực tế.
Thêm vào đó, không ai muốn chơi một phiên bản khác của những trò chơi 40 tuổi đó, và ít nhất một số điểm trong trò chơi viết là dành cho mọi người chơi , phải không?
Tôi đã đăng cái thang này tại TIGsource một lúc trước. Nó bắt đầu từ rất cơ bản đến rất phức tạp.
Quy tắc quan trọng nhất của việc học lập trình trò chơi: học lập trình là khó. Học thiết kế game thật khó. Học cách làm cho nghệ thuật trò chơi hay âm thanh tốt là khó. Cố gắng làm tất cả những điều này cùng một lúc là một công thức cho sự thất bại. Học một điều tại một thời điểm.
Hệ quả: lập trình một trò chơi trong đó thiết kế, nghệ thuật và âm thanh đã được thực hiện. Tạo bản sao, không phải trò chơi gốc.
Trong các lớp học của mình, tôi luôn khuyến nghị các trò chơi này bắt đầu, theo thứ tự:
1) Tetris. Nghệ thuật là các hình chữ nhật được tô màu, mà thậm chí toàn bộ klutz có thể vẽ trong Microsoft Paint. Bạn không cần âm thanh. Việc lập trình tương đối đơn giản, nhưng vẫn đòi hỏi một vài điều quan trọng: hiểu sự khác biệt giữa trạng thái trò chơi nội bộ và những gì được vẽ trên màn hình; có thể vẽ trên màn hình, thời gian (có thể liên quan đến sprite và blits); có thể chấp nhận đầu vào của người dùng trong thời gian thực thay vì chỉ sử dụng getch () hoặc scanf () trong đó bạn phải đợi họ.
2) Đột phá / Arkanoid. Nghệ thuật vẫn là hình chữ nhật màu, và bạn vẫn không cần âm thanh. Sử dụng tất cả các khái niệm cơ bản của Tetris, cộng với một số phát hiện va chạm cơ bản và vật lý 2D vì quả bóng phải di chuyển và nảy nhẹ.
3) Loại Gradius / R. Bạn có thể có thể tìm thấy một số phần mềm miễn phí để làm điều này. Ở đây nền đang cuộn, vì vậy bạn phải tìm hiểu thêm một chút về cách hoạt động của bộ nhớ đồ họa, sử dụng các kỹ thuật như lật trang và đệm đôi và vẽ các thứ bên ngoài ranh giới của màn hình hiển thị. Bạn cũng có xu hướng có kẻ thù năng động và viên đạn sinh ra, vì vậy bạn sẽ cần phải học cách tự dọn dẹp (tức là loại bỏ kẻ thù và viên đạn rời khỏi màn hình để trò chơi của bạn không bị rò rỉ bộ nhớ như một cái sàng).
4) Super Mario Bros. Tương tự như dự án cuộn trước đây, ngoại trừ việc cuộn giờ nằm dưới sự kiểm soát của người chơi và không tự động. Bạn cũng phải đối phó với trọng lực và tất cả những thứ va chạm thú vị đi cùng với nó (như không rơi xuống sàn chỉ vì bạn có một vài pixel ở trên trong khung cuối cùng và muốn di chuyển đến một vài pixel bên dưới trong khung tiếp theo ). Cũng lưu ý rằng trọng lực là có điều kiện: nó ảnh hưởng đến người chơi và một số kẻ thù, nhưng thường không phải là nền tảng hoặc đồng xu nổi hay bất cứ thứ gì khác, một chút khác với thế giới thực.
Nếu bạn có thể làm tất cả bốn trong số đó, bạn sẽ có thể thực hiện khá nhiều trò chơi 2D mà bạn muốn; tất cả các công cụ đều ở đó Nếu bạn muốn tạo trò chơi 3D ... trước tiên hãy học 2D vì nó dễ hơn nhiều và bạn không cần phải hiểu toán học chuyên sâu và dù sao bạn cũng cần hiểu nội dung 2D ... và sau đó khi bạn thoải mái với điều đó, bắt đầu làm việc với một số công cụ 3D cơ bản (có thể là các thư viện như Torque hoặc Unity hoặc các trò chơi nguồn mở như Doom và Quake gốc).
Chúc may mắn!
Bây giờ đây là một câu hỏi thực sự tốt. Tôi không biết bạn đang ở đâu, vì vậy tôi sẽ bay lên trời và cho rằng bạn chưa bao giờ viết một dòng mã nào trong đời. Cắt bỏ bất cứ phần nào của mũi xúc phạm bạn, để lạm dụng một cụm từ.
Tôi nghĩ rằng tôi thực sự sẽ trả lời một câu hỏi hơi khác so với những gì bạn đã hỏi, và tôi sẽ đưa ra ví dụ để đáp ứng câu hỏi bạn đã hỏi tại chỗ. Lý do tôi làm theo cách đó là một chút nhưng tôi tin rằng sự khác biệt đáng kể trong quan điểm: đó không phải là những trò chơi cụ thể quan trọng, nhiều như những suy nghĩ mà những trò chơi mang đến cho một nhà thiết kế.
Bạn có biết mọi người nói về việc bạn phải học nhiều ngôn ngữ lập trình như thế nào, để ăn suy nghĩ và trái tim và gan của họ, và nhờ đó có được sức mạnh to lớn của họ không? Có một sự thật thực sự - sau ngôn ngữ lập trình thuần túy hoặc gần như thuần túy đầu tiên của bạn, ngay cả trong các ngôn ngữ bắt buộc, bạn sẽ kết thúc việc viết các hàm miễn phí phần lớn vì chúng được định nghĩa tốt hơn nhiều và mọi thứ bạn viết ngay cả trong các ngôn ngữ không phải là hình thức đó sẽ tốt hơn cho nó. Nó không đặc biệt quan trọng đó là ngôn ngữ nào - haskell, ml / ocaml / smlnj, công thức, mẫu c ++, bất cứ điều gì - bạn vẫn sẽ học cách thực hiện nhiều lớp công việc mà không cần dựa vào trạng thái hiệu ứng phụ. Lần đầu tiên bạn học một ngôn ngữ lập trình gần máy, chắc chắn, bạn ' sẽ tìm hiểu về trừu tượng loại kích thước. Lần đầu tiên bạn học một ngôn ngữ khai báo hoặc ràng buộc, bạn sẽ tìm hiểu về ràng buộc như một công cụ tùy ý. Lần đầu tiên bạn học một ngôn ngữ tìm kiếm quay lại, bạn sẽ học cách cầu nguyện Ia! Ia! C'thulhu F'tagn Nagn!, Và sau đó chúng tôi trở lại ăn trái tim và gan, và vòng tròn cuộc sống được hoàn thành.
Thiết kế game cũng không khác. Bạn không nhất thiết phải học bất kỳ trò chơi cụ thể nào, song song với một ngôn ngữ cụ thể, mà là để học một số trò chơi đại diện tiêu biểu xử lý suy nghĩ đó, như các gia đình đặc trưng ngôn ngữ. Ngoài ra, có rất nhiều gan và trái tim ăn. Lấy một cái bánh quy tiêu.
Điều đáng nói ở đây (như tôi thấy ít nhất) là bạn muốn bao quát một danh sách lớn các chủ đề. Nó giống như đánh dấu sự thành thạo trên bảng ký tự - bạn đang tạo sẵn cho mình nhiều cơ chế hơn để xử lý một tình huống nhất định. Đúng, họ có thể lên cấp, nhưng có một hoặc hai điểm trong số nhiều thứ bạn có thể có trên bảng có nghĩa là khi đến lúc sử dụng một, bạn sẽ không bắt đầu từ đầu, và bạn biết chiến thuật nào có sẵn để bạn mở rộng quy mô
Vì vậy, nhìn.
Đầu tiên bạn muốn cắt răng của bạn. Điều này cũng hữu ích khi bạn đang học cách nhắm mục tiêu một nền tảng mới hoặc khi bạn đang hồi phục chứng mất trí nhớ. Đây là có nghĩa là nhanh chóng, không tuyệt vời.
Theo thứ tự:
Khi bạn đã hạ được chúng, bạn đã sẵn sàng nhắm mục tiêu vào một nền tảng và việc học có thể bắt đầu.
Đây là những không theo thứ tự đặc biệt. Bạn có thể sắp xếp lại chúng khi bạn thấy phù hợp. Tôi sẽ đưa ra một số ví dụ với mỗi ví dụ, nhưng chúng không quy tắc; nếu một trò chơi khác mang lại cho bạn trải nghiệm giống nhau và đủ nhỏ để trở thành một phần của chuỗi bài học, hãy thoải mái trao đổi nó. Vì lý do thực tế, thật tốt khi thành thạo hiển thị màn hình và nhập liệu tương đối nhanh; bạn sẽ sử dụng chúng rất nhiều Đợi một vài trò chơi trước khi cố gắng viết các lớp trừu tượng; bạn không muốn bị cuốn vào một sự trừu tượng ngây thơ.
... Hở. Tôi đã chán.
Tetris
Trò chơi rất phổ biến, rất nhiều bản sao mã nguồn mở ngoài kia để tách ra nếu bạn gặp khó khăn. Dạy những điều cơ bản về đồ họa 2D, xử lý đầu vào, ghi điểm, v.v.
Sau đó lấy ý tưởng ban đầu này và đưa nó vào một spin. Tôi đã học được những điều cơ bản về đồ họa 3D / opengl bằng cách viết một phiên bản 3D của Tetris cho lớp đồ họa máy tính của tôi ở trường đại học.
GameDev.net có một bài viết hay khuyến nghị sự phát triển của các trò chơi để dần dần tìm hiểu về phát triển trò chơi. Lời khuyên yêu thích của tôi từ danh sách là thực sự đánh bóng những trò chơi này. Hoàn thành kết thúc, đến một trạng thái đáng tin cậy.
Danh sách này như sau (một số trong số này đã được đưa ra trong các câu trả lời khác):
Tôi thích bắt đầu tất cả các chàng trai của tôi với Monopoly. Tôi thường sử dụng "mã kata" độc quyền của Brett Schuchert làm cơ sở của bài tập, nhưng tôi thêm rất nhiều vào nó. Có một số lý do tại sao tôi thực sự thích làm điều này.
Tôi quan tâm sâu sắc về các thực hành mã hóa tốt (các mẫu thiết kế, TDD, RẮN, tích hợp liên tục, v.v.) và đặt ra nhiều ràng buộc cho các nhà phát triển của tôi khi họ thực hiện bài tập này.
Khá nhiều người biết các quy tắc của Monopoly và toàn bộ trò chơi có thể được hoàn thành trong một ngày. Điều này mang lại cho các nhà phát triển mới một chiến thắng nhanh chóng và thực sự có được sự tham gia của họ.
Các yêu cầu ban đầu bắt đầu với các điều khiển bàn phím, nhưng sau đó tôi thêm một yêu cầu cho điều khiển chuột sau này. Điều này khiến các nhà phát triển suy nghĩ về một số điều, làm thế nào để cấu trúc lại mã hiện có, lập trình thay đổi các phần của hệ thống thành các giao diện thay vì các lớp cụ thể, trừu tượng hóa tốt hơn / phù hợp hơn, kiểm tra đơn vị nào, không kiểm tra đơn vị, TẠI SAO để kiểm tra đơn vị và những gì làm cho các bài kiểm tra đơn vị TỐT.
Đôi khi chúng ta cắm vào AI tinh vi hơn, đôi khi chúng ta không. Đôi khi chúng tôi làm việc với các trò chơi khác với logic phức tạp hơn một chút như Chutes và Thang hoặc một cái gì đó. Đôi khi chúng tôi tách ra khỏi các trò chơi cờ hoàn toàn, và làm một trò chơi poker hoặc blackjack.
Đối với tôi, phần thực sự quan trọng là mọi người có được chiến thắng nhanh chóng và họ thấy bạn có thể tạo ra phần mềm linh hoạt như thế nào khi bạn tuân theo các tiêu chuẩn lập trình tốt. Những bài tập xây dựng sự tự tin rất nhanh. Đôi khi, các nhà phát triển có kinh nghiệm hơn muốn tự mình thực hiện những điều này, chỉ để nghỉ ngơi từ các dự án phức tạp hơn hoặc thực hành một kỹ thuật mới mà họ vừa học (luật của demeter?).
Chọn-Phiêu lưu của bạn
Nhận được lời khuyên này từ một người bạn đã bắt đầu lập trình bằng cách tạo ra một trò chơi, gần giống với việc chọn một cuốn sách phiêu lưu của bạn . Về cơ bản, đây là một game phiêu lưu văn bản đơn giản với đầu ra như thế này:
You are standing in a forest clearing in the middle of the night. You hear
some wolves howl in the distance. Should you:
a) make camp for the night
b) go further north
> _
Làm một trò chơi như vậy sẽ dạy bạn tạo ra một gameloop, đầu vào giao diện điều khiển cơ bản và kịch bản cơ bản. Nó khá đơn giản để thực hiện và dễ dàng cho người mới bắt đầu nhảy vào vì bạn không cần một công cụ đồ họa để viết trò chơi. Những người mới bắt đầu có thể sẽ viết một công cụ viết kịch bản.
Theo kinh nghiệm của tôi với các lập trình viên mới làm quen, sự tiến bộ thường dường như diễn ra như thế này:
Đột phá, Pông hoặc tiểu hành tinh.
Có một sự khác biệt rất lớn giữa một trò chơi và một nguyên mẫu trò chơi . Nếu bạn nghiêm túc về việc hoàn thành trò chơi mơ ước của mình, thì bạn nên hoàn thành trò chơi "cấp nhập cảnh" của mình trên đường đi. Tạo phần chơi trò chơi chỉ là một nửa trận chiến. Tất cả những thứ bổ sung như thực đơn và điểm số cao thường bị bỏ qua hoặc bỏ qua, nhưng chúng chiếm nhiều thời gian hơn bất kỳ ai mong đợi.
Có một số gợi ý tốt trong các câu trả lời khác, nhưng tôi chỉ muốn bỏ phiếu cho: Bắt đầu với một cái gì đó có vẻ quá - trừng phạt để giải quyết.
Pông là một ví dụ tốt.
Mục tiêu là: làm cho thiết kế trò chơi và thiết lập quy tắc trở nên cực kỳ hấp dẫn để bạn có thể tập trung toàn bộ sự chú ý vào việc học điều mới mà bạn đang học (ngôn ngữ, nền tảng, API) và không phải liên tục nghỉ giải lao để tìm ra cách trò chơi hoạt động.
Khi bạn bắt đầu đi, bạn sẽ thấy rằng pong thực sự phức tạp hơn một chút so với lúc đầu. (Tôi đang dạy một chàng trai lập trình và anh ta sử dụng pong làm dự án học tập của mình. Chúng tôi đã thêm một số tính năng, và giờ anh ta bị phân tâm khỏi việc học lập trình bằng cách học cách làm tất cả các tính năng thú vị này :)
Khi bạn đã hoàn thành ứng dụng # 1 cho đến khi nó sẵn sàng cung cấp / bán cho người khác, THÌ hãy thực hiện một điều gì đó phức tạp hơn một chút (Tetris, phiêu lưu hoặc bất cứ điều gì bạn thích), nhưng, để bắt đầu học một công nghệ mới, hãy thực hiện điều mà bạn lập trình não chết đơn giản.
Những ví dụ khác:
Nhưng, một lần nữa - bắt đầu với một cái gì đó quá dễ dàng, để bạn thực sự có thể hoàn thành một cái gì đó và nhìn lại và xem những gì liên quan. Sự khác biệt giữa việc viết MỘT ứng dụng bằng ngôn ngữ / nền tảng / SDK / công cụ và có ứng dụng ZERO bằng văn bản là LỚN . Sự khác biệt giữa 1 & 2, hoặc 2 & 5, ít hơn nhiều, vì vậy bạn có thể thực hiện các bước lớn hơn, nhưng làm cho bước 0 đến 1 trở thành một bước nhỏ xíu; nó sẽ lớn hơn bạn nghĩ!
Flappy Bird
tương tự. Là một lập trình viên chuyên nghiệp, đó là một công việc buổi chiều (tốt, một ngày cuối tuần để làm cho nó "tốt đẹp"), nhưng, trong khi dạy một người khác để lập trình, chúng tôi đã học được rằng nó thực sự có rất nhiều phức tạp. Một lần nữa, một trải nghiệm là nhiều hơn nhiều so với số không và, khi bạn có một, bạn sẽ có một ý tưởng tốt hơn nhiều về cách tiến về phía trước.
Kiểm tra trang web này: 12 ý tưởng dự án trò chơi khoa học máy tính
Một số trò chơi này bao gồm những gì người khác đã nói như:
Nhưng nó cũng nói về một số trò chơi khác mà bạn có thể thử làm như:
Ngoài ra, nó mang lại cảm giác về những gì bạn nên thử làm trước vì nó mang lại cảm giác khó khăn cho mỗi trò chơi (và do đó là kế hoạch về cách bạn nên giải quyết các trò chơi):
Rất nhiều người bắt đầu với Breakout vì tính năng này:
Phần khó nhất khi viết một trò chơi - hoặc bất kỳ phần mềm nào - là tìm ra những việc cần làm. Bạn hoàn toàn cần một thông số kỹ thuật! Đó là phần thú vị về việc tạo một bản sao của một trò chơi hiện có: thông số kỹ thuật đã tồn tại. Thông số kỹ thuật của bạn là "Sản phẩm phải làm mọi thứ mà Sản phẩm khác làm" và nếu bạn có một bản sao của trò chơi khác, thì thật dễ dàng để xác minh điều đó.
Một khi bạn đã tìm ra những gì bạn cần làm, tìm ra cách để làm điều đó thực sự không khó nếu bạn là một lập trình viên có năng lực. Tôi không có nghĩa là một lập trình viên lành nghề hoặc có kinh nghiệm; điều đó có nghĩa là bạn đã biết cách thực hiện hầu hết những gì bạn đang cố gắng làm. Nhưng bạn cần hiểu cách suy nghĩ trừu tượng và có kỹ năng giải quyết vấn đề và tư duy logic là nền tảng cho lập trình. Nếu bạn có thể làm điều đó, thì bạn có thể làm bất cứ điều gì.
Phải nói rằng, tôi không đồng ý với những gì hầu hết mọi người nói về việc cố gắng học viết trò chơi bằng cách viết một cái gì đó thực sự đơn giản. Phần thưởng tỷ lệ thuận với công sức bạn bỏ ra. Nếu bạn học viết trò chơi bằng cách viết một trò chơi thực sự đơn giản, cuối cùng bạn sẽ biết cách viết những trò chơi thực sự đơn giản và điều đó sẽ không giúp bạn nhiều.
Mặt khác, nếu bạn bắt đầu với một cái gì đó quá sức, bạn sẽ không bao giờ hoàn thành nó. Vì vậy, hãy bắt đầu với một cái gì đó thử thách vừa phải sẽ khiến bạn đối phó với các vấn đề nghiêm trọng. Xây dựng một game nhập vai theo phong cách console 2D hoặc platformer cuộn bên là những cách rất tốt để tìm hiểu các khái niệm lập trình trò chơi thực sự.
Nó thực sự phụ thuộc vào năng lực hiện tại của bạn là gì. Nếu bạn tương đối mới với lập trình, thì hãy đến với một trong những trò chơi cụ thể mà mọi người đã đề xuất. Mặt khác, bạn nên nghĩ về loại trò chơi nào sẽ cho phép bạn sử dụng tốt trải nghiệm của mình.
Khi tôi bắt đầu trò chơi đầu tiên của mình, tôi không có kinh nghiệm phát triển trò chơi, nhưng tôi đã thực hiện phát triển ứng dụng doanh nghiệp / ngành kinh doanh trong một vài năm. Dự án trò chơi đầu tiên của tôi là một trò chơi chiến lược theo lượt, và về mặt kiến trúc, nó không giống với ứng dụng doanh nghiệp. Nó đã sử dụng một hệ thống máy khách / máy chủ và giao tiếp đã xảy ra thông qua kênh dịch vụ WCF song công. Hầu hết các hoạt động của người chơi được xếp hàng dưới dạng "đơn đặt hàng" và được gửi đến máy chủ vào cuối lượt. Tất cả quá trình xử lý lần lượt diễn ra trên máy chủ, sau đó các bản cập nhật vũ trụ trò chơi được gửi đến từng khách hàng.
Dự án đầu tiên đó đã cho tôi bước vào phát triển trò chơi trong khi bắt đầu cho tôi ra khỏi lãnh thổ quen thuộc. Khi dự án phát triển, tôi học cách suy nghĩ giống một nhà phát triển trò chơi hơn và không giống như một nhà phát triển ứng dụng doanh nghiệp. Kết quả cuối cùng hoạt động khá tốt, và nó ấn tượng hơn một chút so với Battleship hoặc Tic-Tac-Toe :).
AI, Đồ họa, Trò chơi, Điều khiển tương đối đơn giản và chúng không phải có hiệu ứng âm thanh hoặc âm nhạc trừ khi bạn muốn thêm nó vào. Tôi bắt đầu với hai thứ này khi học cách lập trình trong QBasic cho MS-DOS và tôi nghĩ chúng là những trò chơi đầu tiên tuyệt vời. Pac-Man sẽ là lựa chọn khác của tôi.
Các trò chơi theo phong cách Moonlander rất tuyệt vời (nơi bạn có một tên lửa bị ảnh hưởng bởi trọng lực, người chơi điều khiển hướng và lực đẩy, nhiên liệu hạn chế khi sử dụng lực đẩy). Có được kinh nghiệm thực hiện vật lý rất đơn giản và hệ thống va chạm có thể khá nguyên thủy. Không có AI phải lo lắng và quan trọng nhất là nó thú vị và gây nghiện :)
Một cái gì đó giống như Gauntlet, bởi vì bạn cần một hệ thống thực thể, AI của kẻ thù, xe bán tải, bản đồ xếp hình, phát hiện va chạm, ghi bàn, v.v ... Đó là tất cả, nhưng không phải là một cách quá sức.
Tôi đã thực hiện nhiều hơn một vài bản sao Tetris. Mỗi lần tôi làm điều đó tôi làm nó hơi khác một chút. Ngày nay, tôi thường làm cho một số loại tiểu hành tinh nhân bản mặc dù. Tôi cũng đã thực hiện nhiều hơn một vài spinoff Lệnh Tên lửa.
Tôi đã bắt đầu với trò chơi cơ bản và hơn là chuyển sang thêm nhiều thứ, tăng sức mạnh, v.v. vào nó.
Tôi luôn luôn bắt đầu với trò chơi Tanks / Gorillas / Worms. Nó giúp bạn tập thể dục trong màn hình đồ họa đơn giản và đọc thông tin người dùng, cộng với vòng lặp trò chơi áp dụng lực hấp dẫn vào đường đạn và thử nghiệm để phát hiện va chạm.
Sau đó sẽ xuất hiện một trò chơi như một platformer rất đơn giản hoặc bắn súng trong đó bạn cần đọc thông tin người dùng trong thời gian thực, thay vì các câu lệnh INPUT hoạt động cho Gorillas :)
Solitaire (hoặc thực sự là bất kỳ trò chơi bài nào) là một trò chơi hay để làm bẩn tay bạn với hệ thống UI mới, vì nó thực hiện rất nhiều widget và cơ chế phản hồi tương tác của bộ điều khiển bạn cần sử dụng. Cộng với logic cho nó là đơn giản và không mơ hồ, vì vậy bạn có thể tập trung vào việc học và không quá nhiều thiết kế trò chơi.
Đối với các trò chơi mô phỏng thời gian thực, tôi luôn khuyên dùng Pong như một điểm khởi đầu đơn giản tốt, một lần nữa bởi vì thiết kế đơn giản, cũng như giao diện của bộ điều khiển, do đó bạn có thể tìm hiểu kỹ về hệ thống - mô phỏng vật lý.
Tôi đã luôn khẳng định rằng nếu bạn là một lập trình viên trò chơi, bạn sẽ có thể tạo ra một số dạng Kẻ xâm lược không gian . Heck, trò chơi đủ đơn giản để bạn có thể tự làm đồ họa.
Có một lựa chọn các trò chơi nhỏ trong danh mục đầu tư của bạn vì lợi ích bổ sung của nó khá hữu ích, ví dụ, nếu tôi đang học một ngôn ngữ hoặc khung lập trình mới, tôi sẽ thường xuyên chuyển một trong những trò chơi đơn giản của mình để xem cách thức mới làm những điều phù hợp với cách viết ban đầu.
Nó thực sự phụ thuộc vào những kỹ năng như một lập trình viên thông thường mà bạn đã có. Toán học của bạn có cần làm việc không? Kiến thức đồ họa của bạn? Bạn có cả hai dưới kết thúc tốt đẹp?
Mặc dù nói chung tôi nghĩ Tetris và Breakout cũng là hai người khởi đầu của tôi. Bất cứ điều gì dễ dàng hơn mà không cung cấp đủ kích thích. Tetris là một bài kiểm tra tốt trong cách bố trí dữ liệu của bạn một thuật toán, đột phá là một ví dụ toán học nhẹ. Tôi luôn nói với mọi người là nhắm cao, mục tiêu là bị mắc kẹt và đưa ra giải pháp.
Sau đó, bầu trời là giới hạn. Một lần nữa, nhắm cao. Hãy thử một platformer với địa hình dốc, parralax và bạn đã có một túi công nghệ 2d tiện dụng. Thêm một pinball (chuẩn bị để được nản lòng) và toán học của bạn sẽ cải thiện.
Từ đó đi đến chiều thứ ba, học các kỹ năng cốt lõi (hoạt hình, kết xuất) và bạn nên được trang bị tương đối tốt để đối phó với nhiều trò chơi hay.
Trò chơi đầu tiên của tôi là một thứ gì đó giống như Super Mario.
Di chuyển xung quanh, tránh chướng ngại vật, nhảy. Và tất cả những nhiệm vụ đó có thể dễ dàng được thực hiện mà không cần bất kỳ tính toán vật lý nào.
Thật lý tưởng để thực hiện một điều 2D đơn giản, vì bạn sẽ không phụ thuộc nhiều vào một triển khai / khung / công cụ cụ thể.