After the extra work created for V1.131 and the subsequent delayed release, we have charged into the V1.14 work in earnest to make sure we get closer to our desired internal release date as possible. I will keep this date dark so (a) you are not disappointed should we miss it, and (b) that we give ourselves the freedom to do more testing before we release to the public. We already have a handful of post V1.131 tweaks coded, but the major news is the progress of the Easy Building Editor module which has been a joy to work on. Now whatever I create will be subject to controversy, simply due to the number of ways the design could have gone, and that I am going up against the world of 3D modellers which have had two decades and a large team of coders to perfect. I have my, myself and a few weeks, in amongst my other duties of dev blog writer, twitch broadcaster, Steam and forum post replies, email responder, support mail replies and of course the regular duties of CEO and general project overlord.
Not that I am making excuses for my decisions, just putting this endeavour into context for you, and hopefully reduce the onslaught of abuse I am due on the release of a much anticipated EBE and the V1.14 monster update. The first decision was to make it easy for me to optimize the collision and rendering of the final building/structure and for that I needed blocks, lots of blocks. I also felt it was important to pay homage to the old segment editor from classic which was heralded as a very easy way to make rooms and corridors, but leave the door open for more ambitious creations. Before I dive into the particulars, here is a quick shot of a building that took me no more than 25 seconds to create from scratch with the current EBE:
So what do you observe from this structure? Well, you will see we are using multiple high-quality textures, namely a nice wooden floor, stone walls and concrete ceiling. More textures are on the way and you will have 16 textures in total per structure which are placed in a single texture atlas for game performance but as each texture slice has 1024x1024 resolution the quality is such that you can put your nose to a wall and still see good detail. Naturally, all come with normal and specular maps to give it that extra something.
You may also notice the edging around the front door, which was indeed included in my timed 25-second construction time :) I challenge any 3D artist to create the same building with three textures and this level of detail in 25 seconds (and send me the video time lapse as proof). If I win this challenge, we can say GameGuru is one of the fastest ways to create brand new buildings and structures from scratch (aside from the obligatory random building generator of course).
This rapidity of construction lies in the grid-system and layered editing that forms the core of the EBE. You can start with a single small cube (see the displaced cube half way up the door frame), or choose an entire floor or wall piece, and the grid system locks to that dimension enabling you to quickly paint at the intuitive scale. If you then select a door brush, the system is able to cut the door profile through an existing wall, much like CSG but instantaneously and at no cost to memory. You then have a texture palette which can change the texture with which you add elements to your structure, and holding down SHIFT will reverse the operation enabling areas to be deleted at the brush scale you are operating at. You can also rotate brush shapes, and the system has been designed to get the brush configurations from an external text file, a sample of the DOOR.EBE is shown below:
;EBE Spec (max 20x20x20)
width = 20
height = 20
depth = 1
;Pattern
prow19x0 = 11111111111111111111
prow18x0 = 11111111111111111111
prow17x0 = 11000000000000000011
prow16x0 = 11000000000000000011
prow15x0 = 11000000000000000011
prow14x0 = 11000000000000000011
prow13x0 = 11000000000000000011
prow12x0 = 11000000000000000011
prow11x0 = 11000000000000000011
prow10x0 = 11000000000000000011
prow9x0 = 11000000000000000011
prow8x0 = 11000000000000000011
prow7x0 = 11000000000000000011
prow6x0 = 11000000000000000011
prow5x0 = 11000000000000000011
prow4x0 = 11000000000000000011
prow3x0 = 11000000000000000011
prow2x0 = 11000000000000000011
prow1x0 = 11000000000000000011
prow0x0 = 11000000000000000011
You've maybe guessed that one of the features of this system is that you can create your own EBE files which are added to the selection of brush shapes so you can create your own private collection of shapes to help create the structures you desire, and I am sure a fair trade of publicly available EBE files will start circulating the forums :) Those astute enough to notice the THREE dimensions are correct in supposing your structures can be a 20x20x20 3D structure if you wish!
I have also completed the collision optimiser so this structure uses as few 3D boxes as possible to form a solid colliding area as soon as you enter Test Game mode. I will be using a similar system to optimize the polygons used as well (admittedly the structure you see comprises thousands of cubes and hundreds of draw calls) and the fact the geometry and UV data is predictable, I can be very aggressive when it comes to reducing the polygon usage here.
For those users who do NOT want blocky buildings and cubic creations, I have created the data structure for the EBE to accept not just cubes, but various configurations of slopes so 45 and 22.5 degree details can be achieved and still keep the block within an 8-bit packed element (great for memory saving and for LARGE structures). The current grid workspace has been set at 10x10x10 units with each unit being 100x100x100 in standard GameGuru dimensions so that is one large large building indeed. The slopes will not be in the first version as I want to test the water and see what everyone thinks before complicating the choices, but it's there when we need it and I think we will all want diagonal walls, sloping roofs and more sophisticated creations moving forward. As the building aligns to the natural grid system of GameGuru, with the smallest block being just 5x5 you will also be able to snap entities to the building for your extra wall and ceiling detals, but the attachment of things like dynamic doors and windows which are standard entities. I am also tinkering with the idea of a simple composite system so you can attach an entity, that then follows the building around when you drag and rotate it, but keeps its independent qualities in every other regard.
In other news, some of you will have heard the rumour that LOTS of characters are on the way to a GameGuru near you, and for a sneak peek at what is to come, I invite you to watch my latest Twitch Broadcast which you can view here:
I hope you like the progress so far, and I look forward to bringing you more news on this and related subjects in the week to come. Happy game making and best of luck with your projects!