nuclide/Documentation/About.md

112 lines
7.1 KiB
Markdown
Raw Normal View History

# About {#about}
The Nuclide project produces a freely available game-logic component and
development platform on top of [FTE](https://www.fteqw.org); which is a featureful engine based on the **1999** source code release of **Quake** (1996) by id Software.
![](wand.png) **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](@ref progs).
## Physics
Nuclide integrates [Open Dynamics Engine](http://www.ode.org) 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](@ref propdata) 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](https://www.fteqcc.org).
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](@ref 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? {#why}
![](cross.png) You might be migrating from an engine that is no longer being licensed and don't want to learn a new engine and toolchain.
![](bricks.png) 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.
![](wrench.png) 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? {#license}
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? {#alternatives}
Implementing systems such as prediction, complex map objects and entities on
your own, from scratch - or licensing another engine such as [Source](https://partner.steamgames.com/doc/sdk/uploading/distributing_source_engine) that ships with its own **Source SDK Base**.
## 4. Any example projects? {#examples}
- [The Wastes](https://store.steampowered.com/app/793670) is a commerical game built using Nuclide.
- [Rad-Therapy](https://www.github.com/eukara/freehl) is a clone of 'Half-Life: Deathmatch' on Nuclide.
- [Tactical-Retreat](https://www.github.com/eukara/freecs) is a clone of 'Counter-Strike', for Rad-Therapy.