snaxgameengine / snax

SnaX Game Engine - Open Source
Other
21 stars 5 forks source link

SnaX Game Engine

Please note: This project is no longer maintained or in development.

License

SnaX Game Engine - https://github.com/snaxgameengine/snax
Licensed under the MIT License http://opensource.org/licenses/MIT.
SPDX-License-Identifier: MIT
Copyright (c) 2013 - 2022 Frank-Vegar Mortensen <franksvm(at)outlook(dot)com>.

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

What is SnaX

SnaX is a fast and lightweight development tool for 3D-graphics applications based on a real-time, visual programming concept. Real-time because every update you make to your program can be viewed instantly as you develop - Visual because programming happens in a graphical environment, where writing code is replaced by linking together small, precompiled blocks of functionality called Chips.

SnaX Game Engine Promo video - Click to play on YouTube!

Screen shots are available in the image gallery!

SnaX is built for Windows 10, using DirectX 12 for state-of-the-art graphics. It got a bunch of cool features including:

SnaX Overview

Here is a schematic overview of the different parts of SnaX, and how they depend on each other:

Schematic overview of SnaX Click image for larger version!

The core engine of SnaX is quite tiny, and contains the basic functionality of any SnaX Program. These modules form what we can call the SnaX Runtime, and are together with the Chips, all the binary executable code for a Snax application (in addition to third party dependencies, of course). The Runtime reads the SnaX Project Files, that is, the source code for any SnaX application. These files are stored in either a json or binary format, and are generated by SnaX Developer, the tool we use for building our applications. They describes which chips to use, how to configure them, and how to link them together in classes. When bundled together with the Chips and the Runtime, they form the application or the game you create using SnaX.

The Chips contain most of the functionality in SnaX - Everything from graphics, math, program logics to physics. Each type of chip contains a limited, well defined functionality and interface, and when connected together with other types of chips, they form increasingly complex functionality, up till the point where you have a complete working game or application. Chips make up a hierarchy of types, and it is easy to derive new types from existing ones, for implementing all kinds of new, custom functionality. Chips are written in C++.

Chips can have an associated property dialog that can be opened in SnaX Developer, for doing configuration settings on each individual chip.

Getting started with SnaX

Prerequisites

How to build SnaX

Note about Qt: SnaX Developer is using Qt for its UI. All Qt's custom build steps (UIC, MOC, RCC) are handled automatically. If you want to edit the .ui files (user interface designs), you can do so by opening them in QtDesigner, located in your build directories here:
./vcpkg/installed/x64-windows/tools/Qt6/bin/designer.exe

Note that projects you develop using SnaX are not depending on Qt, as all window handling and user inputs are done natively in the viewer application (SnaXViewer.exe).

How to use SnaX

There is a limited amount of documentation available:

There are also a few examples to play with in the ./Common/Examples/ directory.

How to create an installer when releasing a new version of SnaX

Roadmap

What are some of the plans for SnaX going forward?
The lists are not given in any specific order, nor is there given any time frame for any of the items.

Short term

Long term

Third party dependencies

SnaX depends on many open source libraries, including (license in parentheses):

Most of these libraries are managed and built by VCPKG (* excepted).

Note that our Primitives dynamic library is licensed under LGPL-2.1, because of the license terms of ilmola/generator.

Additional dependencies for SnaX Developer

Note that these are not needed by the games or applications you develop using SnaX. It is only the development tool itself that uses Qt, not the software created by using it.