The Nuclide project produces a freely available game-logic component and development platform on top of FTE; which is a featureful engine based on the 1999 source code release of Quake (1996) by id Software.
The general idea is that Nuclide takes care of ~90% of the code you shouldn't have to worry about.
It is targeted towards developers with a background/interest in id Technology, and we incorporate design aspects from across the known spectrum of existing engines and tech.
It comes with a simple example game (simply referred to as 'TestGame' or 'Base') and some test maps. There's also some other, third-party example projects.
Features
Rendering System
The rendering system in FTE allows for a wide range of styles for low system requirements, due to a versatile renderer supporting Vulkan, OpenGL (with and without shaders) to legacy versions of Direct3D on Windows.
- Physically Based Rendering. State-of-the-art basis for rendering is standard and in base.
- Lighting system choice. You're not forced to use lightmapped-only paths. All entities are prepared to be mixed with different lighting technologies seamlessly.
- Iris-adaptation, like Source HDR. Simulated feel of high-dynamic-range with iris adaption can be turned on/off for every game. Of course we also have real HDR support in-engine.
Modeling & Animation
With the wide selection of formats that FTE supports, rest assured your content gets in the game real easy. The SDK itself is prepared to work with most formats.*
- Hitmeshes.. Artists can use geometry in their ref to define precise damage areas, which any hitscan accurately detects.
- Model events. Define animation-sequence events that should happen on an exact keyframe basis, to be interpreted by both client and server.
- Activities. No longer hard-code which sequences and behaviour a model can express. The model can communicate it itself.
*Formats other than VVM require the use of an external, plain text file to define framegroups, events and activities.
Environments
Make levels with the tools you've used before, and have been maintained by the community for decades.
- Integrated Radiant. Generate game-packs for your game with a single command, and get mapping right away.
- Powerful BSP compiler. Use VMAP to bake levels like you're used to from similar engine technology, with high quality lightmaps, cubemap-based environment mapping and adjustable vertex colors on spline-based meshes.
- Map-specific rules. Let the level control some aspects of the simulation through the use of an external QuakeC progs.
Physics
Nuclide integrates Open Dynamics Engine to achieve networked, physically simulated bodies and ragdolls with consistent, game-specific feedback.
- Consistent Prop Behaviour. Set up a model once with its mass and other prop data and Nuclide will handle impacts against other entities and real-world interactions.
- Advanced constraint systems. Set up rigs of constraints, like welds, ropes, pulleys and sliding mechanisms.
Game Mechanics
- IO System. A custom implementation of a Source Engine compatible input output system for entities. Utilized by AI tasks/schedules as well.
- Navmesh navigation. Solid pathfinding within complex environments, with a simple-to-use navmesh editor.
- Configurable movement. Players, NPCs and bots can walk, run, sprint, duck, prone around the levels.
Programming
Complete engine access available in the form of C code. When writing game-logic, you'll be writing primarily in QuakeC, which is greatly enhanced by FTEQCC. However, that is not the only way you can modify aspects of the game greatly.
- Higher-level prototyping. Defining game objects such as NPCs, items and behaviour can be done entirely using external decl files.
- Powerful debugging. Complementing FTE's console and debugging capabilities is detailed event-logging with a focus on data and entity IDs for easy identification.
- Easy custom builds. Creating custom branded builds is as easy as copying a header file and editing it.
- Easy deployment. Build Steam depot folders with 1 command, building game archives and cross-platform binaries using gcc and mingw64 on Linux.
Audio
The engine provides backends for audio through OpenAL, which has its DSP/Reverb features integrated into our SDK.
- Sound scripting. Customize the sound of any surface, and fine-tune how each sound is perceived from near and far using plain text definitions.
- Voice chat integration.. Additional features such as player voice-chat (using Opus or Speex codecs) over the protocol are integrated.
- Real-time sound file stitching. Play a series of separate sounds as if they were one, with adjustable pitch and volume between segments.
Networking
Tried and tested networking powered by QuakeWorld isn't the only thing it has got going for it.
- Rock-solid lag compensation. The player movement, including weapon and vehicle handling is predicted (simulated on both client and server) for smooth, lag-free feeling gameplay.
- Integrated messaging.. Players can keep track of their friends using a persistent chat/friends-list system.
- Workshop style package manager. Players can download levels, skins and addons through the built-in addon manager.
- Hassle-free server hosting. Players can host servers without the need for port forwarding using Frag-Net.
Frequently Asked Questions
1. Why might I want to use it?
You might be migrating from an engine that is no longer being licensed and don't want to learn a new engine and toolchain.
You might want to develop a game using a lot of complex and well-tested objects which might be tedious to implement on your own.
You might want to run or make modifications for a game using Nuclide and need full control over what you can do.
2. How free is Nuclide?
Everything in Nuclide is free software. The copyright terms for the game-logic are very permitting. Nuclide does not use the GPL as a point of reference in terms of license, it instead uses a ISC-like license. This means you can use, copy, modify and distribute the code and work resulting from it for any purpose.
- Note
- Please read the very short 'LICENSE' document for details.
3. What are the alternatives?
Implementing systems such as prediction, complex map objects and entities on your own, from scratch - or licensing another engine such as Source that ships with its own Source SDK Base.
4. Any example projects?