Lập trình game và phân tích game

Bài viết được dịch từ blog Coding Horror

Đối với nhiều lập trình viên, cơ duyên mà chúng ta bước vào thế giới lập trình là do bố của chúng ta bắt chúng ta phải tự viết các trò game cho riêng mình. Đáng lẽ tôi đã có một cái game console Atari 2600 mới cứng, nhưng bố tôi lại mua cho một cái máy tính Texas Instruments TI-99/4a. Dĩ nhiên đó không chính xác là thứ mà tôi nghĩ trong đầu tại thời điểm đó, nhưng quyết định mang tính định mệnh đó đã làm bệ phóng cho một sự nghiệp lập trình của tôi kéo dài đến nay là đã 30 năm.

Tôi cần phải có những tố chất gì để trở thành một lập trình viên phát triển Games?Tôi cần phải có những tố chất gì để trở thành một lập trình viên phát triển Games?

Rõ ràng là tôi không đơn độc. Mike Lee cũng có cùng kinh nghiệm:

Tôi sinh năm 1976, cùng năm mà hãng Apple được thành lập, vì vậy bố tôi lúc đó cũng vừa bước vào cái tuổi bị cuốn vào những ngày đầu của phong trào tự làm lấy nhiều thứ. Một trong những ký ức ít ỏi của tôi về thời thơ ấu là cảnh bố tôi về nhà và mang theo một bộ máy Sinclair 2000 cùng một cuốn sách dạy lập trình games. Ông ngồi xuống trong nhiều giờ liền để gõ code được in trong cuốn sách về trò chơi Space Invaders, và khi hoàn thành thì chúng tôi đã chơi trò đó khoảng 30 phút trước khi tắt máy và bị mất hết những dòng code mà bố tôi đã gõ.

Cũng như Shawn Oster đã chia sẻ:

Tôi đã lập trình phần mềm tính cho đến nay là được 25 năm, từ khi tôi mới 8 tuổi, lúc đó tôi bắt đầu với một cuốn sách có tên là “Chương trình BASIC đầu tiên của bạn” mà bố tôi đã mua cho tôi, bởi vì lúc đó nhà tôi có một chiếc máy tính PC trong khi tất cả lũ bạn của tôi thì đều đang chơi trò StarBlazers trên những chiếc máy Apple II của chúng. Ông nói rằng nếu tôi muốn chơi game thì tôi có thể tự viết lấy một trò mà chơi. Tại thời điểm đó thì tôi đã có một chút thất vọng (OK, và cả bực bội nữa chứ) nhưng bây giờ… thì vâng, tôi phải cảm ơn bố tôi rất nhiều.

Đó là lý do tại sao sẽ rất hấp dẫn khi hồi tưởng lại những trò chơi máy tính ở thời kỳ sơ khai. Ngành công nghiệp máy tính cá nhân đã lớn lên cùng với chúng tôi. Chúng tôi đã học cách làm thế nào để lập trình bằng cách gõ lại những chương trình game đơn giản từ những tờ tạp chí và các cuốn sách. Nếu quan sát kỹ hơn, và bạn sẽ nhận thấy rằng những trò game cũ đó là nguồn gốc khởi thủy của hầu hết các lập trình viên, chúng đã ăn sâu vào tiềm thức chúng ta suốt cuộc đời.

Thậm chí nói một cách khiêm tốn, trò chơi hết sức đơn giản như Minesweeper (Dò mìn) đã gợi cho ta quay trở lại những ngày đầu của bìa đục lỗ:

Minesweeper (Trò chơi dò mìn) là khởi thủy trong các trò chơi ở các máy tính cỡ lớn (mainframe) vào những năm ’60s và ’70s của thế kỷ trước. Wikipedia đã trích dẫn rằng ông tổ sớm nhất của trò Minesweeper là trò chơi Cube của David Ahl. Nhưng dẫu cho các đặc trưng “bãi mìn” của trò Cube, thì nó cũng khó để được xem là người tiền nhiệm của trò Minesweeper. Trong trò Cube, các quả mìn được đặt một cách ngẫu nhiên và chỉ có một cách duy nhất để khám phá ra chúng nằm ở đâu đó là bạn phải kết thúc trò chơi đó. Bạn bước qua bãi mìn và bạn chết; bạn không thể tránh được các bãi mìn hoặc có một cơ hội để biết được chúng nằm ở đâu.

Game dò mìn kinh điển

Tuy nhiên, có một số lượng các trò game dạng “trốn tìm” từ rất sớm về tìm kiếm những đồ vật bị giấu kín trên một lưới. Ví dụ, trong trò chơi Hurkle của Bob Albrecht, bạn phải tìm thấy một đồ vật đang bị giấu trên một lưới có kích thước 10×10. Sau mỗi lần đoán, bạn sẽ tìm thấy hướng đi đúng trong những chỉ dẫn lừa của Hurkle. Trò game Depth Charge của Dana Noftle thì cũng giống như vậy, nhưng điểm khác là ở tính 3 chiều của nó. Trong trò game Mugwump của tác giả Bud Valenti có nhiều mục tiêu đã bị ẩn đi, và sau mỗi lần đoán thì bạn sẽ tiến đến gần hơn tới chúng. Không giống như trò Cube, những trò game này đều có cùng một khuôn mẫu chung của trò chơi Dò mìn (Minesweeper) đó là: bắt đầu bằng một phỏng đoán ngẫu nhiên, sau đó sử dụng thông tin được cung cấp bởi lần đoán đầu tiên đó để phát hiện ra những đồ vật đang bị giấu. Dĩ nhiên, không giống như trò Minesweeper (hoặc Cube), không có mối nguy hiểm nào kiểu như sẽ “nổ banh xác” bạn cả, ràng buộc duy nhất đó là bạn phải tìm ra những vị trí bí mật trong một số lượng lần đoán nhất định.

Ông tổ gần nhất của trò Minesweeper thì có thể là trò Hunt the Wumpus của tác giả Gregory Yob.

Game Hunt The WumpusMặc dù nó đã sử dụng một lưới không theo kiểu truyền thống (trò game ban đầu đó đã sử dụng các đường dọc của một khối 12 mặt, và phiên bản sau đó đã sử dụng nhiều dải Mbius và những mẫu khác), trò chơi Wumpus đã tiến hóa từ những ông tổ của nó theo nhiều cách khác nhau.

Tôi đã từng có ý định kết hợp giữa hai trò chơi là Minesweeper và Hunt the Wumpus, từ khi trò Wumpus là game yêu thích của tôi.

Phần lớn những trò game ở thời kỳ đầu thường không phải là vui lắm. Việc phân tích chương trình của các trò game hầu như cũng vui không kém việc bạn đang chơi nó vậy; việc gõ mã nguồn của nó vào và hiểu được chương trình “game” thì cũng là quá đủ cho nhiều người trong số chúng ta rồi. Nhưng một số game của thời kỳ đầu đó đã tiến hóa và sống sót cho mãi đến tận ngày nay; như là trò Dò mìn (Minesweeper) chẳng hạn– và nó đã trở nên ăn sâu vào trong tiềm thức của công chúng đến nỗi hiện tại nó là chủ đề của một số video nhại lại rất vui nhộn. Mặc dù tính đơn giản và (phổ biến) của trò chơi Dò mìn (Minesweeper), nó cũng là một game có chiều sâu logic đáng ngạc nhiên, như trong một trang trên Wikipedia đã ghi lại những phân tích như sau:

Minesweeper vẫn còn phổ biến với các lập trình viên cho tới tận ngày nay; ví dụ trò Automine là một chương trình được viết bằng Java để tự động chơi trò Minesweeper bằng cách đọc màn hình và thao tác với con chuột.

Bài viết về Minesweeper là một phần trong loạt bài gây sửng sốt của tác giả Beyond Tetris trên tạp chí GameSetWatch, trong đó có nhiều game giải ô chữ kinh điển đã nghiên cứu những điểm thuận lợi từ một nhà thiết kế và lập trình game. Tôi đề xuất bạn nên đọc nó. Nhưng mà kèm theo một lời cảnh báo là: đừng click qua đó trừ khi bạn có rất nhiều thời gian ở trong tay. Đối với một lập trình viên thì việc phân tích các trò game cũng mang lại nhiều niềm vui tương đương như là khi bạn chơi chúng vậy.

Các bài viết liên quan:

Về tác giả bài viết:

Jeff_atwood_coding_horrorJeff Atwood là một chuyên gia công nghệ tại Mỹ, hiện đang sinh sống và làm việc tại Berkeley, CA. Anh là một kỹ sư phần mềm chuyên về công nghệ Microsoft .NET, và là một blogger nổi tiếng trong cộng đồng công nghệ với blog Coding Horror, anh là người sáng lập và kiêm Giám đốc điều hành (CEO) của trang web hỏi đáp uy tín Stack Overflow và cũng là đồng sáng lập của Stack ExchangeDiscourse.

Advertisements

5 comments on “Lập trình game và phân tích game

  1. Một thuở đam mê. Sau 4 năm làm lập trình viên, tôi nhận ra rằng niềm đam mê mãnh liệt với game đã kéo tôi quay trở về thế giới đầy màu sắc và trí tưởng tượng. Quay lại thực tế và nhận ra một điều rằng thị trường game Việt Nam hiện nay chưa có nổi một tựa game nào có thể làm tôi hài lòng trong một khoảng thời gian dài quá 1 tháng, trong khi đó, nỗi đau hiện lên rõ mồn một khi phần lớn đều là game rác đến từ Trung Quốc, được nhập về vô tội vạ, giết chết game Việt và lòng yêu game của game thủ Việt. Đó là lúc tôi quyết định phải hành động. Trải nghiệm các tựa game đình đám ở nước ngoài là một cơ hội để tôi nhận ra rằng, không nhất thiết phải rập khuôn đưa toàn bộ cốt truyện lịch sử vào game thì mới được công nhận là game Việt. Chỉ cần suy nghĩ đơn giản rằng game Việt là game được tạo dựng, sáng tạo bởi người Việt, và làm thoả lòng game thủ, nhiêu đó là đủ. Nếu các bạn cũng có cùng suy nghĩ với tôi, muốn cùng tôi thực hiện ước mơ game Việt, xin vui lòng liên hệ qua email tranquanganh.website@gmail.com. Tôi tên Quang Anh, 25 tuổi, hiện đang làm cho một công ty phần mềm và có niềm đam mê mãnh liệt với lập trình game. Mong muốn tạo dựng một tựa game Việt được yêu thích không những chỉ ở Việt Nam mà còn trên toàn thế giới. Xin cảm ơn các bạn đã dành thời gian xem comment dài dòng này của tôi. Dù bạn bao nhiêu tuổi, chưa bao giờ là quá trễ để theo đuổi niềm đam mê.

Trả lời

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Đăng xuất / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Đăng xuất / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Đăng xuất / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Đăng xuất / Thay đổi )

Connecting to %s