We had an opportunity to work with a new game engine in the last few months, the Core game engine. While the scope of our work didn’t offer an opportunity for a comprehensive view of all the tools the engine has to offer, it was a great chance to see something else on the market and compare it to our other development experiences.
Core seems to be a game engine very akin to Roblox, except with much higher visual fidelity, and targeted towards adults. In order to achieve that level of visual polish, there are some significant restrictions put on designers. To compensate, the publishers of Core have also designed several systems that help developers find creative solutions for expressing their vision.
For example, you can make lots of different custom materials, each with their own scaling, tinting, specular and normal levels… but you cannot use custom textures. You have to base all of your custom materials as variants of the default materials Core gives you. Even with this restriction, however, there’s actually a decent selection of materials provided, so with enough creativity you can represent nearly any surface type.
Terrains in Core allow you to assign up to four different material options, each with a sub-option for a top material and a side material that it naturally blends between. There’s also a wetness mask you can paint, and you can place practically any default models onto the terrain as randomly placed objects. Additionally, the terrain uses Voxel-based technology instead of the more traditional, but simpler, heightmap based terrain. Overall, there are lots of tools that allow you to be creative quickly, but when it comes to precise tooling, especially if you want large-scale accuracy, it becomes a little more cumbersome.
The modeling side of things is also interesting. Once again, just like the textures, you are not allowed to import your own meshes. However, Core seems to be built around the artistic technique known as kitbashing. If you’re not familiar, the general gist of kitbashing is a technique where you have a collection of various props, shapes, and maybe even some structures and you combine those in interesting ways by rotating, scaling, and intersecting the meshes to create something new. Core supports this framework all the way through its engine; it’s clear this was designed as a way to keep performance at a reasonable level, while still allowing the designer a lot of flexibility to create what they want.
Core also has a nice template system for things you would use repeatedly. Unity users will recognize these as “prefabs”, and Unreal users as “blueprints”. It works actually quite well, although I do have a minor gripe with it. In order to nest something underneath a template object, you actually have to de-instance it entirely. After you are done making your changes, you have the choice to re-link the template to its previous instance and update all other instances, or leave it to be different than all the others. Or, of course, you can make your new instance into a whole new template.
While the scope of my work in this project didn’t touch on optimization, I did see a few options in the engine specifically tailored to that side of game development, and so if I get another chance to work with the engine I’ll be interested to take a look at that side to see exactly what all of those options do. Regardless of those results, however, rest assured that the team making Core have given thought to optimization and try to provide you the tools you need as a developer to keep the games you make in their engine running at silky smooth frame rates.
All in all, working with Core was a rather fun experience. The engine certainly doesn’t have the same fidelity and control that a full-fledged game engine like Unity or Unreal does, but of course it’s not supposed to. And while you can definitely make simple games with Core, there’s also a lot of creativity I have seen with games made in the engine as well. I’m interested to see how useful Core could be as a prototyping engine. If you haven’t seen or heard of Core before, be sure to check it out, either as a developer or as a player!