About me

Vladimir Nabokov

Books
Programming
Biochemistry
Aim | Communicate

Search
 


 

 

   
Letters from Terra - Life in water warmed by sunlight
 
 

     
 
 

     
The latest incarnation of my 3D engine in action - click for more Screenshots
 
 
     

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.

Download 3D graphics libraries (45 Kb, zipped) | Download 3D modeller
(55 Kb, zipped)
| Download 3D world editor (21 Kb, zipped)

 
 
Letters from Terra | Updated 15th December 2004 | By Jonathan Ayling