Infinity Engine BioWare
Baldur's Gate 1 Original is the seminal Infinity Engine game. In fact, the campaign was developed by BioWare Corp. in parallel with the engine. As early as 1995-96, the engine was being coded for an RTS (cf. Retro RTS Games) called Battleground:Infinity, but it was repurposed for the Baldur's Gate cRPG.
Infinity Engine by BioWare Corp.
We released Baldur's Gate to great commercial success and critical acclaim in December 1998. Baldur's Gate was truly a game that we poured our hearts and souls into [...] We were very proud of the result [...] I personally am thrilled and honored to know that more than a million fans have played and enjoyed the original BG. -- Dr. Ray Muzyka, Joint CEO, BioWare Corp.
Infinity Engine Games aka IE Games
The Infinity Engine didn't just power Baldur's Gate and its sequel: through licensure by Black Isle Studios (BiS), the Infinity Engine would not only later power Icewind Dale 1, Icewind Dale 2 and Planescape: Torment, but it would also heavily influence many subsequent engines developed by BioWare and other developers. These include but are not limited to:
- Aurora (Neverwinter Nights 1) (some graphics based on MDK2 Omen Engine)
- Heavily Modified Aurora (The Witcher)
- Electron (Neverwinter Nights 2)
- Odyssey (Knights of the Old Republic)
- Eclipse (Dragon Age: Origins)
Therefore, not just in considering the above but also what the above led to, the original Baldur's Gate is one of the most influential cRPGs of all-time (for good and for bad, but mostly for good).
Black Isle heavily modified BioWare's engine in PS:T and IWD2. While IWD1 and BG2 closely resemble the original BG1, PS:T looks and feels quite different to the other IE games (radial menu, modified viewport), and IWD2's employment of 3rd Edition D&D also necessitated profound changes.
Overview of cRPG Engines
In order to gain control over every aspect of cRPG Design, in-house proprietary cRPG engines have traditionally been coded in C, C++ or Assembly language (e.g., 80286 or M68k Assembly).
Governing the potentiality of design categories, game mechanics and technical specifications, the cRPG engine is the foundation of the cRPG. The cRPG engine governs all cRPG logic and interplay between all systems, both obvious to the player and underlying.
Aspects of cRPG engines include:
- File system (and compression)
- Memory management
- Resolution and aspect ratio (square-pixel SVGA 640x480, 4:3)
- Color depth (8 bit, 32 bit)
- Framerate (FPS) and refresh rate (Hz)
- Screen-scrolling routine
- Animation system
- Collision detection
- Sprite display (dimensions, color depth)
- Perspective: viewport, playing field or Battlescape (tile-rigged, prerendered)
- Renderer (if 3D)
- User Interface (GUI)
- Pathfinding routine
- Modes of control and input devices (kb/m)
- Scripting system (for designer-level coding)
- AI
- Networking
- Physics (inertia, friction, gravity, ragdolls, particles, destructibility)
- Audio frequency (sample rate)
- cinematics (FMVs)
Thus, cRPG engines are complex to develop from the ground up. Usually, they are coded by experts with formal training in computer science and/or coders who started off programming 8 bit microcomputers in the early 80s.
The core of cPRG engines are hard-coded in executables and other encrypted files, though developers sometimes externalize code to editable files in order to facilitate dev-cycle tweaking and basic, end-user modding. For example, two-dimensional arrays (*.2DAs) can be edited in order to modify the ruleset in Dungeons & Dragons cRPGs.
Throughout cRPG History the targeted hardware platform has been an instrinsic, all-important consideration: the coder tailors the engine to the hardware capabilities of the end-user's PC.
Since they determine game speed, complexity and size, the most important hardware specifications have always been CPU (instruction set, clock-rate), memory (RAM), storage capacity (diskette, disc, HDD), and custom chipsets (if applicable), such as video and sound cards.
The targeted operating system (OS) and APIs (e.g., DirectX, OpenGL) are also important considerations.
Assembly Language / Machine Code
The variability in end-user operating system settings and hardware specifications has for decades posed immense problems in compatibility and performance. Often resulting in increased efficiency assembly-coded computer games largely bypassed the OS issue by virtue of tapping hardware directly and independently of the OS by auto-booting volumes from ROM chips. In addition, the targeted microcomputers usually shared the exact same CPU, custom chipset and memory size. Coupled with the comparitively long life-cycles of such hardware in the assembly era, coders became grandmasters at maximizing the potential of certain microcomputers.
Computer games were coded in assembly based on the target platforms's microprocessor. For example:
- i80286 assembly (IBM PC Frontier Elite 2)
- M68k assembly (Amiga games)
- 6502 assembly (many 8 bit computer-game machines)
For reasons of speed and robustness, some developers were coding commercial computer games in machine code language as early as 1976: cf. TRS-80 Shoot 'em ups. Others stuck with BASIC. And that is why some of their games ran poorly and broke easily.
Infinity Engine File Format
The Infinity Engine has its own file structure, scripting language and playing field layers. The meat and potatoes of its data are compressed into large *.bif file archives which consist of rules, scripts and audio-visual assets; almost everything that constitutes the game.
Baldur's Gate graphics assets include animations (*.bam), area backgrounds (*.tis), UI elements (*.chu & *.mos), paperdolls (*.plt), portraits (*.bmp) and FMVs (*.mve).
Structural area data is contained in *.wed and *.are files which set where the actors, placeables, transition points and points of interest are, as well as dictating where on the map the players can walk, and where the triggers are, by means of polygons that are invisible to the player, in-game.
In addition, there are files that contain the rules for spell / ability mechanics (*.spl) and dialogues (*.dlg) as well as scripts (*.bcs) for Baldur's Gate enemies and Baldur's Gate NPCs (*.cre).
Baldur's Gate items are stored in *.itm files and audio is contained in *.wavs.
Infinity Engine 2DA Files
The AD&D 2nd Edition ruleset is stored in two-dimensional arrays (*.2DAs). The 2DAs contain tabled rules such as THAC0 progression charts, weapon proficiency charts and so on.
Infinity Engine Command Console
The command console is LUA-based and can be called up by hitting a key-combo such as Ctrl-Tab or Ctrl-Spacebar. The console allows for testing, configuration and cheating.
Infinity Engine Override Folder
The installation folder contains an Override sub-directory the contents of which "write-over" aka override base assets -- which is to say, at run-time overrides are given priority over base assets contained in the *.bifs; and the original archived asset remains untouched.
Overrides are used in patching and modding aspects of IE, Aurora and Electron games that are not hard-coded. By simply removing files from the Override, we can undo any changes that we have made as well as de-patch the originals (though de-patching often requires knowledge of file interactions).
Infinity Engine Native Resolution
The Infinity Engine runs at a native square-pixel resolution of 640*480px. IWD2 is the only Infinity Engine game that is designed for 800*600 resolution. BG2 can run at 800*600 and above but its user interface does NOT take advantage of the extra space. Only IWD2's UI does. BG2 just widens the UI border to give an impression of added space, but only a fool would be taken in by it.
Moreover, no matter the resolution, fog of war and AI detection are as limited in radius in IWD2 and BG2 as they are in BG1, meaning that running the game at 1080p does not enhance gameplay. Indeed, since neither the UI, fonts nor sprites scale to higher resolutions, everything ends up being too small to see, which degrades gameplay. And even if everything did indeed upscale, it would just look pixelated because, newsflash, this is a 2D game made out of bitmaps that have set dimensions and a set number of pixels.
And if you go for post-processing to smoothen out those jaggies, it's going to look like blurry garbage and lose its classic aesthetic entirely. Just look at the Enhanced Editions; they look awful. The only way to upscale art assets is to RE-RENDER them in upscaled form, which is a monumental task to undertake for RPG Game Remakes that always end up like caricatures of spartan originals.
Baldur's Gate was made at a certain time for certain technologies; it's part of its charm in 2024. Deal with it.
Infinity Engine Open GL
BG2: SoA was the first Infinity Engine entry to officially support OpenGL acceleration; that is, support for 3D accelerator cards as it pertains to spell effects and background effects, such as rippling water and flickering flames. As "acceleration" suggests, the object is to speed up the drawing of such effects and make them look better.
OpenGL certainly sped up the drawing of spell effects (in theory), but it didn't necessarily improve framerates or make the spell effects look better.
Indeed, some spell effects from BG1 look better than those in BG2 (e.g., Entangle). In addition, realtime 3D spell effects clash terribly with prerendered 2D backdrops, and are prone to obscure the action more than the minimalist 2D ones.
Furthermore, 3D API compatibility is much harder to maintain across multiple chipsets and drivers than 2D DirectDraw is, and there are several symptoms of incompatibility that could be cited which never would have stemmed from DirectDraw-only.
Suffice it to say that I consider OpenGL employment on the Infinity Engine to be a failure, and a waste of dev-cycle resources.
Infinity Engine vs Other cRPG Engines
To this day, the Infinity Engine's power, efficiency and functionality still hold up -- and it's stable. In fact, in comparison to the IE, many current gen engines run like my Aunt May after she's had too much sherry to drink.
Also, note how many of the new cRPGs look and play all the same; they have no soul or character because many of them were developed in the exact same engine. In the Reniassance era of cRPG History, gamers had access to much more variety and each cRPG was fundamentally different because they were built on different engines that were coded by programmers from the ground up: in-house proprietary engines are KING.
That said, I think the engines powering Fallout 2, Jagged Alliance 2 and ToEE are better than the IE. Sir-Tech's JA2 engine is in a league of its own; it soars above the rest in terms of functionality, efficiency and aesthetics: a masterpiece. The engine of Morrowind, on the other hand, is a complete and utter laughing stock.
Next up: Baldur's Gate Character Creation.
No comments:
Post a Comment
Note: only a member of this blog may post a comment.