Game engine

Mục đích

Game engine cung cấp một bộ các công cụ phát triển trực quan và có thể tái sử dụng từng thành phần trong đó. Nói chung các bộ công cụ này cung cấp một môi trường phát triển tích hợp được đơn giản hóa. Phát triển ứng dụng nhanh (tiếng Anh:rapid application development) cho game theo cách lập trình hướng dữ liệu. Những game engine này đôi khi còn được gọi là các "phần mềm trung gian cho game"(game middleware), như ý nghĩa của thật ngữ, chúng cung cấp một nền tảng phần mềm linh hoạt và dễ dàng sử dụng lại với mọi chức năng cốt lõi cần thiết ngay trong nó để có thể phát triển một ứng dụng game đồng thời giảm giá thành, độ phức tạp, và kịp thời hạn phát hành- tất cả các yếu tố quan trọng trong ngành công nghiệp game đầy cạnh tranh.
Giống như các phần mềm trung gian khác, game engine thường cung cấp một nền tảng trừu tượng hóa, cho phép một game có thể chạy trên nhiều hệ máy bao gồm các hệ console hoặc máy tính cá nhân với một vài, nếu có, thay đổi trong mã nguồn của game đó. Thông thường, phần mềm trung gian cho game được thiết kế với một nền tảng kiến trúc dựa trên các thành phần khác, cho phép các hệ thống khác nhau trong engine có thể thay thế hoặc mở rộng với các phần mềm trung gian khác chuyên biệt hơn (và cũng đắt đỏ hơn) như là Havok cho hệ thống vật lý trong game, Miles Sound System cho âm thanh, hay Bink cho các đoạn video. Một số game engine như RenderWare thậm chí còn thiết kế như một loạt các kết nối lỏng lẻo các phần mềm trung gian khác mà từ đó có thể chọn lọc và kết hợp để tạo ra một game engine theo yêu cầu, thay vì cách tiếp cận thông thường là mở rộng và tùy biến một cách linh hoạt để tạo ra giải pháp tích hợp. Tuy vậy, sự mở rộng vẫn cần thiết, đó vẫn là một ưu tiên cao do yêu cầu ứng dụng đa dạng trong game engine. Mặc dù có sự phức tạp trong tên gọi, các game engine vẫn thường được sử dụng cho các loại khác của ứng dụng tương tác với các yêu cầu đồ họa thời gian thực như giới thiệu các bản demo, dựng hình kiến trúc, đào tạo mô phỏng, và mô hình hóa môi trường.
Một số game engine chỉ cung cấp khả năng dựng hình (kết xuất) 3D thời gian thực thay vì rất nhiều chức năng trong phạm vi rộng mà game yêu cầu. Loại engine này tùy thuộc vào các nhà phát triển, sử dụng để thực hiện phần chức năng hoặc kết nối phần hình ảnh còn lại từ các game engine khác nhằm mục đích cải thiện hình ảnh cho game. Loại engine này thường được gọi là: "graphics engine", "rendering engine," hay "3D engine" thay vì thuật ngữ bao quát hơn là "game engine". Thuật ngữ không nhất quán này sử dụng với nghĩa một bộ công cụ đầy đủ chức năng để tạo hình ảnh 3 chiều trong game chứ không đơn giản chỉ là "3D engine". Một vài ví dụ cho các engine đồ họa là: RealmForge, Truevision3D, OGRE, Crystal Space, Genesis3D, Vision Engine, Irrlicht và JMonkey Engine. Game hoặc engine đồ họa ngày nay thường cung cấp bởi một trường đồ thị dựng sẵn, khiến việc biểu diễn hướng đối tượng của thế giới game 3D trong thiết kế được đơn giản hóa và có thể làm cho việc kết xuất thế giới ảo rộng lớn một cách hiệu quả hơn.

Ảo hóa phần cứng(trừu tượng hóa phần cứng-hardware abstraction)

