From 86286e84d74620815ac45e4ad67e0618ef353811 Mon Sep 17 00:00:00 2001 From: Medusa Slockbower Date: Wed, 16 Jul 2025 23:35:32 -0400 Subject: [PATCH] - README.md Formatting --- README.md | 47 +++++++++++++++++++++++++---------------------- 1 file changed, 25 insertions(+), 22 deletions(-) diff --git a/README.md b/README.md index 9df1a7b..889cd29 100644 --- a/README.md +++ b/README.md @@ -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 `_`. - 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 + `_`. 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: `___H`. @@ -72,17 +72,18 @@ fennec Standards:

-[1] 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. +[1] 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.
@@ -140,6 +141,11 @@ for more info.   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). + +  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. +
@@ -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 +  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 +  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 +  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. +  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: