Where is Grids 2.0?
It has been a few months after we planned to release Grids 2.0. As you can imagine, we are painfully aware that we were too optimistic of our initial estimate, and from the many queries we receive on Grids 2.0 we know many users are impatient for us to finish with it already.
So what happened? There were some distractions with other projects, but the main delays were caused by technical reasons and underestimating the sheer size of Grids 1.
One of the purposes of Grids 2.0 is to make the frame work more unified. This was somewhat easy to do with the mathematical classes, but we started to run into problems with the classes that extend the editor (actual components, inspectors, the node editors and so on). At the heart of these issues lies the fact that Unity has poor support for generics in the editor classes, and we had to go through a few iterations to get a design that was simple to use, but still flexible and powerful. For example, we did not want separate Grid builders for each dimension (1D, 2D and 3D) – we already need separate builders depending on whether you need sprites, or game objects, or complete meshes. Since all the related aspects (the graph editors, the nodes, the maps, the grid points), depend on dimension, we had to make a builder that is generic, but does not require language features for this to work. So there is a drop down in the grid builder, and you can select the dimension, and automatically all the other right components are used behind the scenes. The graphs (used to edit grid shapes and maps) are different for each dimension – but from the user’s perspective they all look the same. The right types of nodes are automatically available, and right type of conversions happen so that the grid shape and map are of the right types.
We also somewhat underestimated just how many features Grids 1 has, and how much work it is to make them complete within the new framework. For example, we introduced mesh grid builders in Grids 1 not too long ago. Because we did it for 2D grids, we could re-use the maps used for normal grid-to-world calculations. In Grids 2.0, it makes sense to do the same, but in trying to make something that works consistently for all dimensions we found out that there is quite a fundamental difference on approach between what we think of a 1D grid and 2D and 3D grids, and the initial clever code we wrote had to be discarded for something less clever that actually reflects the types of grids developers are likely to use in their games. For similar reasons, concepts like wrapping, splicing, nesting, and layering, turned out to be slightly more complicated than we thought after we had the basics in place. Moreover, maps that need to know grid points (like Voronoi maps) did not fit so neatly into the initial simple structure.
So where are we now? We have basic grids, points, maps and shapes implemented for all dimensions, with a tile grid builder that can be used for all of these with sprites or game objects as cells. We implemented algorithms using the new structures (and made them also work with other concepts of “neighbors” and “lines”). We are almost finished making some adjustments to support mesh grids in the way we want, and the basic mesh grid builders are done. After that, we need to implement more defaults (currently we have everything for hex and rect grids), and the support for the more advanced features like wrapping and splicing (which we will not implement for all dimensions for now).
When will it be ready? We cannot give a definite estimate. We have done chunks in the last few months but started to work full time on it last week, and we are trying to get it out as soon as possible. Several users have asked for an early beta; as soon as we are confident that the basic interfaces are stable, we will make this available.
Thanks for being patient, and for all the support! We are really excited to bring Grids 2.0 out, and are working hard to make it so.