Thông thường, engine 3D hay hệ thống kết xuất đồ họa trong game engine thường được xây dựng trên một nền tảng giao diện lập trình ứng dụng đồ họa như Direct3D hay OpenGL cung cấp sẵn một hệ ảo hóa cho GPU hay card đồ họa. Thư viện mã nguồn cấp thấp (cấp cơ bản) như DirectX, SDL, và OpenAL (thư viện âm thanh mã nguồn mở) cũng thường được sử dụng trong các game khi chúng cung cấp khả năng truy cập phần cứng độc lập với phần cứng máy tính khác như các thiết bị đầu vào (chuột, bàn phím, và tay cầm điều khiển), card mạng, và card âm thanh, trước cả bộ điều hợp đồ họa 3D, phần mềm dựng hình được sử dụng. Phần mềm dựng hình vẫn được sử dụng trong một số trường hợp như là công cụ mô hình hóa hoặc kết xuất ảnh liên tục khi cần hình ảnh chính xác hơn là biểu diễn theo thời gian thực (đo bằng số khung hình/giây) hoặc trong trường hợp phần cứng máy tính không đủ mạnh để hỗ trợ hình ảnh như hỗ trợ tô bóng(đổ bóng-shader)
Với sự ra đời của các phần cứng tăng tốc xử lý vật lý, các giao diện lập trình ứng dụng vật lý như PAL và hệ vật lý mở rộng như COLLADA (một định dạng chuyển đổi cho các loại ảnh 3D) trở nên sẵn có để cung cấp một phần mềm ảo hóa cho vi xử lý vật lý của các nhà cung cấp phần mềm trung gian và hệ máy platform.

Xu hướng hiện tại

Với công nghệ tạo game engine càng phát triển và trở nên thân thiện hơn với người sử dụng,ứng dụng của nó càng được mở rộng, và giờ đây được sử dụng để tạo các game mang mục đích khác với giải trí đơn thuần như: mô phỏng, huấn luyện ảo, y tế ảo, và mô phỏng các ứng dụng quân sự. Để tạo điều kiện tiếp cận này, các nền tảng phần cứng mới đang là mục tiêu của game engine, kể cả điện thoại di động (ví dụ: iPhone, điện thoại Android) và trình duyệt web (như Shockwave, Flash, WebVision của Trinigy, Silverlight, Unity Web Player, O3D và thuần dhtml).
Thêm vào đó, nhiều game engine đang được tạo ra bằng các ngôn ngữ lập trình cấp cao như Java và C# hay .NET (ví dụ TorqueX, và Visual3D.NET) hay Python (Panda3D). Vì hầu hết các game 3D hiện nay đều có giới hạn cho GPU(giới hạn bởi sức mạnh của card đồ họa), khả năng gây chậm máy của các ngôn ngữ lập trình cấp cao trở nên không đáng kể, trong khi việc tăng năng suất được cung cấp bởi các ngôn ngữ này lại có lợi cho các nhà phát triển game engine. Những xu hướng này gần đang được thúc đẩy bởi các hãng như Microsoft để hỗ trợ các nhà phát triển game độc lập. Microsoft phát triển XNA (Microsoft XNA) như là một gói phần mềm phát triển (SDK) cho tất cả các game trên hệ máy Xbox và các sản phẩm liên quan. Nó bao gồm kênh thiết kế XBox Live Indie Games đặc biệt cho các nhà phát triển nhỏ không có nguồn lực mở rộng cần thiết để đóng gói một game để bán trên các giá bán lẻ. Việc này trở nên dễ dàng hơn và rẻ hơn bao giờ hết để phát triển một game đa hệ máy có hỗ trợ managed frameworks.

Phần mềm trung gian

