🎉 Celebrating 25 Years of GameDev.net! 🎉

Not many can claim 25 years on the Internet! Join us in celebrating this milestone. Learn more about our history, and thank you for being a part of our community!

nCine is a new 2D multi-platfom game engine

Started by
9 comments, last by Encelo 3 years ago

The nCine source code and related projects have been released on GitHub under the MIT license at https://github.com/ncine just some days ago.

Website: https://ncine.github.io
Twitter: https://twitter.com/nCine2D
Dev Updates: https://encelo.github.io/tags/#nCine

nCine is a multi-platform 2D game engine written in C++11 that runs on Linux, Windows, macOS and Android. The work started eight years ago, in June 2011, and has continued since.

It is not intended, of course, as a replacement for big engines like Unity and Unreal but more like a lightweight alternative to LibGDX and Cocos2d-x or to frameworks like LÖVE, SFML and LWJGL.

It features a fast sprite blitter with automatic batching (that can also render particles, animated sprites or mesh based ones), music streaming and sound effects, Lua scripting, integration with ImGui, RenderDoc and Tracy, high-performance custom made templated containers, bitmap font rendering with kerning, joystick support with gamepad mappings, multi level logger and more.
You can have a look at the gallery or read more about its features on the website.

Dependency libraries for PC and Android can be easily compiled from sources with a set of custom CMake scripts.
Some of them are libogg, libvorbis and OpenAL-soft for sound, SDL2 and GLFW for window and input, libpng and WebP for images (but many GPU compressed formats are supported too) plus OpenGL 3.3 and OpenGL ES 3.0 for rendering.

The development takes place mainly on Qt Creator and ArchLinux with the help of a whole set of additional open source tools like CMake, cppcheck, Valgrind, Doxygen, GraphViz, clang-format, Google Test, gcovr and Google Benchmark.
Additional developing tools are RenderDoc, apitrace and Tracy.

On GitHub you will find the engine, a Pong example project, a particle editor, the CMake scripts for compiling the dependencies, the data sets, the Jekyll website and the continuous integration artifacts.

.: Blog | LinkedIn | Twitter | GitHub | YouTube :. All problems in computer graphics can be solved with a matrix inversion. - James Blinn

Advertisement

The engine can now target the web through Emscripten. You can read more about the port in the latest development update and try the web tests on the project site.

.: Blog | LinkedIn | Twitter | GitHub | YouTube :. All problems in computer graphics can be solved with a matrix inversion. - James Blinn

I have just published the twelfth dev update of the nCine, illustrating the latest changes dedicated to improving the quality of life of users. ☺️
You can find all previous articles here: https://encelo.github.io/tags/#nCine

.: Blog | LinkedIn | Twitter | GitHub | YouTube :. All problems in computer graphics can be solved with a matrix inversion. - James Blinn

Does the engine support iOS? (Not saying it should or shouldn't - just curious.) Also, from what you've posted so far it looks like the engine uses OpenGL exclusively. Have you given any consideration to OpenGL's being deprecated on Apple platforms? (Again, just curious - I imagine OpenGL will continue to be supported on those platforms at least for a while.)

Thanks for your interest in the project, @Zakwayda. :)

You are right, at the moment the engine does not support iOS and there are no plans in the short-term to add it as a supported platform.

Speaking about supported graphics API, OpenGL was chosen when the project started, years before the  birth of modern low-level APIs. One of my long-term roadmap points is to abstract the rendering API used in the engine in order to support Vulkan. This change will also benefit a potential future port to Metal and thus iOS.

.: Blog | LinkedIn | Twitter | GitHub | YouTube :. All problems in computer graphics can be solved with a matrix inversion. - James Blinn

The culmination of five months of work is finally here: nCine 2019.10.

Some of the highlights for this release are:

  • Emscripten is supported as target platform: you can use the nCine for web games! :spider_web:
  • New AngelCode’s FNT format parser
  • When you compile the engine you can choose to disable the support for various dependency libraries and features
  • The user can now query the available fullscreen video modes on PC and choose one
  • Fixes and enhancements to OpenAL implementation
  • It is possible to defer shader checks and queries for a decreased starting time
  • Refactoring of the clock and timestamp classes
  • Update of Tracy integration to v0.5
  • Update of ImGui integration to v1.73

During the same time there has been a lot of work in side projects with the addition of:

  • ncline, the nCine command line tool
  • ncTemplate, a template project for applications and games made with the nCine
  • ncInvaders, a simplified version of Space Invaders made with the nCine

The site have also been updated with:

  • A web-tests page for you to run all tests, tools and games in the browser
  • A gallery with a selection of screenshots and videos
  • A download section
  • A video tutorials page with a list of video from the YouTube channel
  • A donate page that allows you to support and sponsor future development

.: Blog | LinkedIn | Twitter | GitHub | YouTube :. All problems in computer graphics can be solved with a matrix inversion. - James Blinn

Hi everyone. I have just added Qt5 as a backend on desktop platforms. It means that, besides GLFW and SDL, you can now also choose Qt5 for window handling and input dispatching.

The engine can now render inside a custom QOpenGLWidget so that it is now possible to create a Qt5 application with the engine embedded inside it.

I imagine this feature to be useful in case you want to do a tool like a map or a game editor and need a fast and small 2D engine to handle the rendering of your sprites or if you want to do a game or a prototype while using Qt5 for the interface.

If you have the Qt5 Gamepad library installed then gamepad input events will also be dispatched.

As you can see in the following video the ImGui and Nuklear integrations still work so that you can have all three GUI toolkits working at the same time.

.: Blog | LinkedIn | Twitter | GitHub | YouTube :. All problems in computer graphics can be solved with a matrix inversion. - James Blinn

I have just published a new release: nCine 2020.05.

Some of its highlights are covered by the following video:

  • JugiMap API supports the nCine
    • Sprite system enhancements
  • Qt5 desktop backend
  • Nuklear GUI integration
  • FileSystem API
  • Support for ANGLE rendering libraries on Windows

For a more detailed list of changes and improvements you can refer to the Release 2020.05 page.

Don't forget to check the updated DoxyGen documentation and the Lua API functions list.

.: Blog | LinkedIn | Twitter | GitHub | YouTube :. All problems in computer graphics can be solved with a matrix inversion. - James Blinn

I have published the Development Update #16, with updates from the second half of May to the first half of November 2020.

Some of the highlights:

.: Blog | LinkedIn | Twitter | GitHub | YouTube :. All problems in computer graphics can be solved with a matrix inversion. - James Blinn

I have published a retrospective article about my ten years of constant working on the nCine.

.: Blog | LinkedIn | Twitter | GitHub | YouTube :. All problems in computer graphics can be solved with a matrix inversion. - James Blinn

This topic is closed to new replies.

Advertisement