Skip to content
A multi-platform 2D game engine
C++ C CMake Other
Branch: master
Clone or download

Latest commit

encelo Set nCine major, minor and patch versions for tags
- Use timestamp based nCine version if any of the Git commands fails
- Rename version variables to resemble CMake ones
Latest commit 985bc37 Oct 17, 2019

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
android Fix ImGui and Tracy include directories on Android Oct 11, 2019
benchmarks Rename some MSVC related CMake variables Aug 3, 2019
cmake Set nCine major, minor and patch versions for tags Oct 20, 2019
include Add some methods to the animated sprites class Oct 11, 2019
scripts Add push fields methods in Lua table utils classes Aug 25, 2019
src Fix ImGui and Tracy include directories on Android Oct 11, 2019
tests Add some methods to the animated sprites class Oct 11, 2019
unit_tests Move atomic implementation from headers to sources Sep 12, 2019
.clang-format Fix ImGui and Tracy include directories on Android Oct 11, 2019
.gitignore Modify Android scripts to compile with CMake Jan 1, 2018
CMakeLists.txt Add CMake options to disable library dependencies Sep 22, 2019
Doxyfile.in Use Windows subsystem instead of the console one Sep 22, 2019
Info.plist.in Make extensive use of CMake targets for linking May 22, 2019
LICENSE Add LTO support in MSVC and as a CMake option Jan 16, 2019
README.md Integrate with the RenderDoc graphics debugger Jun 11, 2019
azure-pipelines.yml Fix ImGui and Tracy include directories on Android Oct 11, 2019
config.h.in Integrate with the RenderDoc graphics debugger Jun 11, 2019
emscripten_shell.html.in Add port to Emscripten platform Aug 3, 2019
imconfig.h Update integrated version of ImGui to v1.72 Aug 10, 2019
io.github.ncine.desktop.in Unify the name of the startup test on all platforms Jan 14, 2017

README.md

nCine

nCine is a multi-platform 2D game engine.
It is released under the MIT License, Copyright (c) 2011-2019 Angelo Theodorou.
For additional information: https://ncine.github.io

Information

Dependencies

  • GLEW
  • GLFW 3.x
  • SDL 2
  • libpng
  • libwebp
  • OpenAL-soft
  • libogg, libvorbis, libvorbisfile
  • Lua 5.3
  • Dear ImGui

Supported Platforms and Compilers

  • Windows (MSVC, MinGW-w64 on MSYS2)
  • Mac Os X (Clang)
  • Linux (GCC, Clang)
  • Android (GCC, Clang)

Development Tools

  • git
  • CMake
  • Qt Creator
  • Doxygen with GraphViz
  • Valgrind
  • Cppcheck
  • Artistic Style and Uncrustify
  • Google Test and Gcovr
  • Tracy frame profiler
  • Google Benchmark
  • RenderDoc graphics debugger

Development

Conventions

Coding Conventions

  • Indent with tabs (4 spaces) but use spaces for continuation line alignment
  • Allman brackets
    • No brackets around one line conditional statements
  • Padding space after parenthesis headers (if, do, while, for, switch)
  • Align pointer and reference operator to the variable or function name
  • inline keyword always before virtual and static
  • Mark an override method with the override specifier and remove virtual
  • Access specifiers order: public, protected, private
    • One half indent for access specifiers (2 spaces)
  • Declarations order: typedefs and enums, data members, constructors, destructors, methods
    • Friends defined in the private section of a class, after everything else
  • One space padding around operators
  • Use of the explicit keyword all the times it makes sense

Naming Conventions

  • Pascal case for classes, enumerations, typedefs and constants
  • Camel case for variables, functions and parameters
  • All upper case for enumerators in an enumeration

Documenting Conventions

  • Put Doxygen brief descriptions in header files and additional documentation in implementation ones
  • Use Qt style for Doxygen detailed descriptions (/*! */) and end them with a period
You can’t perform that action at this time.