It finally happens: After about 8 months of hard work I can finally present you the newest and finest release of the Neo3D Game Engine yet!

There also is another reason for joy. Neo 0.1 was released on July the 23rd 2014, that means Neo is turning one year old! While Neo 0.1 was a mere fork of the Maratis Game Engine (www.maratis3d.org) with some minor changes that I wanted to make, 0.5 is growing more into its own space with its own goals. While Maratis always had, and still has, the goal to provide a framework that is, as I understand it, as simple and small as possible while sacrificing some conveniences and features you might expect in a full featured multi-media solution, Neo has the goal to deliver a full featured tool for any game and simulation related use case. Since 0.1, Neo has made progress in almost all areas of the engine. This includes documentation, refactoring, cleanup and bugfixing. Not to mention all the work on new features that landed since the first Neo release like extending the Lua API, introduction of a new and powerful scene editor and the work on the all new 2D backend, Neo2D. Let’s get to the changelog for 0.5!

Changelog

  • Introduction of the Neo2D module for 2D graphics and GUI
  • Introduction of unit tests for quality assurance
  • Refactored tools, publishing for example happens now in a stand alone CLI tool
  • The new publishing application allows for publishing to every platform given the right executable
  • More translation for the editor
  • The Lua API now mirrors the C++ API for full access
  • The Lua documentation is the same as the C++ one now
  • Support for any CLR language (like C#, Boo etc.) by using Mono while using the same API as C++
  • Some tweaks in the C++ SDK for more conveniently accessing collisions
  • Introduction of delta time for time based updates
  • Snap to grid in the editor
  • Icons in the scene tree
  • Support for “SubGames” in native plugins to pave the road for multiple native plugins running at once

Known Issues

There are still some rough edges that are not perfect yet.

  • The input method has to be set up manually by using the configuration dialog or else it might pick the wrong one by default
  • The prefab plugin is a little bit buggy, use with caution
  • The Android version broke and needs more love
  • LuaJIT keeps crashing on OS X

Some Statistics

The Neo 0.5 source tree has following statistics when counting Neo specific code only (that means no third party libraries):

459 text files.
437 unique files.
38 files ignored.

http://cloc.sourceforge.net v 1.62  T=0.89 s (466.3 files/s, 114506.0 lines/s)
-----------------------------------------------------------------------------------
Language                         files          blank        comment           code
-----------------------------------------------------------------------------------
C++                                171          10390           6427          56155
C/C++ Header                       168           3348           7142          10425
Lua                                 48            947           1339           4317
CMake                               25            179            100            789
Objective C++                        1             17             29             50
Windows Resource File                1              0              1              1
-----------------------------------------------------------------------------------
SUM:                               414          14881          15038          71737
-----------------------------------------------------------------------------------

During the development 470 commits were made, that means about 1.7 commits per day in that period.
Additionally 65 issues were resolved and 14 pull requests merged on GitHub.

There were 3 contributors who directly contributed code to the repository.
Thanks to BitPuffin, omx and brycehenley. Some other contributors who contributed translations are SadWolf and AkiraSan.
Thank you as well!

How will it progress further?

This release already brings a framework that can be used for smaller projects without problems but still lacks features and performance to be a viable platform for bigger projects. This problem is most visible in the graphics engine which still is an OpenGL2.1 based forward renderer with some limitations. Those limitations need to be overcome by rewriting all rendering code to utilize newer OpenGL features starting at GL version 3.2. This also allows a better OS X port since Apple’s platform does not deliver a compatibility context preventing the usage of more modern extensions in the old rendering engine. One of the hard decisions to make is about the editor. FLTK, the toolkit used, does not support any modern core context creation leading to graphics issues. An additional problem on Linux is the lack of Wayland support. This means that the editor will move away from FLTK to another toolkit.

Leave a Reply