As I mentioned previously, I am back and I have some plans for UT99, some of which I have already set into motion.
However, these plans do not only affect UT99, they also affect Unreal and potentially any other games I may mod for in the future, or even make down the line if that ends up being the case.
They also greatly affect what I currently do for a living (and which I intend into keep doing), since these plans mean to actually severely improve such as well.
It's almost impossible to tell all about it without boring you to death with what could amount to one of the biggest posts ever, so I will try to restrict myself to the most critical points to keep it as short and concise as possible, and spoiler tag whichever things which are just complementary information that you can opt to skip or read if you feel like it, but this is still going to be a long post.
However to spare your souls from the incoming text, here's a TL/DR version:
The site won't be a forum, we have too many of those, but rather something that I think is actually needed, which is a place with patches, renderers, maps, mods, etc, absolutely noob player friendly, and it's also intended for there to be something akin to a "game launcher" later on to be able to patch the game seamlessly with these patches and renderers, install and uninstall mods and maps securely, maybe even rating and commenting them, perhaps even match making and clan matches, etc, and also publish mods and maps, with automatic dependency checking and solving in the server.
I intend to remake the library to read UT/Unreal packages, so that even things like texture previews from a texture package, or sounds from a sounds package, screenshots from maps, etc, can be retrieved and shown/listened to.
After that I intend to create a mod, which is not a NW4, but "similar" to an extent, which benefits directly from the existence of such a service.
But this immense task is split into 3 stages: the framework, the site and the mod, and I am still doing the framework, therefore it will take a long while (a year or more) before I can show the actual results.
Although the company I have been working with for several years has been kind enough to sponsor my framework by allowing me to keep developing it in my working hours, while still keeping the copyright to myself, since the license is MIT (and that isn't going to change) and this framework is also going to be used there, thus the development of the primary part of the whole thing will be sped up significantly.
However, until then, until you can actually see it and touch it, all of this is to be considered vaporware, and the only intent of this post is to just let you know what I have been up to and my plans for world domination , and I will probably give updates whenever a milestone is reached.
3-Stage Long Term Plan
To put it into simple terms, this is a long term plan, perhaps spanning a couple of years at least, and which I have already started with in October of 2016, and is split into 3 major stages: a PHP framework, a service and a mod coupled with tools.
The plan by itself is very straightforward, but it will just take some time to pull it off: build a new PHP framework (1st stage), create a new service which is where the framework main page will be on, as well as both UT99 and Unreal free services such as a way to host mods, maps, advertise servers, search, etc (2nd stage) and then later the development of a few things to potentiate a new mod I have been planning to make a game of, but which I will opt to do for both UT99 and Unreal instead, at first at least.
Stage 1 - The PHP framework
Right now, this is what I am working at, so it can be said that I am still currently in the 1st stage.
I have been working on it since October of 2016, although most of the time was mostly experimentation, and there have been moments when I had to pause it, there was a lot of refactoring done several times, up until it reached a state where I saw things just fitting together and fall into place by themselves, and were simple yet powerful enough to be happy with what was just built.
This is not the first PHP framework I ever did, this is in fact the 3rd one I am developing, but it's the first one that is open source.
The 2nd framework is being used as one of the foundations of a service used by millions of users worldwide (perhaps maybe even you?), with easily hundreds of billions of requests every day, and it just works, and it has passed security audits without any problems, and my team is highly productive with it and generally they don't have to worry much about the scaling, so as of now it stands as one of the things I take the most pride of having built, more so than NW3 for example, but it's closed source and will likely remain closed source forever.
But it has several limitations, some design flaws as well, patterns that do not make sense anymore and only make things harder, given that as anything in life, everything is always as far from perfect as it could ever be, so this new framework is first and foremost meant to establish a new much better base for things to come.
With this new base I could much more easily do the same things the other framework is capable of, along with new things which weren't possible with it, or which were harder to implement reliably.
Also, this was something that I started on my own, in my free time (hence also the long time taken thus far), so it completely belongs to me, hence being able to open-source it under an MIT license.
However, and this is where things get really interesting: the company I work for agreed in "sponsoring" this framework, while keeping the framework completely my own, which means I will be able to work on it during my working hours as well essentially (not 100% dedicated to it, but at least some hours for whatever is needed for us at any given point in time, which at the start is a lot).
But of course, this is only because this framework is also going to be used by the company itself, which aligns with my intention all along since that was the original intent when I started it.
If you wish to follow its development, the repository can be found here:
I only created it some days ago, since up until then I was developing it in a private repository elsewhere.
Also, although not present, I do intend to add unit tests there, but I am unsure if I am going to use PHPUnit or my own solution for it.
Although it's a framework, it's also meant to be used as a library, and is as a library first that is going to be used in what I am currently working on at my job, which means it can and will be used with my 2nd framework here, and can also be used with things like Symfony, Laravel and others if some specific functionality from it is needed.
Now, if you're a PHP developer and you want to know why I don't just use something known like Symfony or Laravel instead, it is because they are okay-ish for normal PHP sites made for simple purposes, like a content manager, or a site for a company which always needs clients, products, billing, that sort of thing, but for things far more complex at a much larger scale with specific and constantly changing business needs and technical challenges, they simply do not go towards those needs, and even limit things up severely in some cases, and then we end up being at their mercy.
Furthermore both indulge in practices that are just awfully bad imo, such as Symfony relying on comment notations to affect the actual runtime of the code, and Laravel doing some of the exact same mistakes that I also did when I did my first framework several years ago, such as defining things through class properties directly (there's a reason why my own 1st framework did it, and the 2nd no longer does it), as well as forcing certain design patterns everywhere, even when it doesn't make sense.
Also, the current framework we use is capable of doing things such as automatic parallelization of tasks, it's easier to set up "cron jobs" with, more reliably so, it has a CLI rendering engine, so it is able to display graphs, progress bars and whatnot and it's responsive, so it adapts to any console resolution, the API engine is able to generate its own documentation pages automatically, the web engine for the sites is able to merge CSS and JS automatically in an optimized fashion, the database engine is capable of pipelining multiple queries (SELECT, INSERT, UPDATE, it doesn't matter), automatically create schemas/tables/columns/etc with a comprehensible log, etc, etc, and it's my intention for the new one to do all that, do it better and do more, and be open to everyone.
I honestly tried many things, and they all failed to meet my own expectations for my own use-cases at least, and so I always had to build my own things, PHP-wise, and starting now I am building something public anyone can eventually use if they find the need to.
Stage 2 - The service
After the framework is fairly finished (I don't need all of it to be complete for this, only what I am going to use there), I intend to create a new site built with it, and which would have domains for very specific things.
I already bought a domain (feralygon.com), so I intend to have the following:
- feralygon.com or www.feralygon.com will be the main entry points;
- php.feralygon.com will be for the framework documentation and such;
- ut99.feralygon.com will be for UT99;
- unreal.feralygon.com will be for Unreal.
I am not saying it won't eventually have one, but for what it is worth, this is not meant replace any forums: UT99 has this one, just as Unreal has OldUnreal.
The idea here is to actually build at least the first place where anyone can come over and have a working game with the maps they want and the mods they want.
This means having a place where anyone could just come, browse through the content, and mostly quality curated content, and easily install it in their game.
This also contemplates a possible "game launcher" to be downloaded here, possibly done in Electron or something else entirely (preferably something using webkit), and this launcher could do everything from patching the game with the newest renderers and settings, safely downloading and installing (and uninstalling) mods and maps from the game seamlessly, publish your own content, match making, get news about new content, clan matches, etc, etc... you get where I am going with this.
This game launcher would work through an API, and my place wouldn't be the only possible place to go, as a simple REST interface, and perhaps even a small SDK, would be created so that anyone could also host theirs and have players adding these places, or if the other places are trustworthy enough, even coming by default in this launcher.
With a place like this, maybe even things like creating awareness about the existence of things like XC_Engine would be far more simpler for example, as well as any other things like new renderers and such.
At this stage, there would be some stuff that could be open-sourced, and other stuff which cannot, but at this stage I would also be able to build a whole new version of this as well:
since I would use it myself, so that things like dependencies could be solved automatically, mismatches avoided entirely, previews on texture packages, sound packages and etc could also be made, etc.
I think this should give you a somewhat clear idea of what I intend to do, and this is the most important and relevant part for UT99, but it's dependent on the conclusion of my framework first.
It's intended for a UScript client to also be built at this stage so some of these things can be seen and managed from within the game itself.
Stage 3 - The mod
If I do manage to reach this stage at all, my intention is to build some things in UScript, and create a few new services on my place as well, and then build a new mod with them, something I want to do for a long time, and it would work for both UT99 and Unreal, since I would develop the necessary polyfills to be possible so.
I won't give much detail about this yet, even because it will probably pass a whole other year at least before I even reach this stage, and there's a lot of work ahead before I even hope to pick this up, but it's going to be essentially a new weapon mod for what it is worth.
And no, it's NOT a NW4 at all, although truth to be told it actually is akin to something like a NW4, both conceptually and intended mod quality, so it's supposed to be yet another leap just like from NW2 to NW3, and although it's going to be more than a weapon mod, it will be mainly a weapon mod nonetheless.
It took me years to develop NW3, but other than doing it in my free time, I was very inexperienced and my skill from back then has led me to do things in ways which were very inefficient and labor intensive, only to do something too "static".
And next I don't intend to do something as "static" and as inefficient, but it only justifies in being done at all if the previous stages are completed, especially since the mod itself would greatly benefit from the features I intend to provide in the previous stage.
Please be aware that this is going to take a long time, and for what it is worth these are "plans", "intentions", and other than the repository I just linked, there isn't anything done or ready to be used at all, meaning that although it's my full intention to proceed with this myself, especially since it's something I can apply not only for UT99 and Unreal (I chose these games since they are still games I like a lot and are the ones most missing something like this), there's still no guarantees of what will actually happen, and how far I will be able to go with this.
This is yet another challenge to me as well, and I am only posting it now since enough time has passed since I started to work on this, and given that I didn't drop it thus far, it's unlikely that I will drop it at all.
Also, this way, although I am somewhat active again around here, this makes it clear what I am busy with, and you can follow the progress through the repository I linked if you wish, and I might post here or in a different topic whenever a milestone is reached within each stage.
So you can consider all of this vaporware for the time being, but now at least you know what I have been up for a good while already.
Thanks for reading