Học lập trình game cơ bản đến nâng cao

Vào đầu những năm 2000, ba lập trình viên trẻ với nguồn kinh tế eo hẹp đã tập trung tại một tầng hầm và bắt đầu lập trình ra thứ mà sau này trở thành một trong những phần mềm được ứng dụng rộng rãi nhất trong ngành công nghiệp video game. "Không ai thực sự nhớ được chúng tôi đã làm thế nào để trải qua quãng thời gian khó khăn ấy ngoại trừ có lẽ chúng tôi đã phải tiết kiệm trong ăn uống", David Helgason, Giám đốc điều hành và đồng sáng lập của Unity Technologies, hãng sản xuất game engine Unity3D nói.

David Helgason (CEO), Nicholas Francis (CCO), and Joachim Ante (CTO)
David Helgason (CEO), Nicholas Francis (CCO), and Joachim Ante (CTO)

Một thập kỷ sau, rất nhiều nhà phát triển đã sử dụng Unity3D để làm hàng ngàn game dành cho thiết bị di động, thiết bị chơi game cầm tay, trình duyệt web, máy tính cá nhân, máy tính Mac, thậm chí cả Linux. Sự tồn tại của Unity3D và các sản phẩm tương tự (như Unreal Engine và CryEngine) giúp phổ cập việc phát triển trò chơi, khiến các loại công cụ được sử dụng bởi các công ty game lớn nhất thế giới dành cho các nhà phát triển có giá rẻ hoặc miễn phí. Điều này đã giúp các nhà phát triển tập trung ít hơn vào việc tạo ra nền tảng công nghệ của một trò chơi và dành nhiều thời gian hơn vào quá trình sáng tạo nghệ thuật và đã thực sự khiến các trò chơi trở nên thú vị hơn nhiều. Helgason giải thích rằng một game engine là "một công cụ được sử dụng để xây dựng trò chơi và đó là công nghệ thực thi đồ họa, âm thanh, vật lý, các tương tác, các kết nối mạng. Tất cả mọi thứ bạn nhìn thấy và nghe thấy trên màn hình đều được cung cấp bởi mã này và đã trải qua siêu tối ưu vì nó di chuyển dữ liệu rất nhiều và tạo ra rất nhiều điểm ảnh trên màn hình." Tại thời điểm đó, ông nói thêm, mỗi công ty game trên thế giới đều có công nghệ độc quyền, thứ rất có ý nghĩa trong một thế giới nhiều hạn chế nơi mà bộ nhớ thiết bị thấp so với tiêu chuẩn ngày nay. Các game engine, trong trạng thái tự nhiên của chúng, còn nhỏ hơn khung tối thiểu của một trò chơi cụ thể. Nhưng mọi thứ cuối cùng cũng thay đổi. "Khi các nền tảng trở nên phức tạp hơn, yêu cầu công nghệ đối với làm game trở nên phức tạp hơn", ông nói. "Tại một số điểm bạn cần đổ bóng khác nhau cùng với các hiệu ứng đặc biệt như khói và các hạt, các tác động vật lý..., chúng đều cần phải trông thực tế." Thay vì yêu cầu các phần mềm riêng biệt cho từng khía cạnh phát triển lớn như hình ảnh động, vật lý, dựng hình, trí thông minh nhân tạo, âm thanh, và nhiều thứ tương tự, các công cụ như Unity3D cung cấp cho các nhà phát triển tất cả mọi thứ họ cần để xây dựng trò chơi trong một gói phần mềm. Phiên bản Unity3D Pro có giá 1.500 đô la, phiên bản miễn phí có chức năng ít hơn, nhưng người dùng vẫn hoàn toàn có thể sử dụng để xây dựng và bán các trò chơi.

Giao diện Unity3D vào năm 2005
Giao diện Unity3D vào năm 2005

“We Were Just Hackers and We Just Liked Our Macs”

Một thập kỷ trước, khi Helgason gia nhập với các đồng nghiệp Joachim Ante và Nicholas Francis ở Đan Mạch để làm việc trong các dự án của họ, họ muốn làm một cái gì đó trong phần hình ảnh của Apple Final Cut Pro. Final Cut cung cấp cho các nhà làm phim nghiệp dư cái giá hợp lý cho một công cụ làm phim chuyên nghiệp; Unity sẽ làm tương tự cho các nhà phát triển game. Nhưng bộ ba thiếu một kế hoạch kinh doanh vững chắc. "Điều vô lý và kỳ lạ là nền tảng đầu tiên và duy nhất chúng tôi hỗ trợ trong những tháng đầu tiên là Mac", Helgason, người hiện đang có trụ sở tại San Francisco cho biết. Điều này xảy ra trước sự trỗi dậy của Mac, và vị trí của Mac trong các ngành công nghiệp game (đặc biệt là so với Windows) thậm chí còn kém quan trọng hơn so với ngày nay. "Đó là sự lựa chọn tồi tệ nhất mà chúng tôi có thể thực hiện theo góc độ kinh doanh, nhưng chúng tôi chỉ là tin tặc và chúng chỉ thích hệ điều hành Mac của chúng tôi", ông nói. "Chúng tôi đã không nghĩ đến những suy nghĩ lớn từ góc độ doanh nghiệp. Cả ba sống dựa vào các khoản vay, các dự án tư vấn thường xuyên, và một số việc làm phi kỹ thuật. "Tôi đã làm một số công việc cafe vào buổi tối, chủ yếu là cho các thực phẩm miễn phí bởi vì nó không phải tốn kém nhiều," Helgason nói. "Chúng tôi đều tham gia vào việc này, không có bất kỳ dự án nào khác ngoài cái chúng tôi đang làm."
Một phiên bản đơn giản của Unity đã được phát hành vào năm 2005. Đội đã thêm hỗ trợ cho máy tính Windows và các trình duyệt Web. Đến năm 2008, engine đã trở nên phức tạp hơn và doanh số bán phần mềm đã chi trả được cho các hóa đơn, cho phép đội phát triển Unity mở rộng đến hàng chục nhân viên.
Đội phát triển Unity3D năm 2005
Đội phát triển Unity3D năm 2005
Một bước ngoặt đã đến vào giữa năm 2008 khi Apple công bố iPhone App Store. "Chúng tôi đã gấp rút xử lý để hỗ trợ iPhone và trở thành game engine đầu tiên làm được điều đó vào cuối năm 2008", Helgason nói. "Nó xảy ra thực sự nhanh chóng. Đột nhiên, có rất nhiều người muốn có Unity." Một bước tiến lớn nữa đã đến vào năm 2008 là khi Cartoon Network sử dụng Unity3D để tạo ra FusionFall, một MMORPG cho trẻ em đã có được 8 triệu người chơi. Electronic Arts sử dụng Unity3D trong năm 2009 để làm Tiger Woods PGA Tour Online, và thậm chí cả Microsoft và Ubisoft đã trở thành khách hàng của Unity3D. Trong năm 2011, Unity đã mua một công ty hoạt hình có tên Mecanim, thúc đẩy công nghệ cơ bản của game engine.
Ngày nay, Unity và 285 nhân viên của mình trên khắp thế giới hỗ trợ cho phát triển iOS, Android, Windows, Mac, Linux, trình duyệt Web, PS3, Xbox 360, Wii U, Sony PlayStation Vita, Windows Phone, BlackBerry. Trên 1,8 triệu nhà phát triển sử dụng Unity; Plugin trình duyệt của phần mềm đã được cài đặt hơn 200 triệu lần. Dead Trigger và Dead trigger 2, một trong những trò chơi đồ họa phức tạp nhất cho iOS và Android, được dựa trên Unity3D. Mặc dù những tên tuổi lớn sử dụng Unity3D, các nhà phát triển nhỏ hơn lại làm cho Helgason đặc biệt tự hào. "Các công ty lớn luôn luôn có thể làm cho trò chơi, họ sẽ tìm ra và mua công nghệ hoặc tự xây dựng nó", ông nói thêm: "Cái chúng ta tạo ra đã khiến rất nhiều người có thể xây dựng game trên các công cụ như nhưng tên tuổi lớn."

Xây dựng game với Unity3D

Unity Editor cung cấp môi trường kéo và thả để tạo trò chơi. Helgason cho biết có thể tạo ra một trò chơi trong Unity mà không cần viết bất kỳ dòng code nào, nhưng hầu hết các dự án đòi hỏi kèm theo lập trình. Người sử dụng Unity có thể lập trình trong C#, JavaScript, hoặc Boo, trong đó sử dụng một cú pháp giống như Python. Môi trường phát triển chạy trên Mono, một phiên bản mã nguồn mở của .NET Framework. Bản thân Unity được viết bằng C++. "Mã phải chạy siêu nhanh như các hiệu ứng vật lý và hình ảnh động, tất cả đó là C++", Helgason bổ sung. "Nhưng các mã nên dễ viết một chút, bạn có thể viết với .NET". nXile Entertainment đã sử dụng Unity để xây dựng Wasteland 2, một game nhập vai hậu tận thế để đánh vào thị trường PC, Mac, và Linux trong mùa thu năm 2013, đó là kết quả của một cuộc gây quỹ Kickstarter mà kéo vào gần 3 triệu USD. inXile cũng sử dụng Unity để xây dựng Torment: Tides của Numenera, là thành quả của một Kickstarter 4 triệu đô la. Unity3D là một "hệ thống đối tượng trò chơi dựa trên thành phần", giám đốc kỹ thuật inXile John Alvarado nói. "Mỗi đối tượng trò chơi, bạn có thể đính kèm các kịch bản. Bạn viết kịch bản của bạn và lấy chúng từ một lớp và mô hình hành vi nhất định, nó tự động xử lý khi bạn kéo các kịch bản vào một đối tượng trò chơi mà bạn tạo ra trong trình soạn thảo, nó sẽ chạy script của bạn. Thực sự dễ dàng để thêm các thành phần mã vào bất kỳ đối tượng nào mà bạn tạo ra trong trò chơi, cho dù đó là một hộp, bạn chỉ cần thực hiện hoặc một nhân vật hoạt hình. Đó là một cách hướng đối tượng rất modular thêm chức năng cho một đối tượng trong các trò chơi. inXile trước đây sử dụng Unreal Engine để xây dựng một trò chơi gọi là Hunted: The Demon’s Forge cho PS3, Xbox 360, và Windows. Unreal có lợi thế kỹ thuật của nó so với Unity3D nhưng đối với Wasteland 2 và Torment: Tides of Numenera là các game dựa trên trò chơi chiến đấu theo lượt, Alvarado nói, "chúng tôi không cần phải có thêm sức mạnh mà Unreal Engine cung cấp." Unity3D cũng dễ học hơn đối với Alvarado. Unity cung cấp một "Asset Store" gợi nhớ tới các cửa hàng ứng dụng điện thoại, chỉ có nó có chứa các thành phần và mã hữu ích tại chỗ của các ứng dụng thực tế. "Có khá nhiều nguyên liệu có sẵn trong cửa hàng đó hữu ích với chúng tôi" Alvarado nói.

Tương lai của Unity3D - hướng mạnh tới dòng Consoles

Bộ ba thành lập Unity vẫn đang phát triển mạnh hơn. Ante vẫn là CTO. Francis, người cung cấp "tầm nhìn sáng tạo cho rất nhiều công cụ và cách chúng tôi thiết kế các quy trình làm việc" vẫn là một giám đốc điều hành hàng đầu Unity cho đến khi ông tách ra để làm một studio độc lập làm game với Unity3D. "Ông ấy luôn luôn sử dụng Unity nhiều hơn chúng tôi", Helgason nói. Từ những ngày đầu tiên họ chỉ hỗ trợ máy Mac, Unity Technologies bây giờ xây dựng cho gần như mọi nền tảng. "Nó thực sự, thực sự khó khăn, chúng tôi không phải viết một engine có thể làm việc ở khắp mọi nơi, mà là viết một engine có thể sử dụng các khả năng của các thiết bị khác nhau và chạy nhanh nhất có thể" Helgason nói.
 
Tuy nhiên Unity3D đã chậm một vài năm khi hỗ trợ PS3 và Xbox 360, sau khi hầu hết các nhà phát triển đã lựa chọn phần mềm để họ phát triển trò chơi trên các nền tảng này. Và trong khi Unity đã công bố hỗ trợ cho PS4 phối hợp với Sony, họ cũng không kịp tạo ra các trò chơi cho dòng máy này.Helgason thừa nhận rằng engine hỗ trợ tốt các dòng console truyền thống. Một thách thức trong việc xây dựng cho dòng console thế hệ mới, ông nói thêm, để hỗ trợ công nghệ chiếu sáng toàn cầu cho phép ánh sáng thực tế hơn trong môi trường 3D. Unity thống kê số trò chơi điện thoại di động dựa trên nền tảng của nó lên tới hàng ngàn nhưng danh sách game trên dòng máy console chỉ tới hàng chục. "Chúng tôi đang làm việc rất chăm chỉ để thay đổi điều đó, tất nhiên", Helgason nói. "Nếu bạn nhìn lại trong chặng đường một hoặc hai năm nay, bạn sẽ thấy chúng tôi đang chuyển biến".
 
Nguồn: news.dice.com