Một số hãng hiện nay chuyên tập trung vào phát triển các bộ phần mềm gọi là phần mềm trung gian (middleware). Các nhà phát triển middleware cố gắng "tái phát minh ra bánh xe" bằng cách phát triển một bộ phần mềm mạnh mẽ (là khả năng của một hệ thống máy tính để đối phó với các lỗi trong khi thực hiện để tiếp tục hoạt động bất chấp những bất thường ở đầu vào, tính toán) mà bao gồm hầu hết các yếu tố một nhà phát triển game cần đến để xây dựng một game. Phần lớn các chương trình phần mềm trung gian cung cấp các cơ sở để phát triển một cách dễ dàng, như hình ảnh, âm thanh, hệ thống vật lý và chức năng AI. Gamebryo và RenderWare là hai phần mềm trung gian được sử dụng khá rộng rãi.
Một số middleware chỉ làm một chức năng nhưng nó còn hiệu quả hơn cả toàn bộ engine. Ví dụ, SpeedTree được sử dụng để dựng hình ảnh cây cối thêm thực tế trong game nhập vai: The Elder Scrolls IV: Oblivion.
Bốn gói phần mềm trung gian được sử dụng rộng rãi nhất mà cung cấp các chức năng trong hệ thống con gồm có Bink của hãng RAD Game Tools, hãng Firelight với FMOD, Havok, và GFx của Scaleform. RAD Game Tools phát triển Bink cho dựng hình video cơ bản, đi cùng với âm thanh Miles, và dựng hình 3D Granny. FMOD của Firelight là một thư viện và bộ công cụ phần mềm âm thanh mạnh mẽ giá rẻ. Havok cung cấp một hệ thống mô phỏng vật lý mạnh, cùng với các bộ phần mềm hình ảnh động và mô phỏng hành vi. Scaleform đem lại GFx dùng cho các biểu diễn cao cấp trên nền giao diện Flash, cùng với các giải pháp trình chiếu video chất lượng cao, và một Input Method Editor (IME) phần bổ sung nhằm hỗ trợ trò chuyện trong game bằng ngôn ngữ châu Á.
Một số middleware bao gồm toàn bộ mã nguồn trong nó, số khác chỉ cung cấp một giao diện lập trình ứng dụng dùng để tham khảo như một thư viện mã nhị phân. Mặt khác một số có thể được cấp phép, thường là phải trả một cái giá cao hơn cho toàn bộ mã nguồn.

Game engine cho game bắn súng góc nhìn người thứ nhất (FPS)

Một trong các loại game engine được biết đến nhiều nhất là game engine cho các game FPS. Là bước đột phá của các nhà phát triển về chất lượng hình ảnh khi thực hiện các game FPS trên góc nhìn của con người. Trong khi các game mô phỏng như điều khiển máy bay hay xe cộ và game chiến thuật thời gian thực (RTS) tăng cường tính thực tế trong hình ảnh ở mức độ vĩ mô, thì game bắn súng góc nhìn thứ nhất lại đi đầu về xử lý hình ảnh thực tế ở cấp độ nhỏ hơn.
Sự phát triển của các engine đồ họa cho game FPS đặc trưng bởi sự tăng trưởng ổn định của công nghệ chế tạo phần cứng, với một số bước đột phá. Nỗ lực xác định các thế hệ tách biệt cho game engine FPS sẽ dẫn đến sự lựa chọn tùy tiện giữa một cái là bản nâng cấp của một engine "đời cũ" và một cái là một engine hoàn toàn mới.
Sự phân loại rất phức tạp vì game engine là sự pha trộn giữa các công nghệ cũ và mới. Các tính năng được coi là cao cấp trong một game mới phát hành trong năm nay sẽ trở thành tiêu chuẩn dự kiến trong năm tới. Các trò chơi với sự pha trộn của các thế hệ trước và các tính năng mới hơn sẽ là tiêu chuẩn. Ví dụ game Jurassic Park: Trespasser (1998) lần đầu giới thiệu hệ thống vật lý trong thể loại FPS, nhưng nó đã không trở nên phổ biến cho đến khoảng năm 2002. Red Faction (2001) đã có tính năng phá hủy các bức tường và mặt đất, thứ mà vẫn chưa phổ biến trong các engine vài năm sau đó (ví dụ trong game Unreal Tournament 2004 vẫn chưa có các vật thể phá hủy được). Battlezone (1998) và Battlezone II: Combat Commander (1999) thêm các phương tiện chiến đấu cơ bản vào một game FPS, vậy mà vẫn không phải là điểm nhấn chủ đạo cho tới về sau, khi Tribes 2, Battlefield 1942, Halo: Combat Evolved và Unreal Tournament 2004 tái hiện đầy đủ khả năng cho các phương tiện chiến đấu kết hợp với bắn súng góc nhìn người thứ nhất trong game.