Game engine là gì?

untitled-118

Nếu bạn thường xuyên đọc những tin tức về nền công nghiệp game, có thể bạn sẽ nghe qua cụm từ “game engine” đâu đó. Bạn biết cụm từ đó, đồng ý nhưng có khi nào bạn ngồi lại, suy nghĩ “vậy cụ thể game engine là gì” hay không?

Khái quát game engine

Thì game engine cũng như car’s engine chứ gì? Engine nào chả phải engine? Nhìn chung, game engine cũng giống như car engine, nó làm cho game hoạt động. Nhưng không hoàn toàn như thế, đôi lúc tồn tại một lằn ranh không rõ ràng giữa đâu là nơi game engine kết thúc và đâu là nơi những nội dung của game bắt đầu. Hơi trừu tượng một tí nhưng sẽ dễ hiểu hơn nếu ta so sánh chúng với car engine và bộ phận chế hoà khí.

Về cơ bản, concept của game engine không quá phức tạp: nó là một thực thể bao gồm những công việc liên quan đến phát triển game như vẽ, mô phỏng vật lý, các nguồn tương tác với game để những nhà phát triển (hoạ sĩ, nhà thiết kế, nhà viết kịch bản và cả những nhà lập trình) có thể toàn tâm tập trung vào việc phát triển chi tiết nội dung của game.

Engine cung cấp những thành phần cho phép những nhà phát triển có thể tương tác nhằm tạo nên game như giao diện, animation, sự tương tác giữa các đối tượng, vật lý và ngay cả trí thông minh nhân tạo.. Ngược lại, nội dung của game, đặc biệt là các mô hình và kết cấu, ý nghĩa đằng sau những va chạm của các đối tượng, cái cách vật thể tương tác với thế giới game.. chính chúng thật sự tạo nên game. Tương tự như thân xe, đầu máy DVD, hệ thống phanh, hệ thống dây đeo thắt lưng… cùng tạo nên một chiếc xe thật sự. Chúng chính là nội dung của game.

API và SDK

Hai từ viết tắt khác chắc bạn cũng thường đọc qua liên quan đến game engine bao gồm API (application programming interface) và SDK (software development kit). API chính là những phần mềm giao diện tương tác với hệ điều hành, các thư viện và dịch vụ để bạn có thể dễ dàng phát triển chi tiết của game. SDK bao gồm những thư viện, API và tool để thiết kế nên những chương trình và dịch vụ. Hầu hết engine đều cung cấp API trong SDK của chúng. Ví dụ như với Unreal Engine, nó cung cấp giao diện để các lập trình viên có thể tạo ra game của họ, thông qua ngôn ngữ kịch bản UnrealScript, các thư việnvà những tool dùng để biên tập như UnrealEd (được cung cấp nếu người dùng đăng ký bản quyền engine).

game_engine_med

Nguồn gốc game engine

Vào lúc trước, rất nhiều công ty phát triển engine của chính họ để giữ bí mật công nghệ. Tuy nhiên thời gian trôi qua, công nghệ phát triển như vũ bảo và nhu cầu ngày càng nâng cao khiến những engine mạnh dần phổ biến. Những engine như SCUMM (LucasArts) và SCI (Serria) đã được dùng để thiết kế rất nhiều game phiêu lưu ra mắt vào khoảng cuối thập niên 80 đến giữa thập niên 90. Hoặc những engine như idTech (tạo nên serie game bắn súng Quake) hoặc Unreal Engine (mới đầu được giữ bí mật) được phát triển trở thành những middleware.

Nhiều năm sau, chi phí cho một engine-tại-gia trở nên quá đắt, và ngày có càng nhiều công ty thiết kế nên những engine hoặc những phần của engine để bán cho những công ty khác thay vì phát triển game. Họ được gọi là những nhà cung cấp middleware. Họ có thể cung cấp những sản phầm với cái giá chấp nhận được, và với hầu hết những studio phát triển game, những sản phầm này rất đáng đồng tiền. Tại sao phải trả tiền thuê 6 lập trình viên trong vòng một năm để phát triển một engine trong khi bạn có thể mua nó với cái giá rẻ hơn nhiều và có liền?. Kết quả hầu hết mọi thành phần của game engine đều được bán với nhiều giá khác nhau, hoặc có thể download tại những website cung cấp phần mềm mã nguồn mở.

Các loại game engine

Game engine có nhiều loại khác nhau chia thành từng mức chuyên biệt khác nhau. Để dễ hiểu, tôi tạm chia ra thành 3 loại: roll-your-own, mostly-ready, và point-and-click engine.

