Hello everyone,
I just wanted to take a minute to give a quick status update, as I realize that I've been unusually quiet for the last couple of weeks.
There are two reasons behind that. The first one has to do with a very stressful situation that happened to my family, and which I took some time to assist with, but that is fortunately now almost entirely resolved. This only took about a weekend away from development, which marks the longest amount of time I have taken away from development in recent memory.
The second one you can see in the images of this post. Those are the towers for ETD, plus the support towers.
I will now go into some detail over just how much of a struggle it is to make these models. If you are not interested in learning more, then just know that it is a supremely time intensive task that is only made worse by the fact that I am not a modeler.
If you want to know more, then here are the details.
I have fairly ambitious requirements for the way I want these models to work, which are as follows:
- Each tower gets a model
- Each upgrade level gets a model (currently 6, will probably have to add two more)
- Each support tower appends adds a model to the basic tower
- All towers models are done to the best of my abilities as a novice modeler
- Barricades are not towers, they only need one model
That means that I need to make 70 models just to coved the existing towers (and I was planning on adding two or three more before release - yikes!).
I can't stress enough that I am a novice modeler. I consider this to be my first serious attempt at making commercially viable models for a project, even though I will be distributing them for free.
As such, it took me a week before I found an efficient workflow to create the models. It would be easier if the models didn't have to be interlinked in the case of basic tower attachments, or didn't have to have variants in the case of the tower upgrades, or if I could just make models using normal software like Blender as BlockBench only has cuboids for geometry and is generally extremely basic insofar as modelling software goes (which is out of necessity, as Minecraft wouldn't be able to work with anything else).
As mentioned, the models are made in BlockBench. First I do a rough draft of the geometry, then I get some feedback from the Nightbreak crew to see if it's looking good, then I start doing some rough texturing.

Pictured: rough draft of the basic tower
The texturing process is a nightmare. I have to UV map each individual face manually to get a smooth experience making the variants and making sure that the tower has faces that tile seamlessly.
I assume most of you don't know what UV mapping is, but basically imagine that for every block in the model I have to select each individual face of the block and then play Tetris to place it in a way that doesn't overlap with other faces but does overlap with opposite faces. For reference, one barrel has 30 individual cubes, each cube has 6 faces, that's 180 faces that I have to manually place. There are some ways to work around part of this work, but it does not make the process much faster.

Pictured: Image of a UV map - not very clean as it was my first attempt
Obviously, that's just one barrel. Most towers have several elements in them, and a lot of time is spent trying to make them look as good as possible while using the least amount of cubes possible for performance reasons. The basic tower without any attachments is only 32 blocks, which I would argue is pretty good.
Once the base model is mapped, it's time to paint it. I usually use flat colors just to showcase the rough idea of what I am going for and ask for feedback once I have the basic color scheme and concept down.
Often times it is at this point that people will suggest changes in the geometry. This is particularly annoying, as changed made to the geometry force me to remap any existing cubes that I modify or map additional blocks that get added. Remapping existing blocks to be larger often means substantially modifying several other mapped blocks as things no longer fit.
After the basic geometry is set, and I have the basic colors down, it's time to add noise to the textures. If you are wondering what I mean by this, if you look at the images in the post you will notice that all the textures of the models have some color variation in them, same as with Minecraft.
To do this in less than an hour, I use Photoshop. Once I import the texture into Photoshop, I select all the different groups of pixels in the image and split it up into layers. One layer is always the upgrade layer, which I will get into in a little bit. Then, I usually have a layer or two for the base materials, and then another layer for any extras that I need to work on separately, such as the telescope of the spyglass tower.
To add some noise, I use photoshop brushes with very high degrees of spread and randomization, and usually apply a black color with a 7-14% opacity to make random pixels darker. Sometimes I also inject different colors, but I have found this to be a method that can be done in just a few minutes and look pretty satisfying.
Now, let me be clear. If making variants was not a concern, then the process of making a single model could've potentially been streamlined. However, it's important to be able to tell at a glance what upgrade level your tower is.

Pictured: towers by level from left to right
Fortunately, the initial time investment in manually mapping the UV and splitting the textures into layers pays off at this stage. ETD uses trims in the design of the towers to indicate the level of the tower. Since the trims are already in their own layer, adjusting the color is just a matter of changing the hue, saturation and brightness of the layer, something which can be done for all towers in under 10 minutes.
It takes a little bit of extra effort as each level needs its own model, so the models have to be duplicated, renamed and a different texture file has to be applied to them, but that process is not too time consuming either.
The initial time investment is also crucial for making future changes to the textures. Can you imagine how much time it would take if I had to change the geometry on 6 different files, remap all of the files individually and retexture all of the files? With the current setup, I can modify 1 file, remap the elements that got modified or added, do basic texturing, send it to photoshop, add it to the layers, generate the 6 texture files from photoshop and duplicate the base file, which is still a time-consuming but can be done in 5 minutes instead of 50 minutes and risk messing up specific tower upgrade levels.
This one might require some explanation. The objective of adding models to the basic tower is to visually represent which bonuses the basic tower is currently benefiting from. This is identical to the concept in Risk of Rain 2, where any upgrades you get are visually represented on your character.
This serves a function, but realistically is mostly for flavor, as it is just neat to see things getting added to your tower the more you add support towers around it. Come to think of it, the entire models things is mostly for flavor, as the gameplay has not been changed by me adding the models, but playing with and without the models feels very different.
So, to add elements to a tower, I keep a special tower file where I add elements to it as needed. Once I am satisfied with the design, I copy the elements I designed to a dedicated model file, and program the plugin to add or remove these models as required.

Pictured: Starting to add a barrel from the sugar tower to the template model, where the explosions factory and the beam generator are already present.
The way it currently works is still a bit raw, and it was while I was deciding on how I wanted to streamline the process of doing this that I ended up deciding to write this blogpost which I think some of your will enjoy reading to get a peek behind the curtain.
Some of you are rightly asking yourselves how this is even displayed in-game.
Currently I am using Model Engine to generate a texture pack and display these elements in-game. However, Model Engine is a premium plugin, and an expensive one at that. There is another alternative - ItemsAdder - which is somehow... more expensive than Model Engine.
Now, for the longest time, I've had the goal of creating my own open-source Model Engine alternative. Some of you may even remember that I started prototyping FreeMinecraftModels a while ago.
I will not sit here and lie to you saying that this is a trivial thing to do. Making models display in-game is messy, and animating them is doubly so. However, these towers just stand still.
And some of your may remember that even though I never released the prototype, I did get it to display static models just fine.
It's my intention to polish FreeMinecraftModels up for release, so that admins will be able to get the true EternalTD experience for free and with as little hassle as possible.
I can't guarantee that I will have this done for the first public release of ETD, as I have no clue of what state FMM is currently in and how much work will be required to get it to be compatible with the array of Minecraft versions that I intend ETD to support.
Now, it is important to add here that I do intend to monetize certain aspects of ETD, as I unfortunately can't survive on air and good vibes alone. While the base mapset is free and anyone can make a map and waves, I will be distributing premium mapsets in the usual locations (patreon and itch). I am also considering making some premium cosmetic content, possibly something that servers could sell or distribute to their own userbase at their own discretion.
First off, let me say that ETD will be a free plugin, with free premade content and the ability for admins to create their own content.
Despite this, ETD is fairly different from my other plugins, as its goal is to be a self-contained game and not just an extension of Minecraft.
I know for a fact that this will ruffle some feathers, but I want ETD to be a cohesive game experience, no matter the server you're on. This means that, unlike all of my other plugins, there will be very few configuration options, and those that do exist will be focused on translating the plugin and not on customizing gameplay.
This will also be my first closed-source plugin, though components such as the pathfinding api that I developed and the model display api (FMM) will be open-source.
A big part of the reason why I am keeping it closed-source is that I plan to potentially reuse several of the systems I've developed in a standalone game, and since this features some unique and in my opinion really fun tower defense mechanics I do not want other people to take the code and beat me to making my own game.
Basically you can picture ETD as if it were something like Bloons TD. There is no configuration setting in Bloons TD to fundamentally change how the game works. Though in ETD's case, you are able to create your own maps and design your own waves (but there will always be basic mechanics inherent to the plugin that will be applied over them).
Also, honestly, trying to add customization options to the balance of the waves would probably take months of work alone, and break with every minor tweak that I bring to the plugin, and that is just not something that I am willing to deal with.
In closing, I do want to mention that ETD will be best set up in its own server. It uses its own resource pack, it creates its own worlds for matches and technically it may be somewhat possible to run this alongside something like a survival world, but for the integrity of your servers I would recommend that you put it in its own dedicated server, as to avoid issues with inventories and gamemodes.
This is truly a project that I could not do without the financial support of the Patreon supporters. Despite the slog that making models represents, I am having a lot of fun designing the plugin, and we are having a lot of fun playtesting it.
I mentioned it before, and I will say it again, I believe that once this is released it may very well eclipse my other plugins in terms of popularity in a relatively short timespan.
I have been trying to think of good ways of rewarding patreon supporters for sticking with me throughout this adventure. I will certainly try to do big releases on Patreon first and publicly second, and obviously any premium content I release will be available here.
Still, I would like to provide some kind of cosmetic reward to distinguish those who chose to support the project. I am not yet sure what shape this would take, but if you have an idea let me know! Right now I am leaning towards making an even cooler basic tower model that could only be used if you support the plugin, but I am not 100% sure about this yet.
Anyhow, that's it for now, I better get back to modelling.
Happy defending,
- MagmaGuy