- README.md Formatting

This commit is contained in:
2025-07-16 23:35:32 -04:00
parent c72d1afe32
commit 86286e84d7

View File

@@ -53,8 +53,8 @@ Some main areas where the engine strays from the GNU standard includes the follo
fennec Standards:
* As per the GNU standard, macros should be `SCREAMING_SNAKE_CASE`. Additionally, Macros should be preceded by `<APP_NAME>_`.
Macros that wrap C-Style functions may use normal `snake_case`.
* As per the GNU standard, macros should be `SCREAMING_SNAKE_CASE`. Additionally, Macros should be preceded by
`<APP_NAME>_`. Macros that wrap C-Style functions may use normal `snake_case`.
- Header Guards should be implemented using `#ifndef`, `#define`, and `#endif` for portability.
The naming convention for Header Guards is as follows: `<APP_NAME>_<DIRECTORY_PATH>_<FILE_NAME>_H`.
@@ -72,17 +72,18 @@ fennec Standards:
<br><br>
<a id="f1"></a>
<sup>[1]</sup> If we were to use the exception paradigm for all erroneous behaviour, we couldn't
guarantee that the state will not be corrupted when an exception is thrown. The behaviour afterward is
undefined because of this, and we also don't really know when, how, or where that exception will be handled.
The assertion paradigm is better at handling this because you are defining erroneous behaviour in the code and how
it is handled. In a debug build we can immediately halt the program, we don't care about the state afterward, only
beforehand. Now for a release build, this is first and foremost a game engine, so we want to crash as gracefully as
possible, prevent data loss, and get some debug information for it. fennec defines its own `assert` macro to
be used, defining a hook in the private version of the function. This hook is used to clean up any state information
within the engine and may be used to send immediate events to listeners so that outside functionality may decide
how to handle the impending crash. In Debug Mode there is nothing that can be done to stop the crash, as soon
as the branch finishes, `abort()` will be called.
<sup>[1]</sup> If we were to use the exception paradigm for all erroneous behaviour, we couldn't guarantee
that the state will not be corrupted when an exception is thrown. The behaviour afterward is undefined
because of this, and we also don't really know when, how, or where that exception will be handled.
The assertion paradigm is better at handling this because you are defining erroneous behaviour in the
code and how it is handled. In a debug build we can immediately halt the program, we don't care about
the state afterward, only beforehand. Now for a release build, this is first and foremost a game engine,
so we want to crash as gracefully as possible, prevent data loss, and get some debug information for it.
fennec defines its own `assert` macro to be used, defining a hook in the private version of the
function. This hook is used to clean up any state information within the engine and may be used to send
immediate events to listeners so that outside functionality may decide how to handle the impending crash.
In Debug Mode there is nothing that can be done to stop the crash, as soon as the branch finishes,
`abort()` will be called.
<br>
@@ -140,6 +141,11 @@ for more info.
&ensp; By default, the CMake generator used is Ninja, which requires Ninja to be installed. You can modify the
build scripts to use another build manager, see the [CMake documentation for available generators](https://cmake.org/cmake/help/latest/manual/cmake-generators.7.html).
&ensp; I will at no point provide official cross-compilation toolchains for fennec, if you wish to compile your project for
both Windows and Linux, working on Windows with WSL is likely your best option besides dual-booting. For Android and
iOS, using the GCC and Clang cross-compilation toolchains, respectively, will suffice.
<br>
<a id="building-on-windows"></a>
@@ -202,33 +208,30 @@ information displayed is correct.
### Licensing
The following content of this section is not legal advice, nor is it legally binding, and nor does it change the terms of the license.
The following content of this section is not legal advice, nor is it legally binding, and nor does it change the terms
of the license. Please seek legal council if you have any concerns.
fennec is licensed under GPLv3. The primary reason for the choice of license is to dissuade corporations from modifying
&ensp; fennec is licensed under GPLv3. The primary reason for the choice of license is to dissuade corporations from modifying
fennec and using it in a commercial manner. This of course does not bar them from using fennec commercially, however
it will prevent them from being able to make the derivative work proprietary. You are free to use and redistribute
fennec however you wish according to the terms of the license, which does not bar you from commercializing software
based on fennec.
If you wish to protect your game files, assets and generated content do not constitute a covered work and may be
&ensp; If you wish to protect your game files, assets and generated content do not constitute a covered work and may be
copyrighted under a non-compliant license. Think of it in terms of using Blender to create a mesh for a game, then
licensing that mesh under another license.
Any code that is linked against fennec or uses any part is by definition a covered work must be licensed under GPLv3.
As long as you use the official editor, it will properly include licenses in project content when provided a license
&ensp; As long as you use the official editor, it will properly include licenses in project content when provided a license
and the name of the license holder. Archive packs will include the license holders non-GPLv3 license in them and any
linked code will be covered by GPLv3 under the name of the license holder. Be aware that the parts of your project
licensed under GPLv3 must be available upon request.
A release project will consist of an executable, a shared library for your code, an archive pak, and streamable assets.
&ensp; A release project will consist of an executable, a shared library for your code, an archive pak, and streamable assets.
The executable and shared library are protected under the GPLv3 license, while the archive pak and streamable assets are
protected under your license.
I will at no point provide official cross-compilation toolchains for fennec, if you wish to compile your project for
both Windows and Linux, working on Windows with WSL is likely your best option besides dual-booting. For Android and
iOS, using the GCC and Clang cross-compilation toolchains, respectively, will suffice.
It is to my discretion whether I enforce the terms of the license on a party.
The following practices are more likely to get my attention and enforcement: