Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

0.0.6dev #31

Merged
merged 6 commits into from
Dec 10, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 0 additions & 6 deletions docs/_static/css/algolia.css

This file was deleted.

10 changes: 5 additions & 5 deletions docs/_static/css/custom.css
Original file line number Diff line number Diff line change
Expand Up @@ -592,6 +592,11 @@
background: var(--highlight-background-color);
}

dl.simple dt {

Check notice

Code scanning / Csslint (reported by Codacy)

Element (dl.simple) is overqualified, just use .simple without element name. Note documentation

Element (dl.simple) is overqualified, just use .simple without element name.

Check warning

Code scanning / Csslint (reported by Codacy)

Rule doesn't have all its properties in alphabetical order. Warning documentation

Rule doesn't have all its properties in alphabetical order.

Check warning

Code scanning / Stylelint (reported by Codacy)

Expected selector "dl.simple dt" to come before selector "html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) dl dt" (no-descending-specificity) Warning documentation

Expected selector "dl.simple dt" to come before selector "html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) dl dt" (no-descending-specificity)

Check warning

Code scanning / Stylelint (reported by Codacy)

Expected selector "dl.simple dt" to come before selector "html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple).method>dt" (no-descending-specificity) Warning documentation

Expected selector "dl.simple dt" to come before selector "html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple).method>dt" (no-descending-specificity)

Check warning

Code scanning / Stylelint (reported by Codacy)

Expected selector "dl.simple dt" to come before selector "html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple).method dt" (no-descending-specificity) Warning documentation

Expected selector "dl.simple dt" to come before selector "html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple).method dt" (no-descending-specificity)

Check warning

Code scanning / Stylelint (reported by Codacy)

Expected selector "dl.simple dt" to come before selector "html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple).class dt" (no-descending-specificity) Warning documentation

Expected selector "dl.simple dt" to come before selector "html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple).class dt" (no-descending-specificity)

Check warning

Code scanning / Stylelint (reported by Codacy)

Expected selector "dl.simple dt" to come before selector "html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple).function dt" (no-descending-specificity) Warning documentation

Expected selector "dl.simple dt" to come before selector "html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple).function dt" (no-descending-specificity)

Check warning

Code scanning / Stylelint (reported by Codacy)

Expected selector "dl.simple dt" to come before selector "html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple).class>dt" (no-descending-specificity) Warning documentation

Expected selector "dl.simple dt" to come before selector "html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple).class>dt" (no-descending-specificity)

Check warning

Code scanning / Stylelint (reported by Codacy)

Expected selector "dl.simple dt" to come before selector "html.writer-html5 .rst-content dl:not(.docutils)>dt" (no-descending-specificity) Warning documentation

Expected selector "dl.simple dt" to come before selector "html.writer-html5 .rst-content dl:not(.docutils)>dt" (no-descending-specificity)

Check warning

Code scanning / Stylelint (reported by Codacy)

Expected selector "dl.simple dt" to come before selector "html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt" (no-descending-specificity) Warning documentation

Expected selector "dl.simple dt" to come before selector "html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt" (no-descending-specificity)

Check warning

Code scanning / Stylelint (reported by Codacy)

Expected selector "dl.simple dt" to come before selector "html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) dt" (no-descending-specificity) Warning documentation

Expected selector "dl.simple dt" to come before selector "html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) dt" (no-descending-specificity)

Check warning

Code scanning / Stylelint (reported by Codacy)

Expected selector "dl.simple dt" to come before selector "html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple).attribute>dt" (no-descending-specificity) Warning documentation

Expected selector "dl.simple dt" to come before selector "html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple).attribute>dt" (no-descending-specificity)

Check warning

Code scanning / Stylelint (reported by Codacy)

Expected selector "dl.simple dt" to come before selector "html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) dl:not(.field-list)>dt" (no-descending-specificity) Warning documentation

Expected selector "dl.simple dt" to come before selector "html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) dl:not(.field-list)>dt" (no-descending-specificity)

Check warning

Code scanning / Stylelint (reported by Codacy)

Expected selector "dl.simple dt" to come before selector "html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple).function>dt" (no-descending-specificity) Warning documentation

Expected selector "dl.simple dt" to come before selector "html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple).function>dt" (no-descending-specificity)

Check warning

Code scanning / Stylelint (reported by Codacy)

Expected selector "dl.simple dt" to come before selector "html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple).attribute dt" (no-descending-specificity) Warning documentation

Expected selector "dl.simple dt" to come before selector "html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple).attribute dt" (no-descending-specificity)
border-bottom: 1px solid var(--hr-color);

Check notice

Code scanning / Csslint (reported by Codacy)

Expected end of value but found 'var(--hr-color)'. Note documentation

Expected end of value but found 'var(--hr-color)'.

Check warning

Code scanning / Stylelint (reported by Codacy)

Expected indentation of 2 spaces (indentation) Warning documentation

Expected indentation of 2 spaces (indentation)
background: none !important;

Check notice

Code scanning / Csslint (reported by Codacy)

Use of !important Note documentation

Use of !important

Check warning

Code scanning / Stylelint (reported by Codacy)

Expected indentation of 2 spaces (indentation) Warning documentation

Expected indentation of 2 spaces (indentation)
}

html.writer-html5 .rst-content dl:not(.docutils) dl:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) > dt, html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) dl:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) > dt {
border-left-color: var(--highlight-background-emph-color);
background: var(--highlight-background-color);
Expand Down Expand Up @@ -1905,8 +1910,3 @@
padding: 3px 5px;
}
}

/* Giscus */
#godot-giscus {
margin-bottom: 1em;
}
434 changes: 21 additions & 413 deletions docs/_static/js/custom.js

Large diffs are not rendered by default.

Binary file added docs/_static/rect.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
49 changes: 20 additions & 29 deletions docs/conf.py
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
import os
import subprocess

breathe_projects = {'KrakenEngine': 'xml'}
breathe_default_project = 'KrakenEngine'
breathe_projects = {"KrakenEngine": "xml"}

Check warning

Code scanning / Pylint (reported by Codacy)

Constant name "breathe_projects" doesn't conform to UPPER_CASE naming style Warning documentation

Constant name "breathe_projects" doesn't conform to UPPER_CASE naming style
breathe_default_project = "KrakenEngine"

Check warning

Code scanning / Pylintpython3 (reported by Codacy)

Constant name "breathe_default_project" doesn't conform to UPPER_CASE naming style Warning documentation

Constant name "breathe_default_project" doesn't conform to UPPER_CASE naming style

Check warning

Code scanning / Pylint (reported by Codacy)

Constant name "breathe_default_project" doesn't conform to UPPER_CASE naming style Warning documentation

Constant name "breathe_default_project" doesn't conform to UPPER_CASE naming style

needs_sphinx = "7.1"

extensions = [
'breathe',
'sphinx.ext.autosectionlabel',
'notfound.extension',
"breathe",
"sphinx.ext.autosectionlabel",
"notfound.extension",
]

