In addition, a more complex image editor, that
allowed images to be constructed from scratch,
and PCX files to be converted to my own image
format was required, and produced by updating
Canvas 1: Canvas 2 has been successively modernized
since then, and currently in use are versions
2.4 for MCGA images, and 2.6 for SVGA. Images
were loaded from disk as required, which was
extremely slow since the Blockread instruction
was not being employed: but sufficed for the
purposes of the game.
Simultaneously, I was also dedicating much of
my programming time to the construction of a
3D engine, capable (initially) of the accurate
display of polygons in a 3D space, and the matrix
defined manipulation of these for rotation.
This started out using BGI graphics, something
that I jettisoned quickly after I realized the
limitations of 4-bit colour and the woedully
slow rendering speed of the graphics. The original
engine had a few simple, predefined polygons
rotating and zooming according to the keyboard,
using my own home formulated formulae to calculate
perspective, that is the 3D engine itself, translating
polygons defined in 3D space into shapes drawn
onto the flat screen: amazingly, I was only
slightly out in my calculations, and that engine,
unchanged, still forms the core of my modern
and entirely functional texture mapped 3D world.
The early 3D engine was one of my most intensive
projects, employing as it did graphics generated
purely by a real time engine, and making use
of more complex mathematical routines than I
had previously used. It was through this that
I also acquired the (vital) skill of optimising
code: most of my previous programs had either
hung off the speed of the processor, or needed
code to stop them running too fast, and it was
through the development of this code that I
realised the limitation of the machine I was
using, and the relative speed of the Pascal
(and later Assembler) commands.
In compiling this catalogue of my past attempts
to produce working programs, I hope to offer
some insight into a more general development
process when learning a porgramming language,
and so to give others a measure of the speed
of this development: of programming technique,
basic acquisition of the langauge, and extension
of the language using external units or Assembler,
or optimisation. The games are also downloadable
and quite amusing, although I suspect their
replay value may be somewhat limited.
Page one
|
Back to Early projects