Skip to content

arcticengine/arctic

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1,165 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Arctic Engine

Designed to give you control and not take anything away.

Arctic Engine is an open-source free game engine released under the MIT license. Arctic Engine is implemented in C++ and focuses on simplicity.

Many developers have forgotten exactly why it is that we make games. It's joyless, disillusioning and discouraging for them.

In the 80's and 90's it was possible for a programmer to make a game alone and it was Fun.

Arctic Engine returns the power to the C++ programmer and makes game development fun again.

Rendering architecture

Arctic Engine provides two rendering paths that share a familiar API.

Sprite is the software renderer. Pixel data lives in CPU memory and all drawing (DrawLine, DrawTriangle, DrawRectangle, SetPixel, etc.) is performed on the CPU. This is the default path you get through #include "engine/easy.h". It is great for learning, pixel art, procedural generation, and any situation where you want direct per-pixel control.

HwSprite is the hardware-accelerated renderer. Texture data lives on the GPU (OpenGL / OpenGL ES), and drawing is performed via GPU draw calls. The Draw() API mirrors Sprite, so switching from software to hardware rendering in most cases only requires replacing Sprite with HwSprite in your declarations. HwSprite is used in the antarctica_pyramids example project. It is available through engine/easy_hw_sprite.h (also reachable via engine/engine.h, which easy.h includes).

3D and low-level GPU access

Beyond 2D sprites, the engine ships with infrastructure for 3D rendering. These headers are not part of the easy.h convenience include and should be included directly as needed:

3D math -- Vec3F, Vec4F, Mat44F, QuaternionF, Frustum3F, Bound3F (headers in engine/).

Mesh system -- the Mesh class with multiple vertex streams, primitive generators (Mesh_GeneratePlane, Mesh_GenerateCube, Mesh_GenerateTorus, Mesh_PatchedSphere), and file loaders for OBJ and PLY formats.

OpenGL wrappers -- GlProgram (shader programs), GlBuffer (vertex/index buffers), GlTexture2D (textures), GlFramebuffer (render targets). These give you direct but convenient access to the GPU pipeline for custom 3D rendering, shadow maps, post-processing, and anything else OpenGL can do.

Skeletal animation -- piSkeleton for bone hierarchies and skeletal transforms.

API documentation: https://seaice.gitlab.io/arctic/index.html

Main discussion forum (in Russian): https://gamedev.ru/community/arctic/forum/

Windows: antarctica pyramids Windows build status wizard Windows build status filetest Windows build status

Linux: Linux build status

Scrum board: https://trello.com/b/9AnYCH7e/arctic-engine

Code of Conduct: CODE_OF_CONDUCT.md

Arctic Engine follows a bit modified Google C++ Style Guide: https://google.github.io/styleguide/cppguide.html See STYLE.md for the details.

License

Licensed under the MIT license, see License.txt for details.

tl;drLegal: https://www.tldrlegal.com/l/mit

Credits

See License.txt for details.

Arctic Engine code:

  • Huldra
  • Vlad2001_MFS
  • The Lasting Curator

Third-party components:

ArcticOne font:

  • Barry Schwartz
  • Huldra
  • Vitaliy Manushkin

Third-party data:

  • Living Nightmare by snowflake Ft: Blue Wave Theory (http://dig.ccmixter.org/files/snowflake/54422) (c) copyright 2016 Licensed under a Creative Commons Attribution (3.0) license.
  • Some of the sounds in this project were created by David McKee (ViRiX) soundcloud.com/virix

Tools used

UML Editor

IDE

Python

Documentation generator

Bitmap Font Generator

Linter

  • Copyright (c) 2009 Google Inc. All rights reserved.

Ubuntu and Raspbian linux build instruction

Just execute the following commands in terminal line by line to install all the required libraries and tools, clone the repository to ~/arctic, build and run the demo project:

sudo apt-get install git cmake clang libasound2-dev libglu1-mesa-dev freeglut3-dev libgles2-mesa-dev
cd ~
git clone https://gitlab.com/seaice/arctic.git
cd ~/arctic
cd ./wizard
cmake .
make -j 4
./wizard

Raspberry Pi notes

Arctic Engine has been tested only on Raspberry Pi 3 model B so far.

If you experience low sound quality on built-in audio output, in /boot/config.txt add the following line:

audio_pwm_mode=2

You might need to update your firmware in order for this to work.

VS Code and Cursor notes

To set up the project in VS Code or Cursor, open your project directory as the workspace, then create .vscode/c_cpp_properties.json with include paths pointing at the arctic engine directory:

{
    "configurations": [
        {
            "name": "Win32",
            "includePath": [
                "${workspaceFolder}/../arctic",
                "${workspaceFolder}"
            ],
            "defines": [],
            "compilerPath": "C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.xx.xxxxx/bin/Hostx64/x64/cl.exe",
            "cStandard": "c11",
            "cppStandard": "c++14",
            "intelliSenseMode": "windows-msvc-x64"
        }
    ],
    "version": 4
}

Adjust the compilerPath to match your compiler installation.