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.
Fully open-source.
Loading and saving of native and third party game maps, and loading model files as maps.
A wide range of editing tools, usable in both 2D and 3D display modes.
Standardised axes and angles: +Z up, +Y forward, +X right, when facing 0.0 yaw (ie. North), which increases clockwise (North, East, South, West).
Editing of multiple maps and game formats simultaneously, in multiple windows per map, using multiple cameras.
Full undo/redo.
Seamless transitioning between map editing and gameplay.
Integrated file browser and model viewer.
Comprehensive preferences dialog, including selectors for fonts, input and colors. All options are loaded from and saved to a single config file, and from the command line.
Multi-threaded files subsystem with both automatic and manual file reloading, and caching of texture and model files.
Multi-threaded input subsystem that can access the keyboard, mouse, joystick and gamepad directly, and also keyboard and mouse via the X server.
Multi-threaded audio subsystem, with separate master, hardware, music, UI, voice-chat and file browser volume controls.
Text console with command history and Linux console keys.
Use of Truetype fonts, for the HUD, entity labels and the console.
Planned integration with Goldstein (my social networking client/server).
Most movement abilities, common to many games, also work in edit mode. The emphasis is on playful exploration.
Toggling between selection and unselection (with SHIFT), and select many and select one (with CTRL).
Four of the editing tools automatically change the tool selected with each edit, so that selection of objects can be immediately followed by moving them, and vice versa.
The option to capture two window images at once: with and without the UI (HUD, crosshair, messages and weapon).
Video capturing (simply captures frame images, in a different directory for each recording).
Easy full-screen on/off and mouse-look on/off.
Behind view: the ability to easily view the camera from behind, typically with the mouse wheel. This allows easy rotation around an object centred on the camera, and observation of BSP occlusion (used in BSP type map files).
Full-screen simply uses the existing monitor resolution.
Console based precise editing of objects.
Console backspace and delete both work properly, with no pesky insert mode.
Console command line can be located at the bottom of the scrollback buffer, or always at the bottom of the console window.
Editing and export: Quake, Quake 2, Half-Life and Quake 3.
Accurate map viewing: Wolfenstein 3D, Quake, Quake 2, Quake 3.
Incomplete map viewing: Doom, Heretic, Mechwarrior 2, Hexen, Half-Life, Return to Castle Wolfenstein, Wolfenstein: Enemy Territory, Doom 3, Half-Life 2, Quake 4, Stalker, Portal and Portal 2.
Planned (relatively soon): Unreal, Serious Sam, Far Cry, Nexuiz, Xonotic.
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).
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>
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. :)
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.
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.
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.
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.