Warning: Wall of text incoming. Rant on.
Well, it's been a long since I had time to work on Broken Galaxy, and I believe the hour is upon me to write some kind of "postmortem" for the project.
Hopefully, the project is not dead, but let's be honest.. it hasn't been that much alive for a while now, and I only have to blame myself for it. But more on this later on.
First of all, in the years I have been working on the project, I had the chance to somewhat understand my own limitations and drawbacks; Duality is an amazing piece of code (I'll never get tired of saying it
) the freedom and flexibility that the engine gives you (even if limited to 2.5D) are its biggest strength. And, in my case, my greatest enemy.
So the game development began: at start I needed to put in place the basic functionalities such as the procedural generation of the map and fleet movement.. nothing too complicated, and most of the code was Duality-independent so I could do it in a simple Windows Forms application. Everything was great.
Then it was the time of starting to give commands to the game, and for that I needed a UI. One of my biggest "complaints" (it's not a complaint per se, more like a "it would be nice if") is the absence of an official UI system; but hey, I'm a programmer, this is what I do for a living, surely I can put together a simple UI. Challenge accepted!
And that, I did.. I began putting together a very basic Widget system, but then I thought.. hey, since everything is a GameObject, why not make it possible to rotate stuff, and put them in the world space, not only in the overlay. And hey, what if I want to reuse this? I need to be able to use different graphics for each Widget right? And maybe some simple tweening could be neat to have.
I kept crunching code with little regard to how much it made sense, as long as it was steadily moving on in the direction I wanted. There would be time to clean it up later on.
The game was finally taking form, I could move stuff around, and click stuff around, and a very basic AI (more of a AS - artificial stupity, really) was prepared to have someone to test it against.
And the UI project grew, and as it grew, I thought that it could be more useful to other people as well if I were to split all these sub-libraries in their own single plugin, so that they could be used singularly instead of having a do-it-all monolith.
So refactoring happened, and everything was working again, and I could simply add my plugins to each other and to the game project, and finally the development began again.
But something was different, and I had a feeling that what I did was too complex to manage in the editor.. so back to the drawing board, trying to simplify it all.
Meanwhile, Duality kept improving and, especially at the time of going from version 1 to version 2, a lot had changed so a lot had to change in my plugins to keep them compatible. Completely understandable, nothing to complain here.
Once I was more or less satisfied with the results, well, I found that I might have used a teeny-tiny different class in Duality itself, so let's fork it and add just one small insignificant change. Oh how I was wrong... keeping up with the changes in the trunk became almost unbearable. At the same time, I had the wonderful (hint: sarcasm) idea of having a hexagonal interface. Sure it looks cool, but it's hell to manage.
But you know what? if I only were to allow for arbitrary shapes to be clickable, and not only the classic rectangle.. well, back to change the UI plugin. And the rest of the plugins because now I need a different kind of data structure, and why not?
Fast forward of a couple of months, the hexagonal UI is still a mess to work with (especially to position), I still cannot find a reliable way to show the UI in the editor without starting the scene, and because of that I find myself scrapping a number of planned features for the game because the idea of coding the interface for them is making me sweat cold.
Then life and job happened, I get back home and I'm tired, and the last thing I want is to look at that code, that I have been staring at for the last couple of years. Maybe I could restart anew? AGAIN? maybe another project? BUT WHAT ABOUT THIS ONE?
Anyway, that's where I am. I believe I chewed a lot more than I could. Maybe not so at the beginning, but I kept shoving stuff in my mouth until I could not stand it anymore. And I'm sorry for that. At the same time, I feel like I know better my limits (for example, it has become painfully clear that I have absolutely no talent for UI design
Well, the game (as the rest of the projects) is currently in a limbo. Maybe one day I'll work on it again and hopefully take it to the end, maybe not with this engine (again, there is nothing wrong with Duality, but in this case it's asking me to do things that I am not sure I have the knowledge to be able to finish - hope Adam won't get mad at me if that's the case
If anyone were to be interested in the source code, feel free to ask! As for the other projects, they are still there on GitHub.
I would like to be able to team up with someone from the forum, to scrap whatever useable code I wrote in this time (or even start anew) and to make a serious, simple, and working Community Plugin with some basic stuff inside (maybe even a UI system?
So.. I believe that's all. Rant over. And sorry for the wall of text.
Keep up the good work everyone!
and chew slowly!!!