Standard 3D

Standard 3D is an open-source 3D editor and game engine. It allows the user to view, edit and play 3D game maps, and view 3D model files. It aims to eventually replace the functionality of every 3D game engine that has ever existed.

Major features

Unusual features

Map formats supported

Installation

See the INSTALL file for generic install instructions - this package uses the Autoconf compilation and installation system.

You need to install my Standard Config package first, and perhaps also GTKGLExt and Bullet Physics. Zlib, GTK 2, OpenGL, Freetype 2, ALSA, libvorbis, libmad and ImageMagick will probably already be installed.

You should also install the most recent Standard 3D data archive, since it contains maps, images and models collected from game SDKs, and other free sources online. Nb. most of the SDK files came from GTKRadiant game packs. It needs to be installed in the user config directory (~/.config/std3d/ by default).

Within the .std3d directory (which is installed to /usr/local/share/std3d/ by default), all game formats point to archives files in the directory games, which initially points to /home/arch/games/ which is where I store copies of essential game files on my system (left there as an example). It would be easiest to copy the necessary files of all the games you want to use with Standard 3D to a number of directories, one for each game (with the same names as I use), all in one directory, and change the link to point there. Alternatively you can simply change the archives links in each game directory (though unfortunately this would have to be done again after installing a new version). Nb. Stalker game data cannot yet be loaded from archives, but can from directories (so use some other unpacking tool).

Command line tips

Get help for most of the command line options:

std3d -help

Load a map or view a model file:

std3d -format=<game> <file>

Extract all data for a game format:

std3d -extract-game=<game> -extract-dir=<directory>

Render models (using image or video capture) with a transparent background:

std3d -sky-color=trans -capture-alpha <model>

Work yet to do

Add full-scene anti-aliasing (I’m currently using an obsolete version of GTKGLExt that has it built in).

Multithread and streamline the graphics code. Convert the graphics code from OpenGL to Vulkan.

Add splitscreen for multiple players. Rework the netcode and add a stand alone server.

Draw necessary icons for the UI.

Fix the drawing of light maps and add texture atlases for them.

Complete the model animation code. Add a Doom 3 entities/model config loader.

Finish the Doom 3 and Quake 3 texture config (shader/material) loaders. Add terrain texture splatting and terrain mega-texture.

Add colour to the console and allow console text to be copied and pasted. Add many more console functions, and variables.

Add basic NPC AI. Add vehicles and emplaced weapons.

Fully understand: Doom 3 texture coordinates, Mechwarrior 2 object positioning, and Stalker object orientation and lighting normal vectors. Fix the Doom game format sector conversion code. Fix the Painkiller map loader.

Add a BSP compiler. Allow BSP maps to have entities added or removed, by loading and saving them separately.

Add Doom 3 scripting and GUIs. Figure out Wolf3d UI image encoding. Add volumetric fog.

Add Stalker archive loading.

Implement all map loading, model loading, entity behaviour, and other features for all existing game formats. Add many more game formats. :)

Philosophy

Since the early days of id Software, there have been game engines: one for each game. This is a perfectly reasonable approach for the gaming industry because it aims to sell products, and not necessarily to develop workable programs, support users, or promote liberty. However, the open-source community must demand higher standards, and 3D gaming is perhaps the area that needs them the most.

Game engines may appear distinct, since their games certainly are, but they’re almost all based on those created by John Carmack. His still unusually high standards of honesty and decency, in choosing to release his source code, continues to allow less capable developers to also release their own game engines. Unfortunately, they’re usually created with single games in mind, and thus are severely lacking in features, and respect for users’ freedom. The most recent games are even worse: they don’t even allow users to run their own servers, chat privately, or in some cases even play offline. These predatory corporate practises must be fought and eliminated.

License

All code is licensed under the GNU General Public Licence (GPL).

The major version of the GPL used is only 2, in rejection of version 3’s social engineering. Forks of Standard 3D may use GPL version 2, version 3, or later versions.

Bug reports and patches

Please make bug reports clear and concise, with a brief description of what actions led to the bug appearing. Bear in mind that this project is still in beta.

Patches should be in unified diff format, created with diff -u <original file> <modified file>. Nb. I don’t use git or any other source code version control system, since I believe that every package should have a single author, and that large projects should ideally be broken down into a number of independent libraries.

Email: marks@cinfinity.info, cinfinity.info@protonmail.com.

Author

My name is Mark Skinner. I’m an Australian, self taught computer programmer, with a degree in engineering (specifically, computer control systems).

I write all my source code using a simple text editor, and compile and test it via the command line. My Linux GUI consists of a text editor, web browser and a number of terminals.

Last modified: 2024-07-13 14:06:09 UTC.