Roll-your-own engine có thể được xem như những engine ở mức thấp nhất. Ngày nay rất nhiều công ty tự tạo ra engine cho riêng họ với những thứ có thể. Điều này có nghĩa họ dùng những ứng dụng giao diện được công bố rộng rãi, các API như XNA, DirectX, OpenGL, các API và SDL của Windows và Linux. Thêm vào đó, họ có thể dùng những thư viện từ nhiều nguồn khác nhau, được mua hoặc open-source. Những thư viện đó có thể bao gồm cả những thư viện vật lý như Havok và ODE, những thư viện scene-graph như OpenSceneGraph và các thư viện GUI như AntTweakBar.

Tôi đề cập đến XNA và SDL ở đâu vì mặc dù dùng những engine để phát triển game tương đối dễ dàng hơn nhưng vẫn cần lập trình thêm rất nhiều để game có thể hoạt động được.

Thực tế, những hệ thống của-nhà-trồng được đó cho phép những lập trình viên dễ tương tác hơn rất nhiều vì họ biết cần gì và chọn những thành phần phù hợp từ đó tạo nên chính xác thứ cần thiết. Nhưng cũng vì vậy mà tốn rất nhiều thời gian. Thêm vào đó, những lập trình viên thường gặp cả đống lỗi lăn nhăn khi các thư viện từ nhiều nguồn đụng chạm với nhau. Điều này đã góp phần làm cho những engine dạng này kém hiệu quả và không được ưa chuộng cho lắm ngay cả với engine được thiết kế một cách chuyên nghiệp.

blackskull_camp_with_toolse

Mostly-ready game engine, những engine nằm ở tầng trung. Các nhà thiết kế game nghiệp dư rất thích những engine dạng này. Chúng được thiết kế rất đầy đủ với mọi tính năng cần thiết, vẽ, tương tác, GUI, vật lý… ngoài ra chúng còn kèm theo cả lô tool mạnh cho bạn tha hồ sử dụng. Những engine tầng này khá phong phú từ ORGE và Genesis3D (open-source), rẻ tiền như Torge hoặc đại gia như Unreal, id Tech và Gamebryo.

Về mức độ, những engine kể trên đều cần lập trình thêm để gắn kết mọi thứ với nhau nhằm tạo nên một game hoàn chỉnh. Hầu như mọi Mostly-ready game engine đều có phần hạn chế một chút so với roll-your-own engine. Cũng đúng thôi vì mặc dù nó là sản phầm của rất nhiều người tham gia phát triển trải qua thời gian dài nhằm mang đến cho khách hàng những “tiện nghi”tốt nhất nhưng đâu phải khách hàng nào cũng giống nhau và phát triển những game tương tự nhau.

Point-and-click engine được xếp ở tầng cao nhất. Những engine này ngày càng trở nên phổ biến. Nó có tất cả mọi tool với đầy đủ chức năng cho phép bạn chỉ việc chọn, click và chọn để tạo ra game. Những engine như vậy, kể cả GameMaker, Torque Game Builder, và Unity3D được thiết kế để càng thân thiện với người dùng càng tốt. Nó cũng yêu cầu ít lập trình hơn. Điều này không có nghĩa việc lập trình không cần, nhưng nếu so với 2 loại engine kể trên trên, nó cần ít nhất.

Nhược điểm chí mạng của những engine point-and-click này đến từ việc những nhà phát triển bị hạn chế rất nhiều vì với loại engine này, bạn chỉ có thể cho ra một loại giao diện như vầy hoặc khác một chút. Nhưng điều này không có nghĩa chúng vô dụng. Vì khi đối mặt với những hạn chế đó, những sáng tạo của con người sẽ càng được kích thích cao. Ngoài ra, engine này cho phép bạn có thể làm việc nhanh hơn, làm ra game nhanh hơn mà không phải làm quá nhiều.

Bạn có thể tham khảo thêm về game engine tại đây và danh sách các game engine phổ biến tại đây.

Jeff Ward

Game848 (gamecareerguide)

Đôi nét về tác giả:

Jeff Ward là đồng sáng lập và là trưởng nhóm lập trình tại Orbus Gameworks, công ty chuyên cung cấp những công cụ dành cho các nhà phát triển game.

Advertisements

2 phản hồi

  1. cám ơn bài viết của bạn nha!

  2. dfgdf

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

%d bloggers like this: