Nova NextGen: Developers 06 Feb 2015


In the early days of SMS, the community was thriving and constantly building new little things and distributing them on the forums. As SMS and then Nova become more full-featured, the community stopped contributing to the point of stagnation. As you'll see in the next entry, there are a lot of things being torn out of Nova NextGen, so there's opportunities for the community to step forward and fill in some of the gaps that people may feel games could benefit from.

Extensions are a key part of that. I tried to put some experimental support in Nova 2 for modules, but given CodeIgniter's limitations, it didn't turn out very well. Since Nova NextGen uses a far more robust autoloading process (as well as namespaces), using extensions becomes much easier.

One thing the highly observant may have noticed early on with the file structure entry was the lack of an "app" folder. That's because there is no app folder. The focus moving forward is on building extensions, because that's exactly what they do: they extend Nova to do new things or modify the way it works. With extensions, developers can have service providers that do all sorts of magic to replace core classes or add new items or whatever else they want. The freedom here is pretty spectacular.

Obviously there will be more technical details as I move along with development, but keep in mind that extensions are the way forward with NextGen.

Page Compilers

One of the big things developers are going to be able to do within their extensions is write new page compilers and register them with the compiler engine. Let's say you write an extension for generating a monthly report, but you think it would be really cool to be able to put that monthly report up on a page for everyone to see. You could build a page to do that (which you might do just because you've already built the other controllers), but you can also create a compiler that will respond to your own tag. A simple {% monthlyreport %} tag now grabs the information out of the database and dumps it out on whatever page the tag is called on.


Doing anything with the database for new features is a total pain in the ass for me, let alone developers. For the most part, developers stay away from the database, but those that do add stuff to the database usually just send along a query to run in phpMyAdmin. That's perfectly valid, but it does create situations where admins need to know what they're doing (which isn't always a safe assumption to make). Add to that strange errors that a handful of users get when running the installation and update scripts and there needs to be a better way.

Migrations are the answer to that. Nova NextGen uses migrations to ensure that installing (and uninstalling) is a breeze. Third party developers will be able to do the same to add database tables, modify existing tables, and whatever else they need to do in the database.

Much More

There are all sorts of enhancements for developers coming in NextGen, but at this point, it's still too early to get into more detail. Rest assured that developers are getting a ton of love in NextGen and I think you'll see some really cool stuff coming from developers in the future.