Units and Tools
My intention, as I constructed my
3D engine, was always to produce as generic code
as possible, and to allow as much scope for external
implementation as I can. If anything, the reason
I have yet to develop a fully functioning 3D game
is through the lack of compulsion to put together
the basic engine of the agem itself; Trooper II
has somewhat taken it out of my in that respect.
Nevertheless, the engine itself is implemented
entirely in library based code, and, in conjuction
with my graphical engines that can be found elsewhere
on this site (See MCGA and SVGA graphics engines)
can easily be incorportated into other programs.
Each component of the engine is called using very
simple procedure names, so a large degree of control
remains in the manipulation of the engine, without
having to be imersed in the variables it uses.
The models orinetations, and the model sand textures
themselves are all loaded from information and
data files, which themselves can be constructed
using the tools I have specifically produced for
this perpous. There are no restrictions built
into the engine, and this is a reflection of the
current status of most of these tools as work
in progress; much of the code is currently sprawling
into what would normally be used for more game
engine routines, and is yet to be procedurised.
Currently available are the standard 3D units
for use with MCGA graphics mode (320x200x256),
interfacing with my standard MCGA graphics unit
for the manipulation of simple graphics, and my
image manipulation unit version 3.1 for the loading
and display of Canvas 2.4 images. These are necessary
for the elementary initialisation of the graphics
variables, and the loading of texture, as well
as providing access for the 3D routines to the
extended memory, which is necessary to deal with
copious textures. Currently supported in the 3D
unit is the display of texture mapped or solid
colour polygons, the fast rotation and manipulation
of these, and an integrated and automatic lighting
system, that defines the palette on run time,
whilst maintaining image integrity. Tools for
the construction of 3D models, their texture mapping,
and the placing of these models in a 3D 'world',
are also available for download on this page.
All the textures currently used in my 3D engine
are in my own image format, img files,
which can be made using Canvas 2.4. This simple
drawing program allows the import of pcx files,
accurate conversion of palettes, and the fast
manipulation of img files. I'm sorry if
this is all a bit brief, but I could write several
pages of description for all of these programs,
so familiar I am with them, so I won't do them
injustice by trying to give a reduced guide here.
In the future, I will write a detailed guide for
the tools programs, and maybe even one day annotate
the units, since my own code can be somewhat arcane.
Much of the source is written in assembly language,
for compiling using Turbo Pascal 5 or above; the
integrated assembler takes care of the aseembly
language. I hope you can make head or tail of
this offering: I assure you, once it's all in
accord it represents a remarkably powerful way
to produce 3D models that run smoothly and satifyingly
in pascal, without playing around with complex
formats.