notfound_context = {
Expand All @@ -35,22 +35,22 @@

on_rtd = os.environ.get("READTHEDOCS", None) == "True"
if on_rtd:
subprocess.call('doxygen', shell=True)
subprocess.call("doxygen", shell=True)

Check notice

Code scanning / Bandit (reported by Codacy)

Starting a process with a partial executable path Note documentation

Starting a process with a partial executable path

Check notice

Code scanning / Bandit (reported by Codacy)

subprocess call with shell=True seems safe, but may be changed in the future, consider rewriting without shell Note documentation

subprocess call with shell=True seems safe, but may be changed in the future, consider rewriting without shell
else:
notfound_urls_prefix = ''

templates_path = ["_templates"]

source_suffix = '.rst'
source_suffix = ".rst"

Check warning

Code scanning / Pylintpython3 (reported by Codacy)

Constant name "source_suffix" doesn't conform to UPPER_CASE naming style Warning documentation

Constant name "source_suffix" doesn't conform to UPPER_CASE naming style

Check warning

Code scanning / Pylint (reported by Codacy)

Constant name "source_suffix" doesn't conform to UPPER_CASE naming style Warning documentation

Constant name "source_suffix" doesn't conform to UPPER_CASE naming style
source_encoding = "utf-8-sig"

master_doc = 'index'
master_doc = "index"

Check warning

Code scanning / Pylintpython3 (reported by Codacy)

Constant name "master_doc" doesn't conform to UPPER_CASE naming style Warning documentation

Constant name "master_doc" doesn't conform to UPPER_CASE naming style

Check warning

Code scanning / Pylint (reported by Codacy)

Constant name "master_doc" doesn't conform to UPPER_CASE naming style Warning documentation

Constant name "master_doc" doesn't conform to UPPER_CASE naming style

project = 'Kraken Engine'
copyright = '2024, Derrick Martinez'
author = 'Derrick Martinez'
project = "Kraken Engine"

Check warning

Code scanning / Pylintpython3 (reported by Codacy)

Constant name "project" doesn't conform to UPPER_CASE naming style Warning documentation

Constant name "project" doesn't conform to UPPER_CASE naming style

Check warning

Code scanning / Pylint (reported by Codacy)

Constant name "project" doesn't conform to UPPER_CASE naming style Warning documentation

Constant name "project" doesn't conform to UPPER_CASE naming style
copyright = "2024, Derrick Martinez"

Check warning

Code scanning / Prospector (reported by Codacy)

Redefining built-in 'copyright' (redefined-builtin) Warning documentation

Redefining built-in 'copyright' (redefined-builtin)

Check notice

Code scanning / Pylintpython3 (reported by Codacy)

Redefining built-in 'copyright' Note documentation

Redefining built-in 'copyright'

Check warning

Code scanning / Pylintpython3 (reported by Codacy)

Constant name "copyright" doesn't conform to UPPER_CASE naming style Warning documentation

Constant name "copyright" doesn't conform to UPPER_CASE naming style

Check warning

Code scanning / Pylint (reported by Codacy)

Constant name "copyright" doesn't conform to UPPER_CASE naming style Warning documentation

Constant name "copyright" doesn't conform to UPPER_CASE naming style

Check notice

Code scanning / Pylint (reported by Codacy)

Redefining built-in 'copyright' Note documentation

Redefining built-in 'copyright'
author = "Derrick Martinez"

Check warning

Code scanning / Pylintpython3 (reported by Codacy)

Constant name "author" doesn't conform to UPPER_CASE naming style Warning documentation

Constant name "author" doesn't conform to UPPER_CASE naming style

Check warning

Code scanning / Pylint (reported by Codacy)

Constant name "author" doesn't conform to UPPER_CASE naming style Warning documentation

Constant name "author" doesn't conform to UPPER_CASE naming style

version = os.getenv("READTHEDOCS_VERSION", "0.0.3")
version = os.getenv("READTHEDOCS_VERSION", "0.0.6")

Check warning

Code scanning / Pylint (reported by Codacy)

Constant name "version" doesn't conform to UPPER_CASE naming style Warning documentation

Constant name "version" doesn't conform to UPPER_CASE naming style
release = version

exclude_patterns = ["_build"]
Expand All @@ -66,7 +66,6 @@
html_theme_options = {
"logo_only": True,
"collapse_navigation": False,
"display_version": False,
}

html_title = f"Kraken Engine ({version}) documentation in English"
Expand All @@ -75,33 +74,25 @@
"display_github": True, # Integrate GitHub
"github_user": "durkisneer1", # Username
"github_repo": "Kraken-Engine", # Repo name
"github_version": "0.0.3", # Version
"conf_py_path": "/", # Path in the checkout to the docs root
"github_version": "main", # Version
"conf_py_path": "/docs/", # Path in the checkout to the docs root
"kraken_docs_title": html_title,
"kraken_docs_basepath": "https://kraken-engine.readthedocs.io/",
"kraken_docs_suffix": ".html",
"kraken_default_lang": "en",
"kraken_canonical_version": "stable",
# Set this to `True` when in the `latest` branch to clearly indicate to the reader
# that they are not reading the `stable` documentation.
"kraken_is_latest": False,
"kraken_version": "0.0.3",
"kraken_is_latest": True,
"kraken_version": "0.0.6",
# Enables a banner that displays the up-to-date status of each article.
"kraken_show_article_status": True,
}

html_logo = "_static/kraken-engine-banner.png"
html_static_path = ['_static']

html_css_files = [
'css/algolia.css',
'https://cdn.jsdelivr.net/npm/@docsearch/css@3',
"css/custom.css",
]

html_js_files = [
"js/custom.js",
]
html_static_path = ["_static"]

Check warning

Code scanning / Pylint (reported by Codacy)

Constant name "html_static_path" doesn't conform to UPPER_CASE naming style Warning documentation

Constant name "html_static_path" doesn't conform to UPPER_CASE naming style
html_css_files = ["css/custom.css"]

Check warning

Code scanning / Pylint (reported by Codacy)

Constant name "html_css_files" doesn't conform to UPPER_CASE naming style Warning documentation

Constant name "html_css_files" doesn't conform to UPPER_CASE naming style
html_js_files = ["js/custom.js"]

Check warning

Code scanning / Pylint (reported by Codacy)

Constant name "html_js_files" doesn't conform to UPPER_CASE naming style Warning documentation

Constant name "html_js_files" doesn't conform to UPPER_CASE naming style

file_insertion_enabled = False

Expand All @@ -110,4 +101,4 @@

gettext_compact = False

epub_tocscope = 'includehidden'
epub_tocscope = "includehidden"

Check warning

Code scanning / Pylintpython3 (reported by Codacy)

Constant name "epub_tocscope" doesn't conform to UPPER_CASE naming style Warning documentation

Constant name "epub_tocscope" doesn't conform to UPPER_CASE naming style

Check warning

Code scanning / Pylint (reported by Codacy)

Constant name "epub_tocscope" doesn't conform to UPPER_CASE naming style Warning documentation

Constant name "epub_tocscope" doesn't conform to UPPER_CASE naming style
70 changes: 70 additions & 0 deletions docs/contributing/guidelines.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
Coding Guidelines
=================

This document outlines the coding guidelines for Kraken Engine.
These guidelines are intended to ensure that Kraken stays in its best shape and documentation is consistent and easy to read.

General Principles
------------------

- **Consistency**: Follow the style of the surrounding code. This is elaborated in the next section.
- **Clarity**: Write code that's easy to read and understand. This means using descriptive names for variables, functions, and classes.
- **Documentation**: Write clear, concise, and useful comments.
- **Testing**: Write tests for your code (you may ask an experienced contributor to assist you).
- **Error Handling**: Check for errors and handle them appropriately.


Style Guidelines
----------------

Kraken Engine uses a consistent code style defined by the ``.clang-format`` file in the root directory. Additionally, the ``.pre-commit-config.yaml`` file automatically runs clang-format on staged files before committing, ensuring proper formatting.

However, the formatter doesn't catch everything. Please follow these additional guidelines:

- **Naming Conventions**:
- Classes, Structs, and Enums: ``PascalCase``
- Functions and Variables: ``camelCase``
- Constants: ``ALL_CAPS``
- Header Files: ``PascalCase.hpp``
- Source Files: ``snake_case.cpp``
- **Header Includes**: Only include headers that are strictly necessary in a given file. Avoid including general-purpose headers (e.g., ``<iostream>``) in header files unless they are directly needed there. Instead, include them in source files where applicable. This practice reduces unnecessary dependencies and improves compile times.
- **Comments**: Focus comments on the *why* behind your code, not the *what*. Clear and descriptive function and variable names should make the code's intent self-explanatory.

Documentation Guidelines
------------------------

Kraken Engine uses **Sphinx** and **Doxygen** for generating documentation.
Follow these guidelines to maintain consistency and clarity:

Writing Docstrings
~~~~~~~~~~~~~~~~~~

When writing docstrings, adhere to the **Doxygen** format. Here's an example:

.. code-block:: cpp

/**
* @brief Adds two numbers.
*
* @param a The left-hand side operand.
* @param b The right-hand side operand.
*
* @return The sum of a and b.
*/
int addNums(int a, int b);

For more details on Doxygen formatting, refer to the `official Doxygen documentation <https://www.doxygen.nl/manual/docblocks.html>`_.

Writing Documentation
~~~~~~~~~~~~~~~~~~~~~

Use **reStructuredText (RST)** format for creating and editing documentation files.

- If you add a new class, function, or namespace to the codebase, create a corresponding ``.rst`` file in the appropriate directory under ``docs/``.
- Include the following details in the ``.rst`` file:
- A clear description of the class, function, or namespace.
- Example usage code (if applicable).
- Doxygen's generated documentation.

For guidance on RST syntax, check the `official Sphinx documentation <https://www.sphinx-doc.org/en/master/usage/restructuredtext/index.html>`_.
You can also review existing ``.rst`` files in the repository as examples.
70 changes: 67 additions & 3 deletions docs/contributing/how_to_contribute.rst
Original file line number Diff line number Diff line change
@@ -1,7 +1,71 @@
How To Contribute
=================

This page is currently under construction. Please check back later for updates.
Welcome!
Your contributions help make Kraken Engine better for everyone,
whether it's fixing a bug, adding a feature, or improving the documentation.

.. image:: ../_static/under_construction.gif
:alt: Page Under Construction
Prerequisites
-------------

Before you begin, ensure you have:

- A GitHub account
- Git installed locally
- A C/C++ compiler (e.g., GCC, Clang, MSVC)
- Python 3.9 or later
- Doxygen
- Familiarity with our :doc:`guidelines`

Setting Up
----------

The Kraken Engine repository uses a `dev` branch (e.g., ``0.0.6dev``) for upcoming releases.
Base your work on this branch.

1. Fork and clone the current `dev` branch.
2. Run ``pip install -r requirements.txt`` to install dependencies.

Compiling
---------

To control which of the following targets you want to build, change the options in ``meson_options.txt``.
For example, both ``build_example`` and ``build_tests`` set to ``false`` builds only the library.
Then, run either of the following commands:

Library Only
~~~~~~~~~~~~

.. code-block:: bash

meson setup build
meson compile kraken -C build

Library + Example Demo
~~~~~~~~~~~~~~~~~~~~~~

.. code-block:: bash

meson setup build
meson compile krakenapp -C build

Library + Test Suite
~~~~~~~~~~~~~~~~~~~~

.. code-block:: bash

meson setup build
meson compile krakentests -C build


Making Changes
--------------

*Before making changes to Kraken, please read the* :doc:`guidelines`.

1. Commit and push your changes to your fork.
2. Submit a pull request to the `dev` branch of the Kraken Engine repository.
3. Address any feedback from maintainers.
4. Once approved, your changes will be merged, and you will be credited in the changelog.

Thank you for contributing to Kraken Engine!
37 changes: 37 additions & 0 deletions docs/contributing/testing.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
Testing Your Contributions
==========================

Before submitting a pull request, you should run tests and preview the documentation to ensure that your changes are correct.

Testing Code
----------------

If you haven't already, read through building the *test suite* in the :doc:`how_to_contribute` section.

Tests are written using the Google Test framework and can be found in the ``tests`` directory.
After making changes or adding new features, run the test suite to ensure that your changes do not break existing or new functionality.

Previewing Documentation
------------------------

1. Install the required dependencies via pip:

.. code-block:: bash

pip install -r docs/requirements.txt

2. Generate the documentation with Doxygen:

.. code-block:: bash

cd docs
doxygen

1. Build the documentation:

.. code-block:: bash

make -C docs html

You will find the generated documentation in the ``docs/_build/html`` directory.
If everything looks as intended, you can submit your pull request.
49 changes: 35 additions & 14 deletions docs/getting_started/create_window.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,30 +2,51 @@ Creating a Window
=================

After following the :doc:`installation` guide, you are ready for your first Kraken Engine program.
The following code creates a window and keeps it open until the user closes it.

.. code-block:: c++
:linenos:

#include <KrakenEngine.hpp>

int main()
{
int main() {
kn::window::init({800, 600});
kn::time::Clock clock;
kn::Event event;

bool done = false;
while (!done)
{
clock.tick();

for (const auto &event : kn::window::getEvents())
if (event.type == kn::QUIT)
done = true;

kn::window::clear();
while (kn::window::isOpen()) {
while (kn::window::pollEvent(event)) {
// handle events
}
kn::window::flip();
}

kn::window::quit();

return EXIT_SUCCESS;
}

Explanation
-----------

This simple program serves as a basic skeleton for applications built with the Kraken Engine.
Let's break down the key components that make this program function:

* Initializing the Window
``kn::window::init({800, 600})`` sets up a rendering window with a resolution of 800x600 pixels.
This function prepares the underlying graphical context, ensuring the application is ready to display content.

* Event Handling
Before entering the main game loop, an ``Event`` union is instantiated.
This union acts as a container for user inputs and system events.
The call to ``kn::window::pollEvent(event)`` continuously monitors for user interactions or system-generated signals, populating the event union with the details of the most recent occurrence.

* Closing the Application
By default, Kraken Engine applications close when the user clicks the window’s close button.
Upon detecting this event internally, the call to ``kn::window::close()`` ends the game loop.

* Updating the Display
``kn::window::flip()`` acts as the final piece in the game loop, swapping the back buffer to the front.
This step ensures that any rendering operations performed during the loop are visually updated on the screen.
Think of it as flipping the pages of a book—ensuring smooth, sequential updates for the user.

This template establishes a foundation for more advanced game logic and rendering.
In-depth tutorials on the next page cover the more intricate aspects of the Kraken Engine.
Loading
Loading