A Turret's Life is a first person arcade shooter/tower defence game for PC and VR where you are the tower defending an area against the endless onslaught of attacking robots and crafting overpowered dream guns that can be traded as crypto-backed items.
Somewhere there was a software update or something and some compatibility issues were created and I spent all weekend trying to fix it.
Crafting Mechanics: The placement mechanics for positioning and orienting the modules are done! The next step on the crafting is to design the system for connecting the modules to the structural pieces and then saving the turret as a whole.
Late Thursday the game engine, Unity, started crashing quite frequently. Soon on Friday, it would crash every time I made a script change or tested the game. This then caused the project to become corrupted, which would cause Unity to not even open until I reimported the project. It was really quite terrifying - if the game engine doesn't work you can't make a game... So I spent most of the weekend reverting my changes, reverting software updates, re-downloading the project, reinstalling Unity etc. None of my attempts seemed to work fully, but it is at least functional now, only crashing about 10% of the time instead of a hundred percent. I have no clue why this problem occurred or why it got better, but I'll take the improvement haha.
The placement of modules has come along quite nicely. You can now rotate modules along their x and y axis at 90 degree increments, so it is now basically like a 3D version of tetris! It was certainly a bit of a mind warp to implement, having to convert positions between world, local, and grid space, using child objects and pivots and the like. Also, I've added some automatic flipping. So, when you move the module from one quadrant to another it will flip it to symmetrically match the side you had it on. The goal with this is to make building much easier so you don't have to re-rotate an object to place it on another side. That said, you can still rotate the object how you want to create some asymmetry too!
The next step is to design and implement the rules for how each module can be connected to one another via the structural pieces. This will be done by checking which module types are adjacent to each other. If a module is not connected, then you can still place it but you won't be able to save your turret until you either delete it or connect it.
Also, I am going to create something called an Object Pooler. This is a programming technique to improve optimization. In a nutshell, instead of constantly creating then deleting things in the game, you create the items once, then reuse the existing items as they are needed. This is faster for the computer and improves gameplay performance. For crafting, this is going to be used for the different modules since you can have multiples of them at once, and it is also used for the feedback blocks that show you where the module is placed on the grid. In AAA games, this technique is used too, like in bullets. It is a strange thought that the bullet you fired is just getting reused and has been shot multiple times in a game (and could have just killed you a minute ago).
Join the Community!
Hopefully Unity will be more cooperative this week for me, fingers